Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用SQL和PHP实现Dijkstra算法_Php_Sql_Dijkstra - Fatal编程技术网

用SQL和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

我有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->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没有它们。