软考-数据结构-数据结构部分一直补充

本文探讨了树和图的基本概念及其算法应用,包括二叉树的性质、完全图的特征、最小生成树的求解算法(如Prim算法和Kruskal算法)、拓扑排序与关键路径的求解方法以及最短路径算法等。通过详细解析,帮助读者深入理解这些算法的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在树中,除根结点外,其余所有结点都是由其双亲结点引出的。所以+1是加的根结点。
关于树的结点个数
n=n0+n1+n2+...=....+2n2+n1+1n0+n1+n2+...=....+2∗n2+n1+1

二叉树

性质:

  1. 二叉树第二层(i>=1)上最多有 2k1 2k−1个结点
  2. 高度为k(k>=1)的二叉树最多有2k12k−1 个结点
  3. 对于任意一颗二叉树,若其终端节点数为 n0 n0,度为2 的节点个数为 n2 n2,则 n0 n0 =  n2 n2+1
  4. 具有n个节点的完全二叉树的深度为log2n+1log2⁡n+1

证明三:对于任意一个二叉树,度为0的节点个数为n0n0,度为1的结点个数为n1n1,度为2的结点个数为n2n2那么二叉树结点数n=n0+n1+n2n0+n1+n2 ,
再根据分支个数 等于 结点数 所以n=n1+2n2n1+2n2
所以 n0+n1+n2n0+n1+n2 = n1+2n2n1+2n2 相减得
 n0 n0 =  n2 n2+1

算法

算法特点

  1. 有穷性:执行有穷步后结束
  2. 确定性:算法中每一条指令都必须有明确的含义,不能含糊不清
  3. 有效性:算法的每个步骤都能有效执行并能得到确定的结果
  4. 输入
  5. 输出

算法复杂度

时间复杂度:表示方法 T(n) = O(n2n2)
常见的算法时间复杂度

完全图:若一个无向图具有n个顶点,而每一个顶点与其他n-1个顶点之间都有边,则称为无向完全图。
若一个有向图具有n个顶点,而每一个顶点与其他n-1个顶点之间都有方向相反的弧,则称为有向完全图。

含有n个顶点的无向完全图共有n(n-1)/2 边
含有n个顶点的有向完全图共有n(n-1) 弧

最小生成树 求解

  1. 普里姆 Prim 算法
    以一个顶点最为开始,不断寻找与集合中顶点相邻且代价最小的边的另一顶点,直至顶点全部为止
    与图中的边数无关,适合求 边稠密的网的最小生成树
    时间复杂度T(n) =O(n2n2)

2.克鲁斯卡尔算法
每次都选一个代价最小的边,直至所有顶点都在一个连通分量上为止
与图中的顶点数无关,该算法适合求 边稀疏的网的最小生成树
时间复杂度T(n) =O(elogeeloge)

拓扑排序&关键路径

AOV网(Activity On Vertex network)

不存在环
概念:在有向图中,若以顶点表示活动,用有向边表示活动之间的优先关系,则称这样的有向图为以顶点表示活动的网,即AOV网
对AOV网进行拓扑排序的方法:

1.在AOV网中选择一个入度为0(没有前驱)的顶点,且输出该顶点
2. 在网中删除该顶点以及与该顶点有关的弧(即出度的边)
3. 重复上述步骤,直到网中不存在入度为0的顶点为止

拓扑排序算法的时间复杂度是O(n+e)

AOE网(Activity on Edge network)

若在带权有向图G中以顶点表示事件,以有向边表示活动,以边上的权值表示该活动持续的时间,则这种带权有向图成为用边表示活动的网。
一般情况下,每项工程都有一个开始事件和一个结束事件。so,在AOE网中至少有一个入度为0的开始顶点,称为源点
另外,应有一个出度为0的结束顶点,称为汇点。

AOE网中不应存在有向回路。否则整个工程无法完成

关键路径&关键活动
关键路径:再从源点到汇点的路径中,长度最长的路径称为关键路径。
关键活动:关键路径上的所有活动均是关键活动。

最短路径

单源点最短路径

单源点最短路径:给定带权有向图G和源点v0v0,求v0v0到G中其余各顶点的最短路径。
迪杰斯特拉算法(Dijkstra):按照路径长度递增的次序产生最短路径的算法。
算法思想:把网中所有顶点分成两个集合S和T,S集合的初态只包含顶点v0v0,T集合的初态为网中除顶点v0v0之外的所有顶点。凡是以v0v0为源点,已经确定了最短路径的终点并入S集合中,顶点集合T则是尚未确定最短路径的顶点的集合,以此类推…

每对顶点间的最短路径

若每次以一个顶点为源点,重复执行迪杰斯特拉算法n次,便可求出网中每一对顶点间的最短路径。
弗洛伊德算法(Floyd):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值