Mittelineaarsed struktuurid. Graaf. Põhialgoritmid graafidel.

Seotud dokumendid
prakt8.dvi

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3

3D mänguarenduse kursus (MTAT ) Loeng 3 Jaanus Uri 2013

lvk04lah.dvi

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

loogikaYL_netis_2018_NAIDISED.indd

ITI Loogika arvutiteaduses

IMO 2000 Eesti võistkonna valikvõistlus Tartus, aprillil a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a 2, a 3,

raamat5_2013.pdf

Treeningvõistlus Balti tee 2014 võistkonnale Tartus, 4. novembril 2014 Vastused ja lahendused 1. Vastus: 15, 18, 45 ja kõik 0-ga lõppevad arvud. Olgu

19. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Arvridade koonduvustunnused Sisukord 19 Arvridade koonduvustunnused Vahelduvat

VL1_praks6_2010k

Praks 1

Word Pro - digiTUNDkaug.lwp

Praks 1

Polünoomi juured Juure definitsioon ja Bézout teoreem Vaadelgem polünoomi kus K on mingi korpus. f = a 0 x n + a 1 x n a n 1 x

ArcGIS Online Konto loomine Veebikaardi loomine Rakenduste tegemine - esitlus

Microsoft Word - QOS_2008_Tallinn_OK.doc

DUŠINURK MILDA PAIGALDUSJUHEND 1. Enne paigaldustööde alustamist veenduge, et elektrikaablid, veetorud vms ei jääks kruviaukude alla! 2. Puhastage sei

vv05lah.dvi

Microsoft Word - 56ylesanded1415_lõppvoor

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

Mining Meaningful Patterns

Relatsiooniline andmebaaside teooria II. 6. Loeng

Eesti_Energia_avatud_turg_elektrimüük_2013_Omanike keskliit

Funktsionaalne Programmeerimine

PAIGALDUSJUHEND DUŠINURK VESTA 1. Enne paigaldustööde alustamist veenduge, et elektrikaablid, veetorud vms ei jääks kruviaukude alla! 2. Puhastage sei

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

SH_Rogaini_AjaO

HCB_hinnakiri2017_kodukale

VKE definitsioon

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

Sissejuhatus mehhatroonikasse MHK0120

Heading 1

Programmeerimiskeel APL Raivo Laanemets 17. mai a.

P2P süsteemid

Andmed arvuti mälus Bitid ja baidid

HCB_hinnakiri2018_kodukale

Microsoft PowerPoint - loeng2.pptx

Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni a.

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo

Image segmentation

Õppekava arendus

Microsoft Word - Sobitusahelate_projekteerimine.doc

efo09v2pke.dvi

Õppematerjalide esitamine Moodle is (alustajatele) seminar sarjas Lõunatund e-õppega 12. septembril 2017 õppedisainerid Ly Sõõrd (LT valdkond) ja Dian

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier

SINU UKS DIGITAALSESSE MAAILMA Ruuter Zyxel LTE3302 JUHEND INTERNETI ÜHENDAMISEKS

Projekt Kõik võib olla muusika

PowerPoint Presentation

Õppimine Anne Villems, Margus Niitsoo ja Konstantin Tretjakov

M16 Final Decision_Recalculation of MTR for EMT

Microsoft PowerPoint - Mis on EstWin.pptx

Page 1 of 6 Otsid teistmoodi eluviisi? Kommuun - uued energiasäästlikud ridaelamud Tabasalu parkmetsas! Kuigi Tallinn ja Harjumaa on uusarenduste ülek

Andmeturve

DVD_8_Klasteranalüüs

Microsoft PowerPoint - Loeng2www.ppt [Compatibility Mode]

Ruutvormid Denitsioon 1. P n Ütleme, et avaldis i;j=1 a ijx i x j ; kus a ij = a ji ; a ij 2 K ja K on korpus, on ruutvorm üle korpuse K muutujate x 1

Matemaatika ainekava 8.klass 4 tundi nädalas, kokku 140 tundi Kuu Õpitulemus Õppesisu Algebra (65 t.) Geomeetria (60 t.) Ajavaru kordamiseks (15 õppet

Praks 1

Tartu Ülikool Matemaatika-informaatikateaduskond Puhta Matemaatika Instituut Algebra õppetool Riivo Must Mõned katsed üldistada inversseid poolrühmi M

Eesti kõrgusmudel

Skriptimiskeeli, mida ei käsitletud Perl Python Visual Basic Script Edition (VBScript) MS DOS/cmd skriptid Windows PowerShell midagi eksootilisemat: G

Document number:

Diskreetne matemaatika I praktikumiülesannete kogu a. kevadsemester

PowerPoint Presentation

Algoritmid ja andmestruktuurid

4. KIRURGIA Üliõpilase andmed. Need väljad täidab üliõpilane Praktikatsükli sooritamise aeg Kirurgia praktikatsükkel Ees- ja perekonnanimi Matriklinum

PowerPoint Presentation

untitled

Tõstuksed Aiaväravad Tõkkepuud Automaatika KÄIGUUKSED Käiguuksed on paigaldatavad kõikidele sektsioonuste tüüpidele. Käiguukse saab varustada kas tava

Microsoft Word - Uudiskirja_Toimetulekutoetus docx

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

VME_Toimetuleku_piirmäärad

D vanuserühm

Lisa I_Müra modelleerimine

Pintsli otsade juurde tegemine Esiteks Looge pilt suurusega 64x64 ja tema taustaks olgu läbipaistev kiht (Transparent). Teiseks Minge kihtide (Layers)

Slide 1

laoriiulida1.ai

Itella Estonia OÜ Uuendatud EXPRESS BUSINESS DAY BALTICS PAKKIDE JA ALUSTE TRANSPORT Express Business Day Baltics paki lubatud maksimaalsed

Abiarstide tagasiside 2016 Küsimustikule vastas 137 tudengit, kellest 81 (60%) olid V kursuse ning 56 (40%) VI kursuse tudengid. Abiarstina olid vasta

Word Pro - diskmatTUND.lwp

Vaba aja sisustamise ümbermõtestamine?

MergedFile

lcs05-l3.dvi

Kobras 2015/2016 lõppvoor, benjaminid

Microsoft PowerPoint - Kindlustuskelmus [Compatibility Mode]

prakt9.dvi

Statistikatarkvara

TARTU ORIENTEERUMIS- NELJAPÄEVAKUD neljapäevak Tehvandi, 1. august Ajakava: Start avatud: Finiš suletakse: Asukoht: Võistlu

Microsoft Word - Vx610 EMV KASUTUSJUHEND.doc

(Microsoft Word - Lisa_4_2_Solibri_l\374hijuhend)

Süsteemide modelleerimine: praktikum Klassiskeemid Oleg Mürk

M16 Final Decision_Recalculation of MTR for Elisa

SEPTIKU JA IMBVÄLAJKU KASUTUS-PAIGALDUS JUHEND 2017

Septik

Võistlusülesanne Vastutuulelaev Finaal

Slide 1

Väljavõte:

Mittelineaarsed struktuurid Graaf. Põhialgoritmid graafidel.

Graaf Ainult lineaarses vormis ei ole võimalik kõiki andmeobjektide vahelisi seoseid modelleerida. Graaf on struktuur, mille abil saab modelleerida objektide hulgas paari-kaupa esinevaid suhteid või seoseid. Erijuhul võib olla ka siin tulemuseks lineaarne struktuur. Üldiselt saame aga üsna suvalise kujuga tippudest ja servadest koosneva võrgu

Ajalugu Esimese graafiteooria probleemi Königsbergi sildadest esitas ja lahendas 1736 a. Šveitsi matemaatik ja füüsik Leonhard Euler (1707-1783) Euleri tulemused jäid pikemaks ajaks unustusse ning graafe on korduvalt taasavastatud. Nii avastas need nt G. R. Kirchhoff (1824-1887) 1845 a. vooluahelate kohta käivates Kirchoffi seadustes. Graafi mõiste võttis kasutusele inglise matemaatik James Joseph Sylvester (1814-1897) 1878 a.

Königsbergi sillad Königsbergi sildade probleem oli esimene graafiprobleem (ehkki sõna graaf ei kasutatud) Pregeli jõel Königsbergis oli L. Euleri eluajal 7 silda. Probleem 1: kas lugupeetavad linnakodanikud saavad pühapäevasel jalutuskäigul ületada kõik sillad ühe korral ja jõuda koju? Probleem 2: kas kodanikud saavad planeerida jalutuskäigu nii, et iga sild ületatakse ühe korra (tagasi lähtepunkti jõudmine ei ole oluline)? Pildid järgmistel slaididel: http://et.wikipedia.org/wiki/k%c3%b6nigsbergi_sildade_probleem

Königsbergi sillad - kaart

Königsbergi sillad - graaf

Graafi definitsioone Graaf G=(V, E) on järjestatud paar mittetühjast hulgast V ja selle hulga elementide paaride hulgast E. Hulga V elemente nimetatakse graafi tippudeks ja hulga E elemente graafi servadeks, kaarteks või seosteks. Graaf (graph) koosneb tippudest (vertex, node) ja tippe ühendavatest kaartest (servadest) (edge).

Graaf Suunatud (orienteeritud) graaf (directed graph, digraph) on graaf, mille kaartel on suund, st iga kaare jaoks on määratud algusetipp ja lõputipp. Öeldakse, et graafi tipud on paari kaupa järjestatud. Suunamata (orienteerimata) graafi (undirected graph) puhul on seos kahe tipu vahel mõlemas suunas nö ühesugune (seos on sümmeetriline). See kehtib graafi kõigi servade kohta.

Tippude seotus Tee (path) ehk ahel on selline kaarte järgnevus, kus ühe kaare lõpp-punkt on järgmise kaare alguspunktiks. Kaks tippu v ja u on seotud, kui nende vahel on tee. Kaks tippu on seotud külgnevussuhtega (adjacency relation), kui ühest tipust läheb kaar teise tippu (tipud külgnevad). Kui kaar läheb tipust v tippu w, siis on tipp w tipu v naaber ehk temaga külgnev tipp.

Ahelad ja tsüklid Elementaarahel on ahel (kaarte ehk servade jada), mis ei läbi ühegi tipu üle ühe korra. Lihtahel on ahel, milles servad ei kordu. Kui ahela algus ja lõpp on samas tipus, siis on tegemist tsükliga Elementaartsükkel - elementaarahel, mis lõppeb samas tipus Lihttsükkel - lihtahel, mis lõppeb sama tipus.

Tsüklid Hamiltoni tsükkel on elementaartsükkel, mis läbib kõiki graafi tippe (üks kord). Euleri tsükkel on lihttsükkel, mis läbib kõiki graafi servi (üks kord). Sidus graaf on graaf, milles iga kahe tipu korral leidub neid tippe ühendav ahel. Ehk graaf on nö ühes tükis

Königsbergi sillad - lahendus Euleri tee (ehk Euleri ahel) graafis on tee, mis läbib graafi kõik servad ühe korra (probleem 2). Euleri tsükkel Euleri tee, mis moodustab tsükli ehk jõuab lähtetippu tagasi, olles eelnevalt läbinud kõik graafi servad ühe korra. (probleem 1). Vastavalt Euleri teoreemile esineb Euleri tsükkel parajasti siis kui graaf on sidus ja selles ei ole paarituarvulise astmega tippe. Euleri tee esineb graafis parajasti siis kui graaf on sidus ja ei sisalda rohkem kui kaht paarituarvulise astmega tippu. Tipu aste (valents) on servade arv, mille otspunktiks antud tipp on.

Atsükliline graaf Kui graafis ei ole ühtegi tsüklit (mitte ühestiki tipust ei leidu teed samasse tippu tagasi), nimetatakse graafi atsükliliseks (acyclic graph). Atsükliline suunamata graaf on oma olemuselt puu. Ta ei pruugi olla juurega puu (rooted tree). Juurega puul on fikseeritud juurtipp. Suunatud atsükliline graaf (directed acyclic graph ehk DAG) on suunatud graaf, kus puudub tsükkel. Selline graaf on oluline mitmete ülesannete lahendamisel.

Info graafis Info / objektid paiknevad graafi tippudes. Infot sisaldavad ka graafis servad, esitades seoseid tippude vahel. Seose tähendus võib olla väga erinev. Graafi servade ehk kaartega saab siduda arvud. Neid arve kutsutakse kaaludeks ning vastavat graafi kaalutud graafiks (weighted graph) e. võrguks (network). Kaalude abil saab näidata seoste tugevust, pikkust, läbilaskevõimet vms

Realisatsioon Graafide realiseerimisel on oluline hoida infot iga tipu naabertippude kohta. Selleks on kaks peamist võimalust: Külgnevusahel (adjacency-list) Külgnevusmaatriks (ka naabrusmaatriks, seosmaatriks) (adjacency-matrix) Eelistatav realisatsioon sõltub graafi iseloomust, lahendatavast ülesandest, tippude ja servade arvust jms. Eristatakse tihedaid (dense) ja hõredaid (sparse) graafe, mida iseloomustab erineva tippude ja kaarte arvu suhe. Esimestele on sobivam külgnevusmaatriks (pole liigset mälu raiskamist). Teistele pigem külgnevusahel. Mõned asjakohased joonised: https://de.wikipedia.org/wiki/adjazenzliste

Graaf 3 6 1 9 5 2 4 10 8 7

Külgnevusmaatriks

Külgnevusahel

Graafiprobleemid Kuidas jõuab kõige kiiremini Tallinnast Värskasse? Kuidas transportida kaupa kõige odavamalt erinevatelt müüjatelt erinevatele ostjatele. Kuidas korraldada tööde järjekord, et saada maja valmis kõige lühema ajaga? Kuidas suunata netiliiklus efektiivselt läbi ruuterite? Kuidas joota trükiplaadil kokku kontaktid nii, et kõik oleksid omavahel seotud, kuid seoseid oleks minimaalne arv või et lisatavad traadid oleksid minimaalse pikkusega?

Klassikalised graafiprobleemid On antud linnade ja nende vaheliste kauguste nimekiri. Milline on lühim võimalik teekond, mis läbib kõik linnad täpselt ühe korra ja jõuab algpunkti tagasi? Rändkaupmehe ülesanne (travelling salesman) Naiivse jõumeetodil lahenduse korral, leides kõikvõimalikud teekonnad, on tegemist faktoriaalse keerukusega algoritmiga. Kui tasapind on jagatud pidevateks piirkondadeks, moodustades kaardi-taolise kujundi, saab selle värvida nelja erineva värviga nii, et naaberpiirkondi ei värvita sama värvita sama värvi. Nelja värvi probleem (four-color problem / theorem)

Graafialgoritmid Graafidele on kirjeldatud palju erinevaid algoritme, mis aitavad ülesandeid lahendada. Kaks olulist üldist graafialgoritmi on laiuti otsimine ja sügavuti otsimine (sarnasus vastavate puualgoritmidega). Mõlema algoritmi sisuks on graafis kõigi tippude läbimine, kuid seda tehakse erinevas järjekorras (tegelikult midagi klassikalises mõttes ei otsita). Mitmed teised algoritmid kasutavad neid kahte põhialgoritmi.

Laiuti otsimine Laiuti otsimine (breadth-first search) on strateegia, mille abil on näiteks võimalik leida lühemaid teid. Laiuti otsimisel võetakse aluseks lähtetipp u. Leitakse kõik tipud, kuhu on võimalik jõuda tipust u ühe kaare läbimise järel (tipu u naabrid). Seejärel võetakse aluseks kõik eelmisel ringil leitud tipud ja leitakse omakorda nende naabrid. Sisuliselt tipud, mis asuvad lähtetipust kahe kaare kaugusel. Kui tipp oli juba vähema hulga kaarte läbimisega kätte saadud, siis uut pikemat teed ei fikseerita. Nii toimides läbitakse lõpuks kõik tipud ja saadakse teada kaarte arv algustipust igasse tippu.

Laiuti otsimine Algoritmi töö tulemuseks on loetelu tippudest, mis on kättesaadavad lähtetipust S alates. Lisaks on teada tee pikkus (kaarte arv) tipust S kõigisse teistesse tippudesse (mitu kaart kahe tipu vahele jääb). Tekib puukujuline struktuur (mida küll füüsiliselt üles ei ehitata), nn laiutiotsimispuu. Näide: http://en.wikipedia.org/wiki/breadth-first_search

Sügavuti otsimine Sügavuti otsimise (depth-first search) strateegia on sarnane labürindi läbimisele, kui seda vähegi süstemaatiliselt teha. Sügavuti otsimise strateegia seisneb selles, et minnakse ühte teed mööda nii (kaugele) sügavale, kui see võimalik on (st tipult tema naabrile ja sellelt omakorda tema naabrile jne). Kui tipul rohkem naabreid pole, pöördutakse eelmisesse tippu tagasi ja otsitakse teist teed. Nii jätkatakse seni, kuni leidub tippe, mida pole veel külastatud, kuid mis on algustipust kättesaadavad.

Topoloogiline sorteerimine Kui graaf on atsükliline ja orienteeritud (DAG), siis on graafi tippude vahel olemas (ja leitav) osaline järjestus. Topoloogilise sorteerimise ülesanne: leida graafi tippude lineaarne järjestus, kus iga kaar läheb nö eelneva tipu poolt järgneva tipu poole. Ehk kõigi reas olevate tipupaaride u ja v korral on tipp u eespool tippu v. Ei ole sorteerimine tavamõistes, kuid annab siiski teatud tippude järgnevuse. Nt tööde järjestamise (planeerimise) ülesanded.

Topoloogiline sorteerimine Näide slaidil 5 oleva graafi põhjal. Eellaste tabel, mille alusel sorteeritud jada moodustatakse: Kaks võimalikku järgnevust oleksid: 1 2 3 4 5 6 8 9 10 7 8 1 3 2 4 5 6 9 7 10 Loe täpsemalt pikast materjalist!!

Toesepuu Toesepuu (spanning tree) on alamgraaf (graafi osa), millesse arvatud servad moodustavad puu, ühendades samal ajal kõik graafi tipud. Servi on eemaldatud nii, et kaoksid tsüklid, ent sidusus kõigi tippude vahel säiluks. Toes ei ole üldjuhul üheselt määratud. Kui servadel on mittenegatiivsed kaalud, saab leida minimaalse toesepuu. See on toes, mille kogukaal on kõigi toespuude hulgast minimaalne. Näide Kruskali algoritmist: http://en.wikipedia.org/wiki/kruskal%27s_algorithm

Dijkstra algoritm Lühima tee leidmiseks kaalutud graafis saab kasutada Dijkstra algoritmi. Lühim tee kaalutud graafi puhul on selline tee, kus kaarte kaalude summa on väikseim (mis ei tähenda ilmtingimata vähimat kaarte arvu). Selle algoritmiga tegeleme edaspidi.