График навигации с помощью C #
-
03-07-2019 - |
Вопрос
У меня возникло небольшое затруднение, когда я пытался придумать хороший алгоритм для навигации по следующему графику.
альтернативный текст http://www.archimedesinc.biz/images/StackOverflow/Tree .jpg р>
Если пользователь выбирает «Таблица 21» в качестве отправной точки мне нужно иметь возможность получить путь к любой другой таблице из этой стартовой таблицы.
EX: если пользователь выбирает «Таблицу 21» Для начала, а затем добавьте значение из «Таблицы 8», мне нужно создать следующий путь » Таблица 21 - > Таблица 12 - > Таблица 9 - > Таблица 6 - > Таблица 8 , все веса между таблицами одинаковы.
Кажется, я забыл свои навыки работы с ориентированными графами и не могу придумать хороший алгоритм. Я не прошу решения, а просто подталкиваю в правильном направлении.
Спасибо!
Решение
При поиске в ширину будет найден кратчайший путь: http://en.wikipedia.org / вики / Ширина-first_search
Другие советы
Поскольку вы сказали, что все ребра имеют одинаковый вес, алгоритм Дейкстры ( мой обычный первый выбор для такого рода вещей) просто снизится до поиска в ширину , поэтому Я предлагаю использовать это для простоты.
Вы можете выбрать один из нескольких алгоритмов определения кратчайшего пути. QuickGraph хорош в этом.