0

私はphpにダイクストラアルゴリズムを持っています。エッジを追加するには、次のように書く必要があります。

$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']);
}

しかし、それはエッジを追加していないようです。実行しようとすると、次のように出力されます: Undefined variable: nodes 。エッジを手動で追加してプログラムを実行すると、完全に機能します。誰か助けてくれませんか?

ノードとエッジに対してこの機能があります。

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));
}
4

1 に答える 1

1

エッジを初期化する前にノードを初期化していないと思います。

最初にデータベースからノードをロードしますか? それとも、未知のノードを参照する各エッジでノードを動的に作成しますか?

于 2013-03-16T15:16:11.790 に答える