用SQL和PHP实现Dijkstra算法
我有php中的dijkstra算法,为了添加边,我必须编写:用SQL和PHP实现Dijkstra算法,php,sql,dijkstra,Php,Sql,Dijkstra,我有php中的dijkstra算法,为了添加边,我必须编写: $g= new Graph(); $g->addedge("b", "c", 8); $g->addedge("b", "e", 2); 我想添加数据库中的所有边。我写过: $result= mysql_query("SELECT Start,End,Distance FROM test_stations"); while($row = mysql_fetch_array($result)){ $g->ad
$g= new Graph();
$g->addedge("b", "c", 8);
$g->addedge("b", "e", 2);
我想添加数据库中的所有边。我写过:
$result= mysql_query("SELECT Start,End,Distance FROM test_stations");
while($row = mysql_fetch_array($result)){
$g->addedge($row['Start'],$row['End'],$row['Distance']);
$g->addedge($row['End'],$row['Start'],$row['Distance']);
}
但它似乎没有添加边缘。当我试着运行它时
它输出:未定义变量:节点。
如果我通过手动添加边来运行程序,它将非常有效。
有人能帮我吗
对于节点和边,我有这个函数
public $nodes = array();
public function addedge($start, $end, $weight = 0) {
if (!isset($this->nodes[$start])) {
$this->nodes[$start] = array();
}
array_push($this->nodes[$start], new Edge($start, $end, $weight));
}
我猜在初始化边之前,还没有初始化节点
您是首先从数据库加载节点,还是使用引用未知节点的每条边动态创建节点?在加载边之前如何将节点加载到图形中?这是您自己的类?你的错误中没有行号?如果不知道类
图
很难判断..您可以使用递归CTE使其工作。不幸的是,mysql没有它们。