|
|
|
| Добрый вечер!
У кого-нибудь есть код алгоритма Дейкстры на PHP. | |
|
|
|
|
|
|
|
|
для: mihdan
(17.06.2008 в 21:44)
| | Уважаемый mihdan, Вы настоящий высококлассный программист, но вроде просили на PHP алгоритм показать, а не ссылку на вики дать...
Напишите нам это на PHP, пожалуйста, я и fsn этого бы очень хотели. | |
|
|
|
|
|
|
|
для: BinLaden
(17.06.2008 в 21:46)
| | Нахождение кратчайших путей от заданной вершины до всех остальных вершин алгоритмом Дейкстры
Нахождение кратчайших путей от заданной вершины до всех остальных вершин алгоритмом Дейкстры для разреженных графов
<?php
function dej($array) {
// Размерность массива
$count = count($array);
for ($i = 0; $i < $count; $i++) {
$a[] = $i;
}
while(1) {
$index = 0;
for($i = 0; $i < $count; $i++) {
if ($a[$i+1] > $a[$i]) {
$index = $i+1;
}
}
if ($index == 0) {
break;
}
if ($a[$i-1] > $a[$i-2]) {
$index = $i-1;
}
$min = $a[$index];
$in_min = $index;
for($j = $index; $j < $count; $j++) {
if (($a[$j] < $min) && ($a[$j] > $a[$index-1])) {
$min = $a[$j];
$in_min = $j;
}
}
$swap = $a[$in_min];
$a[$in_min] = $a[$index-1];
$a[$index-1] = $swap;
for ($i1 = $index, $i2 = $count-1; $i1 < $i2; $i1++, $i2--) {
$swap = $a[$i1];
$a[$i1] = $a[$i2];
$a[$i2] = $swap;
}
$str = '';
for($k = 0; $k < $count; $k++) {
$i = $a[$k];
$str .= $array[$i].' ';
}
$result[] = $str;
}
return $result;
}
// множество непосещённых вершин
$array = array();
$dej = dej($array);
print_r($dej);
?>
|
[поправлено модератором] | |
|
|
|
|
|
|
|
для: mihdan
(17.06.2008 в 22:43)
| | Что-то не работает.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: BinLaden
(18.06.2008 в 09:54)
| | Согласен с вами - сыровато, так как взято из лабораторки, вполне может что-то и глючить - не было времени потестить как следует | |
|
|
|
|
|
|
|
для: mihdan
(18.06.2008 в 12:14)
| | Подскажите пожалуйста, как представить надо исходный массив для этого кода, а именно начальную и конечную точку маршрута? | |
|
|
|