使用SQL和PHP的Dijkstra算法

时间:2013-03-16 15:09:50

标签: 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->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));
}

1 个答案:

答案 0 :(得分:1)

我猜你在初始化边缘之前没有初始化你的节点。

您是先从数据库加载节点,还是使用引用未知节点的每条边缘动态创建它们?