Мой график реализован следующим образом:
struct node{
string ID;
vector<string> neighbors;
}
struct graph{
vector<string> nodes;
}
узлы — это вектор узлов. Каждый узел содержит свой идентификатор и вектор всех идентификаторов своего соседа (на которые он указывает)
Есть ли способ, которым я могу применить алгоритм Дейкстры или Беллмана-Форда, чтобы найти кратчайший путь между двумя узлами? Найти повторяющийся цикл? Как бы я это сделал?
РЕДАКТИРОВАТЬ: sturcts были случайно названы так же.
Вы ничего не упомянули о крае веса.
Алгоритм Дейкстры работает, если у вас нет отрицательного веса ребра.
Алгоритм Беллмана-Форда работает, если у вас нет отрицательного цикла. Но вы также можете использовать алгоритм Беллмана-Форда, чтобы проверить, есть ли у вас отрицательный цикл.
Если это невесомый граничный граф, вы можете просто использовать BFS.
Других решений пока нет …