- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* Kruskal’s MST Algorithm(3) void Kruskel(Graph* G){//Kruskals MST algorithm Gentree A(G-n()); // Equivalence class array KruskElem E[G-e()]; // Array of edges for min-heap int i; int edgecnt = 0; for (i=0; iG-n(); i++) // Put the edges on the array for (int w=G-first(i); wG-n(); w = G-next(i,w)) { E[edgecnt].distance = G-weight(i, w); E[edgecnt].from = i; E[edgecnt++].to = w; }//所有边得权值入数组,变最小值堆 // Heapify the edges minheapKruskElem, KKComp H(E, edgecnt, edgecnt); int numMST = G-n(); // Initially n equiv classes for (i=0; numMST1; i++) { // Combine equiv classes KruskElem temp; H.removemin(temp); // Get next cheapest edge int v = temp.from; int u = temp.to; if (A.differ(v, u)) {//If in different equiv classes A.UNION(v, u); // Combine equiv classes AddEdgetoMST(temp.from, temp.to);//Add edge to MST numMST--; // One less MST } }} * Kruskal’s MST Algorithm (4) Cost is dominated by the time to remove edges from the heap. Can stop processing edges once all vertices are in the same MST Total cost: Q(|V| + |E| log |E|). * 普里姆算法 克鲁斯卡尔算法 时间复杂度 O(n2) O(e*loge) 稠密图 稀疏图 算法名 适应范围 顶点开始 边开始 * 要点回顾 熟悉图的各种存储结构及其构造算法,了解实际问题的求解效率与采用何种存储结构和算法有密切联系。 熟练掌握图的两种搜索路径的遍历:遍历的逻辑定义、深度优先搜索和广度优先搜索的算法。 应用图的遍历算法求解各种简单路径问题。 理解教科书中讨论的各种图的算法。 * 课堂练习 请下课时,提交你的练习结果给我,谢谢。 并请写好你的学号和姓名。 邻接矩阵 邻接表 深度优先遍历 广度优先遍历 拓扑排序 关键路径 A到其它节点的最短路径 所有节点对之间的最短路径 * 课堂练习 请下课时,提交你的练习结果给我,谢谢。 并请写好你的学号和姓名。 Prim求MST,从A开始 Kruskal求MST * * 图的周游可用于解决先决条件问题。假设我们要安排一系列任务,如轮班或分工,而只有在某个任务的先决条件具备时才能着手执行这个任务。我们希望以某种线性顺序组织这些任务,以便在满足先决条件的情况下逐个完成各项任务。 * Prints in reverse order. * 画队列情况 * 我们也可以使用队列代替递归来实现拓扑排序。做法如下: 首先访问所有的边,计算指向每个顶点的边的数目(即计算每个顶点的先决条件个数),将所有无先决条件的顶点放入队列,然后开始处理队列。从队列中删除一个顶点并打印,同时将其所有相邻顶点的先决条件计数减1。当某个相邻顶点的计数为0时,就将其插入队列。如果在所有顶点都被打印前队列已为空,则图中必包含回路(即不可能不违反任何先决条件为这些任务安排一个合理顺序)。 * 拓扑序列可通过对图进行深度优先搜索来寻找, 某个顶点被访问时,不进行任何处理(即PreVisit()函数什么也不做); 当递归返回到此顶点时,PostVisit()函数打印这个顶点。这就产生一个逆序的拓扑序列。序列从哪个顶点开始并不重要,因为所有顶点最终都被访问到 --- 使用此算法从J1开始
您可能关注的文档
最近下载
- 浅析企业员工流失的原因及对策——以福州永辉超市为例.docx VIP
- XK3190-C8技术手册.pdf VIP
- 广州市历年中考(2025-2026)化学试题(含答案).doc VIP
- 办公设备维护方案.docx VIP
- 浙江省杭州市学军中学四校区2022-2023学年高二上学期期末物理试题(含答案解析).docx
- 《金瓶梅》中潘金莲“绣鞋”之物象探析.doc VIP
- 14s501-1P35-37页球磨铸铁踏步施工检验标准.pdf VIP
- 2026年上海市松江区中考一模化学试卷含详解.docx VIP
- 2025研读新课标,探寻数学教育新方向——读《小学数学新课程标准》有感.docx
- 如何通过手机号码查询行动轨迹.docx VIP
原创力文档


文档评论(0)