当前位置:首页 » 操作系统 » 七章算法

七章算法

发布时间: 2023-06-28 11:24:17

❶ 计算方法

《计算方法》内容共分七章,内容主要包括:插值理论、方程求根、线性代数方程组的解法、数值积分、常微分方程数告团颤袜败值解法和矩阵特征值与特征向量的计算,各章均配有一定量的习题,书末附有答案,《计算方法》选材适度、通俗易懂,为了适应不同要求的需要,安排了一定量的选学内容.对于加“*”的内容可酌情取舍。

第九章 自治微分方程稳定区域的计算

参考文献

❷ 第七章:概率和朴素贝叶斯

近邻算法 又称为被动学习算法。这种算法只是将训练集的数据保存起来,在收到测试数据时才会进行计算。

贝叶斯算法 则是一种主动学习算法,它会根据训练集构建起一个模型,并用这个模型来对新的记录进行分类,因此速度会快很多。

贝叶斯算法的两个优点:能够给出分类结果的置信度;以及它是一种主动学习算法。

用 P( h ) 来表示事件 h 发生的概率;

用 P( h | D ) 来表示 D 条件下事件 h 发生的概率。

P( h ) 表示事件 h 发生的概率,称为 h 的先验概率;

P( h | d ) 称为后验概率,表示在观察了数据集 d 之后,h 事件发生的概率是多少。

贝叶斯法则描述了 P( h )、P( h | D )、P( D )、以及P( D | h )这四个概率之间的关系:

在数据挖掘中,我们通常会使用这个公式去判断不同事件之间的关系。

例: 我们要为一家销售电子产品的公司发送宣传邮件,共有笔记本、台式机、平板电脑三种产品。我们需要根据目标用户的类型来分别派送这三种宣传邮件。有一位居住在 88005 地区的女士,她的女儿在读大学,并居住在家中,而且她还会参加瑜伽课程,那我们应该派发哪种邮件?

我们用D来表示这位客户的特征:

因此我们需要计算以下三个概率:

选择概率最大的结果。

如果我们有 h1, h2, ... hn,它们相当于不同的类别

在计算出以上这些概率后,选取最大的结果,就能用作分类了。这种方法叫最大后验估计,记为h MAP 。

H 表示所有的时间,所以 h ∈ H 表示“对于集合中的每一个事件”。整个公式的含义就是:对于集合中的每一个事件,计算出 P( h | D) 的值,并取最大的结果。

对于所有的事件,公式的蔽伏弯分母都是 P( D ) ,因此即便只计算 P( D | h )P( h ),也可以判断出厅迹最宏闷大的结果。

例: 已知这种癌症在美国的感染率是 0.8%。血液检验的结果有阳性和阴性两种,且存在准确性的问题:如果这个人患有癌症,则有 98% 的几率测出阳性;如果他没有癌症,会有 97% 的几率测出阴性。Ann 到医院做了血液检测,呈阳性。

描述语言的公式表示:

美国有 0.8% 的人患有这种癌症:P( 癌症 ) = 0.008

99.2% 的人没有患有这种癌症:P( ┐癌症 ) = 0.992

对于患有癌症的人,他的血液检测结果返回阳性的概率是 98%:P( 阳性 | 癌症 ) = 0.98

对于患有癌症的人,检测结果返回阴性的概率是 2%:P( 阴性 | 癌症 ) = 0.02

对于没有癌症的人,返回阴性的概率是 97%:P( 阴性 | ┐癌症 ) = 0.97

对于没有癌症的人,返回阳性的概率是 3%:P( 阳性 | ┐癌症 ) = 0.03

贝叶斯法则计算:

P( 阳性 | 癌症 )P( 癌症 ) = 0.98 * 0.008 = 0.0078

P( 阳性 | ┐癌症 )P( ┐癌症 ) = 0.03 * 0.992 = 0.0298

分类结果是她不会患有癌症

用到不止一个前提条件时,计算这样的概率只需将各个条件概率相乘即可:

P( 买绿茶 | 88005 & 买有机食品 ) = P( 88005 | 买绿茶 )P( 买有机食品 | 买绿茶 )P( 买绿茶 ) = 0.6 * 0.8 * 0.5 = 0.24

P( ┐买绿茶 | 88005 & 买有机食品 ) = P( 88005 | ┐买绿茶 )P( 买有机食品 | ┐买绿茶 )P( ┐买绿茶 ) = 0.4 * 0.25 * 0.5 = 0.05

P( i500 | 健康、中等水平、热情一般、适应) = P( 健康 | i500 )P( 中等水平 | i500 )P( 热情一般 | i500 )P( 适应 | i500 )

使用朴素贝叶斯计算得到的概率其实是真实概率的一种估计,而真是概率是对全量数据做统计得到的。

大部分情况下,这种估计都是接近于真实概率的。但但真是概率非常小时,这种抽样统计的方法就会有问题了。

在朴素贝叶斯中,概率为 0 的影响是很大的,甚至会不顾其他概率的大小。此外,抽样统计的另一个问题是会低估真实概率。

上式中的 nc 可能为 0,解决方法是将公式变为:

决定常数 m 的方法有很多,我们这里使用值的类别作为 m ,比如投票有赞成和否决两种类别,所以 m 就为 2。p 则是先验概率,比如赞成和否决的概率分别是 0.5,那么 p 就是 0.5。

朴素贝叶斯算法使用的是分类型数据,在贝叶斯方法中,我们会对事物进行计数,这种计数则是可以度量的。

我们可以划定几个范围作为分类,如:

划分类别后,就可以应用朴素贝叶斯算法了。

标准差是用来衡量数据的离散程度的,如果所有数据都接近于平均值,那标准差也会比较小。

对所有的数据进行统计,得到的便是总体标准差。

无法获取总体的数据,只能选取一部分样本,这时计算得到的就是样本标准差。

68% 的数据会标准差为 1 的范围内,95% 的数据会落在标准差为 2 的范围内:

用希腊字母 μ (读“谬”)来表示平均值,σ (读“西格玛”)来表示标准差。

例( e 是自然常数,约等于 2.718 ):

实现简单(只需计数即可)

需要的训练集较少

运算效率

无法学习特征之间的相互影响

实现也比较简单

不需要按特定形式准备数据

需要大量内存保存训练集数据

处理训练集较大的情况,包括推荐系统、蛋白质分析、图片分类等。

参考原文原文 http://guidetodatamining.com/

参考译文来自 @egrcc 的 https://github.com/egrcc/guidetodatamining

❸ 计算机考研:数据结构常用算法解析(7)

第七章:
对于无向图,e的范围是:
数据结构中所讨论的图都是简单图,任意两结点间不会有双重的边。
对于有向图,e的范围是:
图的各种存储结构
邻接矩阵很方便访问任意两点的边,但是不方便计算其邻接点。在深度和广度遍历中广泛的需要求某点的邻接点。所以邻接矩阵只在Floyed和Prim和Dijstra中采用。
邻接表能很方便的求某顶点的邻接点,索引对于与遍历有关的算法大多都采用邻接表。如深度、广度、拓扑排序、关键路径。但他也有不足的地方,就是不方便求入度或是那些薯早握点可以到他的操作。所以有人引进逆邻接表。最后人们把这两种表结合到一起就是十字链表和邻接多重表。一个是存储有向图,另一个是存储无向图。
在十字链睁历表和邻接多重表很方便求邻接点的操作和对应的逆操作。所以实际应用中,凡是能用邻接表实现的一定能用十字链表和邻接多重表实现。并且它们的存储效率更高。
1.邻接矩阵(有向图和无向图和网)又称为数组表示法
typedef struct
{ vextype vexs[maxn]; ∥顶点存储空间∥
adjtype A[maxn][maxn]; ∥邻接矩阵∥
int vexnum,arcnum; //图的顶点数和边数
GraphKind Kind; //图的类型
} mgraph;
2.邻接表(有向图和无向图和网)
typedef struct node ∥边
{ int adj; int w; ∥邻接点、权∥
struct node *next; ∥指向下一弧或边∥
}linknode;
typedef struct ∥顶点类型∥
{ vtype data; ∥顶点值域∥
linknode *farc; ∥指向与本顶点关联的第一条弧或边∥
}Vnode;
typedef struct
{
Vnode G[maxn]; ∥顶点表∥
int vexnum,arcnum;
GraphKind kind;
}ALGraph;
adjvexnextarcinfo
边结点
datafirstarc
顶点结点
3.十字链表(有向图和有向网)
headvextaivexhlinktlinkinfo
边结点
datafirstinfirstout
顶点结点
4.邻接多重表(无向图)
markivexjvexilinkjlinkinfo
边结点
datafirstedge
顶点结点
有向无环图(DAG):是描述含有公共子式的表达式的有效工具。二叉树也能表示表达式,但是利用有向无环图可以实现对相同子式的共享,从而节省存储空间。
顶点的度:
无向图:某顶点V的度记为D(V),代表与V相关联的边的条数
有向图:顶点V的度D(V)=ID(V)+OD(V)
强连通分量:在有向图中,若图中任意两顶点间都存在路径,则称其是强连通图。图中极大 强连通子图称之为强连通分量
“极大”在这里指的是:往一个连通分量中再加入顶点和边,就构不成原图中的一个 连通子图,即连通分量是一个最大集的连通子图。有向图的连通就是指该有向图是强连通的。

考研有疑问、不知道如何总结考研考点内容、不清楚数庆考研报名当地政策,点击底部咨询官网,免费领取复习资料:https://www.87dh.com/xl/

❹ 数据结构复习总结第七章图

第七章图

图的概念

图G是由顶点集V和边集E组成 顶点集是有穷非空集 边集是有穷集;

G中每条边都有方向称有向图;有向边称弧;边的始点称弧尾;边的终点称弧头;G中每条边都没有方向的称无向图

顶点n与边数e的关系 无向图的边数e介于 ~n(n )/ 之间 有n(n )/ 条边的称无向完全图袜芹;

有向图的边数e介友好判于 ~n(n )之间 有n(n )条边的称有向完全图;

无向图中顶点的度是关联与顶点的边数;有向图中顶点的度是入度与出度的和

所有图均满足 所有顶点的度数和的一半为边数

图G(V E) 如V 是V的子集 E 是E的子集 且E 中关联的顶点均在V 中 则G (V E )是G的子图

在有向图中 从顶点出发都有路径到达其它顶点的图称有根图;

在无向图中 任意两个顶点都有路径连通称连通图;极大连通子图称连通分量;

在有向图中 任意顺序两个顶点都有路径连通称强连通图;极大连通子图称强连通分量;

将图中每条边赋上权 则称带权图为网络

图的存储结构

邻接矩阵表示法

邻接矩阵是表示顶点间相邻关系的矩阵 n个顶点就是n阶方阵

无向图是对称矩阵;有向图行是出度 列是入度

邻接表表示法

对图中所有顶点 把与该顶点相邻接的顶点组成一个单链表 称为邻接表 adjvex|next 如要保存顶点信息加入data;

对所有顶点设立头结点 vertex|firstedge 并顺序存储在一个向量中;vertex保存顶点信息 firstedge保存邻接表头指针

邻接矩阵表示法与邻接表表示法的比较

) 邻接矩阵是唯一的 邻接表不唯一;

) 存储稀疏图用邻接表 存储稠密图用邻接矩阵;

) 求无向图顶点的度都容易 求有向图顶点的度邻接矩阵较方便;

) 判断是否是图中的边 邻接矩阵容易 邻接表最坏时间为O(n);

) 求边数e 邻接矩阵耗时为O(n^ ) 与e无关 邻接表的耗时为O(e+n);

图的遍历

图的深度优先遍历

图的深度优先遍历类似与树的前序遍历 按访问顶点次序得到的序列称DFS序列

对邻接表表示的图深度遍历称DFS 时间复杂度为O(n+e); 对邻接矩阵表示的图深度遍历称DFSM 时间复杂度为O(n^ );

图的广度优先遍历

图的广度优先遍历类似与树的层次遍历 按访问顶点次序得到的序列称BFS序列

对邻接表表示的图广度遍历称BFS 时间复杂度为O(n+e); 对邻接矩阵表示的图广度遍历称BFSM 时间复杂度为O(n^ );

生成树和最小生成树

将没有回路的连通图定义为树称自由树

生成树

连通图G的一个子图若是一棵包含G中所有顶点的树 该子图称生成树

有DFS生成树和BFS生成树 BFS生成树的高度最小

非连通图生成的是森林

最小生成树

将权最小的生成树称最小生成树 (是无向图的算法)

普里姆算法

) 确定顶点S 初始化候选边集T[ ~n ];formvex|tovex|lenght

) 选权值最小的T[i]与第 条记录交换;

) 从T[ ]中将tovex取出替换以下记录的fromvex计算权;若权小则替换 否则不变;

) 选权值最小的T[i]与第 条记录交换;

) 从T[ ]中将tovex取出替换以下记录的fromvex计算权;若权小则替换 否则不变;

) 重复n 次

初始化时间是O(n) 选轻边的循环执行n k次 调整轻边的循环执行n k;算法的时间复杂度为O(n^ ) 适合于稠密图

克鲁斯卡尔算法

) 初好改始化确定顶点集和空边集;对原边集按权值递增顺序排序;

) 取第 条边 判断边的 个顶点是不同的树 加入空边集 否则删除;

) 重复e次

对边的排序时间是O(elog e);初始化时间为O(n);执行时间是O(log e);算法的时间复杂度为O(elog e) 适合于稀疏图

最短路径

路径的开始顶点称源点 路径的最后一个顶点称终点;

单源最短路径问题 已知有向带权图 求从某个源点出发到其余各个顶点的最短路径;

单目标最短路径问题 将图中每条边反向 转换为单源最短路径问题;

单顶点对间最短路径问题 以分别对不同顶点转换为单源最短路径问题;

所有顶点对间最短路径问题 分别对图中不同顶点对转换为单源最短路径问题;

迪杰斯特拉算法

) 初始化顶点集S[i] 路径权集D[i] 前趋集P[i];

) 设置S[s]为真 D[s]为 ;

) 选取D[i]最小的顶点加入顶点集;

) 计算非顶点集中顶点的路径权集;

) 重复 )n 次

算法的时间复杂度为O(n^ )

拓扑排序

对一个有向无环图进行拓扑排序 是将图中所有顶点排成一个线性序列 满足弧尾在弧头之前 这样的线性序列称拓扑序列

无前趋的顶点优先

总是选择入度为 的结点输出并删除该顶点的所有边 设置各个顶点入度时间是O(n+e) 设置栈或队列的时间是O(n) 算法时间复杂度为O(n+e)

无后继的顶点优先

总是选择出度为 的结点输出并删除该顶点的所有边 设置各个顶点出度时间是O(n+e) 设置栈或队列的时间是O(n) 算法时间复杂度为O(n+e) 求得的是逆拓扑序列

附二:

第七章图

*************************************************************************************

图的逻辑结构特征就是其结点(顶点)的前趋和后继的个数都是没有限制的 即任意两个结点之间之间都可能相关

图GraphG=(V E) V是顶点的有穷非空集合 E是顶点偶对的有穷集

有向图Digraph 每条边有方向;无向图Undigraph 每条边没有方向

有向完全图 具有n*(n )条边的有向图;无向完全图 具有n*(n )/ 条边的无向图;

有根图 有一个顶点有路径到达其它顶点的有向图;简单路径 是经过顶点不同的路径;简单回路是开始和终端重合的简单路径;

网络 是带权的图

*************************************************************************************

图的存储结构 ·邻接矩阵表示法 用一个n阶方阵来表示图的结构是唯一的 适合稠密图 ·无向图 邻接矩阵是对称的

·有向图 行是出度 列是入度

建立邻接矩阵算法的时间是O(n+n^ +e) 其时间复杂度为O(n^ )

·邻接表表示法 用顶点表和邻接表构成不是唯一的 适合稀疏图 ·顶点表结构 vertex | firstedge 指针域存放邻接表头指针

·邻接表 用头指针确定 ·无向图称边表;

·有向图又分出边表和逆邻接表;

·邻接表结点结构为 adjvex | next

时间复杂度为O(n+e) 空间复杂度为O(n+e)

图的遍历 ·深度优先遍历 借助于邻接矩阵的列 使用栈保存已访问结点

·广度优先遍历 借助于邻接矩阵的行 使用队列保存已访问结点

*************************************************************************************

生成树的定义 若从图的某个顶点出发 可以系统地访问到图中所有顶点 则遍历时经过的边和图的所有顶点所构成的子图称作该图的生成树

最小生成树 图的生成树不唯一 从不同的顶点出发可得到不同的生成树 把权值最小的生成树称为最小生成树(MST)

构造最小生成树的算法 ·Prim算法的时间复杂度为O(n^ )与边数无关适于稠密图

·Kruskal算法的时间复杂度为O(lge) 主要取决于边数 较适合于稀疏图

*************************************************************************************

最短路径的算法 ·Dijkstra算法 时间复杂度为O(n^ ) ·类似于prim算法

*************************************************************************************

拓扑排序 是将有向无环图G中所有顶点排成一个线性序列 若 ∈E(G) 则在线性序列u在v之前 这种线性序列称为拓扑序列

拓扑排序也有两种方法 ·无前趋的顶点优先 每次输出一个无前趋的结点并删去此结点及其出边 最后得到的序列即拓扑序列

lishixin/Article/program/sjjg/201311/23751

热点内容
三国服务器什么时候开放 发布:2025-03-20 15:50:43 浏览:655
英诗派2022款大改款选哪个配置好 发布:2025-03-20 15:36:50 浏览:908
厦门如何找回中招报名的密码 发布:2025-03-20 15:30:56 浏览:958
怪兽的脚本 发布:2025-03-20 15:30:56 浏览:904
cssjs压缩 发布:2025-03-20 15:29:16 浏览:276
阿里云服务器一般什么时候开放 发布:2025-03-20 15:23:40 浏览:983
厦门存储 发布:2025-03-20 15:22:48 浏览:919
微盟存储 发布:2025-03-20 15:09:48 浏览:604
思域配置可以加哪些 发布:2025-03-20 15:09:07 浏览:788
怎么注册发送邮箱的服务器 发布:2025-03-20 15:08:59 浏览:826