Необходима помощь знатоков. Есть граф в виде матрицы смежности представленной в массиве:
[0] => Array
(
[0] => 0
[1] => 5
[2] => 8
[3] => 0
[4] => 0
[5] => 0
[6] => 0
)
[1] => Array
(
[0] => 5
[1] => 0
[2] => 0
[3] => 12
[4] => 0
[5] => 9
[6] => 0
)
[2] => Array
(
[0] => 8
[1] => 0
[2] => 0
[3] => 0
[4] => 8
[5] => 4
[6] => 2
)
[3] => Array
(
[0] => 0
[1] => 12
[2] => 0
[3] => 0
[4] => 3
[5] => 6
[6] => 0
)
[4] => Array
(
[0] => 0
[1] => 0
[2] => 8
[3] => 3
[4] => 0
[5] => 0
[6] => 7
)
[5] => Array
(
[0] => 0
[1] => 9
[2] => 4
[3] => 6
[4] => 0
[5] => 0
[6] => 0
)
[6] => Array
(
[0] => 0
[1] => 0
[2] => 2
[3] => 0
[4] => 7
[5] => 0
[6] => 0
)
А так же есть алгоритм Дейкстры в виде кода:
$maxDist = 9999999;
// Присваивание всем точкам бесконечный вес и информации о посещении.
foreach ($data as $key=>$i){
$distance[$key] = $maxDist;
$visited[$key] = false;
}
// Обозначение начальной точки
$distance[$start] = 0;
for ($count = 0; $count < count($matrix); $count++) {
$min = $maxDist;
// Поиск точки с минимальным весом
for ($i = 0; $i < count($matrix); $i++){
if (!$visited[$i] && $distance[$i] <= $min) {
$min = $distance[$i];
$index = $i;
}
}
$u = $index;
$visited[$u] = true; // Обозначение посещенной точки
// Поиск наименьшего пути к точке.
for ($i = 0; $i < count($matrix); $i++){
if(!$visited[$i] && $matrix[$u][$i] != 0 && $distance[$u] + $matrix[$u][$i] < $distance[$i]) {
$distance[$i] = $distance[$u] + $matrix[$u][$i];
}
}
}
Данный код ищет кротчайшие пути ко всем точкам из начальной точки, однако необходимо задать и конечную точку и вывести список всех промежуточных точек, от начальной точки до конечной. Вопрос состоит в том, как найти список промежуточных точек? Заранее спасибо.
Вот в тот момент, когда определяется кратчайший путь, нужно заодно записать в дополнительное поле для $i
-го узла, откуда в него было выгоднее прийти - из $u
- а в конце размотать путь назад.
if(!$visited[$i] && $matrix[$u][$i] != 0 && $distance[$u] + $matrix[$u][$i] < $distance[$i]) {
$distance[$i] = $distance[$u] + $matrix[$u][$i];
$best[$i] = $u;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Впервые пробую создать отправку формы через AJAX и получаю 500 ошибку сервераЗнаю, что подобные темы уже есть и много, но полезного ничего не подчерпнул
Хочется исключить взломы баланса и покупокКакие есть еще способы атак на финансовые сайты помимо перечисленных и как от них защититься?
Не получается написать регулярное выражение, которое заменяло бы все пути с картинкамиКод: