• 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!
72
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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 2 / 17

(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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 2 / 17

(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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 3 / 17

(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).

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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 3 / 17

(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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 4 / 17

(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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 5 / 17

(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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 5 / 17

(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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 5 / 17

(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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 6 / 17

(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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 6 / 17

(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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 6 / 17

(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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 7 / 17

(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)

JAVA animáció – BFS:

http://cs.smith.edu/~thiebaut/java/graph/demo.html

(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)

JAVA animáció – BFS:

http://cs.smith.edu/~thiebaut/java/graph/demo.html

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 8 / 17

(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)

JAVA animáció – BFS:

http://cs.smith.edu/~thiebaut/java/graph/demo.html

(28)

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

visszaél keresztél faél

ilyen nincs

keresztél 2

10 3

4 5

6 7

8 9

1

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

lehet. keresztél

faél

ilyen nincs

keresztél ilyen nincs 1

7 2

10 3

4 5

6

8 9

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 9 / 17

(29)

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

visszaél keresztél faél

ilyen nincs

keresztél 2

10 3

4 5

6 7

8 9

1

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

lehet. keresztél

faél

ilyen nincs

keresztél ilyen nincs 1

7 2

10 3

4 5

6

8 9

(30)

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

visszaél keresztél faél

ilyen nincs

keresztél 2

10 3

4 5

6 7

8 9

1

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

keresztél faél

ilyen nincs

keresztél ilyen nincs 1

7 2

10 3

4 5

6

8 9

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 9 / 17

(31)

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

visszaél keresztél faél

ilyen nincs

keresztél 2

10 3

4 5

6 7

8 9

1

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

lehet. keresztél

faél

ilyen nincs

keresztél ilyen nincs 1

7 2

3 4 5

6

(32)

Ö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)

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

(33)

Ö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)

(34)

Ö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)

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

(35)

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

(36)

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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 11 / 17

(37)

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

(38)

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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 11 / 17

(39)

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

(40)

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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 11 / 17

(41)

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

(42)

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

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 11 / 17

(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.

(44)

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)

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 12 / 17

(45)

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)

(46)

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)

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 12 / 17

(47)

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

JAVA animáció:

http://www.eprisner.de/Matchings/Bipapplet.html

(48)

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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 14 / 17

(49)

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.

(50)

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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 14 / 17

(51)

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.

(52)

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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 14 / 17

(53)

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.

(54)

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.

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 14 / 17

(55)

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].

(56)

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].

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 15 / 17

(57)

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].

(58)

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].

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 15 / 17

(59)

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].

(60)

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].

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 15 / 17

(61)

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].

(62)

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].

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 15 / 17

(63)

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.

(64)

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.

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

(65)

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.

(66)

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.

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

(67)

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.

(68)

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) =⇒ √

JAVA animáció – legrövidebb út: http://www.cise.ufl.edu/ sahni/dsaaj/

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 17 / 17

(69)

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) =⇒ √

JAVA animáció – legrövidebb út: http://www.cise.ufl.edu/ sahni/dsaaj/

(70)

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) =⇒ √

JAVA animáció – legrövidebb út: http://www.cise.ufl.edu/ sahni/dsaaj/

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 17 / 17

(71)

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) =⇒ √

JAVA animáció – legrövidebb út: http://www.cise.ufl.edu/ sahni/dsaaj/

(72)

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) =⇒ √

JAVA animáció – legrövidebb út: http://www.cise.ufl.edu/ sahni/dsaaj/

Katona Gyula Y. (BME SZIT) Algoritmuselmélet 2. el ˝oadás 17 / 17

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

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,

– 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