Наскільки важко підраховувати кількість простих шляхів між двома вузлами у спрямованому графіку?


29

Існує простий поліноміальний алгоритм, щоб вирішити, чи є шлях між двома вузлами в спрямованому графіку (просто зробіть звичайний обхід графіка з, скажімо, глибиною першого пошуку).

Однак здається, що дивно проблема стає набагато складніше, якщо замість тестування на існування ми хочемо порахувати кількість шляхів.

Якщо ми дозволимо шляхам повторно використовувати вершини, то існує динамічне рішення програмування для пошуку кількості шляхів від s до t з n країв. Однак, якщо ми дозволяємо лише прості шляхи, які не використовують повторно вершини, єдине рішення, про яке я можу придумати, - це перерахування грубої сили шляхів , що має експоненціальну часову складність.

Тож я прошу,

  • Чи важко підрахувати кількість простих шляхів між двома вершинами?
  • Якщо так, то чи є NP-комплектація? (Я кажу, що це тому, що технічно це не проблема вирішення ...)
  • Чи є інші проблеми у P, які теж важко рахують такі версії? **

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


@Suresh: Я знаю, як кодувати пошук грубої сили. Моє запитання, чи існує більш ефективний алгоритм. У будь-якому випадку, це питання буде подібнішим і навіть включає мою відповідь, якщо ви зацікавлені у спойлерах.
hugomg

Відповіді:


18

Найпоширеніший клас складності, пов'язаний з підрахунком проблем, є #P . Вирішити, чи існує простий шлях від даного вузла до іншого, чітко в NP. Полічити їх тоді в # P.

Про повноту NP: навіть якщо це не проблема прийняття рішення, вона навряд чи впишеться в NP: може бутишляхи та недетермінізм не допомагають вам у цьому (вам все одно потрібно перевірити їх)n!

Відповідь на два ваших перших два запитання: так, важко, це # P-завершено (ref) .

У статті Вікіпедії наводяться відповідні факти: 1) ймовірнісні алгоритми корисні для наближення # P-повних функцій, і це такий алгоритм, який використовується для наближення в попередній статті. 2) Існують і інші прості проблеми з жорсткими (# P-завершеними) версіями підрахунку:

  • знаходження (лінійне) проти підрахунку всіх призначень, що відповідають формулі DNF або екземпляру 2-SAT
  • знаходження (лінійне) проти підрахунку топологічних сортування
  • знаходження (O (VE)) проти підрахунку ідеального узгодження у двосторонніх графіках

Ви вже знаєте, що якщо ви видалите обмеження "простий шлях", проблема потрапляє в P (добре, ви повинні зв'язати довжину шляхів поліномом розміру графіка або надати пов'язане в унарне)

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