Poslední lekce K3 — a tečka za TSP. Z [L3.1] víš, že nearest neighbor okruh sice vyrobí, ale nic neslibuje (heuristika). Z [L3.9] a [L3.10] máš aproximace s faktory 2 a 3/2 pro metrický TSP [L3.8a]. Dnešní otázka je jiná: okruh už nějaký mám — jde levně vylepšit? Slide 28 odpovídá principem, kterému se říká local search (lokální prohledávání), a jeho TSP instancí je algoritmus $k$-OPT — podle slidu „one of the most successful techniques for TSP instances in practice“.
A simple idea which can be used to solve other optimization problems as well:
Local search is an algorithmic principle based on two decisions:
Tedy: startovní řešení dodá libovolná heuristika (klidně nearest neighbor) a pak se řešení opakovaně „pošťuchuje“ malými úpravami. Návrh konkrétního local search algoritmu = zodpovědět dvě rozhodnutí: (1) jaké úpravy jsou povolené (to definuje „okolí“ řešení), (2) kdy úpravu přijmout ($k$-OPT přijímá jen zlepšení — improvements only).
Input: An instance $(K_n, c)$ of TSP, number $k \ge 2$. Output: Hamiltonian circuit $H$.
1. Let H be any Hamiltonian circuit;
2. Let S be the family of k-element subsets S of E(H);
for all S ∈ S do // outer loop deals with removed edges
for all Ham. circuits H' ≠ H such that E(H') ⊇ E(H) \ S do
// inner loop deals with inserted edges
if c(E(H')) < c(E(H)) then H := H' a go to 2.;
end
end
Note: $H'$ is constructed, so that it is Hamiltonian circuit as well. When $k=2$, the inner loop, which creates the Hamiltonian circuits $H'$ from the remaining edges of $H$, executes only once, since there is just one way to construct the new Hamiltonian circuit $H'$.
Vnější smyčka vybírá, kterých $k$ hran okruhu se zbavit; vnitřní smyčka zkouší všechny okruhy $H' \ne H$, které zbylé hrany $E(H)\setminus S$ obsahují (tj. doplňují je nějakými novými hranami). Jakmile nějaký $H'$ vyjde ostře levněji, stane se novým $H$ a vše začíná znovu od kroku 2 — s novou rodinou $\mathcal{S}$, protože okruh (a tedy jeho hrany) se změnil.
Zbydou dvě cesty (okruh je kružnice — dva řezy ji rozpadnou na dva oblouky). Každá cesta má dva konce; nový okruh musí konce pospojovat dvěma hranami „křížem“. Možnosti jsou jen dvě: buď vrátíš původní dvě hrany (to je zase $H$ — zakázáno podmínkou $H' \ne H$), nebo je zapojíš jediným zbývajícím způsobem. Přesně to říká poznámka slidu 29: pro $k = 2$ proběhne vnitřní smyčka jen jednou.
(A když vyhodíš dvě hrany, které sousedí? Zbyde osamocený vrchol + jedna cesta — osamocený vrchol jde zapojit jen tak, jak byl, takže jediná rekonstrukce je $H$ samo a vnitřní smyčka neproběhne ani jednou. Vlastní pozorování — slide tenhle případ nerozepisuje.)
Všechny ostatní hrany zůstávají, takže rozdíl je jen $$c(E(H')) - c(E(H)) = c(a,d) + c(b,c) - c(c,d) - c(a,b).$$ Je-li záporný, výměna se vyplatí. Vyhodnocení jedné výměny je tedy $\mathcal{O}(1)$ — proto je 2-opt v praxi tak laciný.
2-opt: just one way to construct the new Hamiltonian circuit: the gain if the improvement is $c(E(H')) - c(E(H)) = (a,d) + (b,c) - (c,d) - (a,b)$ and path $(b, \ldots, d)$ has changed orientation.
3-opt: at least two ways to construct the new Hamiltonian circuit:
Drobnost, která u písemky dělá dobrý dojem: po 2-opt výměně se jeden z oblouků projíždí v opačném směru („path $(b,\ldots,d)$ has changed orientation“). U symetrického TSP je to jedno ($c$ nezávisí na směru), u asymetrického by se cena oblouku přepočítávala celá — proto se 2-opt v této podobě používá pro symetrické instance.
Vezmi metrickou $K_5$ z [L3.8a] (tabulka cen tam; $c(A,B){=}2$, $c(B,C){=}1$, $c(C,D){=}2$, $c(D,E){=}5$, $c(E,A){=}2$, $c(A,D){=}3$, $c(B,E){=}3$, …) a jako startovní okruh výstup double-tree algoritmu z [L3.9]: $H = A,B,C,D,E,A$ s cenou $12$ (tentýž okruh dostaneš i shortcuttingem v [L3.8a]).
Po dvojicích odstraněných hran (vložené hrany jsou vždy ty jediné možné):
Jediná výhodná výměna: vyhodit $\{A,B\}$ a $\{D,E\}$, vložit $\{A,D\}$ a $\{B,E\}$ — nový okruh $A,D,C,B,E,A$ za $11$.
Po výměně algoritmus skočí na krok 2 a prověří novou rodinu $\mathcal{S}$ — a žádná z pěti výměn už nepomůže (zisky $+1, +1, +1, +4, +3$, propočet v T02). Algoritmus končí: $H' = A,D,C,B,E,A$ je 2-OPT lokální optimum. Na téhle malé instanci je to shodou okolností i globální optimum ($\mathrm{OPT} = 11$ enumerací, [L3.8b]) — ale to je výjimka malé instance, ne pravidlo.
Pro $k = 3$ už vnitřní smyčka jednou neproběhne: po vyhození tří navzájem nesousedních hran zbydou tři oblouky a slide 30 ukazuje at least two ways, jak je pospojovat do nového okruhu (jeden bez otáčení oblouků, druhý s otočením oblouku $(c,\ldots,b)$).
A pro $k = 4$ slide 31 ukazuje slavnou rekonstrukci: One possible solution called the "double bridge" - no path has changed orientation (1:1). Čtyři oblouky se přeskládají do jiného pořadí, aniž by se kterýkoli z nich otáčel — proto je double bridge oblíbený i pro asymetrický TSP a jako „rozkopávací“ tah, který 2-opt neumí napodobit.
Konečnost: každé přijetí ostře zmenší $c(E(H))$, a Hamiltonovských okruhů je konečně mnoho — žádný se tedy nemůže opakovat a algoritmus skončí (vlastní pozorování; slidy konečnost nerozebírají).
Aproximace? NE. Aproximační algoritmus podle [L3.1] potřebuje dokázanou worst-case záruku $c(E(H)) \le r \cdot \mathrm{OPT}$ pro všechny instance. $k$-OPT vrací jen lokální optimum — okruh neporazitelný výměnou $k$ hran — a to může být od globálního optima libovolně daleko. Slidy taky žádný faktor nedokazují a celou techniku nadepisují „Tour Improvement Heuristics“. Pro obecný (nemetrický) TSP by polynomiální algoritmus se zárukou $r$ ani existovat nemohl, pokud $P \ne NP$ [L3.6].
„2-OPT našel na naší instanci optimum, takže je to aproximační algoritmus.“ — NE. Lokální optimum ($k$ hran nepomůže vyměnit) obecně není globální optimum a žádný faktor $r$ pro $k$-OPT dokázán není: je to heuristika, stejně jako nearest neighbor [L3.1]. Záruky mají až aproximace pro metrický TSP: double-tree (faktor 2) [L3.9] a Christofides (faktor 3/2) [L3.10]. V praxi se obojí kombinuje: aproximace dodá startovní okruh se zárukou, $k$-OPT ho dál vylepšuje.
One of the most successful techniques for TSP instances in practice is local search. The simple idea is:
Local search is an algorithmic principle based on two decisions:
Example of local search is the k-OPT algorithm for TSP.
k-OPT algorithm for TSP. Input: An instance $(K_n, c)$ of TSP, number $k \ge 2$. Output: Hamiltonian circuit $H$. 1. Let $H$ be any Hamiltonian circuit. 2. Let $\mathcal{S}$ be the family of $k$-element subsets $S$ of $E(H)$. For all $S \in \mathcal{S}$ do: for all Hamiltonian circuits $H' \ne H$ such that $E(H') \supseteq E(H) \setminus S$ do: if $c(E(H')) < c(E(H))$, then set $H := H'$ and go to step 2.
Note: $H'$ is constructed so that it is a Hamiltonian circuit as well. When $k = 2$, the inner loop creating Hamiltonian circuits $H'$ from the remaining edges of $H$ executes only once, because there is only one way to construct the new Hamiltonian circuit $H'$.
(i) Explain the two decisions that define a local search algorithm and how $k$-OPT answers them. (ii) Explain why for $k = 2$ the inner loop executes only once. (iii) Is $k$-OPT an approximation algorithm? Justify.
Reprodukce a vysvětlení $k$-OPT — popsat princip local search, algoritmus a jeho vlastnosti. Typická „describe + explain“ otázka (v bance vedená jako potenciální úloha ze slidů, nízká pravděpodobnost na písemce).
(i) Najdi obě rozhodnutí přímo ve slidu 28 a u každého řekni, jak ho $k$-OPT konkretizuje. (ii) Geometrická úvaha: co zbyde z kružnice po odebrání dvou nesousedních hran a kolik je způsobů, jak čtyři konce pospojovat? (iii) Vrať se k definici aproximačního algoritmu — co přesně by se muselo dokázat a co $k$-OPT skutečně garantuje?
(i) Local search je dán dvěma rozhodnutími (slide 28): which modifications are allowed — u $k$-OPT je povolenou modifikací odebrání $k$-prvkové podmnožiny $S$ hran okruhu a doplnění zbytku $E(H)\setminus S$ na jiný Hamiltonovský okruh $H' \ne H$; when to modify the solution — $k$-OPT přijímá pouze ostrá zlepšení, $c(E(H')) < c(E(H))$, a po přijetí se vrací na krok 2 (okolí se počítá z nového okruhu).
(ii) Odeberu-li z kružnice dvě nesousední hrany $(a,b)$ a $(c,d)$, rozpadne se na dvě cesty se čtyřmi konci $a, b, c, d$. Nový okruh musí oba oblouky spojit dvěma hranami; možnosti jsou jen dvě — původní dvojice (dá $H' = H$, vyloučeno podmínkou $H' \ne H$) a jediná zbývající dvojice $(a,d), (b,c)$, při níž jeden oblouk změní orientaci (slide 30). Vnitřní smyčka tedy vygeneruje právě jednoho kandidáta. (Při odebrání dvou sousedních hran zbyde izolovaný vrchol + cesta a jediná rekonstrukce je $H$ samo — kandidát žádný; tento případ slide explicitně nerozepisuje.)
(iii) Ne. Aproximační algoritmus vyžaduje dokázanou worst-case záruku $c(E(H)) \le r \cdot \mathrm{OPT}$ pro všechny instance [L3.1]. $k$-OPT vrací jen lokální optimum vzhledem k výměnám $k$ hran, které může být od $\mathrm{OPT}$ libovolně daleko; slidy žádný faktor nedokazují a řadí $k$-OPT mezi tour improvement heuristics. Pro obecný TSP navíc žádný polynomiální $r$-aproximační algoritmus neexistuje, pokud $P \ne NP$ [L3.6].
Consider the metric TSP instance $(K_5, c)$ with costs $c(A,B)=2$, $c(A,C)=3$, $c(A,D)=3$, $c(A,E)=2$, $c(B,C)=1$, $c(B,D)=2$, $c(B,E)=3$, $c(C,D)=2$, $c(C,E)=4$, $c(D,E)=5$. Run the 2-OPT algorithm starting from the Hamiltonian circuit $H = A,B,C,D,E,A$. (a) List all candidate 2-OPT exchanges on $H$ with their gains. (b) Perform the improving exchange and state the new circuit and its cost. (c) Show that the new circuit is 2-OPT optimal (no exchange improves it) and compare it with the global optimum.
Ruční odsimulování 2-OPT: na okruhu za 12 (výstup double-tree z [L3.9]) spočítat zisky všech výměn, provést tu výhodnou a ověřit zastavení.
Okruh na 5 vrcholech má 5 hran; dvojic nesousedních hran je 5 (sousední dvojice kandidáta nedají). U každé dvojice je vložená dvojice hran určena jednoznačně — stačí 5× dosadit do vzorce zisku. Po výměně totéž zopakuj na novém okruhu.
(a) $c(E(H)) = 2+1+2+5+2 = 12$. Kandidáti (odstranit → vložit, zisk):
(b) Provedu výměnu s ziskem $-1$: vyhodím $\{A,B\}, \{D,E\}$, vložím $\{A,D\}, \{B,E\}$; oblouk $B,C,D$ se projede pozpátku. Nový okruh $H' = A,D,C,B,E,A$ s cenou $3+2+1+3+2 = 11$.
(c) Na $H'$ znovu všech 5 kandidátů: $\{A{,}D\},\{C{,}B\} \to \{A{,}C\},\{D{,}B\}$: $3+2-3-1 = +1$; $\{A{,}D\},\{B{,}E\} \to \{A{,}B\},\{D{,}E\}$: $2+5-3-3 = +1$; $\{D{,}C\},\{B{,}E\} \to \{D{,}B\},\{C{,}E\}$: $2+4-2-3 = +1$; $\{D{,}C\},\{E{,}A\} \to \{D{,}E\},\{C{,}A\}$: $5+3-2-2 = +4$; $\{C{,}B\},\{E{,}A\} \to \{C{,}E\},\{B{,}A\}$: $4+2-1-2 = +3$. Žádný zisk není záporný → $H'$ je 2-OPT lokální optimum a algoritmus končí. Z [L3.8b] víme, že $\mathrm{OPT} = 11$ — zde se lokální optimum trefilo do globálního (malá instance; obecně to neplatí, viz box „Nebezpečná polopravda“).