Какие есть библиотеки для быстрого поиска в графе кратчайших путей и независимых замкнутых контуров на С++? В аспирантуре по роду деятельности пришлось иметь дело с большими графами (1000-3000 вершин, 10.000 ребер).
Граф представляется матрицей инцидентности (https://ru.wikipedia.org/wiki/Матрица_инцидентности). Работу с матрицами и графом в прототипе программы написал сам. Теперь настало время оптимизировать отдельные участки. Для работы с линейной алгеброй (умножение матриц, solve, разреженные матрицы) взял Armadillo. И, о чудо, выиграл в скорости 20-50 раз.
Далее нацелился оптимизировать обработку графа. Задача звучит тривиально.
Исходные данные: матрица инцидентности (сильно разреженная матрица);
Задача:
1) максимально быстро получить кратчайший путь из одного узла в любой другой (веса всех ребер, допустим, равны)
2) максимально быстро получить матрицу независимых контуров графа (независимый - не содержит вложенных контуров)
Задачи довольно типовые. Возможно уже имеются готовые, быстрые, "high-quality" решения на С++?

21 Авг 2019 в 06:12
148 +1
0
Ответы
1

Для работы с графами и поиском кратчайших путей в C++ вы можете воспользоваться следующими библиотеками:

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

Lemon Graph Library - Lemon - это еще одна мощная библиотека для работы с графами на языке C++. Она включает в себя широкий спектр алгоритмов для работы с графами, включая поиск кратчайшего пути и различные алгоритмы обхода графа.

igraph - igraph - это библиотека для работы с графами на языке C. Она также имеет обертку для языка C++, что позволяет использовать ее удобно в проектах на этом языке.

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

20 Апр в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 91 734 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир