NP-úplnost 3DM (z SAT)
Image:3dm_io.jpg
Trojrozměrné párování (3-dimensional matching - 3DM)
Instance: Množina , kde jsou po dvou disjunktní množiny a .
Otázka: Obsahuje perfektní párování? Jinými slovy, existuje množina , , trojice v níž obsažené jsou po dvou disjunktní?
{{theorem | 3DM je NP-úplný problém.
| 3DM ∈ NPC }}
Dk() ::
:: plyne z toho, že pokud máme k dispozici množinu , dokážeme ověřit v polynomiálním čase, jde-li o párování velikosti .
Image:3dm.jpg
Dk( ) ::
:: Nechť je formule (z klauzulí ) v KNF na proměnných . :: splnitelná ⇔ v instanci ∃ PP.
Konstrukce 3DM ze SAT:
Vytvoříme komponentu, která bude určovat, jakou hodnotu která proměnná dostane,
vytvoříme komponentu, která bude zajišťovat propojení této hodnoty s klauzulemi, v nichž se tato proměnná vyskytuje,
doplníme trojice tak, abychom dostali k splňujícímu ohodnocení skutečně perfektní párování a naopak.
Komponenta pro proměnné (truth-setting) - bude určovat, jakou hodnotu která proměnná dostane
:: <u>∀ proměnnou</u> , přidáme nové vnitřní prvky
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: a_i\̲[̲1], \dots, a_i\…
do aParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: b_i\̲[̲1], \dots, b_i\…
do . Do přidáme prvkyParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: u_i\̲[̲1], \dots, u_i\…
aParseError: KaTeX parse error: Undefined control sequence: \[ at position 14: \overline u_i\̲[̲1], \dots, \ove…
. :: Na těchto prvcích vytvoříme množiny trojic a takto (viz také obrázek): :: $\matrix{ T_i^t&=&{(\overline u_i[j], a_i[j], b_i[j]);|;1\leq j\leq m}\cr
T_i^f&=&{(u_i[j], a_i[(j+1);{\rm mod};m], b_i[j]);|;1\leq j\leq m}\cr T_i&=&T_i^t\cup T_i^f\cr
} $
:: Protože žádný z prvků
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: a_i\̲[̲j]
aniParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: b_i\̲[̲j]
se nebude vyskytovat v jiných trojicích, je tímto vynuceno, že PP buď musí obsahovat všechny trojice z , nebo všechny trojice z . :: Pokud obsahuje trojice z , znamená to, že žádná další vybraná trojice nesmí obsahovat literál , tedy vynucujeme hodnotu 1, true pro , proto také . Podobně pokud obsahuje perfektní párování trojice z , vynucujeme hodnotu 0, false, odtud .Image:3dm3triples.jpg
Komponenta pro klauzule (clause satisfaction testing) - bude zajišťovat propojení hodnoty proměnné s jejími klauzulemi
:: <u>∀ klauzuli </u> přidáme nový prvek
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_1\̲[̲j]
do množiny , nový prvekParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_2\̲[̲j]
do množiny a množinu trojic :: $S_j={(u_i[j], s_1[j], s_2[j]);|;u_i\in C_j}\cup {(\overline u_i[j], s_1[j], s_2[j]);|;\overline u_i\in C_j}$
:: Prvky
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_1\̲[̲j]
aParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_2\̲[̲j]
se opět nebudou vyskytovat v jiných trojicích, díky tomu v perfektním párování musí být právě jedna trojice z množiny . :: Navíc pokud se trojiceParseError: KaTeX parse error: Undefined control sequence: \[ at position 5: (u_i\̲[̲j], s_1\[j], s_…
vyskytuje v perfektním párování, znamená to, žeParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: u_i\̲[̲j]
se nemůže vyskytovat v jiné trojici a to znamená, že v tomto párování jsou všechny trojice z a žádná z . Podobně by to bylo, kdyby v perfektním párování byla trojice s negativním literálem.Image:3dmgarbage.jpg
Komponenta pro doplnění trojic (garbage collection) - abychom dostali k splňujícímu ohodnocení skutečně PP a naopak
:: Těmito trojicemi jsme ale schopni v PP pokrýt jen prvků z prvků
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: u_i\̲[̲j], \overline u…
, , . Z toho jich pokryjeme trojicemi z nebo , . Trojicemi z , pokryjeme dalších prvků. :: Zbývá tedy prvků, jež nejsme zatím schopni pokrýt, proto přidáme do množiny trojice, které nám jejich pokrytí zabezpečí. :: Do přidáme prvkyParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: g_1\̲[̲k]
a do prvkyParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: g_2\̲[̲k]
obojí pro a do přidáme množinu trojic:: $G={(u_i[j], g_1[k], g_2[k]), (\overline u_i[j], g_1[k], g_2[k]);|;1\leq
k\leq m(n-1), 1\leq i\leq n, 1\leq j\leq m}$
Výsledek konstrukce:
:: $
\matrix{
W&=&{u_i[j], \overline u_i[j];|;1\leq i\leq n, 1\leq j\leq m}\cr X&=&{a_i[j];|;1\leq i\leq n, 1\leq j\leq m};\cup\cr
&&\cup;{s_1[j];|;1\leq j\leq m}\cr
&&\cup;{g_1[j];|;1\leq j\leq m(n-1)}\cr Y&=&{b_i[j];|;1\leq i\leq n, 1\leq j\leq m};\cup\cr
&&\cup;{s_2[j];|;1\leq j\leq m}\cr
&&\cup;{g_2[j];|;1\leq j\leq m(n-1)}\cr M&=&\Big(\bigcup_{i=1}^nT_i\Big)\cup\Big(\bigcup_{j=1}^mS_j\Big)\cup
G\cr }
$
:: Zřejmě platí, že , navíc a . Velikost takto vytvořené instance trojrozměrného párování je tedy polynomiálně velká a v polynomiálním čase ji zřejmě lze i vytvořit.
:: Předpokládejme, že v existuje perfektní párování , na jehož základě zkonstruujeme ohodnocení , které bude splňovat formuli . Nechť je libovolný index z , jak jsme již zdůvodnili, v jsou buď všechny trojice z , nebo všechny trojice z , pokud obsahuje trojice z , definujeme , pokud obsahuje trojice z , definujeme . Nechť je libovolná klauzule formule , množina musí obsahovat právě jednu z trojic z , neboť to je jediná možnost, jak mohou být pokryty prvky
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_1\̲[̲j]
aParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_2\̲[̲j]
a dvě obsahovat nemůže, protože každý z těchto prvků musí být pokryt právě jednou. Nechť tato trojice jeParseError: KaTeX parse error: Undefined control sequence: \[ at position 5: (u_i\̲[̲j], s_1\[j], s_…
pro nějaké . To znamená, že je proměnná, vyskytující se jako pozitivní literál v klauzuli , navíc musí platit, žeParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: u_i\̲[̲j]
se nemůže vyskytovat v žádné jiné trojici v , a proto obsahuje trojice z a nikoli trojice z , a tedy , čímž je klauzule splněna. Podobně bychom postupovali v případě, kdy trojicí v by bylaParseError: KaTeX parse error: Undefined control sequence: \[ at position 16: (\overline{u_i}\̲[̲j], s_1\[j], s_…
, tedy pokud by obsahovala negativní literál, jediný rozdíl by byl, že bychom dostali, že a že je splněna díky negativnímu literálu .:: Pokud je naopak splnitelná, zkonstruujeme perfektní párování následovně. Nechť je ohodnocení splňující a nechť označuje literál, který je v tímto ohodnocením splněn pro . Pokud je takových literálů víc, vybereme prostě jeden z nich. :: Pak položíme $M'=\Big(\bigcup_{t(u_i)=1}T_i^t\Big)\cup
\Big(\bigcup_{t(u_i)=0}T_i^f\Big)\cup \Big(\bigcup_{j=1}^m{(z_j[j], s_1[j], s_2[j])}\Big)
\cup G', G'G$, které doplňují párování o pokrytí zbylých literálů.
:: Není těžké ověřit, že takto definovaná množina tvoří perfektní párování .