Что лучше, списки смежности или матрица смежности, для проблем графика в C++? Каковы преимущества и недостатки каждого?
Если вы изучаете анализ графов в C ++, вероятно, первым делом стоит начать с библиотеки ускоренных графов , которая реализует ряд алгоритмов, включая BFS.
РЕДАКТИРОВАТЬ
Этот предыдущий вопрос по SO, вероятно, поможет:
как-создать-ac-boost-unirected-graph-and-traverse-it-in-depth- first-search h
It depends on the problem.
Это зависит от того, что вы ищете.
С помощью матриц смежности вы можете быстро ответить на вопросы о том, принадлежит ли определенное ребро между двумя вершинами графу, а также вы можете быстро вставлять и удалять ребра. Обратной стороной является то, что вам придется использовать чрезмерное пространство, особенно для графов с большим количеством вершин, что очень неэффективно, особенно если ваш граф разреженный.
С другой стороны, в списках смежности сложнее проверить, находится ли данное ребро в графе, потому что вам нужно искать в соответствующем списке, чтобы найти ребро, но они занимают больше места. эффективный.
Как правило, списки смежности являются правильной структурой данных для большинства приложений графов.