Чому рівності між класами складності перекладаються вгору, а не вниз?


25

Здравствуйте, Хлопці, я розумію, що хитрість накладки дозволяє нам перевести класи складності вгору - наприклад, . Прокладка працює, "надуваючи" вхід, виконуючи перетворення (скажімо, скажімо, в ), що дає "магічний" алгоритм, який можна запустити на вкладеному вході. Хоча це має технічний сенс, я не можу зрозуміти, як це працює. Що саме тут відбувається? Чи є проста аналогія того, що таке підкладка?N P PP=NPEXP=NEXPNPP

Чи можете надати причину здорового глузду, чому це так?


11
Хотілося б зазначити, що не всі результати класу складності йдуть вгору. Наприклад, якщо ви довели , то це означатиме . Взагалі колапси йдуть вгору, тоді як розділення знижуються. P N PEXPNEXPPNP
Робін Котарі

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

2
@Robin, @gabgoh: навіть деякі колапси йдуть вниз, але не за допомогою аргументів. Див., Наприклад, arxiv.org/abs/cs/9910008 .
Джошуа Грохов

Відповіді:


30

Я думаю, що найкращий спосіб отримати інтуїцію щодо цього питання - це подумати, які повні проблеми для експоненціальних часових класів. Наприклад, повною задачею для НЕ є стандартні задачі, повні NP, на коротко описуваних входах, наприклад, з огляду на схему, яка описує матрицю суміжності графіка, чи є графік 3-кольоровим? Тоді проблема того, чи E = NE стає еквівалентною, чи вирішуються задачі NP в поліноміальному часі на коротко описуваних входах, наприклад, на тих, що мають малу ефективну складність Колмогорова. Очевидно, це не сильніше, ніж вони вирішуються на всіх входах. Чим більше обмежений час, тим менша складність Колмогорова відповідних входів, тим згортання для більших часових меж є діючими алгоритмами, що працюють на менших підмножинах входів.

Рассел Імпальяццацо


14

Гаразд, тому ваша мета - показати, що основі C L A S S 1 [ g ( n ) ] = C L A S S 2 [ h ( n ) ]CLASS1[g(f(n))]=CLASS2[h(f(n))]CLASS1[g(n)]=CLASS2[h(n)](ми не вказуємо, які саме це класи, ми просто знаємо, що вони якимось чином параметризовані з вхідним розміром). Ми маємо мову , вирішується деяким алгоритмом А . Тепер ми робимо мову L , додаючи кожне слово в x L , так що його довжина тепер f ( n ) , і ми бачимо, що він міститься в C L A S S 1 [ gLCLASS1[g(f(n))]ALxLf(n) (наш новий алгоритм A основному просто ігнорує додані нулі і виконує A на реальному, короткому вході).CLASS1[g(n)]AA

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

Тепер ми знаємо, що і, отже, L C L A S S 2 [ h ( n ) ] (вирішено за деяким алгоритмом B ). Ми хотіли б звідси дістатися до L C L A S S 2 [ h ( f ( n ) ) ]LCLASS1[g(n)]LCLASS2[h(n)]BLCLASS2[h(f(n))]. Але це просто - алгоритм вирішує L, просто прошиває вхід відповідно і працює B ' на вкладеному вході.BLB

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

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


13

Я бачу аргументи прокладки з точки зору компактності подання. Придумайте дві машини перекладача Тюрінга: підірває екземпляри, а C знову стискає їх.BC

Аргумент padding працює з , складаючи B з детермінованою версією TM для мови нижнього недетермінованого класу. Виходи B спільно утворюють мову, яка компактно не представлена, тому це стає "простішим".BBB

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


5

Щоб зробити це більш інтуїтивно, давайте подивимось, що відбувається більш абстрактно!

pad

Ці дві перетворення мають таку властивість:

AΣxΣ

pad(x)pad(A)xA

AEXPNEXPpad(A)PNP

EXP

Зрозуміло, що перетворення для оббивки мають ці властивості.

EXPPNEXPNP

Я не маю офіційного аргументу, чому зараз немає таких перетворень, але інтуїтивно те, що сказав Андраш Саламон, є правильним. Збільшити розмір входів легко, але незрозуміло, як їх можна стиснути?

P=NPNEXP=NTime(2nO(1))xnN=2nO(1)

NEXP(n)=NTime(2nO(1))=NTime(N)NP(N)P(N)=Time(NO(1))=Time(2nO(1))=EXP(n)


1
N=log(n)

1
Третій спосіб подумати про це, насправді, - це дивитися на зворотне. Я не дотримувався такого підходу до кінця, але якщо настане якесь чудове розуміння, я опублікую це як відповідь на себе.
габго

1
N=2nO(1)nNNnN=log(n)
Каве

1
nN=log(n)PNPEXPNEXP

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