<!-- 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í?
Image:3dmpromenne.png
{{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 .
Dk( - neformální konstrukce 3DM ze SAT, zde je formálnější přepis ze skript) ::
:: Nechť je formule (z klauzulí ) v KNF na proměnných .
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\…
aParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: b_i\̲[̲1], \dots, b_i\…
aParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: u_i\̲[̲1], \dots, u_i\…
. :: Na těchto prvcích vytvoříme množiny trojic a takto (viz také obrázek).:: PP buď musí obsahovat všechny trojice z (vynucuje TRUE pro proměnnou), nebo všechny trojice z (vynucuje FALSE pro proměnnou).
![$ do trojic v množiny $S_j
ParseError: KaTeX parse error: Expected '}', got 'EOF' at end of input: …do=get){: alt="
do trojic v množiny ."}Komponenta pro klauzule (clause satisfaction testing) - bude zajišťovat propojení hodnoty proměnné s jejími klauzulemi
:: <u>∀ klauzuli </u> přidáme nové prvky
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_1\̲[̲j]∈X
aParseError: KaTeX parse error: Undefined control sequence: \[ at position 4: s_2\̲[̲j]∈Y
a množinu trojic . :: PrvkyParseError: 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 PP musí být !1 trojice z množiny . :: Pokud jeParseError: KaTeX parse error: Undefined control sequence: \[ at position 5: (u_i\̲[̲j], s_1\[j], s_…
v perfektním párování ⇒ v PP je celá (podobně pro negaci).Image:3dmgarbage.png
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}$
:: Zřejmě platí, že 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.
{{Zdroje|
http://ktiml.mff.cuni.cz/~kucerap/NTIN090/NTIN090-poznamky.pdf
http://www.uio.no/studier/emner/matnat/ifi/INF4130/h12/undervisningsmateriale/dino4.pdf
}}