Tato stránka obsahuje moje poznámky z přednášky Martina Loebla a Milana Hladíka z akademického roku 2021/2022 (MFF UK). Pokud by byla někde chyba/nejasnost, nebo byste rádi něco přidali, tak stránku můžete upravit pull requestem (případně mi dejte vědět na mail).
Diskrétní optimalizace
Matroidy
Definice (matroid): je dvojice (X,S), kde X je konečná množina, S⊆2X splňující
∅∈S
dědičnost: (∀A∈S)A′⊆A⟹A′∈S
výměnný axiom: (∀U,V∈S)∣U∣>∣V∣⟹(∃u∈U∖V)V∪{u}∈S
(3′):A⊆X⟹ všechny maximální (⊆) podmnožiny A v S mají stejnou velikost
prvkům S říkáme nezávislé množiny
maximálním nezávislým množinám (co do inkluze) říkáme báze
Poznámka: Při definici matroidu je dobré si predstavit graf. X je tu množina hran a S všechny acyklické podgrafy.
Pak podmínka dědičnosti říká, že acyklické podgrafy jsou rovněž acyklické a axiom 3′ to, že maximální kostry (co do inkluze) mají stejnou velikost.
Lemma (stejná definice):Axiomy (1,2,3) a (1,2,3′) definují stejný objekt.
Důkaz:(3)⟹(3′) sporem:
nechť platí (3) ale existuje A⊆X t. ž. pro nějaké U,V⊆S platí U,V⊆A, U,V jsou do inkluze maximální ale ∣U∣>∣V∣
díky (3)(∃u∈U∖V) t. ž. V∪{u}∈S, což je spor s maximalitou V.
Důkaz:(3′)⟹(3) sporem:
nechť U,V∈S a ∣U∣>∣V∣ a V je maximální (negace výměnného axiomu)
definujme A=U∪V⊆X; pak V je maximální ale ∣U∣>∣V∣, což je spor
Příklad:
vektorový matroid:
nechť M je matice nad tělesem F s řádky C
VM=(C,S), kde
A∈S⟺A⊆C je lineárně nezávislá v F
3’ vyplývá přímo ze Steinitzovy věty o výměně, zbytek přímo z definice
grafový matroid:
mějme graf G=(V,E)
MG=(E,S), kde
A∈S⟺A⊆E a A je acyklická
(1):∅∈S
(2): podmnožina acyklické je rovněž acyklická
(3): počítání přes to, kolik hran je v komponentách souvislosti
Fanova rovina:
za X uvážíme body Fanovy roviny a za báze trojprvkové množiny bodů neležící na jedné přímce (v rámci Fanovy roviny – kružnice uprostřed je také přímka)
Grafy a matroidy
Definice (sudá podmnožina hran): podmnožina hran E′⊆E je sudá, právě když H=(V,E′) má pouze sudé stupně.
Definice (matice incidence) grafu G=(V,E) je matice IG∈F2∣V∣×∣E∣ t.ž. (IG)v,e={10v∈ejinak
Definice (jádro matice incidence): pro matici incidence IG definujeme jádro jako
KerF2IG={x∈F2∣E∣∣IGx=0}
Definice (charakteristický vektor): mějme nosnou množinu X a podmnožinu A⊆X. Charakteristický vektor A je χA∈{0,1}∣X∣ t.ž. (χA)k={10k∈Ak∈A
(👀): řádek matice incidence IG indexovaný vrcholem w je roven χokolıˊ∣N(w)∣
(👀) (prostor cyklů): jádro matice můžeme ekvivalentně vyjádřit jako KerF2IG={x∈F2∣E∣∣x=χE′proE′sudou}
Tuto množinu rovněž nazýváme prostor cyklů.
Řádové funkce
V řeči grafů chceme pro libovolnou množinu hran (prvků podmnožin) vrátit největší acyklický podgraf (prvek matroidu).
Definice (řádová funkce): mějme systém podmnožin (X,S),S⊆2X a A⊆X. Pak řádovou funkci r:2X↦N definujeme jako velikost maximální podmnožiny patřící doS:
r(A)=max{∣X∣∣X∈2A∧X∈S}
Věta (řádová funkce matroidu):funkce r:2X↦N je řádová funkce nějakého matroidu nad X právě tehdy, když platí:
(R1): r(∅)=0
(R2): r(Y)≤r(Y∪{y})≤r(Y)+1
(R3): r(Y∪{y})=r(Y∪{z})=r(Y)⟹r(Y)=r(Y∪{y,z})
Důkaz (⇒): ukážeme přímo:
(R1): max. nezávislá podmnožina ∅ je ∅ a ∣∅∣=∅
(R2): z definice řádové funkce a dědičnosti matroidu
(R3): nechť B je max. nez. podmn. Y a B~ je max. nez. podmn. Y∪{y,z} t.ž. B⊆B~
Pokud ∣B∣=∣B~∣, pak platí R3
jinak B⊊B~, BUNO například y∈B~
B∪{y} je nezávislá a r(Y)<r(Y∪{y}) a předpoklad implikace v R3 neplatí
Důkaz (⇐): z X konstruujeme matroid s řádovou funkcí r.
Matroid definujme jako M=(X,S)t.zˇ.A∈S⟺∣A∣=r(A)
Ukážeme, že (X,S) je matroid:
∅∈S (triviálně)
pro spor předpokládejme, že dědičnost neplatí
existuje tedy A∈S,A′⊆A ale ∣A′∣>r(A′) (menší nemůže být z definice řádové funkce, jelikož je pro množinu definována jako velikost nějaké její podmnožiny)
r(A)≤r(A′)+∣A∖A′∣<∣A′∣+∣A∖A′∣=∣A∣⟹A∈SR2↯
pro spor předpokládejme, že ∃U,V∈S t.ž. ∣U∣>∣V∣ ale ∀x∈U∖V:V∪{x}∈S
přes R3 získáváme (∀x,y∈U∖V):
r(V)=r(V∪{x})=r(V∪{y})⇒r(V∪{x,y})⇒r(V∪(U∖V))=r(U∪V)≥r(U)=∣U∣R3↯
Poznámka (alternativní znění důkazu 2): díky R2 víme, že odebráním prvku z A se může r(A) buď o 1 snížit, nebo zůstat stejný. Zůstat stejný být však nemůže (z definice řádové funkce), musí se tedy o 1 snížit a v tom případě je rovněž v S.
Věta (řádová funkce a submodularita):r:2X↦N je řádová funkce matroidu ⟺
(R1′):∀Y∈X:0≤r(Y)≤∣Y∣
(R2′– monotonie):Z⊆Y⊆X⟹r(Z)≤r(Y)
(R3′– submodularita):r(Y∪Z)+r(Y∩Z)≤r(Y)+r(Z)
Důkaz (⇒ R1’ a R2’):
(R1′): mějme Y⊆X
r(Y)≥0 (funkce je definována na N)
r(Y)≤∣Y∣ (max. nezávislá množina je z definice menší než její množina)
(R2′): přímo vylývá z R2 (r(A)≤r(A∪{x}))
Důkaz (⇒ R3’):
A – maximální nezávislá množina v Y∩Z
AY – maximální nezávislá množina v Y t.ž. A⊆AY (nějaká taková existuje)
AZ – maximální nezávislá množina v Y t.ž. A⊆AZ (nějaká taková existuje)
Máme r(Y)+r(Z)=∣AY∣+∣AZ∣=∣AY∩AZ∣+∣AY∪AZ∣≥r(Y∩Z)+∣AY∪AZ∣definiceinkluze/exkluzeA⊆AY∩AZ
K důkazu tvrzení zbývá ukázat, že ∣AY∪AZ∣≥r(Y∪Z).
(👀):AY nemůže být rozšířené víče než AZ∖Y prvky na nezávislou množinu v Y∪Z
pro spor předpokládejme, že W⊆Z∖Y maximální, AY∪W je nezávislá a ∣W∣>∣AZ∖Y∣; pak ale ∣W∪A∣>∣AZ∣, což je spor s maximalitou AZ
Nyní můžeme dokončit důkaz:
r(Y∪Z)≤∣AY∣+∣AZ∖Y∣≤∣AY∪AZ∣
Důkaz (matroid ⇐ R1’, R2’, R3’): ukážeme R1,R2,R3
(R1): dokazujeme r(∅)=0
nechť pro spor r(∅)>0; pak ∣∅∣≥r(∅)>0, což je spor
(R2): dokazujeme r(Y)≤r(Y∪{y})≤r(Y)+1
mějme Y⊆X, y∈X a y∈Y (jinak platí triviálně)
první nerovnost (z monotonie): Y⊆Y∪{y}⟹r(Y)≤r(Y∪{y})
druhá nerovnost (ze submodularity): r(Y∪{y})+r(∅Y∩{y})0≤r(Y)+r({y})≤r(Y)+1
Definice (úloha kombinatorické optimalizace): je dán možinový systém (X,S) a váhová funkce w:X↦Q. Úloha kombinatorické optimalizace je najít A∈S t.ž. w(A)=v∈A∑w(v)=wTχA je maximální (χA je charakteristický vektor A, který je 1 pro v∈A a 0 jindy).
Příklad:
maximální párování v G
minimální Hamiltonovská kružnice
minimální hranový řez
Algoritmus (hladový): nechť že w1≥…≥wn a m=max{i∈X∣wi≥0}; pak:
nastav J=∅
pro i={1,…,n}
je-li J∪{i}∈S, pak i přidej do J
vrať J
(👀): algoritmus je polynomiální (pro rozumné předpoklady na reprezentaci matroidu).
(👀): pro výše uvedené příklady nemusí algoritmus vrátit optimální řešení.
Věta (hladový algoritmus na matroidech):nechť (X,S) je dědičný množinový systém a ∅∈S. Pak hladový algoritmus vyřeší správně úlohu kombinatorické optimalizace pro každou funkciw⟺(X,S) je matroid.
Důkaz (⇒): obměnou: nechť (X,S) není matroid ⟹ HA nefunguje. Zkonstruujeme w:X↦Q, na které algoritmus selže.
Jelikož (X,S) není matroid, tak neplatí 3,3′ a tedy ∃U,V∈S,∣U∣>∣V∣ a U,V jsou max. nezávislé množiny. Pak definujeme w následně (pro b,a∈Q,b>a>0):
V takovém případě hladový algoritmus najde U, ikdyž V je větší.
Důkaz (⇐): nejprve dokážeme pomocné lemma.
Lemma:mějme w1≥…≥wn, m≤n maximální t.ž. wm>0, množiny Ti⊆{0,1}i a z′ je charakteristický vektor výsledku HA (rozumíme tím, že je to 0/1 vektor podle toho, které prvky HA vybral s tím, že jsou setřízené podle w). Pak ∀i platí z′(Ti)=i∈Ti∑zi′=r(Ti)
Důkaz: Ukážeme, že HA najde v každém kroku největší nezávislou množinu z uvažovaných prvků.
Pro spor nechť ∃i t.ž. z′(Ti)<r(Ti).
Vezměme nejmenší takové i:
Platí, že z′(Ti−1)=r(Ti−1) (jelikož i je nejmenší protipříklad). Pokud HA další prvek přidá, tak je vše v pořádku a z′(Ti)=r(Ti) platí. Jinak to znamená, že z′(Ti) je co do inkluze maximální množina v Ti, což je spor s 3′.
Nyní k původnímu důkazu: označíme z∗ charakteristický vektor optima. Pak
∗ rovnost zi∗=zi∗(Ti)−zi∗(Ti−1) platí, protože zi∗(Ti) se zvýší právě tehdy, když charakteristický vektor získá novou 1 (konkrétně tu na pozici zi∗).
∗∗ tohle vypadá magicky, ale dává to smysl – z∗(Ti) v jednom cyklu smyčky přičítáme a ve druhém odčítáme, tak jsme to jen posunuli do wi−wi+1, navíc také započteme poslední část součtu, na který se nedostane. Navíc právě v tomhle kroku používáme předpoklad setřízenosti.
Jelikož navíc triviálně wTz∗≥wTz′ (je to optimum), tak věta platí.
Důsledek (grafy): poštvání HA na grafový matroid vrátí maximální (minimální pro −w) kostru. Poštvání na duál vrátí maximální množinu hran, kterou když odstraníme tak graf zůstane souvislý.
Důsledek (lineární programy): nechť (X,S) je matroid a w∈QX. Pak HA vyřeší následující lineární program maxi∈X∑wizi za podmínek z(A)≤r(A),z≥0 pro ∀A⊆X
Operace na matroidech
Součet – pro matroidy M1=(X1,S1),M2=(X2,S2),X1∩X2=∅M1+M2=(X=X1∪X2,{A∈X∣A∩X1∈S1∧A∩X2∈S2})
Příklad (součet a kontrakce v grafovém matroidu):
Sjednocení – zobecnění součtu. Definice je stejná, ale nepředpokládáme různé X1,X2.
Věta (sjednocení matroidů je matroid)):sjednocení matroidů je matroid s řádovou funkcí r(U)=T⊆Umin{∣U−T∣+r1(T∩X1)+…+rk(T∩Xk)}
Důkaz (náznak): matroidy zdisjunktníme (Xi′=Xi×{i}), sečteme a pak zobrazíme.
Mazání hran v grafu.
Mazání – pro matroid M=(X,S) a Y⊆X:
M−Y=(X−Y,{A−Y∣A∈S})
je opět matroid.
Podobné jako mazání, ale chová se dost jinak (viz kontrakce/mazání hran v grafu). Např. na mostech grafu se ale chová stejně.
Kontrakce – nechť M=(X,S) je matroid, A⊆X a J∈S je max. nezávislá množina v A. Pak
M∖A=(X−A,{Z⊆X∣Z∪J∈S})
Věta (kontrakce matroidu je matroid):nechť M=(X,S) je matroid a A⊆X. Pak M∖A je matroid s řádovou funkcí
r′(Z)=r(Z∪A)−r(A)
Důkaz: nechť J je max. nz. mn v A (viz definice kontrakce); ověříme axiomy
∅∈S⟺∅∪J=J∈S, platí
mějme Y∈S′ a Y′⊆Y. Z definice víme Y∈S′⟹Y∪J∈S. Díky tomu, že Y′∪J⊆Y∪J∈S, tak rovněž Y′∪J∈S (definice matroidu) a tedy Y′∈S′
nechť Z⊆X∖A, B⊆Z je max. nez. mn. v M∖A a J max. nez. mn. v A
B∪J je max. nezávislá podmnožina Z∪A v M a tedy ∣B∣+∣J∣∣B∣r′(Z)=r(Z∪A)=r(Z∪A)−∣J∣=urcˇenyˊ jednoznacˇneˇr(Z∪A)−r(A)
Partition matroid – nechť X1,…,Xn jsou disjunktní množiny a Si={A⊆Xi∣∣A∣≤1}. Pak ∑i(Xi,Si) je partiční matroid.
Věta (Edmondsova MiniMaxová o průniku matroidů):nechť M1=(X,S1) a M2=(X1,S2) jsou matroidy. Pak
max{∣Y∣∣Y∈S1∩S2}=A⊆Xminr1(A)+r2(X∖A)
Důkaz (≤): Nechť J∈S1∩S2. Pak ∀A⊆XJ∩AJ∩(X∖A)∈S1⟹∣J∩A∣≤r1(A)∈S2⟹∣J∩(X∖A)∣≤r2(X∖A)
A tedy
∣J∣=∣J∩A∣+∣J∩(X∖A)∣≤r1(A)+r2(X∖A)
Důkaz (≥): TODO, tenhle důkaz je naprosto brutální
Důsledek (obraz matroidu je matroid): mějme matroid M′=(X′,S′) a funkci f:X′⟹X. Definujme S={f[I]∣I∈S′}
Potom (X,S) je také matroid a navíc pro U⊆T platí r(U)=T⊆Umin{∣U−T∣+r′(f−1(T))}
Poznámka: tvrzení by platilo triviálně, pokud by se jednalo o prostou funkci (tedy pouze přejmenování prvků matriodu). Zajímavé je to, že některé prvky se mohou zobrazit na jiné a nezávislé množiny se tak zmenší, ale matroidnost se zachová.
Dualita matroidu
Duální matroid grafového matroidu je matroid množin hran, které když odebereme tak graf zůstane spojitý.
Definice (duální matroid): nechť M=(X,S) je matroid. Definujeme duální matroid jako M∗=(X,S∗) t.ž. B∗ je báze M∗⟺(X−B∗) je báze M (s tím, že S∗ jsou všechny podmnožiny bází).
(👀): nechť M je matroid, M∗ jeho duál a A⊆X. Pak r(X)=r(X∖A)⟺A∈S∗
Důkaz:A můžeme rozšířit na bázi B∗ duálu, přičemž bude stále platit r(X−B∗)=r(X), protože X−B∗ je báze M. Tohle můžeme dělat ikdyž jsme další větu ještě nedokázali, jelikož pro M∗ platí axiomy 1 a 2 matroidu, jelikož jsme ho definovali jako báze.
Věta (duální matroid je matroid):nechť M je matroid. Pak M∗ je také matroid a navíc platí r∗(A)=∣A∣−r(X)+r(X−A)
Důkaz: stačí dokázat 3′ (pro dané A mají všechny nezávislé množiny stejnou velikost), jelikož 1 a 2 platí triviálně z toho, že jsme definovali pouze báze. Uvažme libovolné A a následující obrázek
Nechť B je báze M t.ž. Z⊆B a B⊆X−J (existuje, protože r(X)=r(X−J))
Jestli existuje x∈(A−J)−B, pak r(X−(J∪{x}))=r(X) a J∪{x}∈S∗ a J není maximální, díky čemuž J=A−B. Rovněž platí Z=B−A (jinak můžeme rozšířit, což je spor) a tedy r∗(A)=∣J∣=∣A−B∣=∣A∣−∣B∩A∣=∣A∣−∣B∩(B−Z)∣=∣A∣−∣B∣+∣Z∣=∣A∣−r(X)+r(X−A)
Poznámka: Matroid může být duální sám sobě (v tom smyslu, že M1 a M2 jsou izomorfní).
Definice (Cobáze, conezávislost): nechť M je matroid a M∗ jeho duální matroid. Pak Y⊆X je
cobáze, pokud je báze v M∗
conezávislá, pokud je nezávislá v M∗
V grafu jsou to kružnice.
Definice (kružnice): nechť M je matroid. Pak Y⊆X je kružnice, je-li minimální (⊆) závislá množina.
Věta:Y⊆X je cokružnice (kružnice v duálu) ⟺Y je min (⊆) protínající každou bázi.
Důkaz (⇒): sporem nechť Y⊆X je cokružnice ale ∃B báze M t.ž. Y∩B=∅. Pak Y⊆X−B ale z definice je X−B báze M∗, což je spor se závislostí Y v M∗. Navíc kružnice je do inkluze minimální, takže minimalitu splňujeme taky.
Důkaz (⇐): opět sporem nechť Y je minimální množina (do inkluze) protínající každou bázi, ale není cokružnice. Rozebereme případy toho, co může být (chceme, aby byla minimálně nezávislá):
Y je nezávislá v M∗ (a tedy r(X)=r(X−Y))
pak existuje báze B⊆X−Y v M, což je spor s tím, že protíná každou bázi
Y není minimálně nezávislá (tedy ∃y∈Y t.ž. Y∖{y} je závislá v M∗):
(Y∖{y})∈S∗
r(X)>r(X−(Y∖{y}))
Y∖{y} protíná každou bázi, což je spor s minimalitou
Důsledek: nechť G graf souvislý. Pak cokružnice MG jsou přesně minimální hranové řezy.
Perfektní párování
Poznámka: o tomto tématu jsem vytvořil YouTube video, které algoritmus shrnuje.
Definice (párování): nechť G=(V,E) graf. Pak M⊆E je párovaní ⟺∀e=e′∈M platí e∩e′=∅.
Definice (největší párování) pokud ∣M∣ je maximální.
(👀): je rozdíl mezi maximálním párováním (počítá se do inkluze) a největším (počítá se do velikosti), jelikož si hrany můžeme hladově vybrat špatně (viz lichá cesta).
Definice (perfektní párování): pokud ∣M∣=∣V∣/2
Definice (pokrytí): vrchol je M-pokrytý, pokud je v nějaké hraně z párování.
Definice (defekt)def(M) je počet M-nepokrytých vrcholů
Definice (alternující cesta): podgraf, který je cesta
je zlepšující, pokud má krajní vrcholy M-nepokryté
Věta:graf G=(V,E), M párování. Pak M je největší ⟺G nemá zlepšující cestu.
Důkaz:
⇐ pokud má zlepšující cestu, tak párování můžeme zlepšit a není tedy maximální
⇒ pokud G není maximální tak existuje párování M′ t. ž. M′>∣M∣
uvažme graf MΔM′ – stupně mají vrcholy nejvýše dva, komponenty jsou tedy buď alternující cykly nebo cesty – díky tomu, že nám jedna hrana přebývá, tak alespoň jedna komponenta je cesta
(👀):G=(V,E),A⊆V. Pak v libovolném párování M musí být liché komponenty G−A pokryté pouze z A (i v nejlepším zpárování v nich zbyde alespoň jeden volný vrchol) a tedy
def(M)≥lc(G−A)−∣A∣
Kde lc značí počet lichých komponent grafu.
(👀):G=(V,E). Pak paˊrovaˊnıˊMmax∣M∣=paˊrovaˊnıˊMmin21(∣V∣−def(M))≤A⊆Vmin21(∣V∣−lc(G−A)+∣A∣)
kde první nerovnost plyne z úvahy, že největší párování minimalizuje defekt a druhá z dosazení pozorování výše.
Věta (Tutte-Berge):Pro výše uvedené pozorování platí rovnost.
Důkaz: stačí najít párování M t.ž. platí rovnost.
Najdeme algoritmem (Edmonds), který najde maximální párování
postupně zvětšujeme párovaní M:
M perfektní ⟹ je maximální a věta platí (A=∅)
M má M-nepokrytý vrchol r: budujeme alternující strom T tím, že sřídavě přidáváme hrany:
B-vrcholy: vrcholy v sudé vzdálenosti od r
A-vrcholy: vrcholy v liché vzdálenosti od r
zastavíme se, když:
existuje w∈T,{v,w}∈E a w je nepokrytý – pak jsme našli alternující cestu
neexistuje w
pokud je graf bipartitní, tak nemáme žádné B−B hrany a všechny zbývající hrany z B-vrcholů vedou do A-vrcholů – poté když uvážíme G−A, tak liché komponenty vedou pouze do A vrcholů ale B je o jedna více (máme r), tedy ∣B∣=∣A∣+1 a G nemá perfektní párování a našli jsme defektní vrchol
Pro bipartitní grafy můžeme algoritmus výše opakovat (opakovaně stavíme stromy z vrcholů, které nejsou v párování), najít všechny defektní vrcholy a věta výše platí (máme množinu defektních vrcholů a párování splňující rovnost).
Pro nebipartitní grafy může existovat hrana mezi B−B vrcholy (lichá kružnice).
(👀): nechť C lichá kružnice v G, G′ vznikne kontrakcí C do jednoho (pseudo)vrcholu a M′ je párování v G′. Potom existuje párování M v G, že počet M′-nepokrytých vrcholů je stejný jako počet M-nepokrytých.
Podgrafy G reprezentované pseudovycholy mají lichý počet vrcholů (chceme opět dostat M a A, abychom větu dokázali). To platí, protože pseudovrcholy vznikly kontrakcí liché kružnice na vrchol a tedy přišly o sudý počet vrcholů.
Postup pro B−B hrany je tedy ten, že zkontrahujeme C, vyřešíme párování a odkontrahujeme.
A může být i prázdné (eliminuje grafy s lichým počtem vrcholů).
Důsledek (Tutte):G má perfektní párování právě tehdy, když ∀A⊆V:lc(G−A)≤∣A∣
Důkaz: vychází přímo z Tutte-Berge dosazením ∣M∣=∣V∣/2 (jedná se o perfektní párování).
Věta (Edmonds-Gallai dekompozice):G graf, G=(V,E), B⊆V vrcholů nepokrytých nějakým maximálním párovaním. Nechť A⊆V−B sousedé vrcholů z B, C=V−(B∪A). Pak
každá komponenta G−(A∪C) je kritická (∀v∈K:K−{v} má perfektní párování)
G kritický ⟺G lze zkonstruovat z liché kružnice lepením lichých uší
každé maximální párování M splňuje:
e∈M,e∩A=∅⟹∣e∩A∣=1 a e vede do B
tohle nezamezuje, že by dvě hrany z A nevedly do jedné z B
do každé komponenty B vede ≤1 hrana M
Důkaz: Uvažme poslední alternující les v Edmondsově algoritmu.
Každá hrana s koncem v A vede do B (s tím, že vrcholy v B jsou (pseudo)vrcholy vzniklé operací kontrakce. Defekt def(M) je počet komponent v tomto lese.
Nepokryté vrcholy žádným maximálním párováním:
ne v A, jelikož všechny musí být pokryté každým maximálním párováním
ne mimo A∪B, protože tam je perfektní párování
Takové vrcholy tedy mohou být pouze v B, čímž jsme dokázali (1).
Část (2) rovněž plyne z Edmondsova algoritmu.
Generující funkce magic
Nechť G=(V,E) rovinný, w:E↦Q váhová funkce
maximální perfektní párování – najdi M perfektní párování t.ž. w(E) je maximální
polynomiální (pro všechny grafy)
maximální hranový řez – najdi E′ hranový řez t.ž. w(E′) je maximální
obecně je NP-těžný, pro grafy na 2D plochách polynomiální
Definice (determinant): nechť A je reálná matice. Pak determinant je Det(A)=π∑(−1)sign(π)i=1∏nAi,π(i)transverzaˊla
polynomiální, jde řešit přes Gaussovu eliminaci
Definice (permanent): nechť A je reálná matice. Pak permanent je Per(A)=π∑i=1∏nAi,π(i)
#P-complete (alespoň tak těžký jako NP-úplný), neumíme nic lepšího
Příklad:G=(V1,V2,E) bipartitní graf, A∣V1∣×∣V2∣0/1 matice podle toho, jaké obsahuje hrany. Pak Per(A) je počet perfektních párování G.
Věta:G rovinný. Pak φ(G)≡E(G∗)≡P(GΔ∗)
kde symbolem ≡ rozumíme vzhledem k vypočítatelnosti a GΔ následující operaci:
Rovněž předpokládáme w(e)∈Z,∣w(e)∣≤∣V(G)∣c pro c konstantu.
Věta (Kasteleyn):Když G rovinný, pak P(G,x,w) lze spočítat v polynomiálním čase.
Důsledek:
umíme spočítat jak maximální párování, tak jejich počet (a počet všech ostatních párování s danými vahami)
max. řez, max. perf. párování jsou pro rovinné grafy polynomiální
Důkaz (naznačení): pro D orientaci G, M0 fixní perfektní párování definujeme „determinantní verzi“ P následně: P(G,D,M0,x,w)=Pperf. paˊr.∑sign(D,M0,P)xw(P)
kde sign(D,M0,P)=(−1)#D-sudyˊch cyklu˚M0ΔP
D-sudý je, když v D má sudý počet hran orientovaných jedním směrem; nezáleží na tom, jakou stranou jdeme, jelikož symetrická diference perfektních párování tvoří jen sudé cykly
Postup důkazu:
P(G,D,M0,x,w) lze pro obecné grafy spočítat variantou Gaussovské eliminace (Pfaffaon)
Existuje orientace DK, že všechna znaménka sign(DK,M0,P) jsou stejná, tedy P(G,DK,M0,∗,w)=±P(G,x,w)
Tuhle DK lze zkonstruovat v polynomiálním čase.
Připomenutí: pro další plochy je to trochu komplikovanější, ale jde to dělat podobně.
Pošťáci a cestující
Definice:G=(V,E) graf silniční sítě, l:E↦Q+ váhová funkce:
problém čínského pošťáka: najdi trasu minimální délky, která projde všechny hrany a vrátí se do výchozího vrcholu (eulerovský tah)
polynomiální
problém obchodního cestujícího: najdi trasu minimální délky, která projde všechny vrcholy a vrátí se do výchozího vrcholu (hamiltonovskou kružnici)
NP-úplný
Problém (čínského pošťáka):
G=(V,E) má všechny stupně sudé⟹ řešení je uzavřený eulerovský tah
(👀): když H=(W,F) má všechny stupně sudé a F=∅ je neprázdná, pak F má cyklus; odstraněním cyklu má opět všechny stupně sudé; opakováním dostaneme disjunktní sjednocení cyklů, což jde do eulerovského tahu udělat trivialně
nechť T={v∣degG(v)lichyˊ}
(👀):∣T∣ je sudé (součet stupňů je sudý)
Je to taková množina vrcholů a hran, na kterou když se omezíme, tak všechny stupně vrcholů v T jsou liché a ostatní jsou sudé.
Definice (T-join):E′⊆E je T-join (pro množinu vrcholů T), pokud GT=(V,E′) platí (∀v∈V)(degGT(v)lichyˊ⟺v∈T)
Věta:nechť E′⊆E je množina hran min. trasy čínského pošťáka, které se projdou více než jednou. Pak se projdou právě 2-krát a E′ je min. T-join (kde T je výše definovaná množina).
Důkaz:(👀): nechť G′ vznikne z G dodáním násobných hran, násobnost je podle počtu procházení minimální trasou P. Potom G′ má všechny stupně sudé.
F=E(G′)−E(G) jsou dodané hrany
F nemá násobné hrany, protože pak bychom je mohli (po dvou) vynechat
Z pozorování plyne (1), jelikož F spolu s původními hranami dává 2 průchody.
Navíc jelikož E(G′)=E(G)∪F je T-join, jelikož přesné splňuje definici (stupně budou liché v G′, protože musí být sudé po přidaní do G). Navíc E(G)∪F rozhodně nebude lepší než minimální cesta čínského pošťáka a tedy naše F.
Algoritmus (čínský pošťák):
najdi minimální T-join
použij konstrukci (modifikovanou) Fischera z minulé přednášky (G↦GΔ), o čemž víme, že je polynomiální
(alternativně) uvažme pomocný graf H=(T,(2T)) a váha w:(2T)↦Q+, kde w({u,v})= délka nejkratší cesty mezi u,v v G
nechť M je min. perfektní párování v H
nechť F=⋃e∈MPe, kde Pe je nejkratší cesta v G spojující vrcholy e
přidej zbylé hrany
profit?
Problém (obchodního cestujícího): předpokládáme
G=Kn (pro neexistující hrany nastavíme váhu na nekonečno)