Кількість досяжних вершин у DAG для кожної вершини


11

Нехай - графік, орієнтований на ациклічну форму, такий, що поза ступенем будь-якої вершини дорівнює . Для кожної вершини ми можемо порахувати кількість досяжних вершин, просто запустивши dfs з кожної вершини, і це займе час . Чи є кращий спосіб вирішити цю проблему?O ( log | V | ) G O ( | V | | E | )G(V,E)O(log|V|)GO(|V||E|)



1
@Radu це чистий дублікат? це звучить так
Суреш Венкат

@Suresh, в порівнянні з моїм запитанням, цей має верхню межу за ступенем вершин і не вимагає нижньої межі. На мою думку це невеликі відмінності, тому я вважаю це дублікатом, але я не відчуваю цього сильно.
Раду ГРИГо

1
ОК, тому ми залишимо його так, як є.
Суреш Венкат

4
Відповідь Віргі на моє запитання передбачає алгоритм для цього. O(|V|2)
Раду ГРИГо

Відповіді:


5

Найкращий точний алгоритм запуститься у часі O (min {mn, n ^ 2.38}), використовуючи швидке множення двійкової матриці. Однак існує випадковий алгоритм, який працює в часі O (m + n) і оцінює кількість доступних вузлів з кожного вузла з невеликою відносною помилкою, будь ласка, зверніться до статті " Рамка оцінки розміру з додатками до транзитивного закриття та доступності" "Едіт Коен.


-1

Я тут не експерт, я спробую.

1) Оскільки це DAG, у нього повинна бути вершина раковини, тобто вершина з перевищенням рівня 0. Знайдіть вершину раковини, сказавши x, і додайте {x} як досяжна вершина до сусіда (x). видаліть x і повторіть процес, поки графік не стане порожнім


Оскільки ступінь обмежена, здавалося б, корисніше почати з джерела?
Андраш Саламон

@ andras-salamon: ні, тому що ви не знаєте, скільки вузлів можна отримати з джерела. Ти не робиш цього (нуля) для мийки.
Мартін Б.

O(|V||E|)xO(|V|)O(|V|)O(|V|)O(|V||E|)

-2

(Подібно до рішення Прабу ..., але докладніше)

N(v)vreach(v)

  1. O(|V|+|E|)
  2. vreach(v)=nN(v)reach(n)

|E|O(|V|+|E|)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.