Dijkstra algoritmusa Hujter Bálint Specmat továbbképzés, július 1.

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Dijkstra algoritmusa Hujter Bálint Specmat továbbképzés, július 1."

Átírás

1 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Dijkstra algoritmusa Hujter Bálint Specmat továbbképzés, 01. július 1. Az alábbi képeken 1 Franciország úthálózatának sematikus rajza látható. Többféle útvonal szóba jöhet két város, például Párizs és Marseille között. Természetes kérdés, hogy miként lehet ezek közül a legrövidebbet kiválasztani, összhosszúságát meghatározni. Dijkstra algoritmusa erre, és ehhez hasonló feladatok egy nagyobb családjának megoldására ad gyakorlatban is jól használható módszert. Több érv is felhozható a speciális matematika szakon való tanítása mellett. A megoldandó feladat egy természetes és valószerű probléma (gondoljunk az útvonaltervező szoftverekre). Az ismertetendő algoritmu ténylegesen jól használható a valóságközeli problémáknál a legjobb szoftverek is tipikusan ennek néhány ügyes trükkel módosított verzióit használják. A Dijkstra-algoritmus ráadásul algoritmus egyáltalán nem bonyolult, egy diák akár magától is rájöhet. Mégis több messzire vezető, például adatstruktúrákal kapcsolatos kérdés is természetesen vetődik fel a méylebb vizsgálata során. A hazai és nemzetközi programozó versenyeken is rendszeresen szerepelnek a Dijkstraalgoritmushoz kapcsolódó feladatok. Jó, ha a diákok látják, hogy ez nem csak egy infomratikai eszköz, hanem értelmes és érdekes matematikai háttere van ennek mélyebb megértése programozóként is segítheti őket. Előzetes tudás Előzetes tudásként támaszkodunk némi gráfelméleti alapiseretre (utak, séták, szélességi bejárás, irányított élek). Nem feltétel, de hasznos, ha a diákok programozni is tudnak; különösen is jó, ha gráfalgoritmusokat is kódoltak már. Érdemes az algoritmus lépésszámáról részletesen beszélni, ehhez némi algoritmuselméleti előképzettség is szükséges lehet (maximumkeresés összehasonlításokkal bináris keresés, aritmetikai műveletek algoritmizálása). 1 forrás: 1

2 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július Legrövidebb utak v v v v 6 v s v 1 t v 1.1. feladat. Hány élből áll a legrövidebb út az alábbi gráfon s és t csúcsok között? 1.1. megjegyzés. Az s és t betűjelekkel az angol source (forrás, kezdőpont) és target (célpont) elnevezésekre utalunk. Megoldás. A kérdésre könnyen megkapjuk a választ szélességi bejárással, egy legrövidebb út élből áll. A legrövidebb utak szerkezete is jól látszik: éppen akkor lesz egy st-út hosszú (azaz legrövedebb), ha minden éle egyet lefele lépő él a szélességi fában. s 1 v 1 v (t) v v v 6 v v 0(s) 1 t Hogyan változik a helyzet, ha különböző élek igénybevétele különböző költséggel járhat? (A költség többféle jellegű lehet: távolság, idő, pénz.) 1.. feladat. Az ábra egy park ösvényeinek vázlatos rajza. Minden útszakaszra felírtuk, hogy hány percig tart rajta végigsétálni. Legkevesebb hány percig tart egy s-ból t-be menő séta? (Hogyan járnánk el egy hasonló, de több csúcsú és élű gráf esetén?) v v v 6 t v 6 v v s 6 v 1

3 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Jó ötletnek tűnhet ismét a szélességi kereséssel próbálkozni. Ha a szélességi keresés sorrendjében próbálnánk kiszámolni ki az egyes csúcsok távolságát a szomszédaik távolságának segítségével, a bal oldali ábrán látható távolságokat kapnánk. Ezzel szemben a jobb oldali ábra mutat egy rövidebb összegű utat, mint amit az előbb megtaláltunk. [1] 16 [] v v 9 [] 6 1 [] v 6 t 1 [] 1 [] 11 [] v 6 v v 0 s 6 6 [1] s 6 v 1 Ezzel a módszerrel több probléma is fellép. Ha a legrövidebb út nem minimálisan sok élből áll (ld. a fenti példát), akkor ilyen módon nem fogjuk megtalálni. Ha több, ugyanannyi élből álló út megy két csúcs között, akkor sem világos, hogy hogyan válasszuk ki a legjobbat (ha pl. v -ből v 1 -be szeretnénk menni.) Megpróbálhatjuk a feladatot visszavezetni a súlyozatlan gráfok esetére is, ahol már biztonságosan működik a szélességi keresés. Cseréljünk ki minden élt egy az élsúlyának megfelelő számú (súlyozatlan) élből álló útra. Ezt a változtatást mutatja be egy egyszerűbb gráfon a következő ábrapár. Az így módosított gráfon már tudjuk futtatni a jól bevált szélességi keresést. Világos, hogy a módosított gráfban kapott legrövidebb (legkevesebb élből) álló út megfelel az eredeti gráf egy minimális összhosszúságú útjának.. Dijkstra algoritmusa Az általános esetben a következő feladatot szeretnénk megoldani..1. feladat. Adott egy G = (V, E) gráf és az élein egy l : E R + hosszúságfüggvény. Adott s, t V csúcsokra keressük a minimális összhosszúságú st utat.

4 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Megpróbáljuk az előző ötletünket használni, minden e élt cseréljünk ki egy l(e) darab élből álló útra. A felosztott gráfon (jelölje G ) futtassunk szélességi keresést. Módszerünknek vannak korlátai. Bajban vagyunk például, ha az l(e) értékek nem egészek. Amennyiben az értékek még racionálisak, felszorozva a nevezők legkisebb közös többszörösével, ez a gond még orvosolható. (Az irracionális számok esete azért így is megmarad, bár ez a gyakorlati alkalmazásokban nem jelent problémát, mivel a életből vett hosszúságadatok sosem lesznek irracionális számok.) Nehezebben feloldható problémát jelent, ha az l(e) értékek között vannak nagy számok (például a közös nevezővel való felszorzás könnyen eredményezhet ilyet). Ilyen módon a gráf élszáma, ezzel pedig algoritmusunk lépésszáma megsokszorozódik; így a feladat gyakorlati szempontból könnyen kezelhetetlenné válhat. Erről részletesebben a. megjegyzésben írunk majd. Dijkstra algoritmusa (196) elegánsan kerüli ki ezt a problémát. Az algoritmus úgy is felfogható, hogy a G -n futtatott szélességi keresést modellezzük, anélkül hogy az élek felosztásakor keletkező extra csúcsokkal egyenként foglalkoznánk. A Dijkstra-algoritmusban abban a sorrendben fogjuk átvizsgálni a G gráf csúcsait, ahogyan a G -n futtatott szélességi keresésben sorra kerülnének a nekik megfelelő csúcsok. Ha nem akarunk a felosztott G gráfra gondolni, akkor tekinthetjük úgy is, hogy az eredeti G-n folytatunk egy a kövektező elvek mentén módosított szélességi keresést: Az átvizsgálásra soron következő csúcs kiválasztásánál körültekintőbben járunk el. Egy elért (de még nem átvizsgált) csúcsnál fenntartjuk annak a lehetőségét, hogy később rövidebb odavezető utat találjunk. Edsger W. Dijkstra (190-00).1. megjegyzés. Edsger W. Dijkstra holland tudós volt, a holland nevek kiejtése pedig nem magától értetődő. Akit érdekel az eredeti kiejtés, itt meghallgathatja: org/wiki/file:dijkstra.ogg..1. A Dijkstra-algoritmus részletes ismertetése Tárolandó adatok: Az algoritmus futás egy köztes pillanatát a csúcsok állapotai és a csúcsokhoz tartozó bizonyos paraméterek értékei határozzák meg (a futás során mind a csúcs-állapotok, mind a paraméterek dinamikusan változnak). A csúcsok az alábbi állapotokban lehetnek: x L: Lezárt y N: Nem lezárt (elért) z N: Nem lezárt (nem elért) A nem lezárt csúcsok között vannak már elértek és még nem elértek, de az ezek közötti különbségtétel az algoritmus megértésében segít, a helyes futtatáshoz valójában nem szükséges. Elég csak azt tárolni, hogy a csúcsok L vagy N állapotban vannak. Egy már elért v csúcs mellett mindig tárolunk egy hozzá tartozó d(v) értéket is, melynek jelentése az eddig megtalált legrövidebb sv út hossza.

5 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Praktikus a már elért csúcsok mellett az ún. szülőjük azonosítóját is tárolni. Kezdeti állapot: Kezdetben minden csúcs N állapotban van, d(s) = 0, a többi csúcsnak pedig még nincs d(v) értéke (tekinthető úgy, hogy d(v) = ). Az algoritmus egy lépése: Az N állapotúak közül kiválasztjuk azt az u csúcsot, amire d(u) minimális (ha több ilyen is van, akkor tetszőlegesen választunk ezek közül egyet). Minden uv élre megvizsgáljuk a d(v) értékeket. Ha még nincs d(v) érték vagy d(u) + l(u, v) < d(v), akkor d(v) új értéke d(u) + l(u, v) lesz, továbbá v szülője u lesz. Ezután az uv élt töröljük a gráfból. Ha már nincs uv él, akkor u állapotát L-re változtatjuk és a következő lépésre ugrunk. Az algoritmust addig folytatjuk, amíg t csúcs L állapotú nem lesz. Nem összefüggő gráf esetén az is előfordulhat, hogy az N állapotú csúcsok egyikének sincs ( -től különböző) d(v) értéke, ilyenkor is megállunk. d(t) leálláskori értéke adja meg a legrövidebb st út hosszát... megjegyzés. Ha a Dijkstra algoritmust addig futtatjuk, amíg az összes elérhető csúcs L állapotú lesz, akkor valójában nem csak t-re, hanem az összes s-ből elérhető v csúcsra meghatározza a legrövidebb sv út hosszát... Az algoritmus futása egy konkrét gráfon 1. fázis v v v 6 t v 6 v v csúcs d(v) szülő lezárva? s 0 - L v 1 6 s N v s N s 6 v 1. fázis v v v 6 t v 6 v v csúcs d(v) szülő lezárva? s 0 - L v s L v 1 6 s N v 9 v N s 6 v 1

6 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1.. fázis v v v v 6 6 t v v csúcs d(v) szülő lezárva? s 0 - L v 1 6 s L v s L v 11 v 1 N v 9 v N v 6 1 v 1 N s 6 v 1. fázis Most jön az érdekes lépés! v v v v 6 6 t v s 6 v 1 v csúcs d(v) szülő lezárva? s 0 - L v 1 6 s L v s L v 9 v L v 11 * v 1 N v 1 v N v 6 11 v N *Holtverseny esetén választhatunk pl. lexikografikus sorrend szerint. Újabb fázisok Az -8. fázisok részletes rekonstruálását az olvasóra bízzuk. Az. fázisban a v ; a 6. fázisban a v 6 ; a. fázisban a v csúcs, míg végül a 8. fázisban a v csúcs is átvizsgálásra, majd lezárásra kerül. Érdemes még megjegyezni, hogy így a v -et előbb v -ből érjük majd el (1 távolság), és ez a következő fázisban kerül majd csak átírásra. Végállapot Végül a 8. fázisban megállapítjuk, hogy t minden éle át lett már vizsgálva korábban, t-t így lezárhatjuk, és leolvashatjuk a végeredményt. 6

7 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. v v v 6 t v 6 v s 6 v 1 v v d(v) szülő lezárva? s 0 - L v 1 6 s L v 11 v 1 L v 1 v L v s L v 9 v L v 6 11 v L v 1 v 6 L t 16 v L.. megjegyzés. A Dijkstra-algoritmus egy látványos szimulációja érhető el az alábbi címen: megjegyzés. Vegyük észre, hogy amennyiben nem állunk meg t átvizsgálásakor, hanem addig futtatjuk az algoritmust, amíg az összes csúcs lezárt nem lesz, akkor t semmilyen kitüntetett szerepet nem játszik... Az algoritmus helyességének igazolása Az algoritmust részletesen bemutattuk. Következő feladatunk, hogy igazoljuk, hogy valóban a legrövidebb st út hosszát adja tetszőleges G = (V, E) gráf és l : V R + hosszfüggvény esetén. Ezt érdemes önálló feladatként is feladni diákjainknak:.. feladat. Igazoljuk, hogy a Dijkstra-algoritmus megadja a legrövidebb st út hosszát; tetszőleges G = (V, E) gráf és l : V R + hosszfüggvény esetén. Az algoritmus helyessége a következő, teljes indukcióval igazolható állításon múlik:.. állítás. (Az algoritmus futásának tetszőleges köztes állapotában igaz, hogy:) Minden L állapotú u csúcsra d(u) a legrövidebb su út hossza. Az N állapotú v csúcsokra d(v) értéke (ha létezik) a legrövidebb olyan út hossza, ami csupa L állapotú csúcsokon át halad s-ből v-be. Bizonyítás. Az lezárt csúcsok száma szerinti teljes indukcióval bizonyítunk. Kezdetben (amikor csak s lezárt) az állítás triviális.tegyük fel, hogy n 1 lezárt csúcs esetén még igaz volt; belátjuk, hogy ez az n. csúcs lezárásával is megmarad. Az n. lezárt csúcs egy olyan v lesz, amelyhez van egy olyan uv él, ahol u L és v N, továbbá d(v) = d(u) + l(u, v) minimális az ilyen csúcspárok között. Ekkor a v-be menő legrövidebb sv út d(v) hosszú kell legyen; hiszen ha lenne egy rövidebb P sv-út, ennek az első N állapotú csúcsára d(w) < d(v) kellene, hogy teljesüljön, ellentmondva a v választásának. v átvizsgálása után igaz marad az is, hogy minden w N csúcsra d(w) a legrövidebb csak L-beli csúcsokat használó út. Valóban: ha a legrövidebb ilyen sw út nem használja v-t, akkor már korábban megtaláltuk, ha pedig használja v-t, akkor most kellett megtalálnunk... A legrövidebb utak kiolvasása Bemelegítésként érdemes meggondolni a következő feladatot:

8 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1... feladat. Legyen P = (s, v 1,..., v k, t) egy minimális összhosszúságú st-út. Bizonyítsuk be, hogy ekkor minden 1 i k esetén P i = (s, v 1,..., v i ) is egy minimális összhosszúságú sv i -út. Megoldás. Indirekt bizonyítunk. Ha lenne v i -be egy rövidebb P i út, akkor P i -hez a (v i, v i+1,..., v k ) szakaszt csatolva egy P -nél rövidebb sétát kapnánk. Ha ez a séta esetleg nem út (lehet benne csúcsismétlés, ezáltal kör), akkor a köröket kivágva belőle egy még rövidebb utat kapunk. A következő feladat ad választ arra, hogy miért volt érdemes a szülőt is tárolni az elért csúcsok mellett... feladat. Adjuk meg egy legrövidebb st-út éleit a Dijkstra-algoritmus végallapotánál látható táblázat segítségével. Megoldás. A keresett utat t-ből visszafele haladva könnyű megtalálni: vegyük t szülőjét, majd annak a szülőjét, stb. Így véges sok lépésben eljutunk s-hez, mivel s kivételével minden lezárt csúcsnak van szülője, egy korábban lezárt csúcs személyében. Így előbb-utóbb a legelőször lezárt s-hez jutunk, ráadásul kör sem keletkezhetett. Legyenek az így kapott út csúcsai sorrendben s, u 1, u,..., u k, t. Könnyen látható i szerinti indukcióval, hogy az (s, u 1,..., u i ) egy legrövidebb su i -út. v v v 6 t v 6 v s 6 v 1 v v d(v) szülő lezárva? s 0 - L v 1 6 s L v 11 v 1 L v 1 v L v s L v 9 v L v 6 11 v L v 1 v 6 L t 16 v L Valójában nem csak s-ből t-be találjuk meg a legrövidebb utakat így, hanem s-ből az összes többi csúcsba is... feladat. Legyen G = (V, E) összefüggő gráf, élein l : E R + egy hosszfüggvény és s V egy kijelölt csúcs. Futtassuk le a Dijkstra-algoritmust s kezdőpontból, amíg az összes csúcs lezárt állapotú lesz. Minden v csúcsra húzzuk be pirossal az uv irányított élt, ahol u a v csúcs Dijkstra-algoritmus eredményeként kapott szülője. Bizonyítsuk be a következőket: (a) A piros élek egy s-gyökerű ki-fenyőt alkotnak. s-ből bármelyik másik csúcsba egyértelműen lehet eljutni az (irányított) piros éleken. (b) Minden v V -re a piros élek által megadott sv út egy legrövidebb G-beli sv út. Megoldás. (a) Minden s-től különböző csúcsba pontosan 1 piros él fut be (s-be pedig egy sem). Így a piros élek száma pontosan n 1 (ahol n = V ). Lássuk be, hogy a piros élek nem alkotnak kört (irányítatlan értelemben sem). Egyfelé irányított kör nem lehet, hiszen egy piros él fejénél nagyobb d(v) érték van, mint a tövénél (másképp: a töve hamarabb lett lezárva a Dijkstra-algoritmusban, mint a feje). Ha pedig egy piros körön lenne két ellentétes körüljárási irányba mutató él, akkor lenne olyan csúcs, amibe két piros él fut be. 8

9 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Körmentes, n-1 élű gráf irányított értelemben fa. Minden irányítás rajta s-től távolodó irányba mutat. (b) Az algoritmus helyessége c. szakaszban igazából ezt is beláttuk (hiszen t semmilyen kitüntetett szerepet nem játszott... A Dijkstra-algoritmus fizikai modellje.6. feladat. Egy asztalon gyöngyök fekszenek, ezeket változatos hosszúságú madzagokkal kötjük össze. Így egy gráfszerű hálózatot kapunk. Fogjuk meg az egyik gyöngyöt és függőlegesen emeljük fel az asztalról. Milyen sorrendben fog a többi gyöngy elemelkedni az asztalról? Válasz. A gyöngyök abban a sorrendben emelkednek el, mint amilyen sorrendben a megfelelő gráfban a Dijkstra-algoritmus átvizsgálja a csúcsokat.. Irányított gráfok. Gráfok és feladatok megadási módjai.1. feladat. A következő táblázat a Bergengócia városai között közlekedő repülőgépjáratok jegyárait tartalmazza. Legkevesebb hány tallérból lehet eljutni Elemérhalomból Cecíliavásárhelyre? A B C D E F G H I Artúrbánya Bélavár Cecíliavásárhely Dénesville Elemérhalom Ferencváros Gizellarév Hugófalva Ilonahegy A feladatban a költségek nem szimmetrikusak, azaz X-ből Y -ba tipikusan nem ugyanannyiba kerül eljutni, mint Y -ból X-be. Tehát a feladatot egy irányított gráffal tudjuk modellezni. Fontos a diákokkal megbeszélni, hogy a Dijkstra-algoritmus érdemi változtatás nélkül működik irányított gráfokra. Az algoritmus lépései és a helyességre adott bizonyítás is szóról-szóra megismételhető. Ez tehát semmiféle problémát nem jelent. Másrészt, az előző feladat példát mutat a gráfok tárolásánake egyik tipikus módjára, az ún. adjacencia-mátrix ra is. Ennek előnye a jó áttekinthetőség: egy adott csúcs szomszédai könnyen kiolvashatók. Az adjacencia-mátrixnál szokványosabb mód egy gráf megadására az éllistás felsorolás. Erre is mutatunk egy példát: 9

10 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július megjegyzés. Amennyiben gráfunk ritka, azaz csúcsszámához képest kevés éle van, akkor az éllistával jóval kisebb tárhely elég. n csúcsú és m élű gráf esetén az adjacencia-mátrixban durván n adatot kell eltárolnunk. Éllistával csak m adatsorunk van, ez nagy n esetén nagyságrendekkel lehet kisebb n -nél. Az útkereső algoritmusok gyakorlati alkalmazásai során adódó hálózatok legtöbbször ritka gráfok. Az Euler-féle poliédertétel egyszerű következménye, hogy ha egy egyszerű (irányítatlan) síkgráf minden tartománya legalább csúcsú, akkor az élek száma legfeljebb n. Egy földi térkép úthálózata tehát tipikusan ritka gráfot határoz meg. A Nemes Tihamér versenyen is rendszerint éllistával történik a gráfok megadása:.. feladat (010.,. kat.,. forduló,. feladat). Futár. Egy országban N város van. Az egyik városban futárok várakoznak. Ismerjük azt is, hogy az egyes városokból mennyi idő alatt lehet elérni valamilyen járművel adott másik városokat. Készíts programot (futar.pas,... ), amely megadja, hogy minimum mennyi idő alatt jutnak el a futárok az összes városba! A futar.be szöveges állomány első sorában a városok száma (1 N 100), a járművek száma (1 M 000) és a futárok kezdő helye (1 H N) van, egy szóközzel elválasztva. A következő M sorban egy-egy járművet leíró szám szerepel, egy-egy szóközzel elválasztva: az indulás helye (1 A i N), az érkezés helye (1 B i N), valamint az út megtételéhez szükséges idő (1 T i 1000). A futar.ki szöveges állományba egyetlen sort kell írni, a minimális időt, ami alatt a futárok az összes városba elérhetnek! Példa: futar.be futar.ki Magyarázat: 1 6: 1 időegység : 10 időegység 1 : 1 időegység : időegység : időegység

11 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Elképzelhető, hogy az élhosszúságokon kívül egyéb tényezőket is figyelembe kell vennünk. A következő feladat például olyan esetre mutat példát, ahol bizonyos élek igénybevétele csak akkor engedélyezett, ha elég hamar megérkezünk a kezdőpontjukba. Szerencsére ezt a nehezítést Dijkstra-algoritmus még könnyen kezelni tudja... feladat. Szeretnénk repülővel eljutni Budapestről Vlagyivosztokba, ez persze csak átszállásokkal megoldható. Holnap 8:00-kor indulunk Budapestről, a lehető legkorábban szeretnénk Vlagyivosztokban leszállni. Tegyük fel, hogy rendelkezésre áll az összes számításba vehető légitársaság menetrendje (indulási és érkezési időpontokkal). Ahhoz, hogy egy repülőjáratot használhassunk, legalább fél órával az indulás előtt meg kell érkeznünk a megfelelő repülőtérre. Adjunk algoritmust, amely meghatározza a legkorábbi lehetséges odaérkezés időpontját... megjegyzés. Ha a diákok előképzettsége megengedi, érdemes egy-egy hasonló feladatot ténylegesen le is programoztatni a diákokkal.. A Dijkstra-algoritmus lépésszáma Lépésszámról nagyon nehéz beszélni megfelelő előképzettség nélkül. (Például: Egyáltalán mit is jelent egy lépés?) Azért a Dijkstra hatékony implementálásához kapcsolódó fő trükkök előhozhatók anélkül is, hogy a szokásos számításelméleti terminológiát ismernénk, használnánk..1. feladat. A megbízód ad majd egy 1000 csúcsú és 000 élű gráfot (éllistával), ahol minden él hossza egy-egy pozitív racionális szám. Megkapod még az s és t csúcsok sorszámait. Feladatod, hogy megmondd a legrövidebb st-út hosszát. Van egy számolósegéded, aki a következő műveleteket tudja elvégezni: össze tud adni két racionális számot, illetve két racionális számról el tudja dönteni, hogy melyik a nagyobb. Egy műveletért 1 dollárt kell fizetned a segédünknek. Összeadást és összhasonlítást magad nem végezhetsz, csak a segédeddel csináltathatod. Ingyen másolhatsz át egyszer már leírt számokat. a) Elvállalnád-e a munkát, ha millió dollárt ajánlanak érte? b) És 100 ezer dollárért? Megoldásvázlat. Az a) rész limitje alatt maradunk, ha naiv módon számoljuk össze a futás során szükséges lépéseket. Minden fázis (n db) azzal kezdődik, hogy kiválasztjuk a minimumot a már elért, de még nem lezárt csúcsok közül (n-nél kevesebb ilyen van). Ez eddig legfeljebb n összehasonlítás. Másrészt minden él vizsgálata kapcsán végzünk egy összeadást és egy összehasonlítást. Végeredményben tehát az dollárban mért költségünk felülről becsülhető így: n + m A b) rész limitjének teljesítéséhez ügyesebbnek kell lennünk. Az n -en kellene spórolnunk valamennyit. Ezt elérhetjük, ha nem végzünk minden fázis elején egy új minimumkeresést. Ehelyett, az elért csúcsokat d(v) szerint növevő sorrendben tároljuk. Ha egy új d(v) érték jelenik meg, vagy egy korábbi d(v) csökken, akkor meg tudjuk találni az a helyét a sorban log (n) összehasonlítással (ún. bináris keresséssel: először a középsővel hasonlítjük össze stb.). Modellünk sajnos túlzottan is nagyvonalú. A valóságban természetesen nem lehet ingyen adatokat másolni, az is időt (lépésszámot vesz igénybe). Márpedig, ha az előbb vázolt módon, egyszerű növekvően rendezett listában tároljuk a csúcsainkat, akkor egy-egy új elem beszúrása azt is maga után vonja, hogy a nála nagyobb elemeket eggyel hátrébb kell másolni a listában. 11

12 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Ez pedig már nem megy log (n) lépésben (helyette átlagosan n/ darab másolás kell, amivel a naiv számolással is megkapott n -es nagyságrend fog adódni a lépésszámra). Szerencsére azonban ezt a problémát is meg lehet oldani, ha az adatainkat nem egyszerű rendezett listában, hanem egy trükkösebb adatstruktúrában, ún. bináris fában tároljuk..1. Bináris fák Vázlatosan ismertetjük a bináris fák működését. A tárgyalás során a struktúrában rejlő, matematikus számára is érdekes ötletre fókuszálunk; a gyakorlati megvalósítás, egyébként távolról sem érdektelen kérdéseit meghagyjuk az informatikusoknak. A bináris fa csúcsaiban helyezkednek el a rendezendő elemeink. Minden csúcsnak legfeljebb gyereke van. Egy szülő sosem nagyobb semelyik gyermekénél. A gyökérben így mindig egy minimális elem szerepel. Végig megtartjuk a fa kiegyensúlyozott tulajdonságát is, azaz csak akkor kezdünk újabb szintet, ha az előző szint már megtelt. Így (legfeljebb) n adat esetén a szintek száma (legfeljebb) log n; egészen pontosan ennek egészrésze, ha a gyökeret 0. szintűnek tekintjük Változtassuk meg a modellünket: mostantól nemcsak az összehasonlítás és összeadás kerül pénzbe, hanem egy adat átmásolásáért is 1 dollárt kell fizetnünk (ezekre van szükségünk a Dijkstra-algoritmus futtatása során). A bináris fa előnye, hogy a következő műveletek mindegyike elvégezhető c log (n) dollárért (ahol c alkalmas, n-től független, előre rögzített konstans) a módosított modellben is: Újabb elem beszúrása. Egy elem értékének csökkentése. A minimális elem törlése. A Dijkstra-algoritmus futtatása során éppen ezekre lesz szükségünk. Egy elem beszúrásának folyamatát ábrákkal is szemléltetjük

13 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Az új elemet elsőre a fa legalsó szintjének első szabad helyére szúrjuk be. Összehasonlítjuk a szülőjével. Ha kisebb nála, akkor kicseréljük vele. Ezután az új helyen is összehasonlítjuk a szülővel, és szükség esetén kicseréljük vele Mindezt addig ismételgetjük, amíg olyan helyre nem kerül, ahol már nem kisebb a szülőjénél (legkésőbb a gyökérbe érve ilyen lesz). Könnyű látni, hogy ekkor újra egy helyesen kitöltött bináris fánk lett. Szintenként legfeljebb egyszer kellett összehasonlítanunk és két adatot kicserélnünk (egy csere másolással könnyen megvalósítható), így a log n korlát kényelmesen tartható. Ha egy már a fában levő elem értéke csökken, akkor lényegében ugyanezt kell csinálnunk, csak nem kell új elemet beszúrunk. A minimum törlésénél egy kicsit figyelmesebbnek kell lennünk. Megtehetnénk, hogy egyszerűen kitöröljük a gyökérből az ottani elemet, a helyére a kisebbik gyermeket írjuk, aztán annak a helyére az ő kisebbik gyermekét, stb. Így azonban a fa szépen kiegyensúlyozott struktúrája elromolhat, az alsóbb szinteken lukak keletkeznének (és így pl. a következő elem beszúrásánál külön kellene keresgélni, hogy hol az első szabad hely). Ezért ehelyett a következőt tesszük: a legalsó szint utolsó elemét áttesszük a gyökér helyére, és ezt lebillegtetjük: összehasonlítjuk a kisebbik gyerekével, és ha nagyobb nála, kicseréljük vele; ezt addig ismételgetjük, amíg nem lesz kisebb mindegyik gyerekénél..1. megjegyzés. A Dijkstra-algoritmus gyakorlati megvalósítása esetén persze a fában valójában nem a d(v) értékeket, hanem az egyes csúcsok azonosítóját tároljuk, illetve egy ún. pointer t, ami azon memóriacellákra mutat, ahol az adott csúcs d(v) értéke és egyéb adatai megtalálhatók. Ezáltal a lépésszámolás is némileg bonyolultabb a mi dollárszámításunknál, de továbbra is a c log n korláton belül marad, alkalmas c konstanssal... Elméleti eredmények összefoglalása Hogy némi háttérismeretet adjunk, összefoglalunk néhány elméleti eredményt is. Ehhez bevezetjük (felidézzük) a O( ) (ejtsd: nagy ordó ) jelölést pontosabban annak egy egyszerűbb, gráfalgoritmusokra használatos verzióját... definíció. Legyen f : N N N függvény. Azt mondjuk, hogy egy gráfalgoritmus lépésszáma O(f(n, m)), ha van olyan c pozitív egész szám, hogy bármilyen n csúcsú és m élű gráfra legfeljebb c f(n) lépésben lefut az algoritmus. Az O( ) jelölés a lépésszám aszimptotikus viselkedésre koncentrál, biztonságos használata némi jártasságot feltételez a határérték-számítás terén. Ezért próbáltunk eddig ennek kikerülésével dolgozni. Az új jelöléssel eredményeink így fogalmazhatók: Naivan lépésszámolással O(n ) adódik. 1

14 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Bináris fát használva, akkor O(n + m log n) elérhető. A lépésszámbecslés valójában még tovább javítható. Egy bonyolultabb adatstuktúra, az ún. Fibonacci-kupac alkalmazásával O(n log n + m) is elérhető. Bizonyos speciális gráfosztályok esetén, az algoritmus esetleges apró változtatásaival O(m) is elérhető... Néhány szó a polinomiális algoritmusokról Az eddigi becsléseinkben nem figyeltünk arra, hogy az egyes élekre írt számok mekkorák. Valójában a feladat méretét ez is befolyásolja. Nagy egyszerűsítést hajtottunk végre akkor is, amikor tetszőlegesen nagy számok másolását, összeadását és összehasonlítását engedtük egyetlen lépésben. Valószerűbb a b bites számokon végzett alapműveleteket b lépésnek tekinteni (így például az x + y összeadás nagyjából log x + log y lépést igényel). Így számolva a lépéseket, a következő általánosabb definíciót használhatjuk... definíció. f : N N függvény. Azt mondjuk, hogy egy algoritmus lépésszáma O(f(n)), ha van olyan c pozitív egész szám, amelyre bármilyen n pozitív egész esetén egy n bites inputra legfeljebb c f(n) lépésben lefut az algoritmus. Egy súlyozott gráf esetén az input mérete lényegében az l(e) értékek bitszámának összege (minden e élre). A Dijkstra-algoritmusra ebben az értelemben is áll az O(n ) becslés. Mivel itt f egy polinomfüggvény, a Dijkstra-algoritmus egy ún. polinomiális algoritmus. Elméleti matematikai szempontból a polinomiális algoritmusokra szokás hatékony algoritmusként gondolni. Egy-egy algoritmikus probléma fontos jellemzője, hogy ismert-e a megoldására polinomiális algoritmus. (A valóságban sajnos egy algoritmus polinomális volta nem mindig esik egybe a gyakorlati felhasználhatóságával.).. megjegyzés. Érdemes egy pillanatra visszatérni arra a korábbi algoritmus-ötletünkre, amikor a súlyozott gráf minden élét l(e) hosszú úttal helyettesítettük. Ha egy l(e) értéket b biten tároltunk, akkor az e élből b számú új él is keletkezhet. Így az ezen alkalmazott szélességi keresés már exponenciális futásidejű lehet. Tehát valóban szükség van Dijkstra módszerére a polinomiális futásidő eléréséhez.. A Dijkstra-algoritmus változatai.1. Dijkstra kapacitás jellegű élsúlyokra Eddig az l : E R + élsúlyokra mindig úgy tekintettünk, mint valamiféle költség (úthossz, idő, pénz) jellegű mennyiségre: minél kisebb, annál jobb. Egy élsúlyozás azonban kifejezhet kapacitás jellegű feltételt is. Ilyenkor persze tipikusan nem az a feladat, hogy egy úton az ilyen kapacitásokat összeadjuk, hanem hogy a legszűkebb útszakaszt is minél szélesebbre vegyük..1. feladat. Adott egy úthálózat térképe (egyszerű gráffal modellezve). Mindegyik útszakaszról (élről) tudjuk, hogy legfeljebb milyen széles teherautók közlekedhetnek rajta. Adjunk algoritmust, amely meghatározza, hogy legfeljebb milyen széles teherautóval lehet eljutni A-ból B-be. Bizonyítás. Megoldásvázlat Jelölje G = (V, E) a gráfot és w : E R + az egyes útszakaszok szélességét. Egy út szélessége jelentse a legkeskenyebb élének szélességét, keressük a legszélesebb st utat. Futassuk a Dijskstra algoritmust a következő módosításokkal: 1

15 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. d(v) jelentse az (eddig megtalált) legszélesebb sv út szélességét. A d(v) értékek update-elésére a korábbi szabály lépés helyett ezt vezetjük be: d(u) + l(u, v) < d(v) esetén d(u) + l(u, v) d(v) min{d(u), w(u, v)} > d(v) esetén min{d(u), w(u, v)} d(v) Az átvizsgálásra kerülő csúcs mindig a legnagyobb d(v) értékű, nem lezárt csúcs. Az eredetihez hasonló módon belátható a módosított algoritmus helyessége is. Erre az észrevételre is épült már informatikai versenyfeladat:.. feladat (011.,. kat.,. forduló 1. feladat). Egy ország N városa között különböző teherbírású utak vannak. Két város között árut szeretnénk szállítani a lehető legnagyobb kapacitású teherautóval olyan útvonalon, ahol az autó tehersúlya nem nagyobb, mint az egyes utak teherbírása. Készíts programot (szallitas.pas, szallitas.c,... ), amely adott A és B városra megadja, hogy maximum mekkora tehersúlyú teherautó közlekedhet közöttük és merre kell menni! A szallitas.be állomány első sorában a városok száma (1 N 100), a köztük levő utak száma (1 M 10000), a kezdő és a cél város sorszáma (1 A B N) van, egyegy szóközzel elválasztva. A következő M sor mindegyikében egy-egy út leírása található: azon két város sorszáma (1 sorszám N), amelyek között a kétirányú út vezet, valamint az út teherbírása (1 tehebírás 1000). Az szallitas.ki szöveges állományba sort kell írni. Az elsőbe a maximális tehersúly kerüljön, a másodikba pedig az oda vezető úton levő városok sorszáma, egy-egy szóközzel elválasztva, az útvonal sorrendjében (azaz az első sorszám biztosan A, az utolsó sorszám biztosan B legyen)! Több megoldás esetén bármelyik megadható. Példa: szallitas.be szallitas.ki.. Ha több legrövidebb út van Korábban láttunk módot egy legrövidebb út kiolvasására. egyetlen legrövidebb út van Nem biztos azonban, hogy csak.. feladat. Mi a helyzet, ha minden útszakasznak van hossza és útdíja is? Minimális útdíjköltséggel, ezen belül pedig a lehető legrövidebb úton szeretnénk eljutni S-ből T -be. Hogyan lehet megtalálni az optimális utat? 1

16 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. Kétféle megoldás is van, külön-külön mindegyik igen tanulságos. I. megoldás. Jelölje l(e) az e él hosszát, míg c(e) az útdíj-költséget. Minden e élhez rendeljük hozzá az (c(e), l(e)) számpárt. Két ilyen számpárt össze tudunk adni: (c 1, l 1 ) + (c 1, l )) = (c 1 + c, l 1 + l ). Össze is tudjuk hasonlítani ezeket: (c 1, l 1 ) < (c, l )), ha c 1 < c vagy c 1 = c és l 1 < l. Tegyük az élsúlyok helyébe ezeket a számpárokat. Összeadni és összehasonlítani tudjuk őket, tehát a Dijkstra algoritmust is tudjuk futtatni. Ennek eredményeképp egy olyan utat kapunk, amelyen a (c, l) számpárösszeg minimális, azaz a c-összeg optimális, ezek között az l-összeg is minimális..1. megjegyzés. A f(v) = (c(e), l(e)) számpárok aritmetikájára úgy is gondolhatunk, mint ha c(e) M + l számokkal dolgoznánk, ahol M egy rögzített, nagyon nagy szám. A II. megoldás a pontos élek fogalmára épít. Ezt a következő feladat kapcsán tudjuk megismerni... feladat. Súlyozatlan gráfok esetében ismert, hogy egy st út pontosan akkor legrövidebb az st-utak között, ha minden éle 1-et lép lefele a szélességi fában. Tudsz-e hasonló jellemzést adni súlyozott élek esetén? A megoldás a következő definíció... definíció. Legyen G = (V, E, l) egy irányított gráf nemnegatív élhosszfüggvényekkel ellátva (az irányítatlan eset tekinthető oda-vissza irányított gráfnak). Legyen s V rögzített és jelölje d(v) az s-ből v-be menő legrövidebb út hosszát (minden v V csúcsra). Ekkor egy uw él pontos, ha d(w) d(u) = l(uw). Nem nehéz belátni a következő állítást:.. állítás. Egy st út pontosan akkor minimális összhosszúságú, ha minden éle pontos. II. megoldás a. feldatra. Futtassuk le a Dijkstra-algoritmust c útdíjak szerint. Ezután futtassuk l szerint a Dijkstra-algoritmust, de ne az egész gráfon, hanem csak a c költség szerint pontos élek halmazán. A.1 és. feladatok kombinációja a következő feladat:.. feladat. Egy úthálózat minden szakaszának tudjuk a hosszát és az adott szakaszon megengedett maximális tömeget is. A lehető legrövidebb útón, ezen belül a lehető legnehezebb szállítmányt szeretnénk eljuttatni s-ből t-be. Hogyan lehet megtalálni az optimális utat?.. Leghosszabb utak Természetes módon merülhet fel egy diákban, hogy ha a legrövidebb utakat ilyen hatékonyan meg tudjuk keresni egy s és t pont között, akkor mi a helyzet a leghosszabb/legdrágább utakkal. Ismert-e erre is hatékony (polinomiális) algoritmus? Erre negatív válasz adható, már a súlyozatlan gráfok esetén is. Ha ugyanis lenne hatékony algoritmus erre, akkor lenne hatékony algoritmus az algoritmuselmélet egyik leghíresebb megoldatlan problémájára, a Hamilton-kör létezésének eldöntésére. Feladatat formájában is érdemes feladni a következőt: 16

17 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július feladat. Tegyük fel, hogy a LongRoad01 nevű algoritmus tetszőleges gráfban tetszőleges s, t csúcspárra megmondja, hogy hány élből áll a leghosszabb út s és t között. Csináljunk olyan algoritmust, ami egy m élű gráfra el tudja dönteni, hogy van-e benne Hamilton-kör, a LongRoad01 legfeljebb m-szeri meghívásával. Bizonyítás. Legyen uv az n csúcsú és m élű G gráfunk egy tetszőleges éle. Hagyjuk ki ideiglenesen az uv élt a gráfból és alkalmazzuk a LongRoad algoritmust u, v csúcspárra a maradék gráfban. Pontosan akkor talál n 1 élű utat az algoritmus, ha G-ben van olyan Hamilton-kör, ami uv élt tartalmazza (egyébként csak rövidebbet). Ezt G összes élére megismételve kiderül, hogy van-e Hamilton-kör a gráfban... megjegyzés. Számítástudományi nyelven éppen azt jelenti feladatunk állítása, hogy a leghosszabb út megkeresése NP-nehéz probléma. Azaz, ha lenne polinomiális algoritmus erre a feladatra, akkor egy rakat mindmáig megoldatlan (és sokak által megoldhatatlannak is tartott) algoritmuselméleti problémára lenne polinomiális algoritmusunk. Az NP-nehéz problémákról részletesebben pl. []-ben lehet olvasni. 6. Negatív költségű élek 6.1. feladat. Mutassunk példát arra, hogy ha negatív költségű éleket is megengedünk, akkor a Dijkstra algoritmus nem ad feltétlenül minimális összköltségű utat. 6.. feladat. Adott egy irányított gráf, és élein egy c : A R költségfüggvény, mely negatív értékeket is felvehet. Egy megfelelő konstanssal minden élen megnöveljük c-t úgy, hogy a kapott c nemnegatív legyen. Igaz-e, hogy ekkor c -re alkalmazva a Dijkstra-algoritmust az eredeti c költségfüggvény szerint is legrövidebb utat kapunk? (A költségfüggvény milyen módosítása nem változtat a legrövidebb utak halmazán?) Válasz. Könnyű ellenpéldát adni. A.6 feladathoz hasonlóan oldható meg a következő feladat: 6.. feladat. Tegyük fel, hogy a NegativeRoad01 nevű algoritmus tetszőleges gráfban, tetszőleges c : E R költsdégfüggvényre és s, t csúcspárra megmondja, hogy a minimális st út összköltségét. Csináljunk olyan algoritmust, ami egy m élű gráfra el tudja dönteni, hogy van-e benne Hamilton-kör, a NegativeRoad01 legfeljebb m-szeri meghívásával. A feladat azt mondja nekünk, a negatív költségfüggvényes változat általánosan NP-nehéz, mivel lehetne vele Hamilton-kört keresni. Ismert azonban egy viszonylag természetes megkötés, ami mellett már megoldható a negatív élköltségeket is megengedő eset (igaz, nem a Dijkstra-algoritmussal, hanem az ún. Bellman Ford algoritmussal): 6.1. definíció (Konzervatív súlyozás). Legyen G = (V, E) egy irányított gráf. Egy c : E R költségfüggvényt konzervatívnak nevezünk, ha nincsen olyan egyirányba irányított kör, amelyen 6.. megjegyzés. Természetes példa lehet konzervatív súlyozásra egy energiát visszatáplálni képes villamoshálózat. 1

18 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1. A konzervatív élsúlyozásokkal kapcsolatos tételekről, fogalmakról és algoritmusokról (Gallai tétele, tenziók, Bellman Ford algoritmus, Floyd Warshall algoritmus) [1]-ban részletesen lehet olvasni. A konzervatív súlyozások vizsgálata során felmerülő kérdések közül egyet jól mutat be a következő feladat: 6.. feladat. Egy svájci vasúttársaság módosítja a jegyárait. Magassági pótlékot ill. kedvezményt vezetnek be, tekintettel arra, hogy hegyre fel a villanyvonatoknak többletenergiára van szüksége, ugyanakkor lejtmenetben a modern villanyvonatok akár energiát visszatáplálni is képesek a rendszerbe. Ennek rendje a következő: ha a járat kiinduló városa h 1 méter tengerszint feletti magasságban van, míg a célállomás h méter magasságban, akkor a jegy árát h h 1 rappennel emelik ill. csökkentik, a különbség előjelének megfelelően (minden jegyár pozitív marad). Lehetséges-e, hogy a módosítás hatására A-ból B-be egy másik útvonalon lesz a legolcsóbb eljutni, mint korábban? Lehetséges-e, hogy a Dijkstra-algoritmus másik utat talál meg legrövidebbként? Megoldás. Minden st út összhossza ugyanannyival változik: h(t) h(s)-sel növekszik ill. csökken a különbség előjelétől függően. Így változatlan a legolcsóbb utak halmaza. A Dijkstra-algoritmus átvizsgálási sorrendje azonban megváltozhat. Így, ha többféle legrövidebb út is van, lehetséges, hogy másikat talál meg ezek közül. Egy példát ad erre a következő gráf: w (1000 m) s (0 m) t (0 m) 1 v (000 m) Az eredei gráfon a Dijkstra az svt utat választaná, de a magasságpótlék bevezetése után már az swt kerül kiválasztásra.. Gyakorlati alkalmazások az A*-algoritmus A legrövidebb utak megkeresése egy igazán gyakorlati probléma, gondolhatunk például a navigációs rendszerek útvonaltervezőire. Ezekben az alkalmazásokban tipikusan nem az általunk megismert Dijkstra-algoritmust, hanem annak valamilyen módosított változatát használják. A módosítások alapja általában a vizsgált hálózat sajátosságainak ügyes kihasználása. Nem javítják meg Dijkstra módszerét általánosan (nem is ismert olyan módszer, ami minden súlyozott gráfra hatékonyabban működne, mint a Dijkstra-algoritmus); de a konkrét térkép esetében mégis jobban működnek. Egy tipikus ötletek közül az egyik jól bemutatható az alábbi feladattal. A válasz még némi matematikai érdekességet is rejt magában. 100 rappen = 1 svájci frank 18

19 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július feladat. Az alábbi térkép Franciország nagyvárosai közötti közúti összeköttetéseket mutatja, az egyes összeköttetések mellé írták az adott útszakasz hosszát, kilométerben. Tegyük fel, hogy Párizsból Marseille-be szeretnénk eljutni a legrövidebb úton. Hogyan futna ezen a feladaton a Dijkstra-algoritmus? Mennyiben más ez, mint ha józan ésszel, a térképet követve próbálnánk legrövidebb utat találni? A kép forrása: http: // www. bonjourlafrance. com/ france-map/ images/ france-driving-distances. jpg A Dijkstra-algoritmus a Párizsból kiinduló éleket minden irányban megvizsgálná. Így például a keresés során eljutna az északi Lille-be, vagy a keleti Strasbourgba is, pedig a térképre rátekintve látszik, hogy ezeket értelmetlen útba ejteni. Hogyan lehetne az algoritmusunkat ettől a felesleges munkától megkímélni? Erre kínál egy lehetőséget az A*-algoritmus. 19

20 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július Az A*-algoritmus Tegyük fel, hogy van valamilyen előre ismert becslésünk minden v csúcs esetén a legrövidebb vt út összhosszára. Jelölje h : V R + azt a heurisztikus távolságfüggvényt, amelyre h(v) a (v, t) párra adott becslés értéke. Például h(v) lehet a v és t csúcsoknak megfelelő városok légvonalbeli távolsága. A szokásos módon, egy már elért csúcsra jelölje d(v) az eddig megtalált legrövidebb sv út hosszát. Tekintsük a következő összegeket minden csúcsra: f(v) = d(v) + h(v). Az A*-algoritmusban a Dijkstra-algoritmust módosítjuk a következőképpen: a soron következő csúcsot nem a d(v) hanem az f(v) értékek alapján határozzuk meg: a következő átvizsgálandó mindig egy minimális f(v) értékű (nem lezárt) csúcs. Leállíthatjuk az algoritmust, ha már minden olyan csúcs le van zárva, aminek aktuális f(v) értéke kisebb az aktuális d(t) értéknél; azokat a csúcsokat, amelyeket eddig nem zártunk le, később sem fogjuk átvizsgálni. Könnyű példát adni olyan gráfra és h függvényre, amikor ez a módosítás elrontja a Dijkstraalgoritmust, az új változat nem találja meg a legrövidebb sv utakat. A hiba egyik oka az, hogy egy v csúcs lezárásakor még nem biztos, hogy a legrövidebb sv utat ismerjük. A módosított átvizsgálási sorrend miatt elképzelhető, hogy egy későbbi u csúcsból találunk egy olyan uv élt, amelyre d(u) + l(u, v) < d(v) teljesül. Ilyenkor v csúcs d(v) értékét javítsuk ki, és tegyük vissza N állapotba! Sajnos még mindig nem garantálható, hogy az optimális sv utat fogjuk megtalálni. Azonban, ha h teljesít egy viszonylag természetes elvárást, akkor az A* biztosan a legjobb st utat fogja megtalálni... feladat. Bizonyítsd be, hogy ha a h : V R + optimista, azaz h(v) alulról becsüli a legrövidebb vt út hosszát minden v V esetén, akkor az A*-algoritmus egy optimális utat talál meg. Megoldás. Jelölje minden v csúcsra d (v) a legrövidebb (minimális l-összegű) sv út hosszát. Legyen sv 1 v... v k t egy legrövidebb st-út. A. feladat alapján ez minden v i -be is egy legrövidebb utat határoz meg. Azt állítjuk, hogy az út minden csúcsa lezárásra kerül, méghozzá az optimális d (v i ) értékkel. (Innen egyből következik a feladat állítása.) i szerinti indukcióval bizonyítunk. i = 0 (v 0 = s) eset triviáis. Tegyük fel, hogy v i 1 -re már beláttuk, következik v i. Tekintsük az algoritmus leállásának pillanatát (tehát amikor t csúcsot lezártuk). A feltevésünk szerint v i 1 lezárásra került d (v i 1 ) értékkel. v i 1 utolsó átvizsgálásakor a v i 1 v i élt is néztük, tehát v i -t is el kellett érjük d (v i ) hosszúságú (azaz optimális) úton. Ez azt is jelenti, hogy az algoritmus leállásának pillanatában teljesül: f(v i ) = d (v i ) + h(v i ) d (t). Itt az utolsó azért igaz, mert h(v i ) az optimista tulajdonság miatt alulról becsüli a v i v i+1... v k t út hosszát, ami éppen d (t) d (v i ). A kapott f(v i ) < d (t) azt jelenti, hogy az algoritmus leállásakor v i -nek is lezárva kell lennie a d (v i ) értékkel. Az esetleges visszanyitások miatt egy csúcs többször is átvizsgálásra kerülhet, így az A* akár lassabb is lehet, mint a jó öreg Dijkstra-algoritmus. Szerencsére egy másik h-ra vonatkozó elvárás ezt az eshetőséget is kizárja. 0

21 Hujter Bálint: Dijkstra algoritmusa SpecMat továbbképzés, 01. július 1... feladat. Bizonyítsd be, hogy ha a h : V R + monoton, azaz minden uv élre: h(u) l(u, v) + h(v), akkor az A*-algoritmus minden csúcsot legfeljebb egyszer vizsgál át. Megoldás. Azt kell meggondolni, hogy sosem kerül sor egy már lezárt csúcs visszanyitására. Indirekt tegyük fel, hogy v csúcsot vissza kell nyitnunk, méghozza egy u szomszédjának átvizsgálásakor. Erre azért kerülhet sor, mert az aktuális d értékekkel d(u) + l(u, v) < d(v). A monotonitás miatt h(u) l(u, v) h(v). Összeadva a két egyenlőtlenséget: f(u) = d(u) + l(u, v) + h(u) l(u, v) < d(v) + h(v) = f(v). Ez ellentmond annak, hogy v-t már az u mostani vizsgálata előtt átvizsgáltuk egyszer..1. megjegyzés. Amennyiben a gráf csúcsai városok, l(u, v) a közúti távolság és h(v) a légvonalbeli vt távolság, akkor h optimista és monoton is... megjegyzés. Valójában az A*-algoritmus név egyszerre több, csak apróságokban különböző algoritmust takar, mi ezek közül választottunk egyet. További rokonai a B* és D* keresési algoritmusok. Hivatkozások [1] Frank András, Király Tamás: Operációkutatás, Egyetemi jegyzet (01), letölthető: [] Lovász László: Algoritmusok bonyolultsága, Egyetemi jegyzet (01), letölthető: [] ELTE Egerváry Jenő Kutatócsoport: Operációkutatás példatár (01), letölthető: [] [] [6] Nemes Tihamér Országos Informatikai Tanulmányi Verseny archívuma (Programozás kategória) 1

Dijkstra algoritmusa

Dijkstra algoritmusa Budapesti Fazekas és ELTE Operációkutatási Tanszék 201. július 1. Legrövidebb utak súlyozatlan esetben v 4 v 3 Feladat Hány élből áll a legrövidebb út ezen a gráfon az s és t csúcsok között? v v 6 v 7

Részletesebben

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y. Algoritmuselmélet Legrövidebb utak, Bellmann-Ford, Dijkstra Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 3. előadás Katona Gyula Y. (BME

Részletesebben

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA 26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma

Részletesebben

Algoritmuselmélet 7. előadás

Algoritmuselmélet 7. előadás Algoritmuselmélet 7. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 11. ALGORITMUSELMÉLET 7. ELŐADÁS 1 Múltkori

Részletesebben

A számítástudomány alapjai

A számítástudomány alapjai A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Legszélesebb utak Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y. Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefüggőség, párosítás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2. előadás

Részletesebben

Gráfalgoritmusok ismétlés ősz

Gráfalgoritmusok ismétlés ősz Gráfalgoritmusok ismétlés 2017. ősz Gráfok ábrázolása Egy G = (V, E) gráf ábrázolására alapvetően két módszert szoktak használni: szomszédsági listákat, illetve szomszédsági mátrixot. A G = (V, E) gráf

Részletesebben

22. GRÁFOK ÁBRÁZOLÁSA

22. GRÁFOK ÁBRÁZOLÁSA 22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is

Részletesebben

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él. Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb

Részletesebben

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8. Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás

Részletesebben

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2

Részletesebben

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y. Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1. Nagyságrendek Kiegészítő anyag az Algoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: Algoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 018. február 1. Az O, Ω, Θ jelölések Az algoritmusok

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.

Részletesebben

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. 5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. Optimalis feszítőfák Egy összefüggő, irányítatlan

Részletesebben

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK 30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK A gráfos alkalmazások között is találkozunk olyan problémákkal, amelyeket megoldását a részekre bontott gráfon határozzuk meg, majd ezeket alkalmas módon teljes megoldássá

Részletesebben

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék További forgalomirányítási és szervezési játékok 1. Nematomi forgalomirányítási játék A forgalomirányítási játékban adott egy hálózat, ami egy irányított G = (V, E) gráf. A gráfban megengedjük, hogy két

Részletesebben

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y. Algoritmuselmélet Bonyolultságelmélet Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

SzA II. gyakorlat, szeptember 18.

SzA II. gyakorlat, szeptember 18. SzA II. gyakorlat, 015. szeptember 18. Barátkozás a gráfokkal Drótos Márton drotos@cs.bme.hu 1. Az előre megszámozott (címkézett) n darab pont közé hányféleképp húzhatunk be éleket úgy, hogy egyszerű gráfhoz

Részletesebben

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Algoritmusok Tervezése 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás Mi az algoritmus? Lépések sorozata egy feladat elvégzéséhez (legáltalánosabban) Informálisan algoritmusnak nevezünk bármilyen jól definiált

Részletesebben

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11. 11. gyakorlat Branch-and-Bound a korlátozás és szétválasztás módszere 1. Az egészértéketű programozás 1.1. Bevezető Bizonyos feladatok modellezése kapcsán előfordulhat olyan eset, hogy a megoldás során

Részletesebben

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,

Részletesebben

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} Mélységi keresés Ez az algoritmus a gráf pontjait járja be, eredményképpen egy mélységi feszítőerdőt ad vissza az Apa függvény által. A pontok bejártságát színekkel kezeljük, fehér= érintetlen, szürke=meg-

Részletesebben

Általános algoritmustervezési módszerek

Általános algoritmustervezési módszerek Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztás

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. ősz 1. Diszkrét matematika 2.C szakirány 2. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Osztott algoritmusok

Osztott algoritmusok Osztott algoritmusok A benzinkutas példa szimulációja Müller Csaba 2010. december 4. 1. Bevezetés Első lépésben talán kezdjük a probléma ismertetésével. Adott két n hosszúságú bináris sorozat (s 1, s 2

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Dr. Kallós Gábor 2014 2015 1 Az Ordó jelölés Azt mondjuk, hogy az f(n) függvény eleme az Ordó(g(n)) halmaznak, ha van olyan c konstans (c

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

Gráfelméleti alapfogalmak

Gráfelméleti alapfogalmak 1 Gráfelméleti alapfogalmak Gráf (angol graph= rajz): pontokból és vonalakból álló alakzat. pontok a gráf csúcsai, a vonalak a gráf élei. GRÁ Irányítatlan gráf Vegyes gráf Irányított gráf G H Izolált pont

Részletesebben

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott . Minimális súlyú feszítő fa keresése Képzeljük el, hogy egy útépítő vállalat azt a megbízást kapja, hogy építsen ki egy úthálózatot néhány település között (a települések között jelenleg nincs út). feltétel

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16. Bevezetés a Számításelméletbe II. 6. előadás Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem Számítástudományi és Információelméleti Tsz. I. B. 7/b sali@cs.bme.hu 004 március 6. A kritikus út

Részletesebben

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. 3. Előadás

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. 3. Előadás Gráfelmélet/Diszkrét Matematika MSc hallgatók számára 3. Előadás Előadó: Hajnal Péter Jegyzetelő: Pék Máté 2009. szeptember 21. 1. Folyamok 1.1. Definíció. G = (V, E, K, B) irányított gráf, ha e! v : ekv

Részletesebben

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12. Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI 19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI Ebben a fejezetben aszimptotikus (nagyságrendi) alsó korlátot adunk az összehasonlításokat használó rendező eljárások lépésszámára. Pontosabban,

Részletesebben

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

24. MINIMÁLIS KÖLTSÉGŰ UTAK I. 24. MINIMÁLIS KÖLTSÉGŰ UTAK I. Az útvonaltervezés az egyik leggyakrabban végrehajtott eljárása a gráfok alkalmazásai körében. A feladat például a közlekedésben jelentkezik. A gráfot itt az a térkép jelenti,

Részletesebben

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él. Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

file:///d:/okt/ad/jegyzet/ad1/b+fa.html 1 / 5 2016. 11. 30. 12:58 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes

Részletesebben

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13. Algoritmuselmélet NP-teljes problémák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 13. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. 2018. szeptember 21. 1. Diszkrét matematika 2. 2. előadás Fancsali Szabolcs Levente nudniq@cs.elte.hu www.cs.elte.hu/ nudniq Komputeralgebra Tanszék 2018. szeptember 21. Gráfelmélet

Részletesebben

OKTV 2005/2006 döntő forduló

OKTV 2005/2006 döntő forduló Informatika I. (alkalmazói) kategória feladatai OKTV 2005/2006 döntő forduló Kedves Versenyző! A megoldások értékelésénél csak a programok futási eredményeit vesszük tekintetbe. Ezért igen fontos a specifikáció

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Javító és majdnem javító utak

Javító és majdnem javító utak Javító és majdnem javító utak deficites Hall-tétel alapján elméletileg meghatározhatjuk, hogy egy G = (, ; E) páros gráfban mekkora a legnagyobb párosítás mérete. Ehhez azonban első ránézésre az összes

Részletesebben

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 2014/2015 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató INFORMATIKA II. (programozás) kategória Kedves Versenyző! A megoldások értékelésénél

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat

Részletesebben

Arany Dániel Matematikai Tanulóverseny 2016/2017-es tanév Kezdők III. kategória I. forduló

Arany Dániel Matematikai Tanulóverseny 2016/2017-es tanév Kezdők III. kategória I. forduló Bolyai János Matematikai Társulat Arany Dániel Matematikai Tanulóverseny 016/017-es tanév Kezdők I II. kategória II. forduló Kezdők III. kategória I. forduló Megoldások és javítási útmutató 1. Egy kört

Részletesebben

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének. Függvények határértéke és folytonossága Egy f: D R R függvényt korlátosnak nevezünk, ha a függvényértékek halmaza korlátos. Ha f(x) f(x 0 ) teljesül minden x D esetén, akkor x 0 -at a függvény maximumhelyének

Részletesebben

17. A 2-3 fák és B-fák. 2-3 fák

17. A 2-3 fák és B-fák. 2-3 fák 17. A 2-3 fák és B-fák 2-3 fák Fontos jelentősége, hogy belőlük fejlődtek ki a B-fák. Def.: Minden belső csúcsnak 2 vagy 3 gyermeke van. A levelek egy szinten helyezkednek el. Az adatrekordok/kulcsok csak

Részletesebben

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3 Síkgráfok Kuratowski-tétel: egy gráf akkor és csak akkor síkba rajzolható gráf, ha nincs olyan részgráfja, ami a K 5 -el, vagy a K 3,3 -altopologikusan izomorf (homeomorf). Euler síkgráfokra vonatkozó

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 4. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba Hibaforrások Hiba A feladatok megoldása során különféle hibaforrásokkal találkozunk: Modellhiba, amikor a valóságnak egy közelítését használjuk a feladat matematikai alakjának felírásához. (Pl. egy fizikai

Részletesebben

Az optimális megoldást adó algoritmusok

Az optimális megoldást adó algoritmusok Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.

Részletesebben

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: ( HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör Teljes gráf: Páros gráf, teljes páros gráf és Hamilton kör/út Hamilton kör: Minden csúcson áthaladó kör Hamilton kör Forrás: (http://www.math.klte.hur/~tujanyi/komb_j/k_win_doc/g0603.doc

Részletesebben

Adatbázisok elmélete 12. előadás

Adatbázisok elmélete 12. előadás Adatbázisok elmélete 12. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2005 ADATBÁZISOK ELMÉLETE

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. Mérai László előadása alapján Készítette: Nagy Krisztián 1. előadás Gráfok halmaza, gráf, ahol a csúcsok halmaza, az élek illesztkedés reláció: illesztkedik az élre, ha ( -él illesztkedik

Részletesebben

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex A sorozat fogalma Definíció. A természetes számok N halmazán értelmezett függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet a valós számok halmaza, valós számsorozatról beszélünk, mígha az

Részletesebben

HÁLÓZAT Maximális folyam, minimális vágás

HÁLÓZAT Maximális folyam, minimális vágás HÁLÓZAT Maximális folyam, minimális vágás HÁLÓZAT informálisan Hálózat Irányított gráf Mindegyik élnek adott a (nemnegatív) kapacitása Spec csúcsok: Forrás (Source): a kiindulási pont csak ki élek Nyelő

Részletesebben

Megoldások 7. gyakorlat Síkgráfok, dualitás, gyenge izomorfia, Whitney-tételei

Megoldások 7. gyakorlat Síkgráfok, dualitás, gyenge izomorfia, Whitney-tételei Számítástudomány alapjai Megoldások 7. gyakorlat Síkgráfok, dualitás, gyenge izomorfia, Whitney-tételei 90. A konvex poliéder egyes lapjait határoló élek száma legyen k! Egy konvex poliéder egy tetszőleges

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy. Bevezetés 1. Definíció. Az alsó egészrész függvény minden valós számhoz egy egész számot rendel hozzá, éppen azt, amely a tőle nem nagyobb egészek közül a legnagyobb. Az alsó egészrész függvény jele:,

Részletesebben

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit. 2. A VALÓS SZÁMOK 2.1 A valós számok aximómarendszere Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit. 1.Testaxiómák R-ben két művelet van értelmezve, az

Részletesebben

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Összefoglaló Gráfok / EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Adott a G = (V, E) gráf ahol a V a csomópontok, E az élek halmaza E = {(x, y) x, y V, x y (nincs hurokél) és (x, y) = (y, x)) Jelölések:

Részletesebben

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport Időjárási csúcsok Ismerjük N napra a déli hőmérséklet értékét. Lokálisan melegnek nevezünk egy napot (az első és az utolsó kivételével), ha az aznap mért érték nagyobb volt a két szomszédjánál, lokálisan

Részletesebben

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} Példa Adott egy n n-es sakktábla. Az (1,1) mezőn áll egy huszár. Határozzuk meg eljuthat -e az (u,v) mezőre, ha igen adjunk meg egy legkevesebb lépésből álló utat! Adjunk algoritmust, ami megoldja a feladatot.

Részletesebben

Algoritmuselmélet zárthelyi (BSc képzés) április 24.

Algoritmuselmélet zárthelyi (BSc képzés) április 24. Algoritmuselmélet zárthelyi (BSc képzés) 009. április.. Tekintsük az f (n) = 009 n! és f (n) = 00 (n )! függvényeket. Igaz-e, hogy a) f = O(f ) b) f = O(f ) c) f = Ω(f ) d) f = Ω(f )?. Dijkstra-algoritmussal

Részletesebben

A matematikai feladatok és megoldások konvenciói

A matematikai feladatok és megoldások konvenciói A matematikai feladatok és megoldások konvenciói Kozárné Fazekas Anna Kántor Sándor Matematika és Informatika Didaktikai Konferencia - Szatmárnémeti 2011. január 28-30. Konvenciók Mindenki által elfogadott

Részletesebben

Gráfokkal megoldható hétköznapi problémák

Gráfokkal megoldható hétköznapi problémák Eötvös Loránd Tudományegyetem Természettudományi Kar Gráfokkal megoldható hétköznapi problémák Szakdolgozat Készítette Vincze Ágnes Melitta Konzulens Héger Tamás Budapest, 2015 Tartalomjegyzék Bevezetés

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 3 III. MEGFELELTETÉSEk, RELÁCIÓk 1. BEVEZETÉS Emlékeztetünk arra, hogy az rendezett párok halmazát az és halmazok Descartes-féle szorzatának nevezzük. Más szóval az és halmazok

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 201/2014 tanévi Országos Középiskolai Tanulmányi Verseny döntő forduló javítási-értékelési útmutató INFORMATIKA II. (programozás) kategória 1. feladat: Metró (20 pont) Egy metróállomásra

Részletesebben

Javítókulcs, Válogató Nov. 25.

Javítókulcs, Válogató Nov. 25. Javítókulcs, Válogató 2016. Nov. 25. 1. Az A, B, C pontok által meghatározott hegyesszögű háromszögben az egyes csúcsokhoz tartozó magasságvonalak talppontjait jelölje rendre T A, T B és T C. A T A T B

Részletesebben

Nagyordó, Omega, Theta, Kisordó

Nagyordó, Omega, Theta, Kisordó A növekedés nagyságrendje, számosság Logika és számításelmélet, 6. gyakorlat 2009/10 II. félév Számításelmélet (6. gyakorlat) A növekedés nagyságrendje, számosság 2009/10 II. félév 1 / 1 Nagyordó, Omega,

Részletesebben

Mesterséges Intelligencia MI

Mesterséges Intelligencia MI Mesterséges Intelligencia MI Problémamegoldás kereséssel ha sötétben tapogatózunk Dobrowiecki Tadeusz Eredics Péter, és mások BME I.E. 437, 463-28-99 dobrowiecki@mit.bme.hu, http://www.mit.bme.hu/general/staff/tade

Részletesebben

1/50. Teljes indukció 1. Back Close

1/50. Teljes indukció 1. Back Close 1/50 Teljes indukció 1 A teljes indukció talán a legfontosabb bizonyítási módszer a számítástudományban. Teljes indukció elve. Legyen P (n) egy állítás. Tegyük fel, hogy (1) P (0) igaz, (2) minden n N

Részletesebben

Gráfelméleti alapfogalmak-1

Gráfelméleti alapfogalmak-1 KOMBINATORIKA ELŐADÁS osztatlan matematika tanár hallgatók számára Gráfelméleti alapfogalmak Előadó: Hajnal Péter 2015 1. Egyszerű gráfok Nagyon sok helyzetben egy alaphalmaz elemei között kitűntetett

Részletesebben

Arany Dániel Matematikai Tanulóverseny 2015/2016-os tanév 1. forduló Haladók III. kategória

Arany Dániel Matematikai Tanulóverseny 2015/2016-os tanév 1. forduló Haladók III. kategória Bolyai János Matematikai Társulat Arany Dániel Matematikai Tanulóverseny 2015/2016-os tanév 1. forduló Haladók III. kategória Megoldások és javítási útmutató 1. Az a és b befogójú derékszögű háromszögnek

Részletesebben

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17 Gráfok 2. előadás Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: Lineáris elrendezésű sokaság (sorozat) bejárása könnyű, egyetlen ciklussal elvégezhető. Hálós struktúra bejárása nem

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az

Részletesebben

Hadamard-mátrixok Előadó: Hajnal Péter február 23.

Hadamard-mátrixok Előadó: Hajnal Péter február 23. Szimmetrikus kombinatorikus struktúrák MSc hallgatók számára Hadamard-mátrixok Előadó: Hajnal Péter 2012. február 23. 1. Hadamard-mátrixok Ezen az előadáson látásra a blokkrendszerektől független kombinatorikus

Részletesebben

PISA2000. Nyilvánosságra hozott feladatok matematikából

PISA2000. Nyilvánosságra hozott feladatok matematikából PISA2000 Nyilvánosságra hozott feladatok matematikából Tartalom Tartalom 3 Almafák 8 Földrész területe 12 Háromszögek 14 Házak 16 Versenyautó sebessége Almafák M136 ALMAFÁK Egy gazda kertjében négyzetrács

Részletesebben

Arany Dániel Matematikai Tanulóverseny 2009/2010-es tanév első (iskolai) forduló haladók II. kategória

Arany Dániel Matematikai Tanulóverseny 2009/2010-es tanév első (iskolai) forduló haladók II. kategória Bolyai János Matematikai Társulat Oktatási és Kulturális Minisztérium Támogatáskezelő Igazgatósága támogatásával Arany Dániel Matematikai Tanulóverseny 009/00-es tanév első (iskolai) forduló haladók II.

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2016. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa: Gráfok, definíciók Irányítatlan gráf: G = (V,E), ahol E rendezetlen (a,b),a,b V párok halmaza. Irányított gráf: G = (V,E) E rendezett (a,b) párok halmaza; E V V. Címkézett (súlyozott) gráf: G = (V,E,C)

Részletesebben

Egészrészes feladatok

Egészrészes feladatok Kitűzött feladatok Egészrészes feladatok Győry Ákos Miskolc, Földes Ferenc Gimnázium 1. feladat. Oldjuk meg a valós számok halmazán a { } 3x 1 x+1 7 egyenletet!. feladat. Bizonyítsuk be, hogy tetszőleges

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. tavasz 1. Diszkrét matematika 2.C szakirány 1. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu Komputeralgebra Tanszék 2015. tavasz Gráfelmélet Diszkrét

Részletesebben

Analízis I. Vizsgatételsor

Analízis I. Vizsgatételsor Analízis I. Vizsgatételsor Programtervező Informatikus szak 2008-2009. 2. félév Készítette: Szabó Zoltán SZZNACI.ELTE zotyo@bolyaimk.hu v.0.6 RC 004 Forrás: Oláh Gábor: ANALÍZIS I.-II. VIZSGATÉTELSOR 2006-2007-/2

Részletesebben

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

11. Előadás. 11. előadás Bevezetés a lineáris programozásba 11. Előadás Gondolkodnivalók Sajátérték, Kvadratikus alak 1. Gondolkodnivaló Adjuk meg, hogy az alábbi A mátrixnak mely α értékekre lesz sajátértéke a 5. Ezen α-ák esetén határozzuk meg a 5 sajátértékhez

Részletesebben

Adatszerkezetek II. 2. előadás

Adatszerkezetek II. 2. előadás Adatszerkezetek II. 2. előadás Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: Lineáris elrendezésű sokaság (sorozat) bejárása könnyű, egyetlen ciklussal elvégezhető. Hálós struktúra

Részletesebben

Algoritmuselmélet 18. előadás

Algoritmuselmélet 18. előadás Algoritmuselmélet 18. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Május 7. ALGORITMUSELMÉLET 18. ELŐADÁS 1 Közelítő algoritmusok

Részletesebben

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus GRÁFELMÉLET 7. előadás Javító utak, javító utak keresése, Edmonds-algoritmus Definíció: egy P utat javító útnak nevezünk egy M párosításra nézve, ha az út páratlan hosszú, kezdő- és végpontjai nem párosítottak,

Részletesebben

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának feladatai. INFORMATIKA II. (programozás) kategória

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny második fordulójának feladatai. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 2016/2017 tanévi Országos özépiskolai Tanulmányi Verseny második fordulójának feladatai INFORMATIA II. (programozás) kategória 1. feladat: Legalább 2 bolygón volt élet (33 pont) Egy

Részletesebben

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny második forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny második forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 2016/2017 tanévi Országos özépiskolai Tanulmányi Verseny második forduló javítási-értékelési útmutató INFORMATIA II. (programozás) kategória 1. feladat: Legalább 2 bolygón volt élet

Részletesebben

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória Oktatási Hivatal A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató INFORMATIKA II. (programozás) kategória Kérjük a tisztelt tanár kollégákat, hogy a

Részletesebben