moin,
für mein Projekt brauchte ich eine Umsetzung des Dijkstra-Algorithmus in PHP, die ich auch gefunden habe (weiter unten). Das Problem ist aber, dass der Script nichts ausgibt, auch keine Fehlermeldung oder so(PHP5). Als ich in Google nachgesucht habe, habe ich weitere verzweifelte Menschen gefunden, die meinten, dass er in php3 einwandfrei läuft, ab php4 ist aber Schluss. Ich habe nirgendwo eine vernünftige Lösung für dieses Problem gefunden. Irgendeine Funktion wird wahrscheinlich nicht mehr unterstützt. Bitte um eure Hilfe.
Vielen Dank im Voraus,
Andrej
für mein Projekt brauchte ich eine Umsetzung des Dijkstra-Algorithmus in PHP, die ich auch gefunden habe (weiter unten). Das Problem ist aber, dass der Script nichts ausgibt, auch keine Fehlermeldung oder so(PHP5). Als ich in Google nachgesucht habe, habe ich weitere verzweifelte Menschen gefunden, die meinten, dass er in php3 einwandfrei läuft, ab php4 ist aber Schluss. Ich habe nirgendwo eine vernünftige Lösung für dieses Problem gefunden. Irgendeine Funktion wird wahrscheinlich nicht mehr unterstützt. Bitte um eure Hilfe.
Vielen Dank im Voraus,
Andrej
PHP-Code:
<?php
$neighbors[A] = array(B => 2, D => 3);
$neighbors[B] = array(A => 2, C => 1, E => 4);
$neighbors[C] = array(B => 1, F => 5);
$neighbors[D] = array(A => 3, E => 2);
$neighbors[E] = array(D => 2, B => 4, F => 1);
$neighbors[F] = array(C => 5, E => 1);
function dijkstra($neighbors, $start) {
$closest = $start;
while (isset($closest)) {
$marked[$closest] = 1;
reset($neighbors[$closest]);
while(list($vertex, $distance) = each($neighbors[$closest])) {
if ($marked[$vertex])
continue;
$dist = $paths[$closest][0] + $distance;
if (!isset($paths[$vertex]) || ($dist < $paths[$vertex][0])) {
$paths[$vertex] = $paths[$closest];
$paths[$vertex][] = $closest;
}
}
unset($closest);
reset ($paths);
while(list($vertex, $path) = each($paths)) {
if ($marked[$vertex])
continue;
$distance = $path[0];
if (($distance < $min) || !isset($closest)) {
$min = $distance;
$closest = $vertex;
}
}
}
return $paths;
}
$paths = dijkstra($neighbors, "A");
while(list($vertex, $path) = each($paths))
echo "$vertex: ", implode(", ", $path), "\n";
?>
Kommentar