使用php完成最短路径查找
2018-01-20 23:51
169 查看
先看下面的图
实现了任意节点到其它节点的最短路径,代码可以直接复制测试,有任何不懂的可以在下面留言,我看到了一定会回复。
<?php
$list=[
'a'=>['b'=>1,'c'=>2,'d'=>3,],
'b'=>['a'=>1,'c'=>4,'e'=>9],
'c'=>['a'=>2,'b'=>4,'d'=>5,'e'=>6],
'd'=>['a'=>3,'c'=>5,'e'=>8],
'e'=>['b'=>9,'c'=>6,'d'=>8],
];
function find($node,$list,$next,$a=[]){
if(count($next)==count($list)){
return $_GET=[array_merge($next,$a)];
}
foreach($list[$node[strlen($node)-1]] as $k=>$v){
foreach($next as $n=>$m){
if($k==$n[strlen($n)-1]){
unset($list[$node][$k]);
}
}
}
foreach($list[$node[strlen($node)-1]] as $k=>$v){
$a[$node.$k]=$next[$node]+$v;
}
foreach($a as $k=>$v){
foreach($next as $n=>$m){
if($k[strlen($k)-1]==$n[strlen($n)-1]){
unset($a[$k]);
}
}
}
foreach($a as $k=>$v){
if(!isset($smallest) || $smallest>$v ){
$smallest=$v ;
$node=$k ;
}
}
$next[$node]=$smallest;
unset($smallest);
find($node,$list,$next,$a);
}
find('b',$list,['b'=>0]);
print_r($_GET);
实现了任意节点到其它节点的最短路径,代码可以直接复制测试,有任何不懂的可以在下面留言,我看到了一定会回复。
<?php
$list=[
'a'=>['b'=>1,'c'=>2,'d'=>3,],
'b'=>['a'=>1,'c'=>4,'e'=>9],
'c'=>['a'=>2,'b'=>4,'d'=>5,'e'=>6],
'd'=>['a'=>3,'c'=>5,'e'=>8],
'e'=>['b'=>9,'c'=>6,'d'=>8],
];
function find($node,$list,$next,$a=[]){
if(count($next)==count($list)){
return $_GET=[array_merge($next,$a)];
}
foreach($list[$node[strlen($node)-1]] as $k=>$v){
foreach($next as $n=>$m){
if($k==$n[strlen($n)-1]){
unset($list[$node][$k]);
}
}
}
foreach($list[$node[strlen($node)-1]] as $k=>$v){
$a[$node.$k]=$next[$node]+$v;
}
foreach($a as $k=>$v){
foreach($next as $n=>$m){
if($k[strlen($k)-1]==$n[strlen($n)-1]){
unset($a[$k]);
}
}
}
foreach($a as $k=>$v){
if(!isset($smallest) || $smallest>$v ){
$smallest=$v ;
$node=$k ;
}
}
$next[$node]=$smallest;
unset($smallest);
find($node,$list,$next,$a);
}
find('b',$list,['b'=>0]);
print_r($_GET);
相关文章推荐
- (转)在 Vim 中使用 Tab 键自动完成 PHP 函数
- php中使用explode查找某个字符是否存在的方法
- php.ini中文注释版 ---关于路径查找那部分很好,解决问题了。还可以看phpinfo() 信息
- 【捷哥浅谈PHP】第三弹---使用二分查找法查找数组中的元素位置
- php中使用异步调用获取数据时出现【由于出现错误 c00ce56e 而导致此项操作无法完成】
- 在PHP中使用正则表达式进行查找替换 推荐
- 韩顺平_PHP程序员玩转算法公开课(第一季)10_使用栈完成高级计算器(2)_学习笔记_源代码图解_PPT文档整理
- 查找路径php.ini文件到底在哪里?
- [HDU] 1242 Rescue -不使用优先队列来找寻最短路径
- 如何在PHP中使用正则表达式进行查找替换
- 在PHP中使用正则表达式进行查找替换
- 如何在PHP中使用正则表达式进行查找替换
- 使用PHP计算两个路径的相对路径
- 使用find和xargs完成查找任务
- 查找php.ini路径
- window平台直接访问unix中文文件路径时的变通方法,使用php发送
- 浅谈PHP第三弹---使用二分查找法查找数组中的元素位置
- php使用array_search函数查找
- PHP使用P3P完成COOKIE跨域操作
- 使用广度遍历算法寻找两点之间的最短路径