• Nem Talált Eredményt

Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefügg˝oség, párosítás Katona Gyula Y.

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefügg˝oség, párosítás Katona Gyula Y."

Copied!
84
0
0

Teljes szövegt

(1)

Algoritmuselmélet

Gráfok megadása, szélességi bejárás, összefügg ˝oség, párosítás

Katona Gyula Y.

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

2. el ˝oadás

(2)

Gráfalgoritmusok

irányított gráfok: G= (V,E)

irányított él, irányított út, irányított kör élsúlyok: c(e)— lehetnek negatívak is

J H

G E

K D

F

I C

B

A L

3

4

8

4 9 6

9 0

17 8 9

3

6

2

7 3

8 6

11

5

(3)

Gráfalgoritmusok

irányított gráfok: G= (V,E)

irányított él, irányított út, irányított kör

élsúlyok: c(e)— lehetnek negatívak is

J H

G E

K D

F

I C

B

A L

3

4

8

4 9 6

9 0

17 8 9

3

6

2

7 3

8 6

11

5

(4)

Gráfalgoritmusok

irányított gráfok: G= (V,E)

irányított él, irányított út, irányított kör élsúlyok: c(e)— lehetnek negatívak is

J H

G E

K D

F

I C

B

A L

3

4

8

4 9 6

9 0

17 8 9

3

6

2

7 3

8 6

11

5

(5)

Gráfalgoritmusok

irányított gráfok: G= (V,E)

irányított él, irányított út, irányított kör élsúlyok: c(e)— lehetnek negatívak is

J H

G D E

F C

B

A L

3

4

8

4 9 6

9 0

17 8 9

3

6

2

7 3

8 6 5

(6)

Adjacencia-mátrix

Definíció

A G= (V,E)gráfadjacencia-mátrixa(vagyszomszédossági mátrixa) a következ ˝o – a V elemeivel indexelt – n-szer n-es mátrix:

A[i,j] =

0 ha(i,j)6∈E, 1 ha(i,j)∈E.

Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azazA[i,j] =A[j,i]teljesül mindeni,jcsúcspárra).

v4

5

1 1

1

−1 v3 3

v1 v5

5 v2

A=

0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0

(7)

Adjacencia-mátrix

Definíció

A G= (V,E)gráfadjacencia-mátrixa(vagyszomszédossági mátrixa) a következ ˝o – a V elemeivel indexelt – n-szer n-es mátrix:

A[i,j] =

0 ha(i,j)6∈E, 1 ha(i,j)∈E.

Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azazA[i,j] =A[j,i]teljesül mindeni,jcsúcspárra).

v4

5

1 1

1

−1 v3 3

v1 v5

5 v2

A=

0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0

(8)

Adjacencia-mátrix

Definíció

A G= (V,E)gráfadjacencia-mátrixa(vagyszomszédossági mátrixa) a következ ˝o – a V elemeivel indexelt – n-szer n-es mátrix:

A[i,j] =

0 ha(i,j)6∈E, 1 ha(i,j)∈E.

Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azazA[i,j] =A[j,i]teljesül mindeni,jcsúcspárra).

5

1 1

1

−1 v3 3

v1 v5

5 v2

A=

0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0

(9)

Súlyozott adjacencia-mátrix

Ha költségek is vannak =⇒

C[i,j] =

0 hai=j,

c(i,j) hai6=j és(i,j)éleG-nek,

∗ különben.

v4

5

1 1

1

−1 v3 3

v1 v5

5 v2

C=

0 5 ∗ 1 ∗

∗ 0 ∗ ∗ −1

∗ 1 0 ∗ ∗

∗ ∗ 1 0 5

∗ ∗ 3 ∗ 0

Hátránya: a mérete (n2tömbelem) teljesen független az élek számától.

(10)

Súlyozott adjacencia-mátrix

Ha költségek is vannak =⇒

C[i,j] =

0 hai=j,

c(i,j) hai6=j és(i,j)éleG-nek,

∗ különben.

v4

5

1 1

1

−1 v3 3

v1 v5

5 v2

C=

0 5 ∗ 1 ∗

∗ 0 ∗ ∗ −1

∗ 1 0 ∗ ∗

∗ ∗ 1 0 5

∗ ∗ 3 ∗ 0

Hátránya: a mérete (n2tömbelem) teljesen független az élek számától.

(11)

Súlyozott adjacencia-mátrix

Ha költségek is vannak =⇒

C[i,j] =

0 hai=j,

c(i,j) hai6=j és(i,j)éleG-nek,

∗ különben.

v 5

1 1

1

−1 v3 3

v1 v5

5 v2

C=

0 5 ∗ 1 ∗

∗ 0 ∗ ∗ −1

∗ 1 0 ∗ ∗

∗ ∗ 1 0 5

∗ ∗ 3 ∗ 0

(12)

Éllistás megadás

G= (V,E)gráf minden csúcsához egy lista tartozik.

Azi ∈V csúcs listájában tároljuk azi-b ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Azi listáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

q q q q

- - ? - 1

i

n - q q q

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella -

?

Az (i,j) élnek megfe- lel ˝o cella tartalmazza a j sorszámot, a c(i,j) súlyt (ha van), egy mu- tatót a következ ˝o cel- lára, és esetleg még egyet az el ˝oz ˝ore is. Tárigény: n +e cella, Irányítatlan gráfoknál: n+2ecella

(13)

Éllistás megadás

G= (V,E)gráf minden csúcsához egy lista tartozik.

Azi∈V csúcs listájában tároljuk azi-b ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Azi listáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

q q q q

- - ? - 1

i

n - q q q

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella -

?

Az (i,j) élnek megfe- lel ˝o cella tartalmazza a j sorszámot, a c(i,j) súlyt (ha van), egy mu- tatót a következ ˝o cel- lára, és esetleg még egyet az el ˝oz ˝ore is. Tárigény: n +e cella, Irányítatlan gráfoknál: n+2ecella

(14)

Éllistás megadás

G= (V,E)gráf minden csúcsához egy lista tartozik.

Azi∈V csúcs listájában tároljuk azi-b ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Azilistáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

q q q q

- - ? - 1

i

n - q q q

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella -

?

Az (i,j) élnek megfe- lel ˝o cella tartalmazza a j sorszámot, a c(i,j) súlyt (ha van), egy mu- tatót a következ ˝o cel- lára, és esetleg még egyet az el ˝oz ˝ore is. Tárigény: n +e cella, Irányítatlan gráfoknál: n+2ecella

(15)

Éllistás megadás

G= (V,E)gráf minden csúcsához egy lista tartozik.

Azi∈V csúcs listájában tároljuk azi-b ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Azilistáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

q q q q

- - ? - 1

i

n - q q q

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella -

?

Az (i,j) élnek megfe- lel ˝o cella tartalmazza a j sorszámot, a c(i,j) súlyt (ha van), egy mu- tatót a következ ˝o cel- lára, és esetleg még egyet az el ˝oz ˝ore is. Tárigény: n +e cella, Irányítatlan gráfoknál: n+2ecella

(16)

Éllistás megadás

G= (V,E)gráf minden csúcsához egy lista tartozik.

Azi∈V csúcs listájában tároljuk azi-b ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Azilistáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

q q q q

- - ? - 1

i

n - q q q

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella -

?

Az (i,j) élnek megfe- lel ˝o cella tartalmazza a j sorszámot, a c(i,j) súlyt (ha van), egy mu- tatót a következ ˝o cel- lára, és esetleg még egyet az el ˝oz ˝ore is.

Tárigény: n +e cella, Irányítatlan gráfoknál: n+2ecella

(17)

Éllistás megadás

G= (V,E)gráf minden csúcsához egy lista tartozik.

Azi∈V csúcs listájában tároljuk azi-b ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Azilistáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

q q q q

- - ? - 1

i

n - q q q

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella -

?

Az (i,j) élnek megfe- lel ˝o cella tartalmazza a j sorszámot, a c(i,j) súlyt (ha van), egy mu- tatót a következ ˝o cel- lára, és esetleg még egyet az el ˝oz ˝ore is.

Tárigény: n +e cella, Irányítatlan gráfoknál:

(18)

Szélességi bejárás

BFS:Breadth First Search

Meglátogatjuk az els ˝o csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább.

megvalósítás:sor(FIFO-lista)

Berakjuk az épp meglátogatott csúcsot, hogy majd a megfelel ˝o id ˝oben a szomszédaira is sort keríthessünk.

Általános lépés: vesszük a sor elején lev ˝ox csúcsot, töröljük a sorból, meglátogatjuk azokat azy szomszédait, amelyeket eddig még nem láttunk, majd ezeket azy csúcsokat a sor végére tesszük.

(19)

Szélességi bejárás

BFS:Breadth First Search

Meglátogatjuk az els ˝o csúcsot, majd ennek a csúcsnak az összes szomszédját.

Aztán ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább.

megvalósítás:sor(FIFO-lista)

Berakjuk az épp meglátogatott csúcsot, hogy majd a megfelel ˝o id ˝oben a szomszédaira is sort keríthessünk.

Általános lépés: vesszük a sor elején lev ˝ox csúcsot, töröljük a sorból, meglátogatjuk azokat azy szomszédait, amelyeket eddig még nem láttunk, majd ezeket azy csúcsokat a sor végére tesszük.

(20)

Szélességi bejárás

BFS:Breadth First Search

Meglátogatjuk az els ˝o csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább.

megvalósítás:sor(FIFO-lista)

Berakjuk az épp meglátogatott csúcsot, hogy majd a megfelel ˝o id ˝oben a szomszédaira is sort keríthessünk.

Általános lépés: vesszük a sor elején lev ˝ox csúcsot, töröljük a sorból, meglátogatjuk azokat azy szomszédait, amelyeket eddig még nem láttunk, majd ezeket azy csúcsokat a sor végére tesszük.

(21)

Szélességi bejárás

BFS:Breadth First Search

Meglátogatjuk az els ˝o csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább.

megvalósítás:sor(FIFO-lista)

Berakjuk az épp meglátogatott csúcsot, hogy majd a megfelel ˝o id ˝oben a szomszédaira is sort keríthessünk.

Általános lépés: vesszük a sor elején lev ˝ox csúcsot, töröljük a sorból, meglátogatjuk azokat azy szomszédait, amelyeket eddig még nem láttunk, majd ezeket azy csúcsokat a sor végére tesszük.

(22)

Szélességi bejárás

BFS:Breadth First Search

Meglátogatjuk az els ˝o csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább.

megvalósítás:sor(FIFO-lista)

Berakjuk az épp meglátogatott csúcsot, hogy majd a megfelel ˝o id ˝oben a szomszédaira is sort keríthessünk.

Általános lépés: vesszük a sor elején lev ˝ox csúcsot, töröljük a sorból, meglátogatjuk azokat azy szomszédait, amelyeket eddig még nem láttunk, majd ezeket azy csúcsokat a sor végére tesszük.

(23)

Szélességi bejárás

BFS:Breadth First Search

Meglátogatjuk az els ˝o csúcsot, majd ennek a csúcsnak az összes szomszédját. Aztán ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább.

megvalósítás:sor(FIFO-lista)

Berakjuk az épp meglátogatott csúcsot, hogy majd a megfelel ˝o id ˝oben a szomszédaira is sort keríthessünk.

Általános lépés: vesszük a sor elején lev ˝ox csúcsot, töröljük a sorból, meglátogatjuk azokat azy szomszédait, amelyeket eddig még nem láttunk, majd ezeket azy csúcsokat a sor végére tesszük.

(24)

Szélességi bejárás

procedureszb (v: csúcs)(∗szélességi bejárás egy komponensre∗) var

Q: csúcsokból álló sor;

x,y: csúcsok;

begin

bejárva[v] :=igaz;

sorba(v,Q);

whileQnem üresdo begin

x :=els ˝o(Q);(ez egyben törli isx-et a sorból) formindenx y E élredo

ifbejárva[y] =hamisthen begin bejárva[y] :=igaz;

(∗) sorba(y,Q)

end end

end

(25)

Szélességi bejárás

procedurebejár(∗szélességi bejárás minden komponensre∗) begin

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

forv :=1tondo

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

end

Összköltség:O(n+e)

(26)

Szélességi bejárás

procedurebejár(∗szélességi bejárás minden komponensre∗) begin

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

forv :=1tondo

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

end

Összköltség:O(n+e)

(27)

Szélességi bejárás

procedurebejár(∗szélességi bejárás minden komponensre∗) begin

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

forv :=1tondo

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

end

Összköltség:O(n+e)

(28)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

9 10 8

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(29)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el

ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

9 10 8

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(30)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs

vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

9 10 8

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(31)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el

kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

9 10 8

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(32)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el

kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

9 10 8

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(33)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

9 10 8

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(34)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

9 10 8

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(35)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

5 2

ilyen nincs ilyen nincs kereszt´el kereszt´el

(36)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(37)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

5

2 ilyen nincs

ilyen nincs

kereszt´el kereszt´el

(38)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

5

2 ilyen nincs

ilyen nincs kereszt´el

kereszt´el

(39)

Faél: megvizsgálásuk- kor még be nem járt pontba mutatnak

2

1

4

7 3

6 9 10

8 5

fa´el ilyen nincs vissza´el kereszt´el kereszt´el

Irányítatlan esetben csak faél és keresztél lehet.

fa´el 1

4 3

7 6

5

2 ilyen nincs

ilyen nincs kereszt´el kereszt´el

(40)

Összefügg ˝oség eldöntése

Kérdés

Adott G gráf összefügg ˝o-e?

procedureÖsszefügg ˝o begin

öf:=igaz;

tetsz ˝olegesv-reszb(v); foru:=1tondo

ifbejárva[u] =hamisthenöf:=hamis; return(öf);

end

Összköltség: O(n+e)

(41)

Összefügg ˝oség eldöntése

Kérdés

Adott G gráf összefügg ˝o-e?

procedureÖsszefügg ˝o begin

öf:=igaz;

tetsz ˝olegesv-reszb(v);

foru:=1tondo

ifbejárva[u] =hamisthenöf:=hamis;

return(öf);

end

Összköltség: O(n+e)

(42)

Összefügg ˝oség eldöntése

Kérdés

Adott G gráf összefügg ˝o-e?

procedureÖsszefügg ˝o begin

öf:=igaz;

tetsz ˝olegesv-reszb(v);

foru:=1tondo

ifbejárva[u] =hamisthenöf:=hamis;

return(öf);

end

Összköltség: O(n+e)

(43)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút? Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk. Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(44)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút? Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk. Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(45)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút?

Hogyan keresünk javítóutat? Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk. Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(46)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút?

Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk. Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(47)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút?

Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk. Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(48)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút?

Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk. Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(49)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút?

Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk.

Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(50)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút?

Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk.

Minden páros szinten a párosítás éleit használjuk.

Ha olyan pontba érünk, aminek nincs párja, találtunk javítóutat

(51)

Maximális párosítás keresése páros gráfban

BSZ-b ˝ol tudjuk, hogy javító utakat kell keresnünk.

Tétel

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

Kérdés

Hogyan döntjük el, hogy van-e javítóút?

Hogyan keresünk javítóutat?

Módosítjuk a szélességi keresést:

Egy párosítatlan pontból indulunk

Minden páratlan szinten a BFS lépéseit használjuk.

Minden páros szinten a párosítás éleit használjuk.

(52)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell ismételni

Összköltség: O(ne)

(53)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell ismételni

Összköltség: O(ne)

(54)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell ismételni

Összköltség: O(ne)

(55)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell ismételni

Összköltség: O(ne)

(56)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell ismételni

Összköltség: O(ne)

(57)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell ismételni

Összköltség: O(ne)

(58)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o

=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell ismételni

Összköltség: O(ne)

(59)

Maximális párosítás keresése páros gráfban

Költség:

Ha minden párosítatlan pontból építünk egy ilyen fát

=⇒alternáló erd ˝o=⇒O(e)

Ezután eggyel növelhetjük a párok számát =⇒O(n)-szer kell

(60)

Legrövidebb utak súlyozatlan gráfokban

Ha minden él hossza egy =⇒út hossza = élek száma

Szélességi kereséssel: JelentseD[v]av csúcsnak azs-t ˝ol való távolságát azs-gyöker ˝u szélességi fában.

Legyen kezdetbenD[s] :=0

azszbeljárásba tegyük be aD[y] :=D[x] +1;utasítást, miután elértük y-t.

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

Az el ˝oz ˝oek szerint módosított szélességi bejárás végeztével teljesülnek a következ ˝ok:

1. Legyen s =x1,x2, . . . ,xna csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1]≤D[x2]≤. . .≤D[xn].

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1. 3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

(61)

Legrövidebb utak súlyozatlan gráfokban

Ha minden él hossza egy =⇒út hossza = élek száma

Szélességi kereséssel: JelentseD[v]av csúcsnak azs-t ˝ol való távolságát azs-gyöker ˝u szélességi fában.

Legyen kezdetbenD[s] :=0

azszbeljárásba tegyük be aD[y] :=D[x] +1;utasítást, miután elértük y-t.

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

Az el ˝oz ˝oek szerint módosított szélességi bejárás végeztével teljesülnek a következ ˝ok:

1. Legyen s =x1,x2, . . . ,xna csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1]≤D[x2]≤. . .≤D[xn].

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1. 3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

(62)

Legrövidebb utak súlyozatlan gráfokban

Ha minden él hossza egy =⇒út hossza = élek száma

Szélességi kereséssel: JelentseD[v]av csúcsnak azs-t ˝ol való távolságát azs-gyöker ˝u szélességi fában.

Legyen kezdetbenD[s] :=0

azszbeljárásba tegyük be aD[y] :=D[x] +1;utasítást, miután elértük y-t.

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

Az el ˝oz ˝oek szerint módosított szélességi bejárás végeztével teljesülnek a következ ˝ok:

1. Legyen s =x1,x2, . . . ,xna csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1]≤D[x2]≤. . .≤D[xn].

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1. 3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

(63)

Legrövidebb utak súlyozatlan gráfokban

Ha minden él hossza egy =⇒út hossza = élek száma

Szélességi kereséssel: JelentseD[v]av csúcsnak azs-t ˝ol való távolságát azs-gyöker ˝u szélességi fában.

Legyen kezdetbenD[s] :=0

azszbeljárásba tegyük be aD[y] :=D[x] +1;utasítást, miután elértük y-t.

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

Az el ˝oz ˝oek szerint módosított szélességi bejárás végeztével teljesülnek a következ ˝ok:

1. Legyen s =x1,x2, . . . ,xna csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1]≤D[x2]≤. . .≤D[xn].

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1. 3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

(64)

Legrövidebb utak súlyozatlan gráfokban

Ha minden él hossza egy =⇒út hossza = élek száma

Szélességi kereséssel: JelentseD[v]av csúcsnak azs-t ˝ol való távolságát azs-gyöker ˝u szélességi fában.

Legyen kezdetbenD[s] :=0

azszbeljárásba tegyük be aD[y] :=D[x] +1;utasítást, miután elértük y-t.

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

Az el ˝oz ˝oek szerint módosított szélességi bejárás végeztével teljesülnek a következ ˝ok:

1. Legyen s =x1,x2, . . . ,xna csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1]≤D[x2]≤. . .≤D[xn].

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1. 3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

(65)

Legrövidebb utak súlyozatlan gráfokban

Ha minden él hossza egy =⇒út hossza = élek száma

Szélességi kereséssel: JelentseD[v]av csúcsnak azs-t ˝ol való távolságát azs-gyöker ˝u szélességi fában.

Legyen kezdetbenD[s] :=0

azszbeljárásba tegyük be aD[y] :=D[x] +1;utasítást, miután elértük y-t.

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

Az el ˝oz ˝oek szerint módosított szélességi bejárás végeztével teljesülnek a következ ˝ok:

1. Legyen s =x1,x2, . . . ,xna csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1]≤D[x2]≤. . .≤D[xn].

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1.

3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

(66)

Legrövidebb utak súlyozatlan gráfokban

Ha minden él hossza egy =⇒út hossza = élek száma

Szélességi kereséssel: JelentseD[v]av csúcsnak azs-t ˝ol való távolságát azs-gyöker ˝u szélességi fában.

Legyen kezdetbenD[s] :=0

azszbeljárásba tegyük be aD[y] :=D[x] +1;utasítást, miután elértük y-t.

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

Az el ˝oz ˝oek szerint módosított szélességi bejárás végeztével teljesülnek a következ ˝ok:

1. Legyen s =x1,x2, . . . ,xna csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor D[x1]≤D[x2]≤. . .≤D[xn].

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1.

3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

(67)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=s csúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √ D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒ Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1]. Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(68)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=s csúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √ D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒ Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1]. Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(69)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=scsúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √ D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒ Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1]. Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(70)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=scsúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √

D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒ Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1]. Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(71)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=scsúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √ D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒

Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1]. Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(72)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=scsúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √ D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒ Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1].

Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(73)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=scsúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √ D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒ Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1].

Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(74)

Tétel

1. D[x1]≤D[x2]≤. . .≤D[xn].

Bizonyítás.

A csúcsok azs=x1,x2, . . . ,xnsorrendben kerülnek bele aQsorba

=⇒ebben a sorrendben is kerülnek ki a sorból.

Hax 6=scsúcs el ˝obb van, minty =⇒apa(x)nem lehet kés ˝obb, mint apa(y), hiszen ha el ˝obb lenne,y-hoz el ˝obb eljutottunk volna.

Indukció =⇒GyökérreD[s] =0, fiaira mind nagyobb. √ D[xi] =D[apa(xi)] +1 ésD[xi+1] =D[apa(xi+1)] +1 =⇒ Ha a két apa különböz ˝o

=⇒D[apa(xi)]≤D[apa(xi+1)] =⇒D[xi]≤D[xi+1].

Ha pedig az apák megegyeznek =⇒D[xi] =D[xi+1].

(75)

Tétel

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1

Bizonyítás.

Nézzük, hogy mi történik, amikorx kikerül aQsorból, és éppen az (x,y)élet vizsgáljuk.

Ha bejárva[y] =hamis =⇒y apjax, vagyisD[y] =D[x] +1. Különbeny-t már korábban láttuk =⇒y apja el ˝obb van, mintx

=⇒D[apa(y)]≤D[x] =⇒D[y] =D[apa(y)] +1≤D[x] +1.

(76)

Tétel

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1

Bizonyítás.

Nézzük, hogy mi történik, amikorx kikerül aQsorból, és éppen az (x,y)élet vizsgáljuk.

Ha bejárva[y] =hamis =⇒y apjax, vagyisD[y] =D[x] +1.

Különbeny-t már korábban láttuk =⇒y apja el ˝obb van, mintx

=⇒D[apa(y)]≤D[x] =⇒D[y] =D[apa(y)] +1≤D[x] +1.

(77)

Tétel

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1

Bizonyítás.

Nézzük, hogy mi történik, amikorx kikerül aQsorból, és éppen az (x,y)élet vizsgáljuk.

Ha bejárva[y] =hamis =⇒y apjax, vagyisD[y] =D[x] +1.

Különbeny-t már korábban láttuk =⇒y apja el ˝obb van, mintx

=⇒D[apa(y)]≤D[x] =⇒D[y] =D[apa(y)] +1≤D[x] +1.

(78)

Tétel

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1

Bizonyítás.

Nézzük, hogy mi történik, amikorx kikerül aQsorból, és éppen az (x,y)élet vizsgáljuk.

Ha bejárva[y] =hamis =⇒y apjax, vagyisD[y] =D[x] +1.

Különbeny-t már korábban láttuk =⇒y apja el ˝obb van, mintx

=⇒D[apa(y)]≤D[x]

=⇒D[y] =D[apa(y)] +1≤D[x] +1.

(79)

Tétel

2. Ha x →y éle G-nek, akkor D[y]≤D[x] +1

Bizonyítás.

Nézzük, hogy mi történik, amikorx kikerül aQsorból, és éppen az (x,y)élet vizsgáljuk.

Ha bejárva[y] =hamis =⇒y apjax, vagyisD[y] =D[x] +1.

Különbeny-t már korábban láttuk =⇒y apja el ˝obb van, mintx

=⇒D[apa(y)]≤D[x] =⇒D[y] =D[apa(y)] +1≤D[x] +1.

(80)

Tétel

3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

Bizonyítás.

d(s,v)≤D[v] √

Legyens=y0,y1, . . .yk =v egy minimális hosszúságúG-beli irányított úts-b ˝olv-be.

=⇒az út éleire:D[y1]≤D[s] +1=1, majdD[y2]≤D[y1] +1≤2. . . D[v] =D[yk]≤k =d(s,v) =⇒ √

(81)

Tétel

3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

Bizonyítás.

d(s,v)≤D[v] √

Legyens=y0,y1, . . .yk =v egy minimális hosszúságúG-beli irányított úts-b ˝olv-be.

=⇒az út éleire:D[y1]≤D[s] +1=1, majdD[y2]≤D[y1] +1≤2. . . D[v] =D[yk]≤k =d(s,v) =⇒ √

(82)

Tétel

3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

Bizonyítás.

d(s,v)≤D[v] √

Legyens=y0,y1, . . .yk =v egy minimális hosszúságúG-beli irányított úts-b ˝olv-be.

=⇒az út éleire:D[y1]≤D[s] +1=1, majdD[y2]≤D[y1] +1≤2

. . . D[v] =D[yk]≤k =d(s,v) =⇒ √

(83)

Tétel

3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

Bizonyítás.

d(s,v)≤D[v] √

Legyens=y0,y1, . . .yk =v egy minimális hosszúságúG-beli irányított úts-b ˝olv-be.

=⇒az út éleire:D[y1]≤D[s] +1=1, majdD[y2]≤D[y1] +1≤2. . . D[v] =D[yk]≤k =d(s,v) =⇒ √

(84)

Tétel

3. D[v] =d(s,v)teljesül minden v ∈V csúcsra.

Bizonyítás.

d(s,v)≤D[v] √

Legyens=y0,y1, . . .yk =v egy minimális hosszúságúG-beli irányított úts-b ˝olv-be.

=⇒az út éleire:D[y1]≤D[s] +1=1, majdD[y2]≤D[y1] +1≤2. . . D[v] =D[yk]≤k =d(s,v) =⇒ √

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

– A döntési eljárások igazságtalanságára – egy diák pl. egyetért az elvvel, a szabállyal és a keresztülvitellel, viszont úgy gondolja, hogy azt a diákoknak

• Hatékonyabb (jobb min˝oség ˝u) párosítás és alacsonyabb költségek (nagyobb valószín

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

Ha valamelyik bejárási fában van olyan B-beli levél amit nem fed le M, akkor van egy egyértelm ˝u út ezen csúcs és egy A-beli fedetlen csúcs között (ahonnan az adott BFS

(2) Elkészítjük a G ford gráfot, melyet úgy kapunk G-b ˝ol, hogy minden él irányítását megfordítjuk. (4) Ha mindkét bejárás során minden pontot bejártunk, akkor

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,