Algoritmai ir duomenų struktūros
(ADS)
2 dalies 1 paskaita
Saulius Ragaišis, VU [email protected]
2008-04-17
Tarpinio egzamino rezultatai
Grupė Studentų Taškų Pažymys Sem1
1 24 3,07 6,83 3,08
2 23 3,23 7,17 3,23
3 24 3,25 7,21 3,24
4 23 3,35 7,48 3,37
5 20 3,26 7,20 3,24
Egzamino užduočių aptarimas ir darbų peržiūra (pagal pageidavimą) – po pertraukos.
Atsiskaitymai
Galutinis egzaminas (birželio mėn.): pagrindinai 2-os dalies teorija, bet gali būti klausimų ir iš viso kurso.
Galutinis pažymys skaičiuojamas pagal MS Excel formulę:
= ROUND(Sem1 + Prat2 + Egz + 0,5; 0)
kur Prat2 – 2 dalies užduočių atsiskaitymai (iki 2 balų)Egz – galutinio egzamino įvertinimas (iki 3 balų)
Jei kažkas nenori laikyti galutinio egzamino, turi apie tai informuoti iš anksto.
Užduočių atsiskaitymų tvarkaraštis
I (5 gr.) III (1, 2, 4 gr.) IV (3 gr.) 2 užd. 3 užd.1 2008.04.21 2008.04.16 2008.04.24 20 20
2 2008.04.28 2008.04.23 2008.04.29 20 20
3 2008.05.12 2008.04.30 2008.05.09 17 20
4 2008.05.19 2008.05.08 2008.05.16 14 20
5 2008.05.26 2008.05.15 2008.05.23 11 20
6 2008.06.02 2008.05.22 2008.05.30 8 17
7 - 2008.05.29 - 5 14
Grafai
Grafas – aibių pora (V, L). V – viršūnių (vertex) aibė, L – briaunų (edge) aibė
Briauna – atkarpa, jungianti dvi grafo viršūnes.
Pografis (subgraph) – poaibis grafo briaunų bei jų viršūnių.
Grafai (2)
Dvi viršūnės yra gretimos arba kaimyninės (adjacent), jei jos sujungtos briauna.
Viršūnės Vi ir Vj yra kaimyninės, jei egzistuoja Bk=(Vi, Vj).
Pvz.: A kaimyninės viršūnės yra B ir D.
Plokščias arba planarinis grafas – tai grafas, kuri galima nupiešti plokštumoje (bent vienu būdu) taip, kad nė viena pora briaunų nesikirstų.
Grafai (3)
Kelias (path) tarp viršūnių – briaunų seka, prasidedanti vienoje viršūnėje ir besibaigianti kitoje viršūnėje.
Paprastas kelias (simple path) – kelias, per kiekvieną jam priklausančią viršūnę einantis tik po vieną kartą. Pvz., kelias ADCBCE nėra paprastas kelias, nes per viršūnę C eina du kartus.
Ciklas (cycle) – paprastas kelias, kuris prasideda ir baigiasi toje pačioje viršūnėje. Pvz., ABCDA.
Grafai (4)
Jungus grafas (connected) – jei egzistuoja kelias tarp bet kurių viršūnių porų.
Pilnas grafas (complete) – jei yra briauna tarp kiekvienos viršūnių poros.
Aišku, kad pilnas grafas taip pat yra ir jungus, tačiau jungus grafas nebūtinai yra pilnas.
Kiek briaunų gali būti tarp 2 viršūnių?
Vi, Vj: kelias Vi Vj
Vi, Vj: B = (Vi, Vj)
Grafai su svoriais
Grafas su svoriais (weighted) – grafas, kurio briaunos turi skaitines reikšmes (svorius).
Orientuoti grafai
Lankas –briauna, turinti kryptį.
Orientuotas grafas (directed) – grafas su lankais (visos briaunos turi kryptį).
Kiek lankų gali būti tarp 2 viršūnių?
Orientuoti grafai (2)
Visi apibrėžimai, kurie buvo taikomi neorientuotiems grafams, taip pat tinka ir orientuotam grafui.
Pvz.: Orientuotas kelias yra seka lankų tarp dviejų viršūnių.
Būtina pastebėti, kad orientuotame grafe galima situacija: A yra kaimynas B, bet B – nėra A kaimynas.
Pvz.: Knygų skolinimasis: A iš B pasiskolino 100 knygų, o B iš A pasiskolino 50 knygų.
ADT Grafas
Pagrindinės operacijos su grafais kaip ADT:
Sukurti tuščią grafą.
Įdėti/išmesti viršūnę.
Įdėti/išmesti briauną tarp viršūnių V1 ir V2.
Sužinoti (rasti), ar yra kelias tarp viršūnių V1 ir V2.
Sužinoti (V1, V2) svorį.
Pakeisti (V1, V2) svorį.
Grafo realizavimas
Yra du dažniausiai naudojami grafų realizavimo būdai:
kaimynystės matrica
kaimynystės sąrašai
Abiem atvejais patogiausia įsivaizduoti, kad viršūnės numeruojamos 1, 2 ir taip toliau iki N.
Kaimynystės matrica
Kaimynystės matrica grafui be svorių su N viršūnių yra N iš N loginis masyvas A toks, kad A[i, j] yra teisingas tada ir tik tada, kai egzistuoja briauna iš viršūnės ‘i’ į viršūnę ‘j’.
Pagal susitarimą A[i, i] yra klaidingas.
Įsidėmėtina, kad kaimynystės matrica neorientuotam grafui yra simetriška, tai yra A[i, j] = A[j, i].
Neorientuotas grafas Orientuotas grafas
(simetriška matrica) (dažniausiai nesimetriška matrica)
Kaimynystės matrica (2)
Kai turim grafą su svoriais, yra patogu, kad A[i, j] būtų briaunos iš viršūnės ‘i’ į viršūnę ‘j’ svoris.
Tada A[i, j] žymima ∞, kai nėra briaunos iš viršūnės ‘i’ į viršūnę ‘j’.
Be to, įstrižainės A[i, i] reikšmės lygios 0.
Kaimynystės sąrašai
Kaimynystės sąrašas grafo iš N viršūnių, kurios numeruojamos 1, 2, …, N, susideda iš N sujungtų sąrašų.
Jei grafas yra su svoriais, tai jie saugomi kartu su viršūnę. Pvz.:
Grafo realizacijų palyginimas
Dvi dažniausiai naudojamos grafų operacijos yra:
Duotos dvi viršūnės ‘i’ ir ‘j’; rasti, ar yra briauna iš ‘i’ į ‘j’.
Rasti visas viršūnes, kurios yra kaimynės duotajai viršūnei Vi
Jei grafas yra netoli pilno grafo, tai masyvas yra efektyvesnis už sąrašą.
Jei briaunų mažai, tai lieka daug nepanaudotos vietos matricoje, kas yra minusas taupant, tuomet geriau sąrašas.
Klausimai
?
Top Related