我在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));
}
答案 0 :(得分:1)
我猜你在初始化边缘之前没有初始化你的节点。
您是先从数据库加载节点,还是使用引用未知节点的每条边缘动态创建它们?