2 Self-redukce
- 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ýš . Víme už, že optimum je 22, ale chceme hrany.
Zkus smazat hranu a zeptej se znovu:
- Odpověď ANO: bez hrany to jde, nech ji smazanou.
- Odpověď NE: hrana je nutná, vrať ji a označ.
Po projití všech hran zbude přesně 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í
Postup, který najde konkrétní řešení problému pomocí polynomiálně mnoha dotazů na jeho rozhodovací verzi.
- Najdi hodnotu optima. Binárně vyhledej v rozsahu možných hodnot.
- Projdi prvky řešení po jednom (vrcholy, hrany, proměnné).
- Pro každý zkus odstranění nebo zafixování a zeptej se orákula.
- Podle odpovědi úpravu nech, nebo vrať. Instance po každém kroku pořád má řešení.
- Spočítej dotazy a řekni, proč je výsledek správný.
Pokud spustíš mazání hran s 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í
Hodnota. Binárně vyhledej největší v , pro které orákulum řekne ANO. To je dotazů.
Řešení. Pro každý vrchol se zeptej, zda obsahuje kliku velikosti .
- ANO: smaž natrvalo, nějaká největší klika ho nepotřebuje.
- NE: je v každé zbylé největší klice, nech ho.
Po průchodu zbude přesně vrcholů a ty tvoří kliku.
Dotazů: .
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 . Jeho vrcholy mají tři různé barvy, které pojmenujeme 1, 2, 3.
Pro každý vrchol a barvu : spoj se dvěma vrcholy palety různými od . Tím má barvu . Zeptej se orákula.
- ANO: hrany nech, má barvu .
- NE: hrany odeber a zkus další barvu.
Protože původní graf obarvitelný je, nějaká barva vždy projde.
Dotazů: nejvýše .
Máme proměnné . Pro každou zkus přidat k formuli jednotkovou klauzuli . Je-li výsledek splnitelný, nech ji. Jinak přidej . Na konci je ohodnocení hotové. Stačí dotazů.
Najdi nejmenší . Pro každý vrchol se ptej, zda má pokrytí velikosti .
- ANO: dej do pokrytí, smaž ho a sniž .
- NE: není v žádném nejmenším pokrytí, jdi dál.
Stačí jeden průchod: kdyby 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
- Chybí krok s nalezením optima.
- Tvrzení „ANO, takže prvek je v řešení“ u postupu s mazáním. Je to naopak: ANO znamená, že prvek není potřeba.
- Orákulum dostane něco, co neumí, třeba graf s předbarvenými vrcholy. Povolený je jen vstup rozhodovací verze.
- Chybí počet dotazů.
2.5 Kvíz
2.6 Příklady na procvičení
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ě hran kružnice. Dotazů je . Optimum hledat nemusíš, protože tady žádná délka není.
Máš orákulum pro Independent Set. Najdi největší nezávislou množinu.
Řešení
Binárně najdi největší . Pro každý vrchol se zeptej, zda má nezávislou množinu velikosti . ANO: smaž . NE: nech ho. Zbylé vrcholy tvoří hledanou množinu. Dotazů je . Je to stejná kostra jako u kliky.
2.7 Tahák
-
- 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, dotazů.
- Klika: dotazů. 3-barvení: nejvýše .