Professional Documents
Culture Documents
The Hopcroft-Tarjan Planarity Algorithm Prevod
The Hopcroft-Tarjan Planarity Algorithm Prevod
CITATIONS READS
0 2,516
1 autor:
William Kocay
Univerzitet u Manitobi
POGLEDAJTE PROFIL
Sav sadržaj koji prati ovu stranicu postavio je William Kocay dana 20. oktobra 2014.
Oktobar, 1993
Sažetak
Ovo je ekspozitorni članak o Hopcroft-Tarjan planarnom algoritmu.
Prikazana je grafsko-teorijska analiza verzije algoritma.
Daje se eksplicitna formula za određivanje koji vrh staviti prvi na listu
susjedstva bilo kojeg vrha. Namjera je da se Hopcroft-Tarjan algoritam učini
dostupnijim i intuitivnijim nego što je trenutno.
1. Uvod
1
Machine Translated by Google
DFS(u: vertex)
{ proširiti DF-pretragu u grafu G od vrha u } započeti
2
Machine Translated by Google
za svaki v u počinje
{ inicijalno, svi D(v) su postavljeni na
0 } ako je D(v) = 0 onda počinje a(v) :=
u
DFS(v)
kraj kraj
kraj { DFS }
1 1
2 8 2
10 3
12 4
3 7 9 5
12
6
11
7
4
6 11 8
5 9 10
Za bilo koji vrh u, napišite S(u) za skup svih potomaka od u, to jest, sve
vrhove v takve da se u javlja na putu od v do korijena. Neka je S (u) = {u}
S(u). Neka je T(u) = {w A(v) | v S (u)}. Riječima, T(u) se sastoji od svih
vrhova susjednih u ili bilo kojeg potomka u. Ako je a(v) = u, grana na u koja sadrži
v je Bu(v) = {wx | w S (v)}, odnosno skup svih ivica incidentnih na v ili bilo
koji potomak v. Ivica uv Bu(v) naziva se stablo grane. U ovom trenutku je
zgodno pratiti [13] ili [9] i prenumerisati vrhove tako da je D(u) = u, odnosno da
se na vrhove pozivamo direktno po njihovom DF-broju. Zatim definiramo L1(u) =
min T(u)
3
Machine Translated by Google
2. Redosled ivica
Graf G je pohranjen po listama susjedstva, naime Adj[u] je povezana lista koja sadrži
sve vrhove susjedne u. Dakle, Adj[u] je uređena lista susjednih vrhova. Ako je v
A(u), onda čvor u Adj[u] koji odgovara v predstavlja rub uv E(G).
Hopcroft i Tarjan dodjeljuju težinu svakoj ivici. Težina se pohranjuje kao polje u
svakom čvoru povezane liste. wtu[v] označava težinu ivice uv u Adj[u]. Može se
definirati na sljedeći način. Pretpostavimo da je v A(u). wtu[v] izračunava DFS(u),
dodavanjem nekoliko naredbi.
Pretraživanje niže tačke u dubinu izračunava D(u), a(u), L1(u), L2(u) i wtu[v], za
sve u V (G) i sve v A(u ). Nazovite ovaj prvi DFS LowPtDFS. Slijedeći ga, težine
rubova su u rasponu 1..2n + 1. Rubovi se zatim sortiraju bucket sortiranjem, a liste
susjedstva Adj[u] se rekonstruišu po rastućem wtu[v]. U Hopcroft-Tarjan algoritmu
druga pretraga u dubinu se tada naziva PathFinder. Koristi preuređene liste
susjedstva za rekurzivno generiranje putanja u grafu i dodaje staze jednu po jednu
da bi izgradio planarno ugrađivanje G. Algoritam je zasnovan na putanjama.
4
Machine Translated by Google
Bu(v)
v
u Bu(w)
w
s
x
t
Bu(x)
5
Machine Translated by Google
biti drugi listovi unutar grane između u i a. Stoga ne možemo znati dok posjećujemo
u da li bi bilo moguće ugraditi list ua nakon što je Bu[v] ugrađen. Stoga se list mora
ugraditi prije grane. Zbog toga je listovima data težina 2a, a težina stabljike 2a + 1.
Grana poput Bu(w) ima L2(w) = u. Stoga, nakon što je grana ugrađena, i dalje će
biti moguće ugraditi list ub, gdje je b = L1(w) unutar grane. Redoslijed ugradnje
listova i grana još uvijek nije određen. Stoga im se daje jednaka težina 2b. Dakle,
grane su poredane prema L1-vrijednosti vrha stabljike.
2.1 Definicija. Grana Bu(v), gdje je u = a(v), sa L2(v) = u naziva se granom tipa I. Ako je
L2(v) < u naziva se grana tipa II.
Dakle, na vrhu u, redosled Adj[u] definisanog težinama postavlja listove i grane
tipa I ispred grana tipa II sa istom L1- vrednošću. List se ponaša kao grana tipa I.
Definicija wt dodjeljuje wtu[v] = 2n + 1 za neke rubove uv. To su ili listovi prema dolje,
odnosno listovi gdje je v > u, ili ivice stabala sa a(u) = v. One su ugrađene iz njihove
druge krajnje tačke, pa se mogu zanemariti dok posjećujete u. Tako im se daje težina
koja ih stavlja iza svih ostalih listova i grana.
3. Tačke grananja T
Neka je T DF-stablo koje je konstruirao DFS. DFS počinje u korijenu T. Spušta se niz
stablo rekurzivnim pozivanjem sebe. Dok posjećujete čvor u, DFS(v) se može pozvati
rekurzivno za nekoliko v Adj[u].
3.1 Definicija. Vrh u je tačka grananja T, ako T ima granu Bu(v) gde v Adj[u] nije
prvi vrh Adj[u]. Koren T je takođe tačka grananja. S obzirom na bilo koje v u T,
definiramo b(v), tačku grananja v kako slijedi.
b(v) = nb(u),
u ako jeinače.
v prvi čvor Adj[u];
Dakle, tačke grananja datog DF-stabla T zavise od toga koji je čvor prvi na listama
susjedstva. Budući da je niz u1 = a(v), u2 = a(u1), . . . na kraju dostigne korijen, b(v) je
jedinstveno definiran i uvijek je tačka grananja T. Lako se izračunava pomoću DFS-a
koji je pokrenut iz korijena T.
6
Machine Translated by Google
DFS(u: vrh)
{ DFS za izračunavanje tačaka grananja postojećeg DF-stabla
T } { b(u) je već poznato } početi
DFS(v)
kraj
Prvi put := false
end end { DFS }
7
Machine Translated by Google
EmbedBranch(u: vertex)
počinje
{ NonPlanar je globalna zastava }
za svaki v Adj[u] do begin
NonPlanar := true { pretpostavimo da će G biti neplanarno } ako
je a(v) = u onda počinje { uv je ivica drveta }
ako je b(v) = u onda
započni { uv počinje novu granu na
u } ako je L1(v) premali da bi dozvolio ugrađivanje, onda
izađi postavi Bu(v) na LF ili RF kraj
EmbedBranch(v)
ako je NonPlanar onda
Exit end else if v < u onda
počinje { uv is a frond }
EmbedFrond(u, v)
ako je EmbedFrond neuspješan onda Exit
end end
8
Machine Translated by Google
1 1
2
2
3
7
7 4
3
6
5
5 4
6
Slika 3, Primjer 1
Primjer 1 pokazuje dva pokušaja ugradnje istog grafa. Stablo T je isto u oba
pokušaja, ali se redoslijed grana razlikuje. U primeru sa leve strane, liste
susednosti su poredane striktno prema izračunatim težinama. Na desnoj strani
redoslijed je malo izmijenjen. Grane i listovi su u svakom slučaju isti. Na vrhu 3,
B3(4) je grana tipa I sa wt3[4] = 2. Postoji list (3,1) sa wt3[1] = 2. U lijevom
primjeru, list je prvo ugrađen, a zatim grana, čime se grana tjera unutar lista na
lijevoj strani T.
Na lijevoj strani, prvo se uzima list, zatim B5(6), zatim B5(7); na desnoj strani se
prvo uzima B5(6), zatim list, zatim B5(7). Ono što treba primijetiti je da je u
primjeru lijevo nemoguće ugraditi B5(7) bez prisilnog prelaska ivice (6,3). Dakle,
redoslijed Adj[u] po težinama mora biti prilagođen da bi se ovaj graf uspješno
ugradio.
9
Machine Translated by Google
1 1
2 2
3 3
7 6
5 5
4 4
6 7
Slika 4, Primjer 2
Ono što treba primijetiti je da na vrhu 15, da je grana B15(16) bila ugrađena prije
lista, tada bi bilo nemoguće ugraditi manje grane pri vraćanju uz stablo bez
uvođenja ukrštanja.
Dakle, list mora biti prvi.
10
Machine Translated by Google
5 3
16 19
15 14 11 9
18
4
17
10
Slika 5, Primjer 3
Primjer 4 pokazuje vrlo sličan graf koji je uspješno ugrađen u ravan. Kao
u primjeru 3 postoje dvije grane na vrhu 3, od kojih se prva uzima grana tipa
I. Na vrhu 9 opet postoje dvije grane i prva se uzima grana tipa I. Na vrhu 15
nalazi se list (15,1) i grana tipa II B15(16). Ovaj put se prvo uzima grana, a
manje grane se zatim uspješno ugrađuju kada se vraćaju na stablo.
Grana se mora ugraditi prije lista. Ako se prvi uzme lišće (15,1) ne bi bilo
moguće ugraditi manje grane bez uvođenja križanja.
19 5 3
17
16 15 11 9
14 18
4
10
Slika 6, Primjer 4
11
Machine Translated by Google
4.1 Definicija. Neka je T DF-stablo u grafu G. Definiramo dvije cjelobrojne funkcije N(v)
i N0(v) za svaki v V (G) kako slijedi.
1) Ako je v korijen od T onda je N(v) = N0(v) = 0.
Inače neka je u = a(v).
2) Ako je Bu(v) grana tipa I onda je N(v) = N0(v) = 0.
3) Ako je Bu(v) grana tipa II, odaberite jedinstveni vrh x takav da
a(x) = L2(v). Tada je L2(v) < x u < v.
3.1) Ako je b(v) = 1 onda je N(v) = 0.
Ako je L2(v) < b(v) onda je N(v) = 1.
Inače L2(v) b(v) 6= 1. Definirati
Slično, N(4) = 0. L2(5) = 2 < b(5) = 3, pa je N(5) = 1. L2(6) = 2 < b(6) = 3, pa je N(6) = 1.
L2(7) = 5 b(7) = 3, pa je N(5) = 1+N(6) = 2, pošto je a(6) = 5. Nastavljajući na ovaj
način, imamo N(8) = 2, N(9) = 3, N(10) = 0, N(11) = N(12) = N(13) = N(14) = 1, N(15) =
N(16) = 2 Vidimo da N(v) broji broj koraka potrebnih da se dođe do temena manjeg
od b(v).
Ako je L2(v) < b(v), onda je dovoljan jedan korak, to jest, L2-lišće u Bu(v) spaja se na
vrh < b(v); stoga je N(v) = 1. Ako je Bu(v) grana tipa I onda nije moguće doći do temena
manjeg od b(v) preko L2 funkcije; dakle N(v) = 0 u ovom slučaju. Inače Bu(v) je grana
tipa II sa L2(v) b(v); na primjer na slici 6, L2(7) = 5 > b(7) = 3. U ovom slučaju,
12
Machine Translated by Google
Neka v biti prvi vrh Adj[u], i neka je W najmanji neparni broj wtu[v ]. Neka
je A (u) = {v Adj[u] | wtu[v] W}. A (u) predstavlja sve grane tipa I i tipa II na u
sa L1-vrijednošću = bW/2c (i eventualno listom na u do temena bW/2c). Sada
izračunavamo N0(v) za svaki v A (u) i prilagođavamo redosled Adj[u] prema
sledećem pravilu.
4.2 Pravilo.
1) Ako postoji av A (u) takav da je Bu(v) grana tipa II za koju je N0(v) paran, tada
se v pomiče u glavu Adj[u]. (Ako postoji više od jednog takvog v, samo jedan od
njih se pomiče.)
2) U suprotnom, ako postoji av A (u) takav da je Bu(v) grana tipa I, tada se v
pomjera u glavu Adj[u]. (Ako postoji više od jednog takvog v, samo jedan od njih
se pomiče.)
3) U suprotnom Adj[u] je nepromijenjen.
13
Machine Translated by Google
za vrhove w.
GranaPtDFS(u: vrh)
{ DFS za izračunavanje b(v) i N(v), za sve v Adj[u], i za } { reorder
Adj[u]. Nakon unosa b(w) i N(w) su poznati, } { gdje je w u ili bilo koji
predak u } počinje v := prvi vrh Adj[u]
W := wtu[v]
ako je W paran onda W := W + 1
vI := 0; vII := 0 { markeri za grane tipa I i II } za svaki v Adj[u]
tako da wtu[v] W počinje ako a(v) = u onda počinje { uv je ivica
drveta }
N(v) := 0 { pretpostavimo da će N(v) biti 0 }
ako je wtu[v] paran onda vI := v { Bu(v) je tip I grana } inače počinje
{ Bu(v) je tip II grana } ako je L2(v) < b(u) onda N(v) := 1 inače ako je
b(u) 6= 1 onda počinje x := Stem[L2(v)] ako je N(x) 6= 0 onda N(v)
= N(x) + 1 inače ako je u L1(v) onda N(v) := 2 drugo N(v) = N(u)
kraj
ako je N(v) paran onda početak vII := v; idi na 1; end
end end { if a(v) = u } end { for } 1: ako je vII 6= 0 onda
stavite vII na čelo Adj[u]
FirstTime := false
end end { BranchPtDFS }
14
Machine Translated by Google
U ovom trenutku jedan od vI ili VII se može pomeriti u glavu Adj[u]. Pošto
je N(v) = N0(v) kada je v prvi čvor u Adj[u], N(v) ima tačnu vrijednost za prvi
vrh na listi. Takođe postavlja b(v) = b(u) za prvi čvor na listi, ako je uv ivica
stabla. Svi preostali rubovi stabla uv imaju b(v) = u, i N(v) = 0 ili 1, u zavisnosti
od toga da pripadaju granama tipa I ili II, respektivno. Ovo su vrijednosti koje
algoritam dodjeljuje. Iz toga slijedi da su b(v) i N(v) ispravno izračunati za svaki
v Adj[u] gdje je uv ivica stabla. Zatim rekurzivno poziva BranchPtDFS. Stoga
je lema tačna za svaki čvor posjećen na k nivou rekurzije. Po indukciji to važi
th
za sve nivoe.
15
Machine Translated by Google
treba postaviti ili u LF ili RF. Hopcroft i Tarjan koriste ove povezane liste
kao hrpe i odbacuju listove koji više ne mogu imati efekta na preostali
dio algoritma. Ali korisno je zadržati cijelu povezanu listu. Neka je LF =
(f1, f2, f3, . . .) i RF = (g1, g2, g3, . . .). Listovi su poredani prema njihovoj
manjoj krajnjoj tački, naime, ako je fi = aibi gdje je ai < bi i slično za RF.
Kao što, tada
ćemo a1vidjeti,
a2 nizovi
a3 . .LF
., i određuju
RF konstruirani algoritmom
kombinatorno u potpunosti
ugrađivanje G
u ravan. Stoga, kada kažemo da algoritam ugrađuje G u ravan, mislimo
da konstruiše liste LF i RF.
5.1 Definicija. Ako su xy i wz dva lista takva da je x < w < y < z onda ne mogu oba
biti na istoj strani C. Zovu se konfliktni listovi. Frond graf G i T označen je F G.
Njegovi vrhovi su listovi G. Dva lista su susjedna ako se sukobljavaju.
Dokaz. V (FG) se može podijeliti na one listove unutar C i one izvan C. Pošto je G
ravan, nema konfliktnih listova ni unutar C ni oba izvan C. Stoga je FG bipartitan.
16
Machine Translated by Google
Ako se Fi sastoji od jednog lista, onda će Ri biti prazan, tako da xi i yi nisu uvijek
definirani. U ovom slučaju uzimamo xi = n i yi = 0. Na ovaj način će većina
nejednakosti biti zadovoljena čak i kada je Ri = Ø. Svaki Fi će imati Li 6= Ø. U
smislu DF-numeracije prvi list je f1 = (1, n).
Neka je u vrh T koji posjećuje EmbedBranch kada je list xi u
nailazi se na uw, gdje je w < u. Bilo koja komponenta Fi takva da ui ne ,
može utjecati na preostalo izvođenje algoritma, budući da nijedan preostali list
ne može biti u sukobu s bilo kojim listom Fi . Stoga algoritam ne mora poznavati
sve komponente FG, samo one za koje je u > ui ili u > xi . Neka F0, F1, . . ., Fm
označavaju sve takve komponente, redom
1. Možemo kojim su konstruirane,
pretpostaviti da je u vi gdje je m i, i u
za svako
yi za svako i za koje je Ri 6= Ø, jer su listovi ugrađen dok se penje T.
17
Machine Translated by Google
tada a xj < yj b.
Dokaz. Graf listova je dinamička struktura, koja se mijenja kako su listovi Fm se
Po pretpostavci F1, . . ., što je ui < u vi ilisastoji
xi < uod onih komponenti
yi , gdje za trenutno
je u vrh koji ugrađivanje.
posjećuje EmbedBranch. Wlog, neka uj < u.
xm
rw
rw
um xm um
rw
lw
lw
u u u
um
xm
vm
ym
ym
ym vm
vm
18
Machine Translated by Google
3. u > um i u xm.
U ovom slučaju u > `w um i xm u > rw. `w pripada lišću
of Fm. rw pripada listu Fi , gdje je i < m. Prema lemi 5.3, rw
`w.
Postoji nekoliko mogućih situacija koje se mogu pojaviti za vrh w.
4. w `w i w rw.
Ovo se može dogoditi u slučajevima 1, 2 ili 3 iznad. uw nije u sukobu sa
bilo koji list LF ili RF. uw je ugrađen na lijevoj strani. Ubacuje se
LR odmah nakon f`. Kreirana je nova komponenta Fm+1 FG
sa um+1 = w i vm+1 = u. Rm+1 = Ø. Vrijednosti m i ` su
povećana za 1.
5. w `w i w < rw.
Ovo se može dogoditi samo u slučajevima 1 i 2 iznad, budući da je `w < rw. uw
sukobljava se sa listom Rm, ali ne i Lm. uw je ugrađen na
lijevo. Dodaje se u Lm i ubacuje u LF odmah nakon f`. ` je
povećano za 1. Ako se primjenjuje slučaj 2, onda uw može biti u sukobu s listom
Fm 1. Postavite um na w i izvršite sljedeće korake:
dok w < xm 1 vrši spajanje(Fm 1, Fm)
Merge(Fm 1, Fm) je procedura koja ažurira vrijednosti um, vm, xm
i ym pohranjeni u strukturama podataka, kako slijedi.
6. w < `w i w rw.
Ovo se može dogoditi samo u slučajevima 1 i 3 iznad, budući da je rw < `w. uw
sukobljava se sa listom Lm, ali ne i sa Rm. uw je ugrađen na
u pravu. Dodaje se u Rm, i ubacuje u RF odmah iza gr. r
se povećava za 1. Ako se primjenjuje slučaj 3, onda uw može biti u sukobu s listom
od Fm 1. Postavite xm na w i izvršite sljedeće korake:
dok w < um 1 vrši spajanje(Fm 1, Fm)
7. w < `w i w < rw.
Ovo se može dogoditi u slučajevima 1, 2 ili 3 iznad. uw sukobi sa listom
LF i RF. Ako je slučaj 1 primjenjiv, onda je G neplanaran, budući da je uw konflikt
sa listovima f` i gr od Fm, stvarajući tako neparan ciklus u Fm.
Izvršite sljedeće korake:
19
Machine Translated by Google
end { SwitchSides }
20
Machine Translated by Google
Ako se primjenjuje slučaj 3, dokaz je vrlo sličan, osim što se desno i lijevo
zamjenjuju. Stoga možemo zaključiti da ako je G ravan, na kraju će sve
komponente Fi koje su u sukobu sa uw u jednom od Li ili Ri biti poravnate
tako da se uw može ugraditi. Slijedi teorema.
21
Machine Translated by Google
Ako nije moguće ugraditi list uw onda neće biti moguće ugraditi ni Bu(v). Ovo se
može testirati pomoću EmbedFrond(u, w). Ako se uw može ugraditi, recimo na LF,
onda listovi xy od Bu(v) za koje y < u također moraju biti ugrađeni u LF. Oni za koje
x, y u mogu biti ugrađeni u LF ili RF. Postoji vrlo jednostavan uređaj koji se može
koristiti da se to postigne. Pretpostavimo da Bu(v) treba da bude ugrađen u LF.
Ugradite list uw u LF, gdje je w = L1(v). Označite uw kao “lažni list”. Ugradite
“marker grane” uu u RF. Označite to i kao "netačno". Stavite uw i uu u istu
komponentu Fm F G. Svrha lažnog lista uw je da odredi da li ima mjesta za
ugradnju Bu(v). Svrha markera grane uu je da prisili sve listove xy od Bu(v) za koje
je y < u na istu stranu T. Algoritam EmbedBranch se može modificirati zamjenom
grupe iskaza koja počinje „ako je b(v) = u onda počni” sa sljedećim.
kraj
6.1 Definicija. Neka je Bu(v) grana sa markerom grane uu i lažnim listom ut, gdje
je t = L1(v). Neka su xy i wz bilo koji listovi gdje su x > y, w > z i x w. Tada: 1)
Marker grane uu je u sukobu sa odgovarajućim lažnim listom ut; 2) xy i wz su u
sukobu ako je b(x) = b(w) i x > w > y > z; 3) xy i uu su u sukobu ako je b(x) = u, y <
u i xy Bu(v).
Graf listova je označen kao F G. Njegovi vrhovi su listovi G. Dva lista su susjedna
ako se sukobljavaju.
Ako je Bu(v) kao gore, s lažnim listovima ut ugrađenim u LF, tada će bilo koji
list xy od Bu(v) za koji y < u biti u sukobu s markerom grane uu
22
Machine Translated by Google
23
Machine Translated by Google
Kada se na ovaj način definiše lijevi graf, nije potrebno uvoditi segmente, kao
u [13] ili [19]. Umjesto toga, ugradnja se sastoji od stabla T, zajedno sa njegovim
listovima. FG je uvijek bipartitan. Slično, tačke grananja b(v) zajedno sa putanjama
Pv isključuju potrebu za definiranjem stabla putanja kao u [19].
Ako |L(T)| > 1, izaberite v L(T) gde je v poslednji list T koji je posetio
EmbedBranch. Neka je u = b(v) i neka r označava korijen T. Tada je Pv vu-put, a u
6= r. Neka je uw deblo grane na u koja sadrži v, i postavimo x = a(v). Neka je s =
L1(v). Ovo je ilustrovano u nastavku.
u
w
z
6.3 Lema. Ako je G ravan, onda se G0 može ugraditi tako da su svi listovi do t na
istoj strani od T 0.
Dokaz. Neka F G0 označava graf za G0, sa komponentama F1, F2, . . ., Fm, gdje je
m 1. Ako nije moguće ugraditi G0 sa svim listovima u t na lijevoj strani T 0, tada
zamijenite biparticiju svakog Fi po potrebi, tako da svi listovi yt budu na lijevoj
strani, pri čemu je y > a a što je manje moguće.
Dakle, postoji list na Fi na desnoj strani, za neko i, što ne može biti
24
Machine Translated by Google
v2 u
v1 a
v2
b u2 v1 a
u1 b u2
v
u1
v
Slika 10, G0 i G, b s
Slučaj 1. bt u G0 ima odgovarajući list sb u G.
Neka je x1 vrh sa a(x1) = b i neka je z vrh sa a(z) = a.
U G, Bb(x1) je grana tipa II koja prethodi lišću sb u Adj[b].
Stoga je N(x1) paran prema pravilu 4.2. Nema listova na t između a i b, tako
da je u G v1 = L2(x1). Slično v2 = L2(x2), gdje je a(x2) = v1, i tako dalje, dok ne
dođemo do vj sa a(xj+1) = vj . Imamo L1(xk) = s i L2(xk) = vk = a(xk+1), za k =
1, 2, . . . , j. Po definiciji 4.1, N(xk) zavisi od N(xk+1).
25
Machine Translated by Google
v2
v1 a
b u2
u1
v
11, G, b 6 s
6.4 Lema. Neka |L(T)| > 1. Ako algoritam ide do kraja, onda je G ravan.
26
Machine Translated by Google
G00 ima n 1 vrh, tako da će algoritam ugraditi G00. Svaki list će biti
postavljen u LF ili RF. Kada je algoritam dat G kao ulaz, izvršenje
EmbedBranch(w) pozvanog iz u je potpuno isto kao u grafu G0 leme
6.1, osim što listovi do vrhova < u moraju biti ugrađeni na lijevoj
strani. Prema lemi 6.1 to se može postići zamjenom biparticije
nekoliko Fi ako je potrebno.
, To je ono što će algoritam učiniti.
Zbog markera grana svi listovi do vrhova < u uvijek će biti na istoj strani T. Stoga
će Bu(w) biti uspješno ugrađen. Preostalo izvršenje algoritma je potpuno isto u
G kao u G00.
Algoritam ne može znati da li je grana Bu(w) koja je upravo ugrađena bila
kontrahirana kao u G00 ili ne, listovi do vrhova < u su identični u oba slučaja.
Dakle, ako je `(Pv) > 1, G će biti uspješno ugrađen u ravan.
s1
s2
v u
27
Machine Translated by Google
Slučaj 2. `(Pv) = 1.
U ovom slučaju a(v) = b(v) = u. Neka je w = b(u), s1 = L1(v) i s2 = L2(v). Koristite
indukciju na m = deg(v). Ako je m = 2, tada granu Bu(v) možemo zamijeniti jednim
listom us1. Rezultirajući graf ima n 1 vrh, tako da će biti uspješno ugrađen. S
obzirom na G, algoritam će pozvati EmbedBranch(v) na vrhu u prije nego što
ugradi lišće vs1. Ostatak izvršenja će biti identičan, osim što će LF i RF sadržati
dodatni lažni list us1 i marker grane uu, što neće uticati na izvršenje. Dakle, G će
biti ugrađen kada je m = 2. Ako je m > 2, konstruirajte novi graf H iz G zamjenom
Bu(v) sa listom us1 i novom granom B koja sadrži v zajedno sa preostalim m 1
listovima na v. Dakle, u H, deg(v) = m 1, a lišće us1 će prethoditi grani B u
Adj[u]. Po hipotezi indukcije, H će biti uspješno ugrađen. Upoređujemo izvođenje
algoritma zadanih H i G. U H postoje listovi ww, uu, us1, us2 i vs2. U G postoje
ww, uu, us1, vs1 i vs2. Ako su uu i ww ugrađeni na istoj strani u H, tada će
izvođenje algoritma u G biti isto kao u H osim što će svi listovi na v biti ugrađeni
rekurzivnim pozivom EmbedBranch(v). Dakle, ako su uu i ww na istoj strani u H, G
će biti uspješno ugrađen.
Ako je s1, s2 < w, list us1 i lažni list us2 u H su u sukobu sa ww. Pošto je us2
u sukobu sa uu, moramo imati uu i ww na istoj strani, tako da će G biti uspješno
ugrađen.
Ako je s1 < w ali s2 w, tada je us1 u sukobu sa ww u H, ali us2 nije. Ako su
uu i ww u različitim komponentama lijevog grafa za H, tada možemo prebaciti
komponentu koja sadrži uu da stavimo uu i ww na istu stranu. Ako su u istoj
komponenti na suprotnim stranama, tada FH sadrži put P neparne dužine koji
povezuje uu sa ww. Ovaj put će se takođe pojaviti u G. Ali u G, us1 se sukobljava i
sa uu i sa ww, stvarajući neparan ciklus u FG, što je kontradikcija. Iz toga slijedi da
rezultat vrijedi kada je m > 1.
Po indukciji, teorema vrijedi za sve vrijednosti |L(T)| 1 i sve n.
28
Machine Translated by Google
Reference
29
Machine Translated by Google
18. RC Read, “Nova metoda za crtanje planarnog grafa s obzirom na ciklički red
ivica u svakom vrhu”, Congressus Numerantium 56 (1987), 31-44.
30