Доміноса NP-Hard?


26

Доміноза - це відносно нова гра-головоломка. Відтворюється в сітці . Перед початком гри кістки доміно розміщуються на сітці (являючи собою ідеальну плитку ). На наступному кроці кістки доміно заховаються, залишаючи лише розкриті цифри. Мета гри - відновити початкове розташування кісток доміно. Ви можете грати тут: http://www.puzzle-dominosa.com/ :(n+1)×(n+2)(0,0),(0,1),,(n,n)

Правила:

Правила прості. Ви повинні знайти розташування всіх доміно в сітці. Доміно - це пара чисел. Ви можете мати лише одну з кожної пари.

У мене є кілька поліноміальних алгоритмів, які вирішують відносно невелику частину головоломки. Я можу також показати, що типові сітки Dominosa мають щонайменше рішення.2n2+o(n)

Доміноса NP-Hard?


"Загадка може бути легко зведена до проблеми SAT або ILP." Щоб довести NP-повноту, ви не хотіли б навпаки?
Денніс Менг

1
@DennisMeng Суть скорочень, згаданих у питанні, полягає у встановленні того, що проблема полягає в NP. Отже, все, що залишається - довести, що це НП важко. Між іншим, не потрібно скорочень, щоб побачити, що проблема полягає в NP. Розташування доміно є самим свідченням розв'язності поліноміального розміру.

Я припускаю, що проблема, NP-повнота якої знаходиться під питанням, з урахуванням розташування чисел, чи походить вона від розташування доміно. Якщо проблема полягає в тому, щоб насправді демонструвати влаштування доміно (коли воно існує), то проблема не є проблемою рішення, і "NP завершено" не має сенсу.

@AndreasBlass Можна також розглянути більшу проблему: З огляду на підмножини елементів доміно від до та графік з вершинами, позначеними від до , визначають, чи можна покрити його даними доміно. Якщо ця проблема в P, тоді існує алгоритм P-часу для відновлення початкової плитки, тому що ви можете спробувати видалити край і перевірити за P-час, чи можна завершити сітку. 1 n G 2 k 1 nk1nG2k1n

1
Згідно з роботою Г. Норда, яка називає NP-повнотою узагальнених багатослівних послідовностей, наступна подібна проблема є NP-повною. Екземпляр: Графік , розподіл ребер на роз'єднані множини: з , щоб жодне ребро з однаковою міткою не вершину. ПИТАННЯ: Чи існує підмножина з такою, що жоден два ребра в M не має спільної вершини, і така, що M містить щонайбільше один край від кожного ? G=(V,E)E1,E2,...,Em,|m||V|/2|Ei|2, i=1,,mME|M|=|V|/2Ei, i=1,,m
Yoav bar sinai

Відповіді:


9

Примітка. Це продовження та перегляд моєї іншої відповіді .

Проблеми зі скороченням

Нагадаємо проблему рішення:

Чи є досконала плитка, що покриває задану сітку з унікальними плитками?(n+1)×(n+2)n

Отже, для сітки ми можемо використовувати лише змінних.(n+1)×(n+2)n

Але:

  • Наше скорочення вимагає безлічі унікальних змінних, набагато більше, ніж .O(n)
  • Крім того, наші дроти є відкритими, що призводить до:
    • Як ми можемо знати, що ми можемо плитка відкритих ділянок?

Щоб вирішити першу проблему, ми штучно робимо ігрову дошку значно більшою; по суті, ми робимо рівним кількості змінних, яких ми насправді потребуємо, тоді створюємо сітку розміром і розміщуємо нашу сітку в лівому нижньому куті. Це призведе до квадратичного вибуху.( n + 1 ) × ( n + 2 )n(n+1)×(n+2)

Для другої проблеми ми повинні трохи переосмислити свої гаджети.

Це може здатися трохи непростим, щоб довести, що ми можемо успішно розкласти плитку за правилом. Отже, ми почнемо з тієї самої стратегії, яку використовували б, щоб насправді генерувати ігрові дошки розміром :(n+1)×(n+2)

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

Однак наші гаджети не гарантують розміщення конкретного набору плиток; розміщена плитка залежить від стану. Тому ми повинні ретельно модифікувати пристосування, щоб гарантувати, що конкретна плитка буде видалена, незалежно від того, який стан буде обрано.

Давайте потім переглянемо наші гаджети.

Провід і затвор-ворота є проблематичними з двох причин.

  1. Ми не знаємо, що квадрати, що оточують дріт або ворота, можуть бути викладені правильно; врешті-решт, деякі дроти можна просунути вліво, інші вправо, а обшивка рештою пробілів у квадраті стає нетривіальною. Ми будемо називати цю проблему проблемою "потоку".
  2. Неможливо дізнатися, які плитки зняти з набору плиток; в одному стані один набір квадратів у дроті або воротах із застереженнями буде викладений плиткою, в іншому - абсолютно інший набір квадратів.

Для вирішення цих питань:

  • Спочатку ми генеруємо набір усіх можливих плиток. Всі ці плитки доведеться розмістити на дошці; як ми розмістимо їх на дошці, ми знімемо плитку з набору. Хоча ми, можливо, спочатку не знаємо , оскільки нам ще належить повністю описати рецептуру, ми можемо додати всі нові можливості плитки по мірі збільшення , за потреби. Усі плитки, які ми видаляємо з цього набору, повинні гарантовано розміщуватись (принаймні, гарантувати їх розміщення, якщо формула задовольняє). Ми називаємо видалення плитки з набору плиток, щоб "скинути" плитку з набору плиток, як для того, щоб виконати наш обов'язок розмістити її на ігровій дошці.nnn
  • Ми повинні ретельно розробити гаджети, щоб гарантувати, що конкретна плитка буде видалена, незалежно від того, який стан буде обрано.
  • Ми повинні закрити наші пристосування, щоб вони не штовхали плитки по всій дошці залежно від їх стану; швидше всі їхні держави повинні займати лише певну чітко визначену область.
    • Крім того, всі їхні штати повинні бути гарантовані, щоб мати змогу зайняти чітко визначену територію; це гарантує приємне облицювання плитки, але не гарантує того, що відбудеться певна плитка. Це так само, як робиться гра Домінози:
      • Спочатку плитки формуються в набір;
      • Потім плитки розміщуються в довільній конфігурації,
      • По мірі розміщення кожної плитки вона знімається з набору плиток.
      • Потім плитку знімають з дошки, залишаючи позаду своїх квадратів.
      • Це не гарантує, що буде вибрана намічена конфігурація ,
      • Швидше, це гарантує, що призначена конфігурація може бути обрана, і, отже, рішення існує. Тут ми можемо зробити те ж саме.
  • Розмістивши всі гаджети рецептури, замість того, щоб за замовчуванням розміщувати унікальні квадрати, тобто для всіх "пробілів", ми переконуємось, що пробіл - це прямокутна область з одним рівним розміром, або розбиваємо пробіл на прямокутники з один рівний вимір, і ми просто плитку пробілу залиште плиткою в наборі плиток.
  • Розмістивши всі плитки з набору, ми знаємо, що все можна розмістити.
    • Деякі плитки будуть очевидно розміщуватися, наприклад, стіни, інші розміщуватимуться лише в тому випадку, якщо формула є задоволеною через характер взаємозв'язків між гаджетами.
  • Потім виймаємо плитки, і залишаємо позаду їх квадрати.

Давайте потім переглянемо наші гаджети.

Примусовий гаджет

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

Наприклад, скажімо, що ми хочемо примусити плитку , щоб ми могли використовувати як будівельний блок. (зауважте, - це довільна змінна, яку ми хочемо примусити як пара до себе, не обов'язково будівельний блок, як ми раніше використовували значення )1 1 1(1,1)111

Щоб гарантувати, що наші -блоки резервування , ми розмістимо його на нижній стінці в наступна конфігурація: ми розмістимо зарезервований номер, назвемо його до стіни, як аплет (у формі ); проти стіни, і один у 2-му ряду посередині. Тоді ми помістимо ще два числа, назвемо їх і ; вони унікальні для цього гаджета. Розміщуємо їх вгорі зліва та справа .1(1,1)13231

Нижче показано, що загальна чорна облямівка - це нижня частина ігрової дошки, опис зліва направо.

  • Конфігурація гаджета. Кожен та тут унікальний для цього гаджета.323
  • 3 можливі стани плитки центру .1

введіть тут опис зображення

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

  • Ми знаємо, що має відбуватися, тому що всі 3 можливі стани плитки нижньої середини 1 , плитка як ( 1 , 1 ) , як показано на малюнку праворуч, вгорі.(1,1)1(1,1)
  • Решта плитки можуть бути викладені плиткою та ( 1 , 3 ) , що покриває гаджет. Таким чином, ми можемо видалити ці плитки з нашого глобального набору плиток. Проілюстровано нижче.(1,2)(1,3)

Опис, зліва направо:

  • Зліва, вгорі: лівий стан, зліва, знизу: дійсна плитка решти квадратів.
  • Середній, верхній: середній стан, середній, нижній: дійсна плитка решти квадратів.
  • Вправо, вгорі: правий стан, праворуч, знизу: дійсна плитка решти квадратів.

введіть тут опис зображення

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

Примітка: якщо вас це не влаштовує, або вас бентежить різниця "вміння плитки" порівняно з "примушеним плиткою", ви можете просто розмістити стіну навколо гаджета , як і ми зробіть 3 × 2 стіни внизу для пункту-гаджета.3×23×2

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

Наступні плитки гарантовано підлягають плитці (таким чином їх можна видалити з набору плиток): (1,1)

Наступні плитки гарантовано зможуть оформити плиткою (таким чином їх можна видалити з набору плиток): (1,2),(1,3)

Якщо ви вирішите закрити цей пристосування стіною, то також гарантовано буде накрито.(1,2),(1,3)

Нові ворота проводів та пропозицій

Через проблеми із течією та спорожненням плитки, нам потрібно трохи переробити дріт.

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

Слідуючи цьому маршруту, ми можемо змінити провід і затвор, щоб вирішити обидві проблеми.

Збереження і FTF

Введемо дві нові універсальні цінності, і F . Ці два значення є універсальними; фактичні значення в сітці, такі як квадратні значення 2 і 3 (оскільки за умовою, ми зарезервували 1 як будівельний блок для стін) або будь-що, що ви вибрали. Вони представляють відповідно істинні та хибні.TF231

Примушуємо - резервуємо плитки , ( T , T ) , ( F , F ) наступним чином; ілюстрація нижче, опис зліва направо:(T,F)(T,T)(F,F)

  • Ми використовуємо ту саму схему, що і форсування будь-якої плитки, використовуючи T як 1 . Кожні 2 та 3 тут унікальні для цього гаджета.(1,1)T123
  • Ми використовуємо ту саму схему, що і форсування будь-якої плитки, використовуючи F як 1 Кожні 2 і 3 тут унікальні для цього гаджета.(1,1)F123
  • Ми використовуємо ту саму схему, що і примушування плитки , використовуючи F як 1 в центрі, а T в інших місцях вгору. Це змушує ( F , T ) плитку. 2 і 3 здатні плитки з T , тому ми видаляємо їх із набору плиток. Кожні 2 та 3 тут унікальні для цього гаджета.(1,1)F1T(F,T)23T23

введіть тут опис зображення

Дріт

Кожен провід починається і закінчується значенням, назвемо його , що є унікальним для проводів. Для кожного пункту, в якому бере участь провід, провід матиме два значення проводів, x та x , які є унікальними для кожного проводів, і братимуть участь у тому самому пункті. Ілюстрація нижче, з описом зліва направо.Axx

  • Провід, який бере участь в одному пункті. Дріт має висоту , і має довжину 2 * р + 3 , де р являє собою число статей дротові бере участь в. Дріт доповнюється два A квадратами зліва і два справа. Він, звичайно, оточений стіною з усіх боків, позначеною синім контуром. Зверніть увагу, що 1 є унікальним для даного проводу, і буде використовуватися тільки в проводі, і положення він бере участь в.22p+3pA1

введіть тут опис зображення

Нижче наведено два стану, описи зліва направо.

  • Провід, який бере участь у одному пункті, у справжньому стані. Дріт вважається істинним, коли квадрати з T квадратами, а квадрати x ' спаряються з F квадратами. Вважається помилковим в іншому стані, де плитка обернена назад. Зверніть увагу на те, як плитка примусована після вибору плитки A : ( T , F ) вже форсовано раніше, тому решта плитки повинна бути горизонтальною.xTxFA(T,F)
  • Той самий провід у помилковому стані.

введіть тут опис зображення

Беручи участь у більшій кількості пропозицій, є більше значення і x , одна пара для кожного пункту бере участь провід. Вони чергуються зверху і знизу, як і квадратів T і F, які розділяють кожен x , x пара.xxTFx,x

введіть тут опис зображення

Два відповідних стани.

введіть тут опис зображення

Цей гаджет закритий , тому немає проблеми з потоком.

Зверніть увагу, як в будь-якому стані ми збираємо наступні плитки, незалежно від стану: , ( A , T ) , ( A , F ) .(A,A)(A,T)(A,F)

Однак є деякі плитки, в яких ми не впевнені; в одному стані можна видалити з набору плиток, тоді як в іншому стані ми можемо видалити ( 1 , F ) , ( 1 , T ) , ( 2(1,T),(1,F),(2,T),(2,F)...з набору плиток, і яку плитку ми можемо фактично видалити? Відповідь: у воротах із пропозиціями є та сама проблема, але з протилежним набором плиток. Він завжди буде збирати залишилися, протилежні та необрані плитки, як ми побачимо в наступному розділі. Оскільки кожен із них поєднаний із воротами застережень, ми зможемо видалити їх обох.(1,F),(1,T),(2,F),(2,T)...

Стаття

Далі ми створимо першу ітерацію нового ворота. Він складається з гаджета розміром , огородженого стінами. Всередині гаджета розміщуємо один F у верхньому центрі, а два T квадрата в нижніх кутах; один внизу зліва і один в нижньому правому. Решта квадратів будуть значеннями, що представляють провідні змінні трьох різних проводів. Назвемо ці , б , і з . Р буде змушені паруватися з одним з дротяних змінних, а решта дроти-змінні будуть спаровуватися з Т значеннями. Ілюстрації нижче, описи зліва направо.2×3FTa,b,cFT

  • Зліва: конфігурація для першої ітерації нового перекладу.
  • Право Три можливі стани плитки F

введіть тут опис зображення

Ці три стани призводять до трьох можливих нахилів. Ілюстрація нижче, описи зліва направо.

  • Вліво, вгорі : плитка ліворуч, Ліворуч, знизу: Плитка решти квадратів.F
  • Середина, вгорі : плитка справа, Середня, знизу: Плитка решти квадратів.F
  • Вправо, вгорі : плиткою вниз, Вправо, внизу: Плитка решти квадратів.F

введіть тут опис зображення

Оскільки буде сполучений з однією з провідних змінних у пункті , ця провідна змінна вже не може бути сполучена з F у дроті ; таким чином змушуючи дріт до справжнього. І навпаки, решта змінних проводів, які плитки з T, будуть змушені плиткою з F в межах їх проводів. Це в точності те ж обмеження , як 1 -in- 3 - S Т п.FF TF1-in-3-SAT

Зверніть увагу, , б , і з є дротові-змінні, але кожен з них може ставитися до х або х ' дроту змінної; використання x по суті є запереченням змінної дроту.a,b,cxxx

Одне доповнення: щоб виконати зобов’язання знати, яку плитку можна зняти з набору плиток, ми повинні "подвоїти та протиставити" пункт. Що я маю в виду, щоб зробити ще гаджет, з 3 -х додаткових змінних , що представляють заперечень в , б , і з . Назвемо ці ' , б ' , і з ' . Це повинні бути заперечені значення змінних проводів a , b 3×23a,b,ca,b,c і c . Цейгаджет розміром 3 × 2 відрізняється тим, щоу центрівін буде мати T , ав кутахдвазначення F ; прямо протилежний досі описаному гаджету. "Подвоєння" цього пункту, ми знову додаємо ті самі обмеження, що й описаний вище гаджет. Однак ми також розрядимо всі комбінації ( T , x ) , ( T , x ) , ( F , x ) , ( F , xa,b,c3×2TF з мозаїчного набору, для кожної змінної (іотжедля , б ,і з , а також, тому що воникінці кінців, дротові-змінні). Наведено нижче описи зліва направо.(T,x),(T,x),(F,x),(F,x)a,b,c

  • Застереження "подвійне та протилежне". Нижній розділ - описане вище положення; верхній розділ - це нещодавно описане протилежне застереження. Новий пункт має точно такі ж логічні обмеження; це протилежне нижнє застереження. Ці комбіновані пристосування та дріт розряджають усі комбінації з набору плиток, для кожну провідну змінну, що бере участь у пункті.(T,x),(F,x),(T,x),(F,x)
  • Синя лінія посередині лівої частини фігури є для зручності перегляду; насправді його можна видалити, не допускаючи більше держав.

введіть тут опис зображення

Отже, візьмемо приклад, щоб показати, що всі плитки скидаються так, як обіцяли. Ілюстрований нижче, опис зліва направо.

  • Рисунок дроту, що бере участь в одному пункті; за умовою вибирається штат. Тут ми використовуємо , тоді як і b представляють інші значення проводів у цьому пункті.1=bab
  • Для даного стану в реченні, то значення змушені працювати в парі з сусіднім Т .1T
  • Це призводить до того, що провід буде змушений істинно оцінюватися (ви можете сказати, як позитивна змінна дроту змушена спаровуватися з , а негативна змінна змушена спаровуватися з F , як пояснено вище).TF
  • Це змушує у контраспозитивному пункті (верхній розділ пункту) поєднуватися з T у пункті. Тепер якщо ви подивитеся на дріт, кожна плитка всередині дроту гарантовано буде розряджена: або розряджена в самому дроті, або у відповідному пункті-гаджеті. У такому стані маємо плитки, ( A , A ) , ( A , T ) , ( A , F ) , ( 1 , T ) , ( 11T(A,A)(A,T)(A,F)(1,T) , ( 1 ' , Р ) , і ( 1 ' , Т ) .(1,F)(1,F)(1,T)

введіть тут опис зображення

Спробуючи інший стан, ми отримуємо ілюстрацію нижче, опис зліва направо.

  • Стаття знаходиться в іншому стані, плиткою одним із двох способів.(1,T
  • Тому вимушений на дроті,(1,F
  • Провівши решту дроту відповідно до плитки та оцінюйте її як помилкову.
  • І, нарешті, в контрапозиции / верхній частині п-гаджета, необхідно плитки, тому що ( 1 ' , Т ) береться в проводі. У цьому стані маємо плитки, ( A , A ) , ( A , T ) , ( A , F ) , ( 1 , T ) , ( 1 , F(1,F)(1,T)(A,A)(A,T)(A,F)(1,T) , ( 1 ' , Р ) , і ( 1 ' , Т ) . Це ті самі плитки, які вивантажуються, як і в іншому стані.(1,F)(1,F)(1,T)

введіть тут опис зображення

Таким чином, в будь-якому стані ми вивантажуємо однакові плитки. Таким чином, провід і пункт разом успішно виконують конкретні плитки, якщо є задовольняюче завдання.

Цей гаджет закритий , тому проблем із потоком не виникне. Застереження-гаджет разом із дротяним гаджетом гарантовано завжди виконувати однакові значення плиткових пар , і, таким чином, ми можемо виконувати їх, навіть якщо ми не знаємо, яким способом він буде викладений.

Тепер усі наші гаджети відповідають критеріям.

Формулювання

У нашій остаточній постановці ми створюємо три ряди пристосувань, кожен розділений горизонтальною стінкою.

  • У нижній частині розміщуємо пристосування-пристосування, які мають дві плитки заввишки. Нам потрібен примушуючи гаджет для будівельного блоку, а також для комбінацій і F . Ми розміщуємо пристосування для форсування безпосередньо поруч.TF
  • У середньому ряду розміщуємо дротяні пристосування, горизонтально, які мають дві плитки заввишки. Дротяні пристосування повинні бути відокремлені один від одного вертикальною стінкою.
  • У верхньому ряду ми розміщуємо придатні фрази, які мають чотири плитки заввишки. Гаджети-пропозиції повинні бути відокремлені один від одного вертикальною стіною.

Наступні ілюстрації, описи над кожною фігурою. Клацніть зображення для повного дозволу. Вихідний код для відтворення / генерування зображень вказаний внизу сторінки.

Використовуючи формулу , маємо задовольняє рішення ( ¬ х 1 , х 2 , х 3 , ¬ х 4 )Φ(x)=(x1,¬x2,x3)(x2,¬x3,x4)(x1,x2,¬x4)(¬x1,x2,x3,¬x4) як свідок.

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

введіть тут опис зображення

Далі ми показуємо гаджети. Синій контур позначає межі гаджетів; пунктирний синій колір для пристосувань-пристосувань, оскільки вони не будуть оточені стінами. Зверніть увагу, що рядок посередині гаджета "clause" не оточений стіною; він є для зручності перегляду; Вилучення рядка не дозволяє більше станів у пункті, як було пояснено вище, але ми показуємо синю лінію для цієї демонстрації. Зауважте: ми використовуємо квадратні назви, щоб надати числам семантичну читабельність, коли це можливо. Кожне ім'я представляє числове значення.

введіть тут опис зображення

Тут ми заповнюємо вертикальні стіни.

введіть тут опис зображення

Тут ми заповнюємо рішення свідка; тобто це рішення плитки, якщо для його створення використовується рішення SAT.

введіть тут опис зображення

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

введіть тут опис зображення

Тут ми заповнюємо залишилися квадрати тривіальною дійсною плиткою.

введіть тут опис зображення

Тут ми показуємо нижній правий кут сітки.

введіть тут опис зображення

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

введіть тут опис зображення

І нарешті верхній лівий кут.

введіть тут опис зображення

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


Джерела TikZ

Генератор ігор:

  • graphtex.py

    Перетворює TeX у svg, використовуючи pdflatex, pdfcairo (poppler) та rsvg-convert (libsvg)

  • dominosa.py

    Містить логіку перетворення, перевірку ігрових рішень та логіку малювання

  • dominosa_demo.py

    Демонстраційна версія, яка генерує зображення, використані у відповіді вище. Збирає зображення в поточний робочий каталог.

  • dominosa_demo.ipynb

    Демонстрація ipython, яка створює зображення, використані у відповіді вище.


1
Це просторово, дуже дякую ..
Yoav bar sinai

2
Скажіть, будь ласка, що у вас є версія arXiv. На цій платформі може бути більш розумним включити грубу ескіз та посилання на повний документ.
Рафаель

22

DOMINOSA


Гра в гру - проблема оптимізації; знайти дійсну плитку доміно таким чином, щоб вона охоплювала всі квадрати. Версія цієї проблеми:

(n+1)×(n+2)n

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

1-3-in-SAT

P=NPDOMINOSA

1-3-in-SATDOMINOSA

Вступ

3-SATCIRCUITSAT

CIRCUITSATPLANAR-CIRCUITSAT

3-SATPLANAR-CIRCUITSAT3-SATPLANAR-CIRCUITSAT

PLANAR-3-SATPLANAR-CIRCUITSAT

3-SAT

1-in-3-SAT1-in-33-SAT

MONOTONE-1-in-3-SAT

MONOTONE-1-in-3-SATPLANAR-MONOTONE-1-in-3-SATCIRCUITSAT

PROBLEMMONOTONEPLANAR1-in-3NP-hard3-SATNoNoNoYesMONOTONE-3-SATYesNoNoNo1PLANAR-3-SATNoYesNoYes21-in-3-SATNoNoYesYes3PLANAR1-in-3-SATNoYesYesYes4MONOTONE-1-in-3-SATYesNoYesYes5PLANAR-MONOTONE-3-SATYesYesNoYes!6PLANAR-MONOTONE-1-in-3-SATYesYesYesYes7
  1. Чиста буквальна ліквідація
  2. Теорема про дихотомію Шефера
  3. Проблема сумісних представників
  4. Триангуляція мінімальної ваги є NP-Hard
  5. Теорема про дихотомію Шефера
  6. Пошук ідеальних авторозподілів є важким для NP
  7. Оптимальні розділи бінарного простору в площині

3-SAT

Що таке "гаджет"? Гаджет - це деяка конструкція проблеми, яка є корисною складовою для створення воріт / проводів / пропозицій. Деякі гаджети матимуть обмежений набір станів; наприклад, гаджет з двома станами можна використовувати як змінну; один стан є "істинним", а інший - "хибним". Гаджет з двома станами, який може бути "довгим", може згинатися та розбиватися, корисний як провід - якщо він може взаємодіяти зі змінною та обмежуватись, щоб поширити стан змінної до іншого місця. Гаджет з точно трьома станами, можливо, може бути використаний як пункт; якщо він може бути використаний для обмеження "одного з трьох" проводів через кожне з трьох його станів. Аналогічно, можна захотіти всілякі ворота логіки, як-от не-гаджет, або-гаджет, xor-гаджет тощо;

Будівельний блок

  • 11
  • 11
  • 1

введіть тут опис зображення

3   1(1,1) (1,1)

45(1,1)

Стіна

4

Зображення нижче, зліва направо:

  1. 1
  2. 1
  3. 1
  4. Лінія стіни, намальована для акцентів.

введіть тут опис зображення

Початкова спроба на провід

1

Показуючи лише межі стіни, ось що ми отримуємо на малюнках нижче (зліва направо):

  • Розміщення двох стін одна навпроти іншої.
  • Введення унікальних номерів всередину.
  • Два праворуч: два можливі стани дроту.

введіть тут опис зображення

Як це працює:

У трубі / дроті не може бути жодних отворів, тому, якщо плитки зміщені вгору, то всі вони повинні бути зміщені вгору по всій трубі; якщо вони будуть зміщені вниз, це "всмоктує" їх усіх. Таким чином, ми можемо відправити "сигнал" з однієї сторони дроту на іншу; іншими словами, поширюють значення.

Таким чином, тепер ми можемо поширювати значення на великі відстані!

Залишаються обмеження:

  • Ми не можемо зігнути дріт,
  • Ми не можемо розділити провід,
  • Ми не можемо схрещувати дроти,
  • У нас можуть виникнути набридливі проблеми з компонуванням, оскільки ми повинні бути обережними щодо співвідношення довжини дроту.

Згинання дроту , частина 1: Стіна внизу

Наступна проблема полягає в тому, що нам потрібно вміти згинати дріт, а не просто йти прямо ...

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

На малюнках нижче показано певну проблему зі згинанням; верхня частина дроту "пухка", здається, що складно зробити стіну, яка повертається різко на 90 градусів.

Зліва направо:

  • Верх дроту "пухкий".
  • Що станеться, якщо ми спробуємо його зігнути; ми хочемо провести між синіми лініями. Знову проігноруйте верхню частину згину, ми це зробимо пізніше.
  • 1

введіть тут опис зображення

Одне рішення полягає в наступному:

  • (х,1)хqх1111

Ілюстрація нижче, опис зліва направо:

  • Ситуація з проблемою.
  • q1
  • 1

введіть тут опис зображення

qq

Зліва направо:

  • Нинішня конструкція.
  • q

введіть тут опис зображення

11

(r,1)r1

Ілюстрація нижче, зліва направо:

  • Наша нинішня конструкція.
  • 1
  • r1

введіть тут опис зображення

І ми нарешті отримуємо наш нижній вигин. Ілюстрація нижче, описи, зліва направо:

  • Зліва: наша остання конструкція для вигину.
  • Праворуч: як продовжити дріт ліворуч.

введіть тут опис зображення

Згинання дроту , частина 2: Стіна нагорі

Стіни зробити верхній кут вигину набагато простіше. Ви просто вирівняєте вертикальну стіну з горизонтальною стіною. Ілюстрація нижче, опис зліва направо:

  • Згин дроту, який ми хочемо зробити.
  • Поставте вертикальний відрізок квадратів стіни вниз.
  • Плитка квадратів вертикальної стіни.
  • Розміщення та облицювання горизонтальної стіни; вона може зустріти вертикальну стіну і утворювати кут.

введіть тут опис зображення

Тепер ви повинні переконатися, що ми можемо розміщувати та згинати дроти. Ми все ще не можемо розділити або перехрестити дроти, але про це пізніше.

Залишаються обмеження:

  • Ми не можемо зігнути дріт,
  • Ми не можемо розділити провід,
  • Ми не можемо схрещувати дроти,
  • У нас можуть виникнути набридливі проблеми з компонуванням, оскільки ми повинні бути обережними щодо співвідношення довжини дроту.

Цінний провід

7ТЖТЖквадрат, що розділяє їх. Нижче наведено опис зліва направо:

  • Зліва: дріт.
  • Справа: Конфігурація квадрата

введіть тут опис зображення

ТЖ

  • Ліворуч, праворуч: Два стану цінного дроту ;
  • Т
  • Ж

введіть тут опис зображення

3-SАТ

Залишаються обмеження:

  • Ми не можемо розділити провід,
  • Ми не можемо схрещувати дроти,
  • У нас можуть виникнути набридливі проблеми з компонуванням, оскільки ми повинні бути обережними щодо співвідношення довжини дроту.

Не ворота

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

Клауза ворота

3

Ілюстрації нижче, описи зліва направо:

  • Провідне планування гаджета з пропозицією. Це робить знак "плюс"; з'єднання 3-х проводів в одному місці.
  • 1-в-3-SАТ

введіть тут опис зображення

Тепер давайте розглянемо різні стани. Ілюстрація нижче, опис зліва направо:

  • Лівий дріт втягується в центр; інші два виштовхуються.
  • Нижній дріт втягується в центр; інші два виштовхуються.
  • Правий нижній дріт втягується в центр; інші два виштовхуються.

введіть тут опис зображення

31-в-3

Залишаються обмеження:

  • Ми не можемо розділити провід,
  • Ми не можемо схрещувати дроти,
  • У нас можуть виникнути набридливі проблеми з компонуванням, оскільки ми повинні бути обережними щодо співвідношення довжини дроту.

Розщеплення дроту

ТТТТ1Т2а,б,cа,б,cТа,б,c

Ілюстрація нижче, опис зліва направо:

  • Розкладка дроту. Зверніть увагу, що стіни трохи товсті, тому дроти підтягуються ближче один до одного для ілюстрації; насправді вони трохи далі.
  • Та,б,c

введіть тут опис зображення

а,ба,ба,б

  • Приклад стану лівого проводу, що оцінюється як істинний.
  • Поганий стан другого проводу; її намагаються по-різному оцінювати, але потім отримує дублюючу пару.
  • Хороший стан другого проводу, тепер вони однакові за значенням, а дублюючих пар немає.

введіть тут опис зображення

а,б,c

Залишаються обмеження:

  • Ми не можемо розділити провід,
  • Ми не можемо схрещувати дроти,
  • У нас можуть виникнути набридливі проблеми з компонуванням, оскільки ми повинні бути обережними щодо співвідношення довжини дроту.

Бездротовий провід!

Ну, на моє захоплення, розщеплення дроту виявилося бездротовим! Тобто, на малюнках, наведених вище, я прокладаю дроти поруч, але немає підстав для цього! Ми можемо розмістити дроти в будь-якій точці сітки, і вони все одно будуть "заплутані" так званими. Це економить нам багато клопоту:

  • 3-SАТ
  • Ми повинні робити будь-яку дратівливу компоновку, добираючи дроти до їх розташування, це просто! Як бездротовий телефон! Свобода!
  • Нам не потрібно хвилюватися з приводу паритету довжини дроту / один за одним.
  • Ми можемо зробити зменшення в мінімальному розмірі; кожна змінна отримає один набір довгих дротяних смуг, з безліччю бездротових з'єднань уздовж проводів. Ці з'єднання будуть мати ворота клауз, які будуть розміщуватись у власному місці в мережі. Цей пункт тепер буде складатися лише з приладу пропозиції та трьох бездротових дротів, що стирчать із нього.

Залишаються обмеження:

  • Ми не можемо схрещувати дроти,
  • У нас можуть виникнути набридливі проблеми з компонуванням, оскільки ми повинні бути обережними щодо співвідношення довжини дроту.

Скорочення, перша спроба

Φ(х)=iСi1-в-3-SАТ

  • хjх
  • СiΦ(х)
  • хjСi3а,б,c

Як це може виглядати:

  • а,б,c

введіть тут опис зображення

А ось як може виглядати сітка:

  • Малюнок: Отримана ігрова дошка. Змінні вишикуються рядками внизу. Статті розкладені вгорі. Цей макет дає квадратичний вибух; розумніша форма може уникнути квадратичного вибуху.

введіть тут опис зображення

Деталі в останній хвилині

Нагадаємо проблему рішення:

(н+1)×(н+2)н

(н+1)×(н+2)нО(н)

  • О(|х|×|Φ(х)|)О(н)н
  • 1О(н)

Джерела графіка


[ai,bi]ai,bi=1..н

Я перенесу всі ці коментарі у свою відповідь і зроблю її всебічнішою в наступній великій редакції.
Realz Slaw

добре, я зачекаю!
Vor

@RealzSlaw, велике спасибі! У мене ще не було часу прочитати це, але це виглядає дуже приємно.
Yoav bar sinai

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