График навигации с помощью C # - PullRequest
2 голосов
/ 01 мая 2009

У меня возникло некоторое затруднение, когда я пытался придумать хороший алгоритм для навигации по следующему графику.

альтернативный текст http://www.archimedesinc.biz/images/StackOverflow/Tree.jpg

Если пользователь выбирает «Таблицу 21» в качестве отправной точки, мне нужно иметь возможность получить путь к любой другой таблице из этой стартовой таблицы.

EX: Если пользователь выбирает «Таблицу 21» в качестве начала, а затем добавляет значение из «Таблицы 8», мне нужно создать следующий путь » Таблица 21 -> Таблица 12 -> Таблица 9 -> Таблица 6 -> Таблица 8", все веса между таблицами одинаковы.

Кажется, я забыл свои навыки работы с ориентированными графами и не могу придумать хороший алгоритм. Я не прошу решения, а просто подталкиваю в правильном направлении.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 01 мая 2009

Поскольку вы сказали, что все ребра имеют одинаковый вес, алгоритм Дейкстры (мой обычный первый выбор для такого рода вещей) просто ухудшится до поиск в ширину поэтому я предлагаю используя это для простоты.

3 голосов
/ 01 мая 2009

При поиске в ширину будет найден кратчайший путь: http://en.wikipedia.org/wiki/Breadth-first_search

1 голос
/ 01 мая 2009

Вы можете выбрать один из нескольких алгоритмов определения кратчайшего пути. QuickGraph хорош в таких вещах.

...