关于迪杰斯特拉算法(最短路)的PHP实现
为什么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实现相关推荐
- 最短路:迪杰斯特拉算法
迪杰斯特拉算法 伪代码 这里是引用 #include<queue> #include<stack> #include<vector> #include<str ...
- 迪杰斯特拉算法(C语言实现)
迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...
- 【算法杂谈】LJX的迪杰斯特拉算法报告
迪杰斯特拉(di jie qi)算法 这里有一张图: 假设要求从1号节点到5号节点的最短路.那么根据迪杰斯特拉算法的思想,我们先看: 节点1,从节点1出发的一共有3条路,分别是1-6.1-3.1-2. ...
- 迪杰斯特拉算法的应用
1.问题描述 穷游?"穷"游? Time Limit: 1000 MS Memory Limit: 10000 KB Description 贫穷的小A有一个梦想,就是到t国去一次 ...
- 最短路径之Dijkstra(迪杰斯特拉)算法(无向图)
简介 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.由for循环可知,其时间 ...
- Dijkstra(迪杰斯特拉)求解最短路(附python代码和可视化)
文章目录 前言 一.最短路模型 二.迪杰斯特拉算法 二.python代码实现 结果展示 前言 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算 ...
- 迪杰斯特拉算法详解+模版+例题
迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题.迪杰斯特拉算法主要特 ...
- 迪杰斯特拉算法实现-Dijkstra 简单版
迪杰斯特拉算法实现单源最短路 使用了 邻接表来存放图的信息,使用了优先级队列. #include <iostream> #include<queue> #include< ...
- 图解迪杰斯特拉算法(最短路径问题)
文章目录 一.单源最短路径问题 二.迪杰斯特拉算法 2.1 什么是迪杰斯特拉算法 2.2 迪杰斯特拉算法的步骤 2.2.1 基本步骤 2.2.2 图解演示 2.3 迪杰斯特拉算法的代码实现 一.单源最 ...
- 迪杰斯特拉算法-西安地铁最短路线问题
文章说明 图是一种较线性表和树更为复杂的数据结构,在各个领域都有着广泛的应用,如城市交通.电路网络分析.交通灯的设置等,其中,最短路径问题的求解是日常生活中最为常见的问题.在现实生活和生产实践中,有许 ...
最新文章
- 代理上网环境下配置TortoiseCVS
- 数据结构-Huffman树
- (计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)
- 内部类的小总结(语法和用法方面)
- JavaGC(1)—深入浅出Java垃圾回收机制
- Linux之DHCP+tftp+syslinux+PXE+Cobbler
- 惨遭打脸:字节某部门竟然有这么多测试
- Android 秒级编译 Freeline
- Spring之Aop代理对象的产生(二)
- 【C语言】 C语言图形编程 俄罗斯方块 课程设计
- 吴伯凡-认知方法论-我的休息
- vue html 原始 模板,vue初始化模板套用
- 自定义数据集算子数据结构
- 如何在php中显示170cm,身高 158cm,怎么穿才能像 170cm?
- 【项目记录】-上门洗车-汽车服务
- python 福利吧_段友福利:Python爬取段友之家贴吧图片和小视频
- Alibaba SWE 实习岗 笔试题 JAVA
- SPARQL中常见的关键字含义(PREFIX,FILTER,OPTIONAL等)
- 大数据平台开发架构讲解
- java linkq,TongLinkQ使用