1 / 22
文档名称:

无向图传递闭包过程稿.ppt

格式:ppt   大小:217KB   页数:22页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

无向图传递闭包过程稿.ppt

上传人:taotao0a 2017/9/6 文件大小:217 KB

下载得到文件列表

无向图传递闭包过程稿.ppt

文档介绍

文档介绍:无向图的传递闭包
无向图的传递闭包主要用于判断图的连通性和图中满足条件的连通分支,具有很高的实用价值。
借鉴无向图的传递闭包思想,可以计算图中每一对顶点之间的最短路径(实际上就是Floyd算法的思想)。
无向图的传递闭包
问题一、判断无向图中任意两个顶点之间是否有路。
例1、输入一张无向图,指出该图中哪些顶点对之间有路。
输入:n(顶点数,1<=n<=20);
e(边数,1<=e<=210);
以下e行,每行为有边连接的一对顶点。
输出:k行,每行两个数,为存在路的顶点对序号i,j,要求i<j。
分析:
1、采用宽度优先或深度优先遍历来解决。因为从任意一个顶点出发,进行一次遍历,就可以求出此顶点和其它各个顶点的连通状况。所以只要把每个顶点作为出发点都进行一次遍历,就能知道任意两个顶点之间是否有路存在。一次遍历的时间复杂度为O(n),要穷举每个顶点,所以总的时间复杂度为O(n*n)。
无向图的传递闭包
2、设link,longlink:array[1..20,1..20] of Boolean;分别存放无向图和它的传递闭包。若longlink[i,j]=true,表示顶点对i,j之间有路;否则无路。
我们采用递推(迭代)的方法,不断对longlink进行运算(产生longlink(0), longlink(1),……, longlink(n))。对于i,j和k=1,……,n,如果图中顶点i至顶点j间存在通路且通路上所有顶点的序号均属于{1,2,……,k},则定义longlinkij(k)=true;否则值为false。有:longlinkij(k)= longlinkij(k-1) or (longlinkik(k-1) and longlinkkj(k-1))。
计算过程如下:
longlink的初值赋为link;
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
longlink[i,j]= longlink[i,j] or (longlink[i,k] and longlink[k,j]);
  由于布尔型的存储量少于整数,且位逻辑运算的执行速度快于算术运算,所以空间和时间效率都很好。时间复杂度为O(n*n*n)。了解Floyd算法求最短路径问题的学生,一眼就应该看出这个程序段和算法思想与Floyd算法是完全一致。
var
link,longlink:array[1..20,1..20] of boolean;{ 无向图和无向图的传递闭包。其中}
我们递推产生longlink(0)、longlink(1)、…longlink(n)。在递推过程中,路径长度的’+’运算和比较大小的运算用相应的逻辑运算符’and’和’or’代替。对于i,j和k=1‥n,如果图中结点i至结点j间存在通路且通路上所有结点的序号均属于{1‥k},则定义longlinkij(k)=1;否则longlinkij(k)=0。
longlinkij(k)=longlinkij(k-1)or(longlinkik(k-1)andlonglinkkj(k-1))
传递闭包longlink的计算过程如下:
longlink←link;
for k←1 to n do {枚举中间顶点}
for i←1 to n do{枚举所有顶点对}
for j←1 to n do {计算顶点i和顶点j的连通情况}
longlink[i,j]←longlink[i,j]or(longlink[i,k]andlonglink[k,j]);
主程序
fillchar(longlink,sizeof(longlink),0);{传递闭包初始化}
fillchar(link,sizeof(link),0); {无向图初始化}
readln(n);readln(e); {读顶点数和边数}
for k←1 to e do {输入无向图的信息}
begin
readln(i,j);link[i,j]←true;link[j,i]←true;
end;{for}
计算传递闭包longlink;
for i←1 to n-1 do {输出所有存在通路的顶点对}
for j←i+1 to n do if longlink[i,j] then 输出i和j;
无向图的传递闭包
问题二、寻找满足条件的连通分支。
例2、输入一张顶点带权的无向图,分别计算含顶点数最多的一个连通
分支和顶点的权之和最大的一个连通分支。
输入:n(顶点数,1<=n<=20);
以下n行,依次表示顶点1 ~ 顶点n上的权;
e(边数,1<=e<=210);
以下e行,每行为有边连接的一对顶点。
输出:两行,一行

最近更新

代缴社保及企业员工福利保障协议书 3页

企业员工健康体检劳动合同范本关注员工健康 3页

企业形象标志设计合同书 3页

企业财产保险经纪服务委托协议范本下载 3页

企事业单位专用车辆租赁服务合同书 3页

体育健身场地买卖合同协议 3页

2025年度工厂员工固定期限劳动合同签订与职业.. 37页

保安派遣服务合同确保企业安全稳定 4页

2025年度小区物业消防系统安全评估与维修合同.. 125页

保险期货居间服务合同范本及实施细则 2页

2025年度家庭劳动教育及劳动技能培养合作协议.. 41页

健康食品连锁店授权销售合同示例 3页

2025年度实习协议书:体育管理实习生3篇 39页

党政机关会议图文直播及录制合同 3页

2025年度学校食堂特色菜品开发合作协议3篇 96页

公司向个人提供金融服务合同范本 3页

农业科技项目保密协议范本 3页

冰淇淋原料采购与代理经营合作协议 3页

出口业务咨询合同规定与市场分析服务 2页

2025年度城市景观照明工程承包合同示范文本3篇.. 46页

出租车企业驾驶员劳动合同执行细则 3页

2025年度农业大棚租赁合同书电子版3篇 36页

2025年度住宅小区排水管道施工免责协议3篇 40页

创新型word模板家具商品购销合同书 2页

2025年度二手家具买卖及翻新合同3篇 41页

办公楼施工合同执行监督 3页

办公设备维修保养服务合同范本 3页

北京个人汽车租赁节假日高峰期调整合同 3页

北京网络安全风险评估与防护服务合同 3页

医疗设备进口保证合同协议 3页