Копаясь в старых исходниках нарыл.
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);
}
?>