Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.)...

Preview:

Citation preview

Binarna stabla. Minimalna razapinjuća stabla

Tomislav Bujanović

Sveučilište u ZagrebuPMF-MO

1. srpnja 2016.

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 1 / 18

Sadržaj

1 Osnovne definicije uz grafove

2 Pojam stabla

3 Minimalna razapinjuća stabla (MST)

4 Literatura

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 2 / 18

Općenito o grafovima

DefinicijaGraf je uređeni par skupova (V ,E ), gdje je V skup vrhova, a E skup2-podskupova od V, koje zovemo bridovi.

DefinicijaStupanj vrha v grafa G definiramo kao broj bridova grafa G koji sadrže vrhv .

Ponekad, ako zadamo težine bridovima ili vrhovima, govorimo o težinskomgrafu.

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 3 / 18

Općenito o grafovima (II)

DefinicijaPodgraf grafa G = (V ,E ) je graf kojemu su skup vrhova i skup bridovapodskupovi od V i E , redom.

DefinicijaRazapinjući podgraf je graf oblika G ′ = (V ,E ′), gdje je E ′ ⊆ E .

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 4 / 18

Što je stablo?

DefinicijaStablo je povezan graf bez ciklusa.Binarno stablo je stablo u kojem svaki čvor ima najviše dvoje djece. U tomslučaju, razlikujemo lijevo i desno dijete.

Jedan primjer binarnog stabla:

a

b c

d e

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 5 / 18

TeoremPovezani graf s n vrhova ima barem n − 1 bridova, a točno n − 1 bridovaako i samo ako je stablo.

Dokaz.Pokažimo najprije da stablo ima n − 1 bridova. To dokazujemomatematičkom indukcijom.Ako n = 1, radi se o samo jednom čvoru, pa je očito broj bridova 0 = 1 - 1.Ako n = 2, budući da je stablo povezan graf, onda je broj bridova jednak 1.

Pretpostavimo da stablo s n − 1 vrhova ima n − 2 bridova. Neka je v list ustablu S koje sadrži n vrhova. Tada S − v ima n − 1 vrhova i ne sadržicikluse. Također, očito je S − v povezan graf, jer put u S između x , y 6= vne može prolaziti kroz v (jer je v list). Dakle, S − v je stablo. Popretpostavci S − v ima n − 2 bridova, pa S ima n − 1 brid.

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 6 / 18

TeoremPovezani graf s n vrhova ima barem n − 1 bridova, a točno n − 1 bridovaako i samo ako je stablo.

Dokaz (Nast.)Dokažimo sada i drugi dio.Neka je G neki povezan graf s n vrhova i pretpostavimo da G nije stablo.Tada G sadrži ciklus. Neka je e brid u tom ciklusu, i neka je G1 = G − e.Tada je G1 i dalje povezan. Ako nastavimo ovaj postupak, u nekomtrenutku, recimo nakon k koraka, dolazimo do stabla. Dakle, G iman − 1+ k bridova. Specijalno, ako G ima n − 1 bridova, slijedi da G nesadrži ciklus, dakle G je stablo.

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 6 / 18

DefinicijaPotpuno binarno stablo je stablo koje je građeno od n čvorova, s oznakama0, 1, . . . , n − 1, pri čemu vrijedi:

lijevo dijete čvora i je čvor 2i + 1 (ako je 2i + 1 > n − 1, tada čvornema lijevo dijete )desno dijete čvora i je čvor 2i + 2 (ako je 2i + 2 > n − 1, tada čvornema desno dijete )

Uočimo da na i-toj razini potpunog binarnog stabla ima najviše 2i−1

čvorova. Na svim razinama do tada ima ukupno 2i−1 − 1 čvorova, zai > 1. Stablo s k razina ima najviše 2k − 1 čvorova. Stablo s k − 1 razinaima najviše 2k−1 − 1 čvorova. Ako je stablo potpuno, započeta jeposljednja razina, pa vrijedi

2k−1 − 1 < n ≤ 2k − 1 (1)

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 7 / 18

KorolarNeka potpuno binarno stablo sadrži n čvorova, te neka je k visina togstabla. Tada vrijedi:

k = dlog2(n + 1)e . (2)

Dokaz.Iz (1) imamo:

2k−1 < n + 1⇒ (k − 1) log2 2 < log2(n + 1)⇒ k < log2(n + 1) + 1 (3)

n + 1 ≤ 2k ⇒ log2(n + 1) ≤ k log2 2⇒ log2(n + 1) ≤ k (4)

Iz (3) i (4) slijedi log2(n + 1) ≤ k < log2(n + 1) + 1, tj. vrijedi (2).

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 8 / 18

Primjer - visina stabla

Primjeri uporabe prethodnog korolara:Za n = 13 imamo da je visina stabla:

sage: ceil( log(13)/log(2) )4

0

1

3

7 8

4

9 10

2

5

11 12

6

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 9 / 18

Minimalna razapinjuća stabla

Minimalno razapinjuće stablo je stablo koje povezuje sve vrhove nekog(težinskog) grafa, pri čemu je ukupna suma težina svih bridova minimalna.

Sljedeća tablica sadrži popis i karakteristike najpoznatijih algoritama koji sekoriste za pronalaženje MST-a.

Algoritmi za MSTIme autora Složenost Karakteristike

Prim O(E logV ) greedyKruskal O(E logV ) greedy

Boruvka O(E logV )greedy, sve težinebridova su različite

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 10 / 18

Primov algoritam

Algorithm 1 Primov algoritam

1: inicijaliziraj stablo T s proizvoljnim čvorom grafa2: od svih bridova koji povezuju stablo T s nekim čvorom grafa koji nije u

T, odaberi onaj najmanje težine3: ponavljaj korak 2 dok T ne sadrži sve vrhove početnog grafa

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 11 / 18

Primov algoritam - primjer

Ukupna težina: 2+ 5+ 3+ 5+ 2 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 12 / 18

Primov algoritam - primjer

Ukupna težina: 2+ 5+ 3+ 5+ 2 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 12 / 18

Primov algoritam - primjer

Ukupna težina: 2+ 5+ 3+ 5+ 2 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b

d

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 12 / 18

Primov algoritam - primjer

Ukupna težina: 2+ 5+ 3+ 5+ 2 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b

d

c

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 12 / 18

Primov algoritam - primjer

Ukupna težina: 2+ 5+ 3+ 5+ 2 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b

d

c

e

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 12 / 18

Primov algoritam - primjer

Ukupna težina: 2+ 5+ 3+ 5+ 2 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b

d

c

ef

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 12 / 18

Kruskalov algoritam

Algorithm 2 Kruskalov algoritam

1: neka je F šuma koja se sastoji od čvorova stabla gdje svaki čvor pred-stavlja zasebno stablo

2: neka je S skup svih bridova u grafu3: while S je neprazan i F nije razapinjuće stablo do4: makni brid koji ima najmanju težinu u S5: ako taj brid povezuje dva stabla u F, dodaj ga u F6: end while

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 13 / 18

Kruskalov algoritam - primjer

Ukupna težina: 2+ 2+ 3+ 5+ 5 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b c

d

ef

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 14 / 18

Kruskalov algoritam - primjer

Ukupna težina: 2+ 2+ 3+ 5+ 5 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b c

d

ef

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 14 / 18

Kruskalov algoritam - primjer

Ukupna težina: 2+ 2+ 3+ 5+ 5 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b c

d

ef

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 14 / 18

Kruskalov algoritam - primjer

Ukupna težina: 2+ 2+ 3+ 5+ 5 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b c

d

ef

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 14 / 18

Kruskalov algoritam - primjer

Ukupna težina: 2+ 2+ 3+ 5+ 5 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b c

d

ef

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 14 / 18

Kruskalov algoritam - primjer

Ukupna težina: 2+ 2+ 3+ 5+ 5 = 17.

a

b c

d

ef

2

8

5

63

5

57

6

2

a

b c

d

ef

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 14 / 18

Uporabom Sage-a možemo provjeriti rezultat:

sage: from sage.graphs.spanning_tree import kruskalsage: G = Graph({’a’:{’b’:2, ’d’:5, ’f’:6}, ’b’:{’c’:8, ’d’

:6}, ’c’:{’d’:3, ’e’:5}, ’e’:{’d’:6, ’f’:2}})sage: G.weighted( True )Nonesage: E = kruskal( G, check = True )sage: E[(’a’, ’b’, 2), (’a’, ’d’, 5), (’c’, ’d’, 3), (’c’, ’e’, 5)

, (’e’, ’f’, 2)]

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 15 / 18

Dokaz korektnosti Kruskalovog algoritma

TvrdnjaDobiven podgraf je razapinjuće stablo početnog grafa.

Dokaz.Neka je T podgraf dobiven Kruskalovim algoritmom. Očito T ne možeimati ciklus, jer svaki brid koji se dodaje povezuje dva (različita) podstabla.T ne može biti nepovezan, jer bi to značilo da ne postoji brid koji bipovezao neke dvije komponente, a što bi bilo u kontradikciji spretpostavkom da je početni graf povezan.

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 16 / 18

Dokaz korektnosti Kruskalovog algoritma (II)

TvrdnjaDobiveno razapinjuće stablo je minimalno.

Dokaz.Matematičkom indukcijom dokazujemo sljedeću propoziciju P :Ako je E skup odabranih bridova u nekom koraku algoritma, tada postojiMST koji sadrži E .

Baza:Očito P vrijedi na početku jer svaki graf sadrži minimalno razapinjućestablo.

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 17 / 18

Dokaz korektnosti Kruskalovog algoritma (II)

TvrdnjaDobiveno razapinjuće stablo je minimalno.

Dokaz (Nast.)Korak:Neka je sada P istinit u nekom (ne konačnom) koraku algoritma, te neka jeT MST koji sadrži E . Ako je sljedeći odabrani brid e također u T , tada jeP točna za E + e. U suprotnom, T + e ima ciklus C i postoji brid f koji jeu C , a nije u E . Tada je T − f + e stablo, i ima istu težinu kao i T , budućida je T imao najmanju težinu, a f ima težinu koja je veća ili jednaka težiniod e. Dakle, T − f + e je MST koji sadrži F + e, pa P vrijedi.

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 17 / 18

Literatura

https://en.wikipedia.org/wiki/Prim’s algorithmhttps://en.wikipedia.org/wiki/Kruskal’s algorithmI. Nakić, "Predavanja iz Diskretne matematike", ht-tps://web.math.pmf.unizg.hr/nastava/komb/predavanja/predavanja.pdf

Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 18 / 18

Recommended