Посоветуйте алгоритм для работы с графом.

программирование алгоритмы

Какой можно применить алгоритм для нахождения кратчайшего расстояния между двумя задаными вершинами графа?Алгоритм Дейкстры не совсем подходит,так как он определяет пути от первой вершины ко всем.У меня ситуация такая.Есть граф.Необходимо вывести путь только между двумя указанными вершинами.Можно конечно прикрутить сюда и алгоритм Дейкстры,но код получается через чур большим.Может есть другое решение?

Примечание:
SETdream
Алгоритм Прима мне не подходит.Мне не нужен минимальный граф.

Примечание:
Я задачу решил с помощью алгоритма Дейкстры.На счёт большого кода я не правильно выразился.Просто приходится делать несколько проверок,чтоб искать путь от указанной вершины.Вот и спросил,есть ли ещё что-то кроме этого алгоритма,именно для 2-х вершин.
Вчера вычитал,что для таких задач,впринципе,алгоритм Дейкстры оптимален.Для избранных двух вершин пока ничего ещё не придумали.
Ответы:
Алгоритм Прима ;)
> пути от первой вершины ко всем.
проблема в том, что нет четких критериев, по которым можно оценить "расстоняие" до того, как оно становится известным. Следовательно, все разновидности ветвей и границ упираются в этот критерий.
Подобные задачи исследуются в системах ИИ - алгоритмы поиска между двумя графами... Но чаще всего просто юзается жадный алгоритм поверх дейкстры (поиск вглубину).
2Каракуль: обход всех бывает слишком трудоемким. Например: навигация в крупном городе. Есть надежные алгоритмы, которые отсекают лишние пути (метод ветвей и границ во всех видах).
Уважаемый safright, Алгоритм поиска минимального остовного дерева вас устроит ;))))
Посмотри статью ещё, может чем поможет http://rain.ifmo.ru/cat/view.php/theory/graph-spanning-trees/mst-2005
-создаем массив и первым элементом устанавливаем первую вершину
-помечаем вершину как рассмотренную
-запихиваем массив в стек
-в цикле пока стек не пуст
 -выпихиваем из стека массив
 -у последнего элемента в массиве просматриваем соседние вершины
 -если это вторая вершина - кратчайший путь найден
 -если это помеченная вершина - пропускаем ее
 -если это не помеченная вершина - копируем массив и к добавляем вершину в конец
 -запихиваем копию в стек
-если все вершины помечены, а вторая вершина не достигнута - граф не связный и вершины находятся в разных подграфах
SETdream, я-т все это понимаю и знаю (обязанность, куда без нее). Но фишка-то в том, что эти алгоритмы ориентированы на поиск всех кратчайших путей ;) Есть разница между "найти кратчайший путь между двумя вершинами графа" и "найти минимальное остовное дерево графа", и она в том, что в большинстве частных случаев нужно не все дерево, а только его мелкая часть. Экзампл: поиск в логистической схеме, когда нужно доставить груз между соседними региаонами, а карта есть для всей страны. Нужна эвристика, которая это обработает. (Впрочем можно составить минимальное остовное дерево для статического графа и потом его юзать на радость всем.. но ведь это от задачи зависит)
Каким боком тут минимальное остовное дерево?
С каким пор алгоритм Дейкстры стал сложен в реализации?


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.