2015-05-25 16 views
0

Мне нужно выполнить следующую задачу: «У вас есть граф G (V, E) и его вершины x и y. Напишите программу, которая находит кратчайший путь между двумя вершинами , по числу вершин.Самый короткий путь между двумя вершинами в графе

Я не понимаю, зависит ли это от меня, чтобы решить, включен ли этот график или нет, или должен ли я иметь класс ребер или какую визуальную графу выполнить. упражнения в главе «Деревья и графики» моей книги (Введение в программирование с помощью java), и я не знаю с чего начать. Как вы это сделаете и почему?

+0

Возможно, это [ссылка] (http://stackoverflow.com/questions/8379785/how-does-a-breadth-first-search-work-when-looking-for-shortest-path-java) дает вам некоторые идеи для поиска. –

+0

Не похоже, что он направлен. Возможно, прочитайте https://en.wikipedia.org/wiki/Shortest_path_problem. – Armand

+0

@ Радослав Монов - Является ли помощь достаточной или я должен разработать свой пост дальше? Для отображения графика в вашей программе используйте матрицу смежности или список смежности. –

ответ

0

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

+1

По числу вершин он ищет алгоритм BFS, а не Dijkstra. –

+0

Dijkstra's сделает это, если его рассматривать как невзвешенный график. – cujo

+1

BFS не гарантирует найти кратчайший путь, Dijkstra's is. Следовательно, почему это поиск, а не инструмент поиска пути. – cujo

0

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

Например - N - число вершин, М - число ребер

4 5 
1 2 
2 3 
3 4 
1 3 
2 4 

Для представления графа либо использовать матрицу смежности (простейшие один) или список смежности. Матрица смежности является двумерным массивом G, где G [a] [b] истинна, когда есть ребро между a и b и false в противном случае.

Смежные вопросы