热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

关于Floyd的打印路径的个人总结

如图这个最短路很明显要打印该条路的路径,需要这条路上的各个节点都能被枚举到,最简单的方式就是path[1][8]5,path[5][8]4,path[4][8]7,path[7]

如图这个最短路

很明显要打印该条路的路径,需要这条路上的各个节点都能被枚举到,最简单的方式就是path[1][8]=5,path[5][8]=4,path[4][8]=7,path[7][8]=8;显然如果要满足以上的要求,当map[i][j]path[i][j]=path[i][k]即可.

举例:

k=4

path[5][7]=path[5][4]=4

k=7

path[5][8]=path[5][7]=4

所以path[5][8]=4满足以上条件


代码实现:

初始化:

	for(i=0;i<=n;i++)
		{
			for(j=0;j<=n;j++)
			{
				path[i][j]=j;
				
			}
		}

实现:

	for(k=1;k<=n;k++)
		{
			for(i=1;i<=n;i++)
			{
				for(j=1;j<=n;j++)
				{
					if(map[i][j]>map[i][k]+map[k][j]+tax[k])
					{
						path[i][j]=path[i][k];
						map[i][j]=map[i][k]+map[k][j]+tax[k];
					}
					if(map[i][j]==map[i][k]+map[k][j]+tax[k])
					{
						path[i][j]=min(path[i][j],path[i][k]);
					}
				}	
			}	
		}



推荐阅读
author-avatar
mobiledu2502923083
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有