Tietorakenteet
/ syksy 2009 / Linna
Harjoitus 4, viikko 40
1. Kun binääripuu piirretään kuvaruudulle, täytyy jokaiselle solmulle laskea positio, johon se sijoitetaan. Eräs mahdollisuus voisi olla käydä solmut läpi sisäjärjestyksessä ja asettaa jokaiselle solmulle tämän järjestyksen mukainen positio. Sitten solmut piirrettäisiin tasoittain näihin positioihin.
Esim.
A
/ \
B G
/ \ / \
P R F H
/ \ \
L S J
Järjestysnumerot olisivat P:1, B:2, L:3, R:4, A:5, F:6, S:7, G:8, H:9, J:10.
Nyt käytäisiin läpi puu taso kerrallaan
ja aina taso piirrettäisiin riville järjestysnumeron mukaiseen positioon.Tuloksena olisi seuraavanlainen puu (huom:viiva (-)
tarkoittaa tyhjää).
----A
-B-----G
P--R-F--H
--L---S—-J
Tee ohjelma, jolla voisit tehdä tämän
puun tulostuksen teksti-ikkunaan. (tarvitset hieman muutoksia solmuun – lisää
siihen tämä positiotieto. Voi olla kätevää lisätä solmuun myös tieto siitä,
millä tasolla se on).
2.
a) Olkoon G = (V,E) suunnattu
graafi, missä V = {A, B, C, D} ja E = {(A,C),
(A,D), (B,C), (C,D), (D,B)}
b)Olkoon
G = (V,E) suunnattu graafi, missä V
= {A, B, C,D} ja E = {(A,A),
(A,B), (A,C), (B,A), (B,B), (B,C), (C,A), (C,B), (C,C)} (siis D:hen ei tule eikä siitä lähde yhtään kaarta).
Esitä
ylläolevat verkot käyttäen vierusmatriisia ja vieruslistoja.
3.
Suunnattu verkko on talletettu
viruslistoja käyttäen.Laadi algoritmi Isolate(A,i), joka
poistaa verkosta A kaikki solmusta I alkavat ja siihen päättyvät kaaret.
4. Seuraavat ehdot määrittelevät erään osittaisen
järjestyksen:
1<3, 1<4, 1<6, 2<4, 2<7, 3<6,
4<5, 4<6, 5<9, 7<5, 7<8, 7<10, 8<10, 9<10.
Anna
kaksi erilaista topologista järjestystä, jotka ovat tämän osittaisen
järjestyksen mukaisia. Mitkä annetuista ehdoista voitaisiin poistaa osittaisen
järjestyksen muuttumatta? Havainnollista osittaista
järjestystä verkolla.
5. Laadi algoritmi, joka muodostaa annetulle
verkolle jonkin virittävän puun. Valitse sopiva verkon ja puun esitystapa.
6. Määritellään
painotettu suuntaamaton verkko seuraavasti. Verkon solmuina ovat solmut 1, 2,
3, 4, 5, 6, 7, 8, 9 ja 10. Sivut ja niiden painot ovat (1,2)paino1, (1,3)3,
(1,4)2, (2,4)2, (2,7)2, (2,8)3, (3,4)3, (3,5)2, (4,5)1, (4,6)3, (4,8)2, (5,6)1,
(7,8)3, (7,9)3, (8,9)4, (8,10)4, (9,10)3.
Etsi
lyhin reitti solmusta 1 solmuun 10 simuloimalla Dijkstran algoritmia.
7. Sovella
Primin algoritmia tehtävän 2 verkkoon.