Які межі можна поставити для підрахунку доступних вузлів у даге?


23

Дано - даг. Ви хочете позначити кожен вузол тим, скільки вузлів доступні від нього. - тривіальна верхня межа; - нижня межа (я думаю). Чи є кращий алгоритм? Чи є підстави вважати, що нижня межа може бути покращена (пов'язано: що саме відомо про нижню межу транзитивного закриття)?О(V(V+Е))Ω(V+Е)

Мотивація: мені довелося це зробити пару разів, представляючи фол-формули як даги.

Редагувати. Зауважте, що просто рахує шляхи , а не доступні вузли . (Я додав це, тому що, мабуть, багато людей думали, що це просте рішення спрацює за допомогою голосів, які я побачив за видалену відповідь.) Насправді ця проблема з'являється саме тоді, коли ви хочете зробити щось цікаве із "спільними" частинами, вузлами, доступними більше одного шляху. Також я кажу, що даг, тому що якщо вони вирішені, то вирішити диграфи легко.cх=1+хуcу


Це, мабуть, є окремим випадком (встановлення всіх ваг до одного) cstheory.stackexchange.com/questions/736/…
Суреш Венкат

@Suresh: Чи довільні ваги ускладнюють проблему, мені здається ще одним цікавим питанням.
Раду ГРИГо

Відповіді:


10

Перехідне закриття спрямованого графа з ребрами і n вершинами можна обчислити трохи швидше, ніж O ( m n ) час, але не набагато. O ( п 2 + м п / увійти п ) алгоритм часу згадується в примітці 2005 грудок паперу Чана на ССЦНЕ (версія журналу в Algorithmica 2008). Невелике поліпшення до O ( n 2 + m n log ( n 2 / m ) / log 2 nмнО(мн)О(н2+мн/журналн) можна знайти в документі ICALP'08 "Новий комбінаторний підхід до розріджених задач графіків" Блеллоха, Василевської та Вільямса. Попри це, я не знаю, чи порахувати нащадків простіше, ніж насправді їх знайтиО(н2+мнжурнал(н2/м)/журнал2н)


4
Також дивіться статтю Едіт Коен "Рамка для оцінки розміру з додатками до транзитивного закриття та доступності". Він дає рандомізований алгоритм, який ефективно оцінює кількість нащадків.
virgi

Зауважте, що ці результати стосуються всіх спрямованих графіків, а не лише DAG.
tonfa

Так. Результат стосується також зваженої версії, згаданої в cstheory.stackexchange.com/questions/736/…
virgi

7

Я думаю, що ви можете використовувати матричне множення для обчислення перехідного закриття DAG, а потім використовувати кількість сторонніх сусідів як потрібні підрахунки. Я не знаю літератури, але думаю, що ви можете обчислити транзитивне закриття одночасно з множенням матриць, тобто час: http://www.computer.org/portal/web/csdl/doi/10.1109/ ACSSC.1995.540810 .нω


Дякую, це цікаво! Додам, що даги, що представляють символічні формули, як правило, рідкісні, тому я трохи більше зацікавлений у цій справі.
Раду ГРИГо

1

Можливо, не корисний у вашому контексті, але ви можете отримати наближення за допомогою синопсису дифузії (http://www.cs.cmu.edu/~sknath/sd.htm). Я думаю, що це робить O (V + E). Імітуючи дифузію синопсису на однопроцесорі, мені здається, O (V + E), (спочатку потрібно зробити топологічний сорт, який також є O (V + E)).

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