• Авторизация


#5 из архивов 01-03-2007 23:22 к комментариям - к полной версии - понравилось!


Копаясь в старых исходниках нарыл.
3-й курс. Предмет: "Теория принятия решений"
Решение задача коммивояжера "жадным методом".


PHP:

<?
$matrix
=array(
array(-
1, 5, 9, 6, 3, 5, 9, 5 ,8, 9),
array(
8, -1, 8, 8 ,5, 9, 2, 13, 11, 4),
array(
6, 9, -1, 1, 6, 7, 3, 7, 8 ,5),
array(
7, 11, 4, -1, 4, 2, 9, 3, 7, 10),
array(
4, 6, 3, 2, -1, 2, 8, 15, 4, 2),
array(
5, 2, 2, 8, 4, -1, 3, 8, 14, 7),
array(
8, 1, 3, 16, 5, 3, -1, 5, 8, 4),
array(
7, 2, 4, 12, 5, 13, 8, -1, 7, 14),
array(
12, 3, 7, 5, 14, 2, 9, 5, -1, 7),
array(
5, 8, 6, 11, 3, 1, 2, 1, 4, -1),
);

$t=array();$p=array(); $i=0;
while (
$i<count($matrix)){list ($p[$i],$t[$i])=JM($matrix, $i, 0, array()); $i++;}
print_r ($t);print_r ($p);

function 
JM ($src, $i, $t, $vect){
    
$mV=1000; $mK=0;
        foreach (
$src[$i] as $k=>$v) if (!in_array($k,$vect)) if ($v && $v<=$mV){$mV=$v; $mK=$k;}
    if  (
$mV==1000) $mV=0;
    if  (
count($vect)==count($src)) {return array($vect, $t);}
    else 
array_push($vect,$i); $t+=$mV; list ($vect, $t)=JM($src, $mK, $t, $vect);
    return array(
$vect, $t);
}
?>



Все это добро весит меньше килобайта :) Первый раз наблюдал и слышал звук синхронно падающих челюстей :-)
вверх^ к полной версии понравилось! в evernote
Комментарии (2):
Это что-то из раздела Транспортных задач ? А можно условие , лень идти по исходнику , а интересно :)
Гриня 02-03-2007-09:08 удалить
Апрельский_Ёжик, угу, транспортные.

сам не помню точно, гугль в помощь ;)


Комментарии (2): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник #5 из архивов | Гриня - /* Записки программиста */ | Лента друзей Гриня / Полная версия Добавить в друзья Страницы: раньше»