Ця проблема з є coNP-жорсткою (і, отже, coNP-повною).k = 3
Щоб довести це, я скорочу від 3-SAT до доповнення цієї проблеми (для заданої ланцюга , чи вводить ланцюг небієктивну функцію).NС03
Спочатку попереднє визначення, яке буде корисним:
Ми визначаємо маркований графік як спрямований графік, частина якого з міток позначена буквами, з властивістю того, що кожна вершина має або один немечений вхідний край, один мічений вхідний край, або два немечені вхідні ребра.
Скорочення
Припустимо, у нас є формула 3-SAT що складається з m застережень, кожне з яких містить три букви. Перший крок - побудувати мічений графік G з ϕ . Цей маркований графік містить одну копію наступного гаджета (вибачте за жахливу діаграму) для кожного пункту у ϕ . Три ребра, позначені L1, L2 та L3, замість цього позначаються буквами у пункті.ϕмГϕϕ
|
| |
| |
| O<-----\
| ^ |
| | |
| | |
| /----->O |
| | ^ |
| | | |
| | | |
| O O O
| ^ ^ ^
| | | |
| |L1 |L2 |L3
| | | |
| O O O
| ^ ^ ^
| | | |
| | | |
| \------O------/
| ^
| |
| |
| O
| ^
| |
|
Усі гаджети (по одному для кожного пункту) розташовуються в один великий цикл, а нижня частина одного гаджета пов'язує верхню частину наступного.
Зауважте, що таке розташування гаджетів насправді утворює маркований графік (кожна вершина має інгредієнт 1 або 2, з маркуванням лише ребер, що ведуть до вершин верху 1.
З формули та міченого графіка G (який був побудований з ϕ ) далі побудуємо ланцюг N C 0 3 (це завершить скорочення). Кількість входів і виходів для цієї схеми п + V , де п є число змінних в ф і V є числом вершин в G . Кожен змінний у ϕ та кожній вершині в G присвоюється один вхід і один вихід . Якщо x - деяка змінна в ϕϕГϕNС03n + vнϕvГϕГхϕтоді ми будемо посилатися на вхідні та вихідні біти, пов'язані з як x i n та x o u t . Крім того, якщо l є літералом з l = x, тоді ми визначаємо l i n = x i n, а якщо l - літерал з l = ¬ x, то визначаємо l i n = ¬ x i n . Нарешті, якщо v - деяка вершина в Gххя нхo u tлl = xlin=xinll=¬xlin=¬xinvGто ми будемо посилатися на вхідні та вихідні біти, пов'язані з як v i n та v o u t .vvinvout
Існує чотири типи вихідних бітів:
1) Для кожної змінної в ϕ , x o u t = x i n . Зауважте, що цей вихід залежить лише від одного вхідного біта.xϕxout=xin
2) Для кожної вершини графіка з міткою з точно одним вхідним ребром ( u , v ) таким чином, що край є немеченим, v o u t = v i n ⊕ u i n . Зауважте, що цей вихід залежить лише від двох вхідних бітів.v(u,v)vout=vin⊕uin
3) Для кожної вершини графічного мітка з точно одним вхідним ребром ( u , v ) таким чином, що край позначений l , v o u t = v i n ⊕ ( u i n ∧ l i n ) . Зауважте, що цей вихід залежить лише від трьох вхідних бітів, оскільки l i n залежить лише від x i n для будь-якої змінної x, яка використовується в прямому l .v(u,v)lvout=vin⊕(uin∧lin)linxinxl
4) Для кожної вершини графічного мітка з точно двома вхідними ребрами ( u , v ) та ( w , v ) , v o u t = v i n ⊕ ( u i n ∨ w i n ) . Зауважте, що цей вихід залежить лише від трьох вхідних бітів.v(u,v)(w,v)vout=vin⊕(uin∨win)
Оскільки у всіх випадках вихід залежить лише від трьох входів, схема, яку ми будуємо, знаходиться в за бажанням.NC03
Випадок доказу коректності 1: задовольняєтьсяϕ
Припустимо, існує задовольняюче завдання для . Потім побудуйте наступні два набори значень для входів.ϕ
1) Входам, пов'язаним зі змінними , задаються значення задовольняючого призначення. Усі входи, пов'язані з вершинами G , отримують значення 0.ϕG
2) Входам, пов'язаним зі змінними , задаються значення задовольняючого призначення. Розглянемо вершини в одному пункті гаджета в G . Якщо значення мітки дорівнює 0 (під задовольняючим призначенням), вхід, пов'язаний з вершиною в цільовій кінцевій точці краю, позначеного цією міткою, отримує значення 0. Якщо і L1, і L2 мають значення 0, тоді другий -вершині вершини в гаджеті (як показано вище) також присвоюється значення 0. Усі інші вершини отримують значення 1.ϕG
Ми хочемо показати, що ці два набори входів дають однакові виходи, і тому ланцюг не кодує перестановку.NC03
Розглянемо чотири типи вихідних бітів:
1) Для кожної змінної в ϕ , x o u t = x i n . Оскільки x i n є однаковим для обох наборів входів, результати цієї форми завжди будуть однаковими для двох наборів входів.xϕxout=xinxin
2) Для кожної вершини графіка з міткою з точно одним вхідним ребром ( u , v ) таким чином, що край є немеченим, v o u t = v i n ⊕ u i n . Розглядаючи гаджет, копії якого складають G , ми бачимо, що всі такі ребра складаються лише з пар вершин, вхідні значення яких завжди є 1s під другим набором входів. Таким чином v o u t = v i n ⊕ u i n = 0 ⊕ 0 =v(u,v)vout=vin⊕uinG під першим набором входів і v o u t = v i n ⊕ u i n = 1 ⊕ 1 = 0 під другим набором входів. Таким чином, результати цієї форми завжди будуть однаковими (і насправді нульовими) у двох наборах входів.vout=vin⊕uin=0⊕0=0vout=vin⊕uin=1⊕1=0
3) Для кожної вершини графічного мітка з точно одним вхідним ребром ( u , v ) таким чином, що край позначений l , v o u t = v i n ⊕ ( u i n ∧ l ) . Якщо l є помилковим під призначенням, то v i n дорівнює 0 під обома наборами входів; тоді v o u t = v i n ⊕ ( u i n ∧v(u,v)lvout=vin⊕(uin∧l)lvin під обома наборами входів. Якщо l відповідає дійсності при призначенні, v i n дорівнює 0 під першим набором входів і 1 під другим; Також зверніть увагущо в гаджеті, єдиний мічених краю ( U , v ) є вершини у яких завжди є U I п = 1vout=vin⊕(uin∧l)=vin⊕(uin∧0)=vin=0lvin(u,v)uuin=1під другим набором входів. В результаті ми бачимо, що під обома наборами входів коли l є правдою; тоді v o u t = v i n ⊕ ( u i n ∧ l ) = v i n ⊕ ( u i n ∧ 1 ) = v i n ⊕ u i n = v i n ⊕ vuin=vinl. Таким чином, результати цієї форми завжди будуть однаковими (і насправді нульовими) для двох наборів входів.vout=vin⊕(uin∧l)=vin⊕(uin∧1)=vin⊕uin=vin⊕vin=0
4) Для кожної вершини графічного мітка з точно двома вхідними ребрами ( u , v ) та ( w , v ) , v o u t = v i n ⊕ ( u i n ∨ w i n ) . У кожному гаджеті є дві такі вершини. Верхня вершина, а друга - верхня. Ми розглянемо ці два випадки окремо.v(u,v)(w,v)vout=vin⊕(uin∨win)
4a) Коли - вершина другої верхньої частини в гаджеті, u і w - дві цільові кінцеві точки ребер, позначені L1 і L2. Під першим набором входів v o u t = v i n ⊕ ( u i n ∨ w i n ) = 0 ⊕ ( 0 ∨ 0 ) = 0 . Під другим набором входів, u i n дорівнює 0, якщо iff L1 має значення 0 під задовольняючим завданням (aka u i n =vuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin ); аналогічно, w i n дорівнює 0, якщо iff L2 має значення 0 під задовольняючим завданням (aka w i n = L 2 ); і, нарешті, v i n визначається як 0 iff, і L1 і L2 мають значення 0 (aka v i n = L 1 ∨ L 2 ). Таким чином, під другим набором входів, v o u t = v i n ⊕ ( u i n ∨ w i n ) = (uin=L1winwin=L2vinvin=L1∨L2 . Таким чином, результати цієї форми завжди будуть однаковими (і насправді нульовими) у двох наборах входів.vout=vin⊕(uin∨win)=(L1∨L2)⊕(L1∨L2)=0
4b) Коли - верхня вершина у ґаджеті, u - друга верхня вершина, а w - цільова кінцева точка краю, позначена L3. Під першим набором входів v o u t = v i n ⊕ ( u i n ∨ w i n ) = 0 ⊕ ( 0 ∨ 0 ) = 0 . У відповідності з другим набором входів, у я п дорівнює 0 тоді і тільки тоді , як L1 і L2 мають значення 0 (він же у я п = лvuwvout=vin⊕(uin∨win)=0⊕(0∨0)=0uin ); w i n дорівнює 0 iff L3 має значення 0 (aka w i n = L 3 ); і нарешті v i n = 1 . Таким чином, під другим набором входів, v o u t = v i n ⊕ ( u i n ∨ w i n ) = 1 ⊕ ( ( L 1 ∨ L 2 ) ∨ L 3 )uin=L1∨L2winwin=L3vin=1 де рівність ( L 1 ∨ L 2 ∨ L 3 ) = 1 має місце за визначенням у задовольняючому призначенні для кожного пункту. Таким чином, результати цієї форми завжди будуть однаковими (і насправді нульовими) для двох наборів входів.vout=vin⊕(uin∨win) = 1 ⊕ ( ( L 1 ∨ L2)∨L3)=1⊕(L1∨L2∨L3)=1⊕1=0(L1∨L2∨L3)=1
Зрозуміло, ми бачимо, що виходи однакові для двох різних наборів входів, і тому ланцюг вводить небієктивну функцію.NC03
Випадок доказу коректності 2: незадовільнийϕ
Припустимо тепер, що не існує задовольняючого завдання для . Тоді припустимо задля суперечності, що деякі два різних набори входів ведуть до ланцюга N C 0 3, що має однаковий вихід.ϕNC03
Зрозуміло, що два входи повинні мати однакові значення для для кожної змінної x в ϕ . Таким чином, тепер ми можемо однозначно посилатися на значення x .xinxϕx
Визначте як набір вершин v в G таким, що v i n є різним у двох наборах вхідних значень.SvGvin
Доведемо наступні леми нижче:
Лемма 1: Якщо в якому - то гаджет все три вершин в цільових кінцевих точках позначених ребер не в , то немає вершини вище цих три в гаджет знаходиться в S .SS
Лема 2: Якщо в якому-небудь гаджеті верхня вершина не в то в наступному гаджеті вершина в S немає .SS
Оскільки ґаджети утворюють цикл, це означає, що якщо в будь-якому гаджеті всі три вершини в цільових кінцевих точках мічених країв не знаходяться в то жодна вершина в G не знаходиться в S (іншими словами, S порожня).SGSS
Однак розглянемо гаджет, пов’язаний із пунктом який не виконується. У цьому гаджеті всі три мітки мають значення 0. Ми знаємо, що край ( u , v ) з міткою L повинен задовольняти v o u t = v i n ⊕ ( u i n ∧ L ) , але L = 0 , тому v o u t = v i n( L 1 ∨ L2∨L3)(u,v)Lvout=vin⊕(uin∧ L )L = 0 . Отже, оскільки вихід є однаковим для обох входів, значення v i n також повинні бути однаковими для двох наборів входів. Іншими словами, ми показалищо v над S . Таким чиномми бачимощо в даному гаджет, три вершини в цільових кінцевих точках позначених ребер не в S .vоut=vin⊕ (uin∧ L ) =vin⊕ (uin∧0)=vin⊕0=vinvinvSS
В результаті робимо висновок, що порожній. Це, однак, означає, що між двома наборами входів не було різниць, що суперечить припущенню, що ці набори входів різні. В результаті ми бачимо, що функція, введена в дію ланцюга N C 0 3, є ін'єктивною і, отже, біекцією.SNC03
Залишилося лише довести леми.
Для цього зауважимо, що для кожного типу вершин у (indegree 1 з міткою, indegree 1 без мітки та indegree 2), якщо всі вхідні ребра походять від вершин, не в S, то відповідна вершина також не в S . Це тому, що у всіх трьох випадках v o u t = v i n ⊕ X, де X - деяка функція входів, пов'язаних зі змінними та / або вершинами з ребрами до v . Оскільки всі такі вершини за припущенням не знаходяться в S , значення X повинно бути однаковим для обох наборів входів. Тому v iGSSvout=vin⊕XXvSXтакож однаковий під обома наборами входів. Іншими словамиvне вS.vin=vout⊕XvS
Тепер, коли у нас є правило, що вершина відсутня в коли всі її попередники не знаходяться в S , лемми дотримуються просто, застосовуючи правило кілька разів до діаграми гаджетів вище.SS