Union-find
摘要:1.算法复杂度与设计的数据结构 有关 设计成有一个数组id,id[] 元素保存其相连接的点的编号值 如下所示,采用这种类型的数据结构图 对于这种 Union:1. 在树建立过程出,树的最终形态严重依赖于输入数据本身的性质,比如数据是否排序,是否随机分布等等。比如在输入数据是有序的情况下,构造的BST
阅读全文
图---广度优先遍历
摘要:1.解决问题:判断一幅图中 从顶点S到顶点V之间是否有一条路径 Dijkstar算法的基础(计算出S--V点中最短路径) 1.使用队列(FIFO)先进先出原则 存储与顶点S相距 N条边的点,直到遍历到V点上 不同于深度优先遍历 不需要进行递归 因此 BFS无法判断图中是否有环的 判断出一个有向图是否
阅读全文
图论知识错题本
摘要:1.判断出一个有向图是否有环的是:a.最短路径有向图最短路径Dijkstra不一定能够判断有环,除非Visted数字记录0(false),1(已经访问), 2(再一次重复访问); b.括扑排序:通过入度0之后记录顶点数与原Vetex相比较 C.DFS(深度优先遍历),图处理成树结构时候,找到一个节点
阅读全文
图论--深度优先遍历DFS
摘要:public void pathTo(int v,int start) { /**打印 一结点到其他结点上的路径*/ Stack<Integer> path=new Stack<Integer>(); for(int i=v;i!=startpoint;i=edgeTo[i]) path.push(
阅读全文
图---邻接链表建立
摘要:1 package Graph; 2 /**使用邻接表 生成图*/ 3 public class Graph { 4 5 public int Vertex; 6 public int EdgeNum; 7 VNode[] graph; 8 public Graph(int V[],int E, int [][]vertex,i...
阅读全文
krusual C++
摘要:1.krusual算法通过边生成有权不分方向的图中最小生成树,第一点:建立一个从小到大排序的数组(Krusual的生成数组);第二点:通过集合中并操作,对新加入的边(对新加入顶点通过集合的Union操作防止产生环路)。
阅读全文
Dijkstra And Floyd C++
摘要:Dijkstra算法主要是单源路径的最短算法,计算的是起始点到其他顶点的最短路径;算法具体: 1.S集合中表示收录的最短路径的点集合,U剩余点的集合,Dist[]表示起始点到其他点最短路径,每一次从dist中选择出最短路径的点e(这种方式能够选出多条路径); 2.对dist和prev矩阵通过新加入的
阅读全文