具体参考《算法图解》这本书第7章讲的,原书是用python写的,我用PHP再写一次,并稍加完善
把书上这三道练习题,拿来测试
网上再找了一个稍“难”点的题
上代码:
class ShortPath{
protected $graph=[];//只需要存每个节点所对应的邻居们,就能表示一个图了
protected $parents=[];//保存父级关系,最终能通过这个数组,回溯走过的最短路线
protected $costs;//从起点,到每个节点的花销
protected $infinity=999999;//用一个很大的数字,来代表一个正无穷大
protected $processed=[];//已处理过的节点的key
public function __construct($graph)
{
$this->graph=$graph;
//初始化父级数组, 即:只知道start的邻居,就是start的父级
foreach ($this->graph['start