I w czym problem? Mamy to zrobić za Ciebie? Mala pomoc:
<?php
/*
przykładowy graf:
B-------C
/ \ 1 \
2 / \ \5
/ \ \
A \4 F
\ \ /
3 \ \ /1
\ \ /
D-------E
2
autor skryptu: venaas <venaas () nvg ! ntnu ! no>
źródło: <a href="http://marc.theaimsgroup.com/?l=php-general&m=96024323421478&w=2" target="_blank">http://marc.theaimsgroup.com/?l=php-genera...3421478&w=2</a>
*/
$wezel["A"] = array("B"=>2, "D"=>3
); $wezel["B"] = array("A"=>2, "C"=>1, "E"=>4
); $wezel["C"] = array("B"=>1, "F"=>5
); $wezel["D"] = array("A"=>3, "E"=>2
); $wezel["E"] = array("D"=>2, "B"=>4, "F"=>1
); $wezel["F"] = array("C"=>5, "E"=>1
);
function dijkstra($wezel, $start) {
$closest = $start;
$marked[$closest] = 1;
while(list
($vertex, $distance) = each($wezel[$closest])) { if ($marked[$vertex]) continue;
$dist = $paths[$closest][0] + $distance;
if (!isset($paths[$vertex]) || $dist<$paths[$vertex][0
]) { $paths[$vertex] = $paths[$closest];
$paths[$vertex][0] = $dist;
$paths[$vertex][1] .= "$closest ";
}
}
while(list
($vertex, $path) = each($paths)) { if ($marked[$vertex]) continue;
$distance = $path[0];
if ($distance<$min || !isset($closest)) { $min = $distance;
$closest = $vertex;
}
}
}
return $paths;
}
$start = "F"; // punkt od którego startujesz
$sciezki = dijkstra($wezel, $start);
foreach ($sciezki as $wezel => $sciezka) {
echo "$start=>$wezel: <b>$sciezka[0]</b> scieżka: [$sciezka[1] $wezel]<br />\n";
}
?>