Z
zmej gorjanin
Гостин
Се согласувам дека мора да се напредува и тоа е нешто што на голем дел од луѓето му недостига. Еднаш ако поминат нешто „си легнуваат на брашното“ и толку, сум сретнал и инженери кои уште имаат калкулатор на маса и собираат келнерска математика, а имаат пред нив машини дадени од фирмата од по 1000евра, само Ексел е за глупи
Не е за тоа апликацијата, на кратко: прави комбинаторика од сите дадени случаи за изведба на една иста ситуација и во однос на претходно зададени параметри му ја избира најоптималната, а потоа резултатите ги полни во Ексел во кој во првиот шит влегуваат овие податоци, а во останатите екселот си ги повлекува преку power query и прави дополнителна визуелизација со графикони и анализи. (проект што човек го работи рачно 2 недели, со овие скрипти се завршува грубо во 1-2 денови при што на крај генерира ист сет на податоци кај сите што работат на проектот и ја олеснува понатамошна манипулација на податоците и импорт во база).
Еј јака работа алгоритмов, денеска полициски час и земав се позамарав малце
баш пробував со примеров од видеово од линкот што го постираше за Џајкстра и мислам дека работи
PHP:
$array = [
"A" => [
"C" => 3,
"B" => 4,
"E" => 7
],
"B"=> [
"A" => 4,
"D" => 5,
"C" => 6
],
"C" => [
"A" => 3,
"E" => 8,
"D" => 11,
"B" => 6
],
"D" => [
"C" => 11,
"E" => 2,
"G" => 10,
"B" => 5,
"F" => 2
],
"E" => [
"C" => 8,
"D" => 2,
"G" => 5
],
"F" => [
"D" => 2,
"G" => 3
],
"G" => [
"F" => 3,
"D" => 10,
"E" => 5
]
];
$zeroElement = "A";
$zeroValue = 0;
$lastElement = "F";
$lastElements = [];
echo "<pre>";
foreach($array[$zeroElement] as $subkey => $subvalue)
{
$key = $zeroElement;
$value = $zeroValue;
$keyValues = [$key=>$value];
$visited = [];
$iteration = 1;
while($key !== $lastElement)
{
$array[$key] = array_filter($array[$key], function ($v, $k) use (&$keyValues, $visited, $value){
if(in_array($k, $visited))
{
return false;
}
if(!isset($keyValues[$k]))
{
$keyValues[$k] = $v + $value;
}
else
{
if($v + $value < $keyValues[$k])
{
$keyValues[$k] = $v + $value;
}
}
return true;
}, ARRAY_FILTER_USE_BOTH);
if($iteration === 1)
{
$minValue = $subvalue;
$minKey = $subkey;
}
else
{
$minValue = min($array[$key]);
$minKey = array_search($minValue, $array[$key]);
}
$visited[] = $key;
$key = $minKey;
$value = $minValue + $value;
$iteration++;
}
if(empty($lastElements))
{
$lastElements[$lastElement] = $keyValues[$lastElement];
}
else
{
if($lastElements[$lastElement] > $keyValues[$lastElement])
{
$lastElements[$lastElement] = $keyValues[$lastElement];
}
}
}
print_r($lastElements);