Дан ориентированный или неориентированный граф G со взвешенными рёбрами. Длиной пути назовём сумму весов рёбер, входящих в этот путь. Требуется найти кратчайшие пути от выделенной вершины s до всех вершин графа.
Полусаеться надо ввести кол-во вершин графа,нажать далее и там должна будет появиться матрица смежности(какую пользователь сам потом будет заполнять).а после матрицы надо будет вставить вот этот алгоритм:
$k=1;
for($i=1;$i<=$n;$i++){
{x[$i]=$a[1][$i]}
while(k!=n){
$y[$s]=$x[$s];
for($i=1;$i<=$n;$i++){
if($y[$s]>$x[$i]+$a[$i][$s]){
$y[$s]=$x[$i]+$a[$i][$s];
}
}
for($i=1;$i<=$n;$i+1){
{x[$s]=$y[$s]}
}
$k=$k+1;
}
тут ещё есть пояснение
Обозначим через МинСт(1,s,к) наименьшую стоимость проезда из 1 в s менее чем с k пересадками. Тогда выполняется такое соотношение:
МинСт (1,s,k+1) = наименьшему из чисел МинСт(1,s,k) и МинСт(1,i,k) + a[i][s] (i=1..n)
Как отмечалось выше, искомым ответом является МинСт(1,i,n) для всех i=1..n.
k:= 1;
for i := 1 to n do begin x[i] := a[1][i]; end;
{инвариант: x[i] := МинСт(1,i,k)}
while k <> n do begin
| for s := 1 to n do begin
| | y[s] := x[s];
| | for i := 1 to n do begin
| | | if y[s] > x[i]+a[i][s] then begin
| | | | y[s] := x[i]+a[i][s];
| | | end;
| | end
| | {y[s] = МинСт(1,s,k+1)}
| | for i := 1 to n do begin x[s] := y[s]; end;
| end;
| k := k + 1;
end;
(а это этот же алгоритм переписанный на php
$k=1;
for($i=1;$i<=$n;$i++){
{x[$i]=$a[1][$i]}
while(k!=n){
$y[$s]=$x[$s];
for($i=1;$i<=$n;$i++){
if($y[$s]>$x[$i]+$a[$i][$s]){
$y[$s]=$x[$i]+$a[$i][$s];
}
}
for($i=1;$i<=$n;$i+1){
{x[$s]=$y[$s]}
}
$k=$k+1;
}
)
Главное,чтобы после введённого кол-ва вершин графа нажимаем далее и выводится матрица смежности,а после неё вставить алгоритм в код.
Властелины php помогите начинающему решить данную задачу
Спустя 11 минут, 51 секунда (25.09.2010 - 17:53) sergeiss написал(а):
В чем именно проблема? Вставить этот алгоритм в скрипт или сам алгоритм?
Спустя 15 минут, 35 секунд (25.09.2010 - 18:09) razerblade написал(а):
Проблема в том что бы работало, а у меня пытаюсь, пытаюсь не выходит.
Так как опыта и знаний в данной сфере маловато(
Передо мной мной поставлена задача чтобы после введённого кол-ва вершин графа нажимаем далее и выводится матрица смежности,(какую пользователь сам потом будет заполнять)а после неё вставить алгоритм в код.
Поэтому проблема во первых во мне, потому что полу нуб(
А из первого вытекает 2ая проблема которая заключается в том что не могу полностью правильно написать работоспособный скрипт, который выполнял бы поставленную задачу.
Знатоки если кто может помочь мне если не трудно напишите листинг с работающим скриптом, который все что нужно в задаче делает.
Ато я уже а прострации так как замучался а сдавать надо скоро=(((
Вознаграждение за умственный труд гарантирую
Так как опыта и знаний в данной сфере маловато(
Передо мной мной поставлена задача чтобы после введённого кол-ва вершин графа нажимаем далее и выводится матрица смежности,(какую пользователь сам потом будет заполнять)а после неё вставить алгоритм в код.
Поэтому проблема во первых во мне, потому что полу нуб(
А из первого вытекает 2ая проблема которая заключается в том что не могу полностью правильно написать работоспособный скрипт, который выполнял бы поставленную задачу.
Знатоки если кто может помочь мне если не трудно напишите листинг с работающим скриптом, который все что нужно в задаче делает.
Ато я уже а прострации так как замучался а сдавать надо скоро=(((
Вознаграждение за умственный труд гарантирую