30
Binarna stabla. Minimalna razapinjuća stabla Tomislav Bujanović Sveučilište u Zagrebu PMF-MO 1. srpnja 2016. Tomislav Bujanović Binarna stabla. Minimalna razapinjuća stabla 1. srpnja 2016. 1 / 18

Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 2: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 3: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 4: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 5: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

Š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

Page 6: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 7: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 8: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 9: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 10: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 11: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 12: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 13: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 14: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 15: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 16: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 17: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 18: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 19: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 20: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 21: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 22: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 23: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 24: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 25: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 26: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 27: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 28: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 29: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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

Page 30: Binarna stabla. Minimalna razapinjuca stabla · ako i samo ako je stablo. Dokaz(Nast.) Dokažimosadaidrugidio. NekajeG nekipovezangrafsn vrhovaipretpostavimodaG nijestablo. TadaGsadržiciklus

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