Наскільки ефективні SAT-вирішувачі на основі DPLL на задоволених екземплярах PHP?


15

Ми знаємо, що SAT-вирішувачі на базі DPLL не відповідають правильно на незадовільні екземпляри (принцип дірки голубів), наприклад на "існує ін'єктивне відображення від до n ": n + 1 nПНПн+1н

ПНПнн+1: =(i[н+1] j[н] pi,j)(ii'[н+1] j[н] (¬pi,j¬pi',j))

Я шукаю результати щодо того, як вони працюють на задоволених екземплярах ПНП , наприклад, "є ін'єктивне відображення від н до н ".

Чи швидко вони знаходять задоволення від виконання таких завдань?


1
Під "не відповісти правильно" ви маєте на увазі "не вистачає ресурсів на досить великих значеннях n"?
Vijay D

@Kaveh Чи дозволяєте ви повторення пропозицій та / або повторення змінних у тому самому пункті? Спасибі
Tayfun Pay

@VijayD, я маю на увазі, що алгоритм не повертає правильної відповіді в поліноміальний час протягом досить великого н . Я сподіваюся, що можна довести, що алгоритм, заснований на DPLL, працював би в поліноміальний час для цієї родини.
Каве

@Geekster, я не впевнений, що ти маєш на увазі. У мене є певна сім'я формул. Ви запитуєте, чи є повторення у цій формулі?
Каве

Відповіді:


14

У задоволених випадках , SAT-рішення, засновані на DPLL, забезпечуватимуть виконання лінійного часу.PHP

Щоб зрозуміти, чому, поспостерігайте, як кодування CNF незадовільного екземпляра з отворами і голубів синтаксично ідентично екземпляру Graph Coloring, де вхідний графік являє собою кліку вершин.PHPnn+1k=nn+1

Аналогічно, кодування CNF задовольняючого екземпляра з отворами і голубами синтаксично ідентично екземпляру Graph Coloring, де вхідний графік є кліком з вершин.PHPnnk=nn

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

З точки зору вирішення DPLL: кожен раз, коли він намагатиметься відгадати булеве значення змінної , таке значення буде правильним (яким би воно не було), оскільки, безумовно, буде задовольняючим завданням, у якому змінна має відгадане значення . Поширення одиниці виконає решту роботи, провівши розв’язувача по задовольняючому шляху (іншими словами: заважаючи вгадувати неправильні значення).vivi

Потім пошук проходить одну змінну за іншою лінійно, кожен раз роблячи правильну здогадку.


Дякую, це я очікував. До речі, ви знаєте посилання, в якому йдеться про це (тобто "Алгоритм DPLL вирішує задоволені екземпляри PHP / GC за лінійним часом")?
Каве

1
Будь ласка. Я не знаю жодної посилання, яка заявляє про це, я щойно це отримав сам через кілька необґрунтованих міркувань. Офіційно довести це не повинно, покладаючись на те, що кожен вирішувач SAT використовує певну евристичну форму як для вибору наступної змінної, так і для здогадки про її булеве значення. Справді, слід зазначити, що існує принаймні один нерозумний евристик, який заважає нам досягти рішення за лінійний час (такий необґрунтований евристик був би встановити помилкову кожну змінну, поки це можливо). Хоча при розумній евристиці забезпечується лінійний час.
Джорджіо Камерані

Я згоден. Я сподіваюся, що хтось, можливо, десь це заявив, щоб я міг цитувати, коли мені потрібно. Я хотів би почекати ще кілька днів, і якщо ніхто не дасть посилання, я прийму цю відповідь. Знову дякую. :)
Kaveh

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