Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Алгоритм Дейкстры
 
 автор: fsn   (17.06.2008 в 19:37)   письмо автору
 
 

Добрый вечер!

У кого-нибудь есть код алгоритма Дейкстры на PHP.

   
 
 автор: mihdan   (17.06.2008 в 21:44)   письмо автору
 
   для: fsn   (17.06.2008 в 19:37)
 

http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B

   
 
 автор: BinLaden   (17.06.2008 в 21:46)   письмо автору
 
   для: mihdan   (17.06.2008 в 21:44)
 

Уважаемый mihdan, Вы настоящий высококлассный программист, но вроде просили на PHP алгоритм показать, а не ссылку на вики дать...

Напишите нам это на PHP, пожалуйста, я и fsn этого бы очень хотели.

   
 
 автор: mihdan   (17.06.2008 в 22:43)   письмо автору
 
   для: 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);
?> 


[поправлено модератором]

   
 
 автор: BinLaden   (18.06.2008 в 09:54)   письмо автору
 
   для: mihdan   (17.06.2008 в 22:43)
 

Что-то не работает.

[поправлено модератором]

   
 
 автор: mihdan   (18.06.2008 в 12:14)   письмо автору
 
   для: BinLaden   (18.06.2008 в 09:54)
 

Согласен с вами - сыровато, так как взято из лабораторки, вполне может что-то и глючить - не было времени потестить как следует

   
 
 автор: fsn   (26.06.2008 в 19:33)   письмо автору
 
   для: mihdan   (18.06.2008 в 12:14)
 

Подскажите пожалуйста, как представить надо исходный массив для этого кода, а именно начальную и конечную точку маршрута?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования