• Nem Talált Eredményt

Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y.

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y."

Copied!
137
0
0

Teljes szövegt

(1)

Algoritmuselmélet

Mélységi keresés és alkalmazásai

Katona Gyula Y.

Számítástudományi és Információelméleti Tanszék Budapesti M ˝uszaki és Gazdaságtudományi Egyetem

10. el ˝oadás

(2)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében” haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack) Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}. L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(3)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében”

haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack) Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}. L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(4)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében”

haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack)

Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}. L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(5)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében”

haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack) Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}. L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(6)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében”

haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack) Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}. L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(7)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében”

haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack) Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}.

L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(8)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében”

haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack) Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}.

L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(9)

Mélységi bejárás

Gráf bejárás =⇒minden pontot felsorolunk, bejárunk.

Szélességi bejárás (breadth-first-search, BFS)már volt, ott „széltében”

haladtunk.

Most mélységben haladunk:

Mélységi bejárás (depth-first-search, DFS, backtrack) Pl. a lámpagyújtogató algoritmusa

Mélységi keresés

Mohó menetelés, addig megyünk el ˝ore, amíg tudunk, csak aztán fordulunk vissza.

G= (V,E)egy irányított gráf, aholV ={1, . . . ,n}.

L[v]av csúcs éllistája(1≤v ≤n).

bejárva[1:n]logikai vektor =⇒jártunk-e már ott.

(10)

Mélységi keresés algoritmusa

proceduremb (v: csúcs)(∗egy komponens bejárása∗) var

w: csúcs;

begin

(1) bejárva[v] :=igaz;(∗meggyújtjuk a lámpát∗) formindenL[v]-beliw csúcsrado

(2) ifbejárva[w] =hamisthen

mb(w)(∗megyünk a következ ˝o még sötét lámpához∗) end

(11)

Mélységi keresés algoritmusa

proceduremb (v: csúcs)(∗egy komponens bejárása∗) var

w: csúcs;

begin

(1) bejárva[v] :=igaz;(∗meggyújtjuk a lámpát∗) formindenL[v]-beliw csúcsrado

(2) ifbejárva[w] =hamisthen

mb(w)(∗megyünk a következ ˝o még sötét lámpához∗) end

(12)

Mélységi keresés algoritmusa

procedurebejár(∗minden komponens bejárása∗) begin

forv :=1tondo bejárva[v] :=hamis;

forv :=1tondo

ifbejárva[v] =hamisthen mb(v)

end

Lépésszám: O(n+e),(aholna gráf pontszáma,epedig az élszáma.)

(13)

Mélységi keresés algoritmusa

procedurebejár(∗minden komponens bejárása∗) begin

forv :=1tondo bejárva[v] :=hamis;

forv :=1tondo

ifbejárva[v] =hamisthen mb(v)

end

Lépésszám: O(n+e),(aholna gráf pontszáma,epedig az élszáma.)

(14)

Mélységi számok és befejezési számok

Definíció (mélységi számozás)

A G irányított gráf csúcsainak egymélységi számozásaa gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy azmbeljárás (1) sorában a csúcsok közül hányadikként állítottukbejárva[v]értékét igaz-ra. A v csúcs mélységi számátmszám[v]jelöli.

Definíció (befejezési számozás)

A G irányított gráf csúcsainak egybefejezési számozásaa gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy a csúcsok közül hányadikként ért véget azmb(v)hívás. A v csúcs befejezési számátbszám[v]jelöli.

El ˝oz ˝o algoritmus kis módosítással:

(15)

Mélységi számok és befejezési számok

Definíció (mélységi számozás)

A G irányított gráf csúcsainak egymélységi számozásaa gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy azmbeljárás (1) sorában a csúcsok közül hányadikként állítottukbejárva[v]értékét igaz-ra. A v csúcs mélységi számátmszám[v]jelöli.

Definíció (befejezési számozás)

A G irányított gráf csúcsainak egybefejezési számozásaa gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy a csúcsok közül hányadikként ért véget azmb(v)hívás. A v csúcs befejezési számátbszám[v]jelöli.

El ˝oz ˝o algoritmus kis módosítással:

(16)

Mélységi számok és befejezési számok

Definíció (mélységi számozás)

A G irányított gráf csúcsainak egymélységi számozásaa gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy azmbeljárás (1) sorában a csúcsok közül hányadikként állítottukbejárva[v]értékét igaz-ra. A v csúcs mélységi számátmszám[v]jelöli.

Definíció (befejezési számozás)

A G irányított gráf csúcsainak egybefejezési számozásaa gráf v csúcsához azt a sorszámot rendeli, mely megadja, hogy a csúcsok közül hányadikként ért véget azmb(v)hívás. A v csúcs befejezési számátbszám[v]jelöli.

El ˝oz ˝o algoritmus kis módosítással:

(17)

procedure(∗minden komponens bejárása∗) begin msz:=0; bsz:=0;

forv :=1tondo

bejárva[v] :=hamis; mszám[v] :=0; bszám[v] :=0;

forv :=1tondo

ifbejárva[v] =hamisthen mb(v)

end

proceduremb (v: csúcs)(∗egy komponens bejárása∗) var

w: csúcs; begin

(1) bejárva[v] :=igaz; msz:=msz+1; mszám[v] :=msz; formindenL[v]-beliw csúcsrado

(2) ifbejárva[w] =hamisthen mb(w);

bsz:=bsz+1; bszám[v] :=bsz; end

(18)

procedure(∗minden komponens bejárása∗) begin msz:=0; bsz:=0;

forv :=1tondo

bejárva[v] :=hamis; mszám[v] :=0; bszám[v] :=0;

forv :=1tondo

ifbejárva[v] =hamisthen mb(v)

end

proceduremb (v: csúcs)(∗egy komponens bejárása∗) var

w: csúcs;

begin

(1) bejárva[v] :=igaz; msz:=msz+1; mszám[v] :=msz;

formindenL[v]-beliw csúcsrado (2) ifbejárva[w] =hamisthen

mb(w);

bsz:=bsz+1; bszám[v] :=bsz;

end

(19)

procedure(∗minden komponens bejárása∗) begin msz:=0; bsz:=0;

forv :=1tondo

bejárva[v] :=hamis; mszám[v] :=0; bszám[v] :=0;

forv :=1tondo

ifbejárva[v] =hamisthen mb(v)

end

proceduremb (v: csúcs)(∗egy komponens bejárása∗) var

w: csúcs;

begin

(1) bejárva[v] :=igaz; msz:=msz+1; mszám[v] :=msz;

formindenL[v]-beliw csúcsrado (2) ifbejárva[w] =hamisthen

mb(w);

(20)

Mélységi feszít ˝oerd ˝o

Definíció (faél)

A G= (V,E)irányított gráf v →w élefaélaz adott mélységi bejárásra vonatkozóan, ha megvizsgálásakor a (2) sorban a

(bejárva[w] =hamis) feltétel teljesül.

JelöljeT azt a gráfot, amelynek csúcshalmazaV, élei pedig a faélek. Könnyen látható, hogy ezerd ˝o.

Definíció (mélységi feszít˝oerd˝o, feszít˝ofa)

Az el ˝obb meghatározott T gráfot a G gráf egymélységi

feszít ˝oerdejéneknevezzük. Ha T csak egy komponensb ˝ol áll, akkor mélységi feszít ˝ofárólbeszélünk.

(21)

Mélységi feszít ˝oerd ˝o

Definíció (faél)

A G= (V,E)irányított gráf v →w élefaélaz adott mélységi bejárásra vonatkozóan, ha megvizsgálásakor a (2) sorban a

(bejárva[w] =hamis) feltétel teljesül.

JelöljeT azt a gráfot, amelynek csúcshalmazaV, élei pedig a faélek.

Könnyen látható, hogy ezerd ˝o.

Definíció (mélységi feszít˝oerd˝o, feszít˝ofa)

Az el ˝obb meghatározott T gráfot a G gráf egymélységi

feszít ˝oerdejéneknevezzük. Ha T csak egy komponensb ˝ol áll, akkor mélységi feszít ˝ofárólbeszélünk.

(22)

Mélységi feszít ˝oerd ˝o

Definíció (faél)

A G= (V,E)irányított gráf v →w élefaélaz adott mélységi bejárásra vonatkozóan, ha megvizsgálásakor a (2) sorban a

(bejárva[w] =hamis) feltétel teljesül.

JelöljeT azt a gráfot, amelynek csúcshalmazaV, élei pedig a faélek.

Könnyen látható, hogy ezerd ˝o.

Definíció (mélységi feszít˝oerd˝o, feszít˝ofa)

Az el ˝obb meghatározott T gráfot a G gráf egymélységi

feszít ˝oerdejéneknevezzük. Ha T csak egy komponensb ˝ol áll, akkor mélységi feszít ˝ofárólbeszélünk.

(23)

Mélységi feszít ˝oerd ˝o

Definíció (faél)

A G= (V,E)irányított gráf v →w élefaélaz adott mélységi bejárásra vonatkozóan, ha megvizsgálásakor a (2) sorban a

(bejárva[w] =hamis) feltétel teljesül.

JelöljeT azt a gráfot, amelynek csúcshalmazaV, élei pedig a faélek.

Könnyen látható, hogy ezerd ˝o.

Definíció (mélységi feszít˝oerd˝o, feszít˝ofa)

Az el ˝obb meghatározott T gráfot a G gráf egymélységi

feszít ˝oerdejéneknevezzük. Ha T csak egy komponensb ˝ol áll, akkor mélységi feszít ˝ofárólbeszélünk.

(24)

Mélységi feszít ˝oerd ˝o

Definíció (faél)

A G= (V,E)irányított gráf v →w élefaélaz adott mélységi bejárásra vonatkozóan, ha megvizsgálásakor a (2) sorban a

(bejárva[w] =hamis) feltétel teljesül.

JelöljeT azt a gráfot, amelynek csúcshalmazaV, élei pedig a faélek.

Könnyen látható, hogy ezerd ˝o.

Definíció (mélységi feszít˝oerd˝o, feszít˝ofa)

Az el ˝obb meghatározott T gráfot a G gráf egymélységi

feszít ˝oerdejéneknevezzük. Ha T csak egy komponensb ˝ol áll, akkor mélységi feszít ˝ofárólbeszélünk.

(25)

Élek osztályozása

Definíció (élek osztályozása)

Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszít ˝oerd ˝ot. Ezen bejárás szerint G egy x →y éle

faél, ha x →y éle T -nek;

el ˝oreél, ha x →y nem faél, y leszármazottja x -nek T -ben és x 6=y ;

visszaél, ha x leszármazottja y -nak T -ben (a hurokél is ilyen); keresztél, ha x és y nem leszármazottai egymásnak.

(26)

Élek osztályozása

Definíció (élek osztályozása)

Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszít ˝oerd ˝ot. Ezen bejárás szerint G egy x →y éle

faél, ha x →y éle T -nek;

el ˝oreél, ha x →y nem faél, y leszármazottja x -nek T -ben és x 6=y ;

visszaél, ha x leszármazottja y -nak T -ben (a hurokél is ilyen); keresztél, ha x és y nem leszármazottai egymásnak.

(27)

Élek osztályozása

Definíció (élek osztályozása)

Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszít ˝oerd ˝ot. Ezen bejárás szerint G egy x →y éle

faél, ha x →y éle T -nek;

el ˝oreél, ha x →y nem faél, y leszármazottja x -nek T -ben és x 6=y ;

visszaél, ha x leszármazottja y -nak T -ben (a hurokél is ilyen);

keresztél, ha x és y nem leszármazottai egymásnak.

(28)

Élek osztályozása

Definíció (élek osztályozása)

Tekintsük a G irányított gráf egy mélységi bejárását és a kapott T mélységi feszít ˝oerd ˝ot. Ezen bejárás szerint G egy x →y éle

faél, ha x →y éle T -nek;

el ˝oreél, ha x →y nem faél, y leszármazottja x -nek T -ben és x 6=y ;

visszaél, ha x leszármazottja y -nak T -ben (a hurokél is ilyen);

keresztél, ha x és y nem leszármazottai egymásnak.

(29)

1

7 6

8

9

5 10 4

3 2

fa´el

el˝ore´el vissza´el keresztl ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat. visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat. visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(30)

1

7 6

8

9

5 10 4

3 2

fa´el el˝ore´el

vissza´el keresztl ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat. visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat. visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(31)

1

7 6

8

9

5 10 4

3 2

fa´el el˝ore´el vissza´el

keresztl ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat. visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat. visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(32)

1

7 6

8

9

5 10 4

3 2

fa´el el˝ore´el vissza´el keresztl

ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat. visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat. visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(33)

1

7 6

8

9

5 10 4

3 2

fa´el el˝ore´el vissza´el keresztl ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat. visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat. visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(34)

1

7 6

8

9

5 10 4

3 2

fa´el el˝ore´el vissza´el keresztl ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat.

visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat. visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(35)

1

7 6

8

9

5 10 4

3 2

fa´el el˝ore´el vissza´el keresztl ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat.

visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat.

visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(36)

1

7 6

8

9

5 10 4

3 2

fa´el el˝ore´el vissza´el keresztl ilyen nincs

faél,el ˝ore él:

Kisebb mélységi számúból nagyobb mélységi számúba mutat.

visszaél,keresztél:

Nagyobb mélységi számúból kisebb mélységi számúba mutat.

visszaél:

Kisebb befejezési számúból nagyobb befejezési számúba mutat.

(37)

Élek osztályozása

x →y egy ha az él vizsgálatakor faél mszám[y] =0

visszaél mszám[y]≤mszám[x]és bszám[y] =0 el ˝oreél mszám[y]>mszám[x]

keresztél mszám[y]<mszám[x]és bszám[y]>0.

Tétel

A G irányított gráf mélységi bejárása – beleértve a mélységi, a

befejezési számozást és az élek osztályozását is – O(n+e)lépésben megtehet ˝o.

(38)

Élek osztályozása

x →y egy ha az él vizsgálatakor faél mszám[y] =0

visszaél mszám[y]≤mszám[x]és bszám[y] =0 el ˝oreél mszám[y]>mszám[x]

keresztél mszám[y]<mszám[x]és bszám[y]>0.

Tétel

A G irányított gráf mélységi bejárása – beleértve a mélységi, a

befejezési számozást és az élek osztályozását is – O(n+e)lépésben megtehet ˝o.

(39)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el ilyen nincs

faél ⇐⇒ faél

el ˝oreél,visszaél ⇐⇒ visszaél keresztél: nem létezik

(40)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el ilyen nincs

faél ⇐⇒ faél

el ˝oreél,visszaél ⇐⇒ visszaél keresztél: nem létezik

(41)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el ilyen nincs

faél ⇐⇒ faél

el ˝oreél,visszaél ⇐⇒ visszaél keresztél: nem létezik

(42)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el

ilyen nincs

faél ⇐⇒ faél

el ˝oreél,visszaél ⇐⇒ visszaél keresztél: nem létezik

(43)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el ilyen nincs

faél ⇐⇒ faél

el ˝oreél,visszaél ⇐⇒ visszaél keresztél: nem létezik

(44)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el ilyen nincs

faél ⇐⇒ faél

el ˝oreél,visszaél ⇐⇒ visszaél keresztél: nem létezik

(45)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el ilyen nincs

faél ⇐⇒ faél

keresztél: nem létezik

(46)

Irányítatlan gráfok mélységi bejárása

Mélységi keresés ugyanígy.

Mélységi feszít ˝oerd ˝o komponensei: összefügg ˝o komponensek.

fa´el

8 5 10

4 3 2

1

6 7

9

vissza´el ilyen nincs

faél ⇐⇒ faél

el ˝oreél,visszaél ⇐⇒ visszaél keresztél: nem létezik

(47)

Mélységi feszít ˝oerd ˝o

LegyenT aG= (V,E)irányított gráf egy feszít ˝oerdeje. Legyenx ∈V egy tetsz ˝oleges csúcs, és jelöljeTx a feszít ˝oerd ˝ox gyöker ˝u

részfájának a csúcshalmazát.

Legyen

Sx =

y ∈V

van olyanG-belix y irányított út, amelyen a csúcsok mélységi száma legalább mszám[x]

.

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

(48)

Mélységi feszít ˝oerd ˝o

LegyenT aG= (V,E)irányított gráf egy feszít ˝oerdeje. Legyenx ∈V egy tetsz ˝oleges csúcs, és jelöljeTx a feszít ˝oerd ˝ox gyöker ˝u

részfájának a csúcshalmazát. Legyen

Sx =

y ∈V

van olyanG-belix y irányított út, amelyen a csúcsok mélységi száma legalább mszám[x]

.

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

(49)

Mélységi feszít ˝oerd ˝o

LegyenT aG= (V,E)irányított gráf egy feszít ˝oerdeje. Legyenx ∈V egy tetsz ˝oleges csúcs, és jelöljeTx a feszít ˝oerd ˝ox gyöker ˝u

részfájának a csúcshalmazát. Legyen

Sx =

y ∈V

van olyanG-belix y irányított út, amelyen a csúcsok mélységi száma legalább mszám[x]

.

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

(50)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám

=⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(51)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx.

Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(52)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(53)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(54)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(55)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x].

Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(56)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(57)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx

=⇒Sx ⊆Tx. √

(58)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(59)

Mélységi feszít ˝oerd ˝o

Lemma (részfa lemma)

Tetsz ˝oleges x ∈V csúcs esetén érvényes aTx =Sx egyenl ˝oség.

Bizonyítás.

Tx éppen azokból a pontokból áll, amelyekx-b ˝ol faélek mentén elérhet ˝ok. Faélekre mindig n ˝o a mélységi szám =⇒Tx ⊆Sx. Fordított irány indirekt:

tegyük fel, hogy létezik egyy ∈Sx\Tx

Legyenx y egy azSx meghatározásában szerepl ˝o irányított út, feltehetjük, hogy az út utolsó el ˝ottiv pontjaTx-ben van.

Azy ∈Sx feltétel szerint mszám[y]>mszám[x]. Ezy 6∈Tx miatt azt jelenti, hogyy-t valamikor aTx pontjai után látogatjuk meg.

=⇒(v,y)faél vagy el ˝ore él =⇒y ∈Tx =⇒Sx ⊆Tx. √

(60)

Mélységi feszít ˝oerd ˝o

Következmény

Tegyük fel, hogy a G= (V,E)gráf x csúcsából minden pont elérhet ˝o irányított úton. Tegyük fel továbbá, hogy a G mélységi bejárását x -szel kezdjük. Ekkor a mélységi feszít ˝oerd ˝o egyetlen fából áll.

Bizonyítás.

mszám[x] =1 =⇒Sx =V =⇒Tx =V

(61)

Mélységi feszít ˝oerd ˝o

Következmény

Tegyük fel, hogy a G= (V,E)gráf x csúcsából minden pont elérhet ˝o irányított úton. Tegyük fel továbbá, hogy a G mélységi bejárását x -szel kezdjük. Ekkor a mélységi feszít ˝oerd ˝o egyetlen fából áll.

Bizonyítás.

mszám[x] =1 =⇒Sx =V

=⇒Tx =V

(62)

Mélységi feszít ˝oerd ˝o

Következmény

Tegyük fel, hogy a G= (V,E)gráf x csúcsából minden pont elérhet ˝o irányított úton. Tegyük fel továbbá, hogy a G mélységi bejárását x -szel kezdjük. Ekkor a mélységi feszít ˝oerd ˝o egyetlen fából áll.

Bizonyítás.

mszám[x] =1 =⇒Sx =V =⇒Tx =V

(63)

Irányított körmentes gráfok

Definíció

Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

DirectedAcyclicGraph Alkalmazásai például:

Teend ˝ok ütemezése =⇒PERT Várakozási gráfok =⇒adatbázisok

Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

(64)

Irányított körmentes gráfok

Definíció

Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

DirectedAcyclicGraph

Alkalmazásai például:

Teend ˝ok ütemezése =⇒PERT Várakozási gráfok =⇒adatbázisok

Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

(65)

Irányított körmentes gráfok

Definíció

Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

DirectedAcyclicGraph Alkalmazásai például:

Teend ˝ok ütemezése

=⇒PERT Várakozási gráfok =⇒adatbázisok

Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

(66)

Irányított körmentes gráfok

Definíció

Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

DirectedAcyclicGraph Alkalmazásai például:

Teend ˝ok ütemezése =⇒PERT

Várakozási gráfok =⇒adatbázisok

Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

(67)

Irányított körmentes gráfok

Definíció

Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

DirectedAcyclicGraph Alkalmazásai például:

Teend ˝ok ütemezése =⇒PERT Várakozási gráfok

=⇒adatbázisok

Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

(68)

Irányított körmentes gráfok

Definíció

Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

DirectedAcyclicGraph Alkalmazásai például:

Teend ˝ok ütemezése =⇒PERT Várakozási gráfok =⇒adatbázisok

Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

(69)

Irányított körmentes gráfok

Definíció

Egy G irányított gráf DAG, ha nem tartalmaz irányított kört.

DirectedAcyclicGraph Alkalmazásai például:

Teend ˝ok ütemezése =⇒PERT Várakozási gráfok =⇒adatbázisok

Fontos, hogy egy irányított gráfról el tudjuk dönteni, tartalmaz-e irányított kört.

(70)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(71)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(72)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(73)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG

=⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(74)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör:

vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(75)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(76)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél,

deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(77)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

;(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

(78)

visszaél keresztél faél el˝oreél 1

2 3

4 5

6 7

8 9

10

Ha a gráf egy mélységi bejárása során találunk visszaélet akkor a gráf nyilván tartalmaz irányí- tott kört, azaz nem DAG.

Tétel

Legyen G= (V,E)egy irányított gráf. Ha G egy DAG, akkor egyetlen mélységi bejárása során sincs visszaél. Fordítva er ˝osebb igaz:ha G-nek van olyan mélységi bejárása, amelyre nézve nincs visszaél, akkor G egy DAG.

Bizonyítás.

=⇒ √

⇐= Indirekt bizonyítunk: Tegyük fel, hogy nincs visszaél, deGnem DAG =⇒van benne irányított kör: vegyük ennek a legkisebb mélységi számúv csúcsát, a kör el ˝oz ˝o pontja legyenu.

=⇒mszám[v]<mszám[u] =⇒uv vissza- vagy keresztél, deu elérhet ˝ov-b ˝ol irányított úton, ahol a mélységi számok mindegyike

≥mszm[v];(részfa lemma) =⇒uav leszármazottja =⇒uv visszaél.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 10. el ˝oadás 16 / 20

(79)

DAG topologikus rendezése

Definíció

Legyen G= (V,E)(|V|=n) egy irányított gráf. G egy topologikus rendezésea csúcsoknak egy olyan v1, . . . ,vnsorrendje, melyben x →y ∈E esetén x el ˝obb van, mint y (azaz ha x =vi,y =vj, akkor i <j).

Tétel

Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

Bizonyítás.

⇒:HaGnem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.

⇐:G-ben van olyan csúcs, amibe nem fut be él (forrás).

Indukció pontszámra: =⇒hagyjunk el egyx forrást, ez legyen az els ˝o pont =⇒a többi az indukció miatt rendezhet ˝ow1, . . . ,wn−1

=⇒x,w1, . . . ,wn−1topologikus rendezéseG-nek. √

(80)

DAG topologikus rendezése

Definíció

Legyen G= (V,E)(|V|=n) egy irányított gráf. G egy topologikus rendezésea csúcsoknak egy olyan v1, . . . ,vnsorrendje, melyben x →y ∈E esetén x el ˝obb van, mint y (azaz ha x =vi,y =vj, akkor i <j).

Tétel

Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

Bizonyítás.

⇒:HaGnem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.

⇐:G-ben van olyan csúcs, amibe nem fut be él (forrás).

Indukció pontszámra: =⇒hagyjunk el egyx forrást, ez legyen az els ˝o pont =⇒a többi az indukció miatt rendezhet ˝ow1, . . . ,wn−1

=⇒x,w1, . . . ,wn−1topologikus rendezéseG-nek. √

(81)

DAG topologikus rendezése

Definíció

Legyen G= (V,E)(|V|=n) egy irányított gráf. G egy topologikus rendezésea csúcsoknak egy olyan v1, . . . ,vnsorrendje, melyben x →y ∈E esetén x el ˝obb van, mint y (azaz ha x =vi,y =vj, akkor i <j).

Tétel

Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

Bizonyítás.

⇒:HaGnem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.

⇐:G-ben van olyan csúcs, amibe nem fut be él (forrás).

Indukció pontszámra: =⇒hagyjunk el egyx forrást, ez legyen az els ˝o pont =⇒a többi az indukció miatt rendezhet ˝ow1, . . . ,wn−1

=⇒x,w1, . . . ,wn−1topologikus rendezéseG-nek. √

(82)

DAG topologikus rendezése

Definíció

Legyen G= (V,E)(|V|=n) egy irányított gráf. G egy topologikus rendezésea csúcsoknak egy olyan v1, . . . ,vnsorrendje, melyben x →y ∈E esetén x el ˝obb van, mint y (azaz ha x =vi,y =vj, akkor i <j).

Tétel

Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

Bizonyítás.

⇒:HaGnem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.

⇐:G-ben van olyan csúcs, amibe nem fut be él (forrás).

Indukció pontszámra: =⇒hagyjunk el egyx forrást, ez legyen az els ˝o pont =⇒a többi az indukció miatt rendezhet ˝ow1, . . . ,wn−1

=⇒x,w1, . . . ,wn−1topologikus rendezéseG-nek. √

(83)

DAG topologikus rendezése

Definíció

Legyen G= (V,E)(|V|=n) egy irányított gráf. G egy topologikus rendezésea csúcsoknak egy olyan v1, . . . ,vnsorrendje, melyben x →y ∈E esetén x el ˝obb van, mint y (azaz ha x =vi,y =vj, akkor i <j).

Tétel

Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

Bizonyítás.

⇒:HaGnem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.

⇐:G-ben van olyan csúcs, amibe nem fut be él (forrás).

Indukció pontszámra: =⇒hagyjunk el egyx forrást, ez legyen az els ˝o

=⇒a többi az indukció miatt rendezhet ˝ow1, . . . ,wn−1

=⇒x,w1, . . . ,wn−1topologikus rendezéseG-nek. √

(84)

DAG topologikus rendezése

Definíció

Legyen G= (V,E)(|V|=n) egy irányított gráf. G egy topologikus rendezésea csúcsoknak egy olyan v1, . . . ,vnsorrendje, melyben x →y ∈E esetén x el ˝obb van, mint y (azaz ha x =vi,y =vj, akkor i <j).

Tétel

Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

Bizonyítás.

⇒:HaGnem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.

⇐:G-ben van olyan csúcs, amibe nem fut be él (forrás).

Indukció pontszámra: =⇒hagyjunk el egyx forrást, ez legyen az els ˝o pont =⇒a többi az indukció miatt rendezhet ˝ow1, . . . ,wn−1

=⇒x,w1, . . . ,wn−1topologikus rendezéseG-nek. √

(85)

DAG topologikus rendezése

Definíció

Legyen G= (V,E)(|V|=n) egy irányított gráf. G egy topologikus rendezésea csúcsoknak egy olyan v1, . . . ,vnsorrendje, melyben x →y ∈E esetén x el ˝obb van, mint y (azaz ha x =vi,y =vj, akkor i <j).

Tétel

Egy irányított gráfnak akkor és csak akkor van topologikus rendezése, ha DAG.

Bizonyítás.

⇒:HaGnem DAG, akkor nem lehet topologikus rendezése, mert egy irányított kör csúcsainak nyilván nincs megfelel ˝o sorrendje.

⇐:G-ben van olyan csúcs, amibe nem fut be él (forrás).

Indukció pontszámra: =⇒hagyjunk el egyx forrást, ez legyen az els ˝o

(86)

Topologikus rendezés mélységi kereséssel

Tétel

Végezzük el a G DAG egy mélységi bejárását, és írjuk ki G csúcsait a befejezési számaik szerint növekv ˝o w1, . . . ,wnsorrendben. A

wn,wn−1, . . . ,w1sorrend a G DAG egy topologikus rendezése.

Bizonyítás.

Azt kell belátnunk, hogy hawi →wj éleG-nek, akkori >j.

Ha volna olyanwi →wj, amirej=bszám[wj]>bszám[wi] =i, akkor az csak visszaél lehetne.

Lépésszám: O(n+e)

(87)

Topologikus rendezés mélységi kereséssel

Tétel

Végezzük el a G DAG egy mélységi bejárását, és írjuk ki G csúcsait a befejezési számaik szerint növekv ˝o w1, . . . ,wnsorrendben. A

wn,wn−1, . . . ,w1sorrend a G DAG egy topologikus rendezése.

Bizonyítás.

Azt kell belátnunk, hogy hawi →wj éleG-nek, akkori >j.

Ha volna olyanwi →wj, amirej=bszám[wj]>bszám[wi] =i, akkor az csak visszaél lehetne.

Lépésszám: O(n+e)

(88)

Topologikus rendezés mélységi kereséssel

Tétel

Végezzük el a G DAG egy mélységi bejárását, és írjuk ki G csúcsait a befejezési számaik szerint növekv ˝o w1, . . . ,wnsorrendben. A

wn,wn−1, . . . ,w1sorrend a G DAG egy topologikus rendezése.

Bizonyítás.

Azt kell belátnunk, hogy hawi →wj éleG-nek, akkori >j.

Ha volna olyanwi →wj, amirej=bszám[wj]>bszám[wi] =i, akkor az csak visszaél lehetne.

Lépésszám: O(n+e)

(89)

Topologikus rendezés mélységi kereséssel

Tétel

Végezzük el a G DAG egy mélységi bejárását, és írjuk ki G csúcsait a befejezési számaik szerint növekv ˝o w1, . . . ,wnsorrendben. A

wn,wn−1, . . . ,w1sorrend a G DAG egy topologikus rendezése.

Bizonyítás.

Azt kell belátnunk, hogy hawi →wj éleG-nek, akkori >j.

Ha volna olyanwi →wj, amirej=bszám[wj]>bszám[wi] =i, akkor az csak visszaél lehetne.

Lépésszám: O(n+e)

(90)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3)

Ha nincs negatív élsúly: Dijkstra =⇒O(n2) Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn Feltehetjük, hogys=x1 =⇒

d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás). Lépésszám: DFS+ Pn

i=1min. keresés{dbe(xi)}

=O(n+e)

(91)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3) Ha nincs negatív élsúly: Dijkstra =⇒O(n2)

Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn Feltehetjük, hogys=x1 =⇒

d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás). Lépésszám: DFS+ Pn

i=1min. keresés{dbe(xi)}

=O(n+e)

(92)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3) Ha nincs negatív élsúly: Dijkstra =⇒O(n2)

Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn

Feltehetjük, hogys=x1 =⇒

d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás). Lépésszám: DFS+ Pn

i=1min. keresés{dbe(xi)}

=O(n+e)

(93)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3) Ha nincs negatív élsúly: Dijkstra =⇒O(n2)

Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn Feltehetjük, hogys=x1

=⇒ d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás). Lépésszám: DFS+ Pn

i=1min. keresés{dbe(xi)}

=O(n+e)

(94)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3) Ha nincs negatív élsúly: Dijkstra =⇒O(n2)

Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn Feltehetjük, hogys=x1 =⇒

d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás). Lépésszám: DFS+ Pn

i=1min. keresés{dbe(xi)}

=O(n+e)

(95)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3) Ha nincs negatív élsúly: Dijkstra =⇒O(n2)

Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn Feltehetjük, hogys=x1 =⇒

d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás). Lépésszám: DFS+ Pn

i=1min. keresés{dbe(xi)}

=O(n+e)

(96)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3) Ha nincs negatív élsúly: Dijkstra =⇒O(n2)

Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn Feltehetjük, hogys=x1 =⇒

d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás).

Lépésszám: DFS+ Pn

i=1min. keresés{dbe(xi)}

=O(n+e)

(97)

Legrövidebb utak DAG-ban

Legrövidebb utak egy forrásból: Bellman-Ford =⇒O(n3) Ha nincs negatív élsúly: Dijkstra =⇒O(n2)

Vegyünk egy topologikus rendezést:x1,x2, . . . ,xn Feltehetjük, hogys=x1 =⇒

d(s,xi) = min

(xj,xi)∈E{d(s,xj) +c(xj,xi)}.

. . . xi

s

Ezt sorban elvégezzük mindeni-re(dinamikus programozás).

(98)

Leghosszabb utak DAG-ban

Leghosszabb út→egyszer ˝u út

Általában nehéz, nem ismert rá gyors algoritmus. DAG-ban van:

Tétel

Ha G egy éllistával adott súlyozott él ˝u DAG, akkor az egy forrásból induló legrövidebb és leghosszabb utak meghatározásának feladatai O(n+e)lépésben megoldhatók.

Bizonyítás.

DAG-ban minden út csak el ˝ore megy =⇒ l(s,xi) = max

(xj,xi)∈E

{l(s,xj) +c(xj,xi)}.

aholl(s,xi)aleghosszabbs xi út hossza Alkalmazás: PERT

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

lehet, hogy nem baj (nem minden sorban ´ ertelmes az adott attrib´ utum) megold´ as lehet az adott ´ ert´ ek p´ otl´ asa vagy a sor t¨ orl´ ese. az is lehet, hogy el´ eg, ha

Egy párosítás akkor és csak akkor maximális, ha nincs hozzá tartozó

Egy párosítás akkor és csak akkor maximális, ha nincs hozzá tartozó

Ha az optimális Hamilton-körb ˝ol elhagyunk egy élet = ⇒ egy legalább s súlyú feszít ˝ofát kapunk.. A módszer legfeljebb 2-szer akkora utat ad, mint

Ez optimális, nincs olyan keres ˝o algoritmus, ami minden esetben kevesebb mint dlog 2 (n + 1)e kérdést

Ha P = NP teljesülne, akkor minden olyan problémára, amelyre van hatékony tanúsítvány (azaz NP-beli), lenne polinomiális algoritmus is. Fogunk mutatni olyan problámákat,

A pótlási héten lesz még egy alkalom kizárólag azoknak, akik még nem szerezték meg az aláírást (anyaga ugyanaz, mint a

1 Forward copy transzformáció során az IfThen szerkezetet alkotó {B1, B 2} részgráf közös pontja B3 és az E 2 él között található gráfot le kell másolni.. 2 A (B2, B3)