Связь между плотностью ребер и числом вершин графа

Я хочу понять, как вычислить big-O для плотного и разреженного графа. "Алгоритмы в двух словах" говорят, что для разреженного графа O(E) есть O(V), а для плотного графа O(E) ближе к O(V^2). Кто-нибудь знает, как это происходит?

2 ответа

Решение

Это не производное, это определение. В полностью связном (ориентированном) графе с самоциклами число ребер |E| = |V| 2, поэтому определение плотного графа разумно. Определение разреженного графа - это то, где O (|E|) = O (|V|), поэтому в каждой вершине имеется постоянное максимальное число ребер.

Обратите внимание, что если число ребер намного меньше, например, O (lg |V|), то это также O (|V|). Можно представить себе "полу разреженный" класс графов с |E| = O (|V| lg |V|) или что-то в этом роде, но я лично никогда не сталкивался с таким классом на практике.

Предполагая, что график прост - в худшем случае каждый узел может быть подключен ко всем |V|-1 другие узлы, что приводит к [в неориентированном графе:] |E| = (|V|-1) + (|V| -2) + ... + 1 <= |V| * (|V| -1) = O(|V|^2), И в ориентированном графе: |E| = |V| * (|V|-1) = O(|V|^2),

Хорошим примером плотного графа является клика, у которой есть все ребра.

Для разреженного графа - мы предполагаем, что число ребер, связанных с каждой вершиной, ограничено константой. Пусть эта константа будет k, Таким образом: |E| <= k* |V|и мы получаем |E| = O(|V|)

Хорошим примером разреженного графа является Интернет, где каждый URL является узлом, а каждая ссылка - ребром.

Обратите внимание, что если график не прост, вы не можете связать |E| с любой функцией |V|,

Другие вопросы по тегам