алгоритм Дейкстры в выпуске PHP

Мне нужна помощь с алгоритмом dijkstra в PHP.

Идея заключается в разработке кратчайшего пути внутри здания. Вход через главный вход в зал, а затем в 2 здания, слева (VB) и справа (PS).

Все имена VB-0-LIFT (здание-этаж-место).

https://github.com/phpmasterdotcom/DataStructuresForPHPDevs/blob/master/Graphs/graph-dijkstra.php

Array
(
[ENTRANCE] => Array
(
[VB-0-HALL-CROSS] => 1
[PS-0-HALL-CROSS] => 1
)
[VB-0-HALL-CROSS] => Array
(
[ENTRANCE] => 1
)
[PS-0-HALL-CROSS] => Array
(
[ENTRANCE] => 1
)
)

Моя головная боль начинается, когда я начинаю пробовать маршруты:

А) Хорошо. $r->route('VB-0-HALL-CROSS', 'PS-0-HALL-CROSS')

  1. VB-0-ХОЛЛ-Перекрестная
  2. ВХОД
  3. ПС-0-ХОЛЛ-Перекрестная

B) ПОТЕРПЕТЬ ПОРАЖЕНИЕ. $r->route('PS-0-HALL-CROSS', 'VB-0-HALL-CROSS')

  1. Ошибка: нет маршрута от PS-0-HALL-CROSS до VB-0-HALL-CROSS

C) Хорошо. $r->route('ENTRANCE', 'PS-0-HALL-CROSS')

  1. ВХОД
  2. ПС-0-ХОЛЛ-Перекрестная

Я не знаю, не понимаю ли я dijkstra, но когда я соединяю VB-0-HALL-CROSS и PS-0-HALL-CROSS с комбинациями лифтов, такими как
VB-0-HALL-CROSS -> VB Лифт 0 этаж

  • VB этаж 0 -> VB этаж 1, VB этаж 2 …
  • VB этаж 1 -> VB этаж 0, VB этаж 2 …
  • VB этаж 2 -> VB этаж 0, VB этаж 1 …

И это с 12 этажей.

В случае с полами, работает только с одними, другие не работают.

Есть ли проблема с конечной вершиной в алгоритме Дейкстры? Или какая-то идея, почему это идет не так?

while (!isEnded()) echo "thank you Colleagues";

(Я могу прикрепить код в GitHub полностью прокомментирован).

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]