Я хочу понять, как вычислить big-O для плотного или редкого графика. «Алгоритмы в двух словах» говорят, что для разреженного графа O (E) есть O (V), а для плотного графа O (E) ближе к O (V^2). Кто-нибудь знает, как это происходит?связь между плотностью ребер и числом вершин в графе
ответ
Это не производное, это определение. В полностью подключенном (направленном) графе с автопилотами число ребер | E | = | V | ², поэтому определение плотного графа является разумным. Определение разреженного графа - это такое, где O (| E |) = O (| V |), поэтому существует постоянное максимальное количество ребер на вершину.
Обратите внимание, что если количество ребер намного меньше, т.е. O (lg | V |), то это все еще O (| V |). Можно представить себе «полурефлекторный» класс графов с | E | = O (| V | lg | V |) или что-то в этом роде, но лично я никогда не сталкивался с таким классом на практике.
Предполагая, что график simple - в худшем случае каждый узел может быть подключен ко всем |V|-1
другим узлам, в результате чего [в ориентировочном графике:] |E| = (|V|-1) + (|V| -2) + ... + 1 <= |V| * (|V| -1) = O(|V|^2)
. И в направленном графике: |E| = |V| * (|V|-1) = O(|V|^2)
.
Хорошим примером для плотного графа является clique - которые имеют все края.
Для разреженного графа мы предполагаем, что число ребер, связанных с каждой вершиной, ограничено константой. Пусть эта константа равна k
. Таким образом: |E| <= k* |V|
, и мы получаем |E| = O(|V|)
Хорошим примером для разреженного графика является интернет, где каждый URL-адрес является узлом, а каждая ссылка является ребром.
Обратите внимание, что если график не является простым, вы не можете связать |E|
с любой функцией |V|
.
У меня проблема с пониманием формулы для плотного графа: | E | = (| V | -1) + (| V | -2) + ... + 1 <= | V | * (| V | -1) = O (| V |^2). Это основано на некоторой математической формуле, которая упрощает сумму (x-i) до x^2? – iralight
@iralight: да, это [сумма арифметической прогрессии] (http://en.wikipedia.org/wiki/Arithmetic_progression#Sum). Посмотрите прикрепленную ссылку. – amit
спасибо, это объясняет это – iralight
- 1. Посещение ребер, вершин в неориентированном графе
- 2. Поиск вероятности ребер в графе
- 3. Максимальное количество ребер в графе
- 4. Сортировка ребер в графе
- 5. Число ребер различных путей в двудольном графе
- 6. MySQL вершин и ребер пересечения
- 7. Самый короткий путь в неориентированном графе, который посещает k вершин
- 8. Число ребер в неориентированном графе
- 9. Вес узла и ребер в неориентированном графе
- 10. Алгоритм для удаления ребер в связанном графе
- 11. Все пути между двумя узлами в невзвешенном неориентированном графе с ограниченным числом ребер
- 12. пересекают графики, разделяющие процент ребер и вершин
- 13. Matlab: Создание повторяющихся ребер в графе
- 14. Ориентированный граф вершин и ребер обратной
- 15. Найти узел с наибольшей плотностью в графе
- 16. Печать иерархических вершин в графе
- 17. Вычисление количества созданных графов и количества вершин в каждом графе из списка ребер
- 18. Укажите минимальное и максимальное количество ребер в ненаправленном подключенном графе n вершин?
- 19. Взаимосвязь между мобильной плотностью?
- 20. Найти кратчайшую последовательность вершин в ориентированном взвешенном графе
- 21. Поиск пути с минимальным количеством красных вершин в графе
- 22. Идентификаторы VTK для вершин/ребер в C++
- 23. Вычислить кратчайший путь между множеством вершин в неориентированном взвешенном графе
- 24. Алгоритм для перемещения всех ребер в графе
- 25. Извлечь только количество ребер в графе классовNEL
- 26. Где имена вершин в графе iGraph
- 27. Максимальное количество ребер в графе с использованием
- 28. Определение максимального числа v (G) независимых ребер в графе G
- 29. Где поместить метод, который проверяет параллельность двух ребер в графе?
- 30. Поиск достижимых вершин вершины в графе
Спасибо, я забыл автопилы! Теперь имеет смысл :) – iralight
@iralight: спасибо за принятие, но самопроверки не являются проблемой. Даже в полном неориентированном графе без self-loops число ребер равно | V | × (| V | -1)/2, которое равно O (| V | ²). –
Понял ... просто концептуально для меня имело смысл, что с помощью self-loops я смог полностью заполнить матрицу смежности V^2. Спасибо за разъяснение – iralight