Čtení: 25 minHodnotí se: zápočtový test, úloha 2 (6 b)

2 Self-redukce

Po přečtení umíš
  • najít hodnotu optima binárním vyhledáváním přes rozhodovací verzi
  • z odpovědí ANO a NE sestavit konkrétní řešení
  • vědět, proč musíš znát přesné optimum
  • spočítat počet dotazů na orákulum

Úloha zní: „Máš černou skříňku, která jen odpoví ANO nebo NE. Najdi konkrétní řešení.“ Má vždy stejnou kostru, takže je to nejjistějších 6 bodů v testu.

2.1 Ukázka: kudy jet

Skříňka odpoví, zda v grafu existuje okružní cesta délky nejvýš WW. Víme už, že optimum je 22, ale chceme hrany.

Zkus smazat hranu a zeptej se znovu:

Po projití všech hran zbude přesně ∣V∣|V| hran a ty tvoří hledanou kružnici. Skříňka přitom nemusí být rychlá. Zajímá nás jen počet dotazů.

2.2 Kostra řešení

Definice 2.2 (Self-redukce)

Postup, který najde konkrétní řešení problému pomocí polynomiálně mnoha dotazů na jeho rozhodovací verzi.

  1. Najdi hodnotu optima. Binárně vyhledej kk v rozsahu možných hodnot.
  2. Projdi prvky řešení po jednom (vrcholy, hrany, proměnné).
  3. Pro každý zkus odstranění nebo zafixování a zeptej se orákula.
  4. Podle odpovědi úpravu nech, nebo vrať. Instance po každém kroku pořád má řešení.
  5. Spočítej dotazy a řekni, proč je výsledek správný.
Varování 2.3 (Proč musíš znát přesné optimum)

Pokud spustíš mazání hran s W=25W = 25 a optimum je 22, může orákulum odpovídat ANO díky horší kružnici délky 24. Hranu z optimální kružnice pak smažeš a optimum ztratíš. Dostaneš platné řešení, ale ne nejlepší.

2.3 Řešené příklady ze cvičení

Příklad 2.4 (Největší klika (cvičení 2.4))

Hodnota. Binárně vyhledej největší kk v {1,…,n}\{1, \dots, n\}, pro které orákulum řekne ANO. To je O(log⁡n)O(\log n) dotazů.

Řešení. Pro každý vrchol vv se zeptej, zda G−vG - v obsahuje kliku velikosti kk.

  • ANO: smaž vv natrvalo, nějaká největší klika ho nepotřebuje.
  • NE: vv je v každé zbylé největší klice, nech ho.

Po průchodu zbude přesně kk vrcholů a ty tvoří kliku.

Dotazů: n+O(log⁡n)n + O(\log n).

Příklad 2.5 (3-obarvení (cvičení 2.5))

Orákulum umí jen říct, jestli je graf 3-obarvitelný. Barvu mu předat neumíme, ale můžeme ji vynutit grafem.

Paleta. Přidej trojúhelník p1,p2,p3p_1, p_2, p_3. Jeho vrcholy mají tři různé barvy, které pojmenujeme 1, 2, 3.

Pro každý vrchol vv a barvu cc: spoj vv se dvěma vrcholy palety různými od pcp_c. Tím má vv barvu cc. Zeptej se orákula.

  • ANO: hrany nech, vv má barvu cc.
  • NE: hrany odeber a zkus další barvu.

Protože původní graf obarvitelný je, nějaká barva vždy projde.

Dotazů: nejvýše 3n3n.

Příklad 2.6 (SAT)

Máme proměnné x1,…,xnx_1, \dots, x_n. Pro každou zkus přidat k formuli jednotkovou klauzuli (xi)(x_i). Je-li výsledek splnitelný, nech ji. Jinak přidej (¬xi)(\neg x_i). Na konci je ohodnocení hotové. Stačí nn dotazů.

Příklad 2.7 (Nejmenší vrcholové pokrytí)

Najdi nejmenší kk. Pro každý vrchol vv se ptej, zda má G−vG - v pokrytí velikosti k−1k - 1.

  • ANO: vv dej do pokrytí, smaž ho a sniž kk.
  • NE: vv není v žádném nejmenším pokrytí, jdi dál.

Stačí jeden průchod: kdyby vv patřil do nejmenšího pokrytí až později, patřil by do něj i dřív, protože vzaté vrcholy lze přidat zpět.

2.4 Typické chyby

2.5 Kvíz

Kvíz

1. Při mazání hrany orákulum odpoví ANO. Co to znamená?
2. Kolik dotazů potřebuje binární vyhledání kk v rozsahu 11 až nn?
3. Co se stane, když mažeš hrany s neoptimální mezí WW?
4. Graf má 10 vrcholů. Kolik nejvýše dotazů potřebuje postup pro 3-obarvení?
5. Proč u 3-obarvení přidáváme paletu, když orákulum neumí barvy?
Ukázat řešeníHrany na dva vrcholy palety nechají vrcholu jedinou možnou barvu. Barvu tak vyjádříme v jazyce grafu, který orákulum umí.

2.6 Příklady na procvičení

Cvičení 2.8

Najdi hamiltonovskou kružnici pomocí orákula „obsahuje graf hamiltonovskou kružnici?“. Kolik dotazů potřebuješ?

Řešení

Nejdřív se zeptej na celý graf. Pak procházej hrany a zkus je mazat: ANO znamená smazat, NE vrátit. Zbude přesně nn hran kružnice. Dotazů je ∣E∣+1|E| + 1. Optimum hledat nemusíš, protože tady žádná délka není.

Cvičení 2.9

Máš orákulum pro Independent Set. Najdi největší nezávislou množinu.

Řešení

Binárně najdi největší kk. Pro každý vrchol vv se zeptej, zda má G−vG - v nezávislou množinu velikosti kk. ANO: smaž vv. NE: nech ho. Zbylé vrcholy tvoří hledanou množinu. Dotazů je n+O(log⁡n)n + O(\log n). Je to stejná kostra jako u kliky.

2.7 Tahák

Tahák
    1. optimum binárně, 2) po prvcích zkoušej mazat nebo fixovat, 3) spočítej dotazy.
  • ANO = úprava zůstane, NE = vrať ji.
  • Bez přesného optima můžeš optimum ztratit.
  • Orákulum dostává jen běžné instance. Co neumí, vynuť stavbou (paleta u barvení).
  • SAT: fixuj proměnné jednotkovými klauzulemi, nn dotazů.
  • Klika: n+O(log⁡n)n + O(\log n) dotazů. 3-barvení: nejvýše 3n3n.

Zdroje

  • NI-ICC proseminář 1: extrakce řešení strany 2–16
  • NI-ICC cvičení 2: úlohy 4 a 5 (řešení jsou vlastní)