为什么80%的码农都做不了架构师?>>>   


<?php
class dijistra
{public $inf=0x7fffffff;//最开始把不同的边赋值无限大public $MaxV=10000;//最大点数public $N,$M;public $froms;public $tos;public $ws;public $dist=array();public $path=array();public $p=array();public $map=array();function dijkstra($s){for($i=0;$i<=$this->N;$i++)//对于每个点,设置为没访问过,和设置距离{$this->p[$i]=false;$this->dist[$i]=$this->map[$s][$i];$this->path[$i]=$s;}/*设置出入点的参数*/$this->dist[$s]=0;$this->path[$s]=$s;$this->p[$s]=true;for($i=1;$i<=$this->N;$i++)//开始扫点{$min=$this->inf;$k=0;for($j=1;$j<=$this->N;$j++){if(!$this->p[$j]&&$this->dist[$j]<$min){$min=$this->dist[$j];$k=$j;}}if($k == 0){print_r("bu tong <br>");return;}$this->p[$k]=true;for($j=1;$j<=$this->N;$j++){if(!$this->p[$j]&&$this->map[$k][$j]!=$this->inf&&$this->dist[$j]>$this->dist[$k]+$this->map[$k][$j]){$this->dist[$j]=$this->dist[$k]+$this->map[$k][$j];$this->path[$j]=$k;}}}}function init(){for($i=0;$i<=$this->N;$i++)//初始化将每两个点之间的边权先赋为无穷大{for($j=0;$j<=$this->N;$j++){if($i==$j) $this->map[$i][$j]=0;else $this->map[$i][$j]=$this->inf;}   }for($i=0;$i<$this->M;$i++)//对于给出的两点的边权,更换成边权{$frompre=$this->froms[$i];$topre=$this->tos[$i];$valuepre=$this->ws[$i];$this->map[$frompre][$topre]=$this->map[$topre][$frompre]=$valuepre;}}function main($N,$M,$froms,$tos,$ws){$this->N=$N;$this->M=$M;$this->froms=$froms;$this->tos=$tos;$this->ws=$ws;$this->init();//初始化$this->dijkstra(1);for($i=1;$i<=$this->N;$i++){echo "dist[".$i."]   =   ".$this->dist[$i]."<br>";}}
}
?>
<?php
$N=4;//点的个数
$M=4;//边的个数
$froms=array('1','1','2','1');//边开始点
$tos=array('2','3','3','4');//边到达点
$ws=array('3','4','0','2');//边权
$d = new dijistra();
$d->main($N,$M,$froms,$tos,$ws);
?>

转载于:https://my.oschina.net/MrHou/blog/143896

关于迪杰斯特拉算法(最短路)的PHP实现相关推荐

  1. 最短路:迪杰斯特拉算法

    迪杰斯特拉算法 伪代码 这里是引用 #include<queue> #include<stack> #include<vector> #include<str ...

  2. 迪杰斯特拉算法(C语言实现)

    迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...

  3. 【算法杂谈】LJX的迪杰斯特拉算法报告

    迪杰斯特拉(di jie qi)算法 这里有一张图: 假设要求从1号节点到5号节点的最短路.那么根据迪杰斯特拉算法的思想,我们先看: 节点1,从节点1出发的一共有3条路,分别是1-6.1-3.1-2. ...

  4. 迪杰斯特拉算法的应用

    1.问题描述 穷游?"穷"游? Time Limit: 1000 MS Memory Limit: 10000 KB Description 贫穷的小A有一个梦想,就是到t国去一次 ...

  5. 最短路径之Dijkstra(迪杰斯特拉)算法(无向图)

    简介      Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.由for循环可知,其时间 ...

  6. Dijkstra(迪杰斯特拉)求解最短路(附python代码和可视化)

    文章目录 前言 一.最短路模型 二.迪杰斯特拉算法 二.python代码实现 结果展示 前言 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算 ...

  7. 迪杰斯特拉算法详解+模版+例题

    迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题.迪杰斯特拉算法主要特 ...

  8. 迪杰斯特拉算法实现-Dijkstra 简单版

    迪杰斯特拉算法实现单源最短路 使用了 邻接表来存放图的信息,使用了优先级队列. #include <iostream> #include<queue> #include< ...

  9. 图解迪杰斯特拉算法(最短路径问题)

    文章目录 一.单源最短路径问题 二.迪杰斯特拉算法 2.1 什么是迪杰斯特拉算法 2.2 迪杰斯特拉算法的步骤 2.2.1 基本步骤 2.2.2 图解演示 2.3 迪杰斯特拉算法的代码实现 一.单源最 ...

  10. 迪杰斯特拉算法-西安地铁最短路线问题

    文章说明 图是一种较线性表和树更为复杂的数据结构,在各个领域都有着广泛的应用,如城市交通.电路网络分析.交通灯的设置等,其中,最短路径问题的求解是日常生活中最为常见的问题.在现实生活和生产实践中,有许 ...

最新文章

  1. 代理上网环境下配置TortoiseCVS
  2. 数据结构-Huffman树
  3. (计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)
  4. 内部类的小总结(语法和用法方面)
  5. JavaGC(1)—深入浅出Java垃圾回收机制
  6. Linux之DHCP+tftp+syslinux+PXE+Cobbler
  7. 惨遭打脸:字节某部门竟然有这么多测试
  8. Android 秒级编译 Freeline
  9. Spring之Aop代理对象的产生(二)
  10. 【C语言】 C语言图形编程 俄罗斯方块 课程设计
  11. 吴伯凡-认知方法论-我的休息
  12. vue html 原始 模板,vue初始化模板套用
  13. 自定义数据集算子数据结构
  14. 如何在php中显示170cm,身高 158cm,怎么穿才能像 170cm?
  15. 【项目记录】-上门洗车-汽车服务
  16. python 福利吧_段友福利:Python爬取段友之家贴吧图片和小视频
  17. Alibaba SWE 实习岗 笔试题 JAVA
  18. SPARQL中常见的关键字含义(PREFIX,FILTER,OPTIONAL等)
  19. 大数据平台开发架构讲解
  20. java linkq,TongLinkQ使用

热门文章

  1. cocos cteator中tiled模式 用图集容易出线
  2. 数据结构 | 实现串(定长顺序存储表示法)
  3. 50:树中两个结点的最低公共祖先
  4. C#将运算字符串直接转换成表达式且计算结果
  5. 安装mysql数据库要注意的
  6. IT增值服务实践心得体会:企业客户的钱比个人客户好赚得多
  7. SQL char字段类型排序
  8. Eclipse中查看Android源代码
  9. MVC之实体框架(数据持久化框架)EntityFrameWork(EF)
  10. Linux的追逐,Windows的穷途恼指日可待