2012-02-20 5 views
0

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

ответ

0

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

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

+0

Спасибо, я забыл автопилы! Теперь имеет смысл :) – iralight

+0

@iralight: спасибо за принятие, но самопроверки не являются проблемой. Даже в полном неориентированном графе без self-loops число ребер равно | V | × (| V | -1)/2, которое равно O (| V | ²). –

+0

Понял ... просто концептуально для меня имело смысл, что с помощью self-loops я смог полностью заполнить матрицу смежности V^2. Спасибо за разъяснение – iralight

1

Предполагая, что график 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|.

+0

У меня проблема с пониманием формулы для плотного графа: | E | = (| V | -1) + (| V | -2) + ... + 1 <= | V | * (| V | -1) = O (| V |^2). Это основано на некоторой математической формуле, которая упрощает сумму (x-i) до x^2? – iralight

+0

@iralight: да, это [сумма арифметической прогрессии] (http://en.wikipedia.org/wiki/Arithmetic_progression#Sum). Посмотрите прикрепленную ссылку. – amit

+0

спасибо, это объясняет это – iralight

Смежные вопросы