18
Algoritmai ir duomenų struktūros (ADS) 2 dalies 1 paskaita Saulius Ragaišis, VU MIF [email protected] 2008-04-17

Algoritmai ir duomenų struktūros ( AD S)

  • Upload
    cricket

  • View
    60

  • Download
    0

Embed Size (px)

DESCRIPTION

Algoritmai ir duomenų struktūros ( AD S). 2 dalies 1 paskaita Saulius Ragaišis , VU MIF [email protected] 200 8 - 04 - 17. Tarpinio egzamino rezultatai. Egzamino užduočių aptarimas ir darbų peržiūra (pagal pageidavimą) – po pertraukos. Atsiskaitymai. - PowerPoint PPT Presentation

Citation preview

Page 1: Algoritmai ir duomenų struktūros ( AD S)

Algoritmai ir duomenų struktūros

(ADS)

2 dalies 1 paskaita

Saulius Ragaišis, VU [email protected]

2008-04-17

Page 2: Algoritmai ir duomenų struktūros ( AD S)

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.

Page 3: Algoritmai ir duomenų struktūros ( AD S)

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.

Page 4: Algoritmai ir duomenų struktūros ( AD S)

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

Page 5: Algoritmai ir duomenų struktūros ( AD S)

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

Page 6: Algoritmai ir duomenų struktūros ( AD S)

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

Page 7: Algoritmai ir duomenų struktūros ( AD S)

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.

Page 8: Algoritmai ir duomenų struktūros ( AD S)

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)

Page 9: Algoritmai ir duomenų struktūros ( AD S)

Grafai su svoriais

Grafas su svoriais (weighted) – grafas, kurio briaunos turi skaitines reikšmes (svorius).

Page 10: Algoritmai ir duomenų struktūros ( AD S)

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ų?

Page 11: Algoritmai ir duomenų struktūros ( AD S)

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

Page 12: Algoritmai ir duomenų struktūros ( AD S)

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

Page 13: Algoritmai ir duomenų struktūros ( AD S)

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.

Page 14: Algoritmai ir duomenų struktūros ( AD S)

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)

Page 15: Algoritmai ir duomenų struktūros ( AD S)

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.

Page 16: Algoritmai ir duomenų struktūros ( AD S)

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

Page 17: Algoritmai ir duomenų struktūros ( AD S)

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.

Page 18: Algoritmai ir duomenų struktūros ( AD S)

Klausimai

?