Algoritmuselmélet 7. előadás

Hasonló dokumentumok
Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. 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.

Gráfalgoritmusok ismétlés ősz

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.

22. GRÁFOK ÁBRÁZOLÁSA

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Algoritmuselmélet 18. előadás

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

A számítástudomány alapjai

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.

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

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

Algoritmuselmélet 12. előadás

Algoritmuselmélet 6. előadás

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

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.

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

Algoritmuselmélet 11. előadás

Algoritmuselmélet 2. előadás

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

Diszkrét matematika 2.C szakirány

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.

Gráfelméleti feladatok. c f

Algoritmusok bonyolultsága

Gráf-algoritmusok Legrövidebb utak

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

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:

Informatikai Rendszerek Alapjai

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:

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

Nagy Gábor compalg.inf.elte.hu/ nagy

Dijkstra algoritmusa

Algoritmuselmélet 1. előadás

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Fraktál alapú képtömörítés p. 1/26

Diszkrét matematika 2.C szakirány

Adatszerkezetek II. 1. előadás

Diszkrét matematika 2.C szakirány

Algoritmuselmélet 1. előadás

Gráfok, definíciók. Minden irányítatlan G = (V,E) gráf olyan irányított gráfnak tekinthető, amelyre teljesül, hogy

Diszkrét matematika 2.C szakirány

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.

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

INFORMATIKA javítókulcs 2016

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány

Felvételi tematika INFORMATIKA

1. tétel - Gráfok alapfogalmai

Számítógép hálózatok, osztott rendszerek 2009

10. előadás. Konvex halmazok

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

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Diszkrét matematika 2.

Gráfelméleti alapfogalmak

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

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.

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

Algoritmusok bonyolultsága

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Gráfok. Programozás II. előadás. Szénási Sándor.

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

10. Gráf absztrakt adattípus, gráfok ábrázolása

Adatszerkezetek II. 3. előadás

Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések.

Dinamikus modellek szerkezete, SDG modellek

Diszkrét matematika 2.C szakirány

Informatikai Rendszerek Alapjai

angolul: greedy algorithms, románul: algoritmi greedy

Nagy Gábor compalg.inf.elte.hu/ nagy

Gyakori elemhalmazok kinyerése

Elmaradó óra. Az F = (V,T) gráf minimális feszitőfája G-nek, ha. F feszitőfája G-nek, és. C(T) minimális

KÓDOLÁSTECHNIKA PZH december 18.

Mohó algoritmusok. Példa:

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

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

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

Hálózati folyamok. Tétel: A maximális folyam értéke megegyezik a minimális vágás értékével.

Diszkrét matematika 2.C szakirány

Legrövidebb útkereső algoritmusok

Adatszerkezetek II. 2. előadás

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

A gráffogalom fejlődése

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

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

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Adatszerkezetek 2. Dr. Iványi Péter

23. SZÉLESSÉGI BEJÁRÁS

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

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:

Házi feladatok megoldása. Nyelvek felismerése. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 5. gyakorlat

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

Az Informatika Elméleti Alapjai

Algoritmusok és adatszerkezetek 2.

Súlyozott automaták alkalmazása

INFORMATIKA tétel 2019

38. A gráfalgoritmusok alkalmazása

Smalltalk 2. Készítette: Szabó Éva

Átírá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 animációk Java animáció: Hash-elés Java animáció: Huffman-fa

ALGORITMUSELMÉLET 7. ELŐADÁS 2 A Lempel Ziv Welch-módszer A. Lempel és J. Ziv, 1970; T. Welch 1984

ALGORITMUSELMÉLET 7. ELŐADÁS 2 A Lempel Ziv Welch-módszer A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA

ALGORITMUSELMÉLET 7. ELŐADÁS 2 A Lempel Ziv Welch-módszer A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betűnként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S

ALGORITMUSELMÉLET 7. ELŐADÁS 2 A Lempel Ziv Welch-módszer A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betűnként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S az egybetűs szavak, azaz Σ elemei mind benne vannak S-ben;

ALGORITMUSELMÉLET 7. ELŐADÁS 2 A Lempel Ziv Welch-módszer A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betűnként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S az egybetűs szavak, azaz Σ elemei mind benne vannak S-ben; ha egy szó benne van a szótárban, akkor annak minden kezdődarabja is benne van;

ALGORITMUSELMÉLET 7. ELŐADÁS 2 A Lempel Ziv Welch-módszer A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betűnként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S az egybetűs szavak, azaz Σ elemei mind benne vannak S-ben; ha egy szó benne van a szótárban, akkor annak minden kezdődarabja is benne van; a szótárban tárolt szavaknak fix hosszúságú kódjuk van; az x S szó kódját c(x) jelöli.

ALGORITMUSELMÉLET 7. ELŐADÁS 2 A Lempel Ziv Welch-módszer A. Lempel és J. Ziv, 1970; T. Welch 1984 Használja: GIF, v.42bis, compress; ZIP, ARJ, LHA Nem betűnként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. = S az egybetűs szavak, azaz Σ elemei mind benne vannak S-ben; ha egy szó benne van a szótárban, akkor annak minden kezdődarabja is benne van; a szótárban tárolt szavaknak fix hosszúságú kódjuk van; az x S szó kódját c(x) jelöli. Gyakorlatban a kódok hossza 12-15 bit.

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk a szavakat a szótárbeli kódokkal helyettesítjük

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk a szavakat a szótárbeli kódokkal helyettesítjük Az eredeti szöveg olvasásakor egyidőben épül, bővül az S szótár

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk a szavakat a szótárbeli kódokkal helyettesítjük Az eredeti szöveg olvasásakor egyidőben épül, bővül az S szótár nincs optimalizálás, de a gyakorlatban jól működik

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk a szavakat a szótárbeli kódokkal helyettesítjük Az eredeti szöveg olvasásakor egyidőben épül, bővül az S szótár nincs optimalizálás, de a gyakorlatban jól működik A szótár egyik szokásos tárolási módja a szófa adatszerkezet.

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk a szavakat a szótárbeli kódokkal helyettesítjük Az eredeti szöveg olvasásakor egyidőben épül, bővül az S szótár nincs optimalizálás, de a gyakorlatban jól működik A szótár egyik szokásos tárolási módja a szófa adatszerkezet. Ha az olvasás során egy x S szót találunk, aminek a következő Y betűvel való folytatása már nincs S-ben, akkor c(x)-et kiírjuk a kódolt szövegbe.

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk a szavakat a szótárbeli kódokkal helyettesítjük Az eredeti szöveg olvasásakor egyidőben épül, bővül az S szótár nincs optimalizálás, de a gyakorlatban jól működik A szótár egyik szokásos tárolási módja a szófa adatszerkezet. Ha az olvasás során egy x S szót találunk, aminek a következő Y betűvel való folytatása már nincs S-ben, akkor c(x)-et kiírjuk a kódolt szövegbe. Az xy szót felvesszük az S szótárba. A szó c(xy ) kódja a legkisebb még eddig az S-ben nem szereplő kódérték lesz.

ALGORITMUSELMÉLET 7. ELŐADÁS 3 LZW kódolás az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk a szavakat a szótárbeli kódokkal helyettesítjük Az eredeti szöveg olvasásakor egyidőben épül, bővül az S szótár nincs optimalizálás, de a gyakorlatban jól működik A szótár egyik szokásos tárolási módja a szófa adatszerkezet. Ha az olvasás során egy x S szót találunk, aminek a következő Y betűvel való folytatása már nincs S-ben, akkor c(x)-et kiírjuk a kódolt szövegbe. Az xy szót felvesszük az S szótárba. A szó c(xy ) kódja a legkisebb még eddig az S-ben nem szereplő kódérték lesz. Ezután az Y betűvel kezdődően folytatjuk a bemeneti szöveg olvasását.

ALGORITMUSELMÉLET 7. ELŐADÁS 4 Legyen z egy szó típusú változó, K egy betű típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány első betűje. Végig teljesül, hogy z S.

ALGORITMUSELMÉLET 7. ELŐADÁS 4 Legyen z egy szó típusú változó, K egy betű típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány első betűje. Végig teljesül, hogy z S. (0) Olvassuk a bemenő állomány következő betűjét K-ba.

ALGORITMUSELMÉLET 7. ELŐADÁS 4 Legyen z egy szó típusú változó, K egy betű típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány első betűje. Végig teljesül, hogy z S. (0) Olvassuk a bemenő állomány következő betűjét K-ba. (1) Ha az előző olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg.

ALGORITMUSELMÉLET 7. ELŐADÁS 4 Legyen z egy szó típusú változó, K egy betű típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány első betűje. Végig teljesül, hogy z S. (0) Olvassuk a bemenő állomány következő betűjét K-ba. (1) Ha az előző olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zk szó is S-ben van, akkor z zk, és menjünk vissza (0)-ra.

ALGORITMUSELMÉLET 7. ELŐADÁS 4 Legyen z egy szó típusú változó, K egy betű típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány első betűje. Végig teljesül, hogy z S. (0) Olvassuk a bemenő állomány következő betűjét K-ba. (1) Ha az előző olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zk szó is S-ben van, akkor z zk, és menjünk vissza (0)-ra. (3) Különben (azaz ha zk S) írjuk ki c(z)-t, tegyük a zk szót S-be. Legyen z K, majd menjünk vissza (0)-ra.

ALGORITMUSELMÉLET 7. ELŐADÁS 4 Legyen z egy szó típusú változó, K egy betű típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány első betűje. Végig teljesül, hogy z S. (0) Olvassuk a bemenő állomány következő betűjét K-ba. (1) Ha az előző olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zk szó is S-ben van, akkor z zk, és menjünk vissza (0)-ra. (3) Különben (azaz ha zk S) írjuk ki c(z)-t, tegyük a zk szót S-be. Legyen z K, majd menjünk vissza (0)-ra. A c(x) kódok rögzített hosszúságúak. Ha például ez a hosszúság 12 bit, akkor az S szótárba összesen 4096 szó kerülhet. =

ALGORITMUSELMÉLET 7. ELŐADÁS 4 Legyen z egy szó típusú változó, K egy betű típusú változó. A z változó értéke kezdetben az összenyomni szánt állomány első betűje. Végig teljesül, hogy z S. (0) Olvassuk a bemenő állomány következő betűjét K-ba. (1) Ha az előző olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg. (2) Ha a zk szó is S-ben van, akkor z zk, és menjünk vissza (0)-ra. (3) Különben (azaz ha zk S) írjuk ki c(z)-t, tegyük a zk szót S-be. Legyen z K, majd menjünk vissza (0)-ra. A c(x) kódok rögzített hosszúságúak. Ha például ez a hosszúság 12 bit, akkor az S szótárba összesen 4096 szó kerülhet. = Ha a szótár betelt, nem bővítünk tovább, úgy folytatjuk.

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa a 1 b 2 c 3

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 a 1 b 2 c 3 ab 4 0000

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 a 1 b 2 c 3 ab 4 ba 5 0000 0001

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 a 1 b 2 c 3 ab 4 ba 5 abc 6 0000 0001 0011

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 0000 0001 0011 0010 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 5 0000 0001 0011 0010 0100 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7 bab 8

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 5 8 0000 0001 0011 0010 0100 1000 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7 bab 8 baba 9

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 5 8 1 0000 0001 0011 0010 0100 1000 0000 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7 bab 8 baba 9 aa 10

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 5 8 1 10 0000 0001 0011 0010 0100 1000 0000 1001 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7 bab 8 baba 9 aa 10 aaa 11

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 0000 0001 0011 0010 0100 1000 0000 1001 1010 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7 bab 8 baba 9 aa 10 aaa 11 aaaa 12

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 1 0000 0001 0011 0010 0100 1000 0000 1001 1010 0000 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7 bab 8 baba 9 aa 10 aaa 11 aaaa 12

ALGORITMUSELMÉLET 7. ELŐADÁS 5 Példa LZW-re Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3. Szótár ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 1 0000 0001 0011 0010 0100 1000 0000 1001 1010 0000 a 1 b 2 c 3 ab 4 ba 5 abc 6 cb 7 bab 8 baba 9 aa 10 aaa 11 aaaa 12

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et.

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 =

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab =

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk a 1 b 2 c 3 1 2 4 3 5 8 1 10 11 1 ab 4 ababcba ba 5 abc 6 cb 7

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = ababcba ba 5 abc 6 cb 7

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következő betű biztos b ababcba ba 5 abc 6 cb 7

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következő betű biztos b ababcba ba 5 c(bab) = 8 abc 6 cb 7

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következő betű biztos b ababcba ba 5 c(bab) = 8 abc 6 ababcbabab cb 7

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következő betű biztos b ababcba ba 5 c(bab) = 8 abc 6 ababcbabab cb 7 Java animáció: LZW-kódolás

ALGORITMUSELMÉLET 7. ELŐADÁS 6 Dekódolás Elvégezhető pusztán az egybetűs szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et. Pl. Ha a kódolt szöveg: 1 2 4 3 5 8 1 10 11 1 és tudjuk, hogy c(a) = 1, c(b) = 2, c(c) = 3 = Ez első két jel betű kódja = ab ab nem volt a kezdeti S-ben, de az eleje igen; = a kódoló algoritmus ezt c(ab) = 4 értékkel S-be tette = abab = ba volt a következő szó, ami S-be került = c(ba) = 5... Ha itt tartunk a 1 b 2 a 8-as kódú szó ba c 3 alakú, 1 2 4 3 5 8 1 10 11 1 ab 4 = következő betű biztos b ababcba ba 5 c(bab) = 8 abc 6 ababcbabab cb 7 Java animáció: LZW-kódolás Laczay Bálint féle GIF animáció

ALGORITMUSELMÉLET 7. ELŐADÁS 7 Gráfalgoritmusok irányított gráfok: G = (V, E)

ALGORITMUSELMÉLET 7. ELŐADÁS 7 Gráfalgoritmusok irányított gráfok: G = (V, E) irányított él, irányított út, irányított kör

ALGORITMUSELMÉLET 7. ELŐADÁS 7 Gráfalgoritmusok irányított gráfok: G = (V, E) irányított él, irányított út, irányított kör élsúlyok: c(e) lehetnek negatívak is

ALGORITMUSELMÉLET 7. ELŐADÁS 7 Gráfalgoritmusok irányított gráfok: G = (V, E) irányított él, irányított út, irányított kör élsúlyok: c(e) lehetnek negatívak is J H G E K D F I C B A L 3 4 8 4 9 6 9 0 17 8 9 3 6 2 7 3 8 6 11 5

ALGORITMUSELMÉLET 7. ELŐADÁS 8 Adjacencia-mátrix Definíció. A G = (V, E) gráf adjacencia-mátrixa (vagy szomszédossági mátrixa) a következő a V elemeivel indexelt n-szer n-es mátrix: { 0 ha (i, j) E, A[i, j] = 1 ha (i, j) E.

ALGORITMUSELMÉLET 7. ELŐADÁS 8 Adjacencia-mátrix Definíció. A G = (V, E) gráf adjacencia-mátrixa (vagy szomszédossági mátrixa) a következő a V elemeivel indexelt n-szer n-es mátrix: { 0 ha (i, j) E, A[i, j] = 1 ha (i, j) E. Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azaz A[i, j] = A[j, i] teljesül minden i, j csúcspárra).

ALGORITMUSELMÉLET 7. ELŐADÁS 8 Adjacencia-mátrix Definíció. A G = (V, E) gráf adjacencia-mátrixa (vagy szomszédossági mátrixa) a következő a V elemeivel indexelt n-szer n-es mátrix: { 0 ha (i, j) E, A[i, j] = 1 ha (i, j) E. Irányítatlan gráfok esetén a szomszédossági mátrix szimmetrikus lesz (azaz A[i, j] = A[j, i] teljesül minden i, j csúcspárra). v 2 5 1 1 3 v 1 v 3 v 5 1 1 5 A = 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 v 4

ALGORITMUSELMÉLET 7. ELŐADÁS 9 Súlyozott adjacencia-mátrix Ha költségek is vannak = C[i, j] = 0 ha i = j, c(i, j) ha i j és (i, j) éle G-nek, különben.

ALGORITMUSELMÉLET 7. ELŐADÁS 9 Súlyozott adjacencia-mátrix Ha költségek is vannak = C[i, j] = 0 ha i = j, c(i, j) ha i j és (i, j) éle G-nek, különben. v 2 5 1 1 3 v 1 v 3 v 5 1 1 5 C = 0 5 1 0 1 1 0 1 0 5 3 0 v 4

ALGORITMUSELMÉLET 7. ELŐADÁS 9 Súlyozott adjacencia-mátrix Ha költségek is vannak = C[i, j] = 0 ha i = j, c(i, j) ha i j és (i, j) éle G-nek, különben. v 2 5 1 1 3 v 1 v 3 v 5 1 1 5 C = 0 5 1 0 1 1 0 1 0 5 3 0 v 4 Hátránya = a mérete (n 2 tömbelem) teljesen független az élek számától.

ALGORITMUSELMÉLET 7. ELŐADÁS 10 Éllistás megadás G = (V, E) gráf minden csúcsához egy lista tartozik.

ALGORITMUSELMÉLET 7. ELŐADÁS 10 Éllistás megadás G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-ből kimenő éleket, és ha kell, ezek súlyát is.

ALGORITMUSELMÉLET 7. ELŐADÁS 10 Éllistás megadás G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-ből kimenő éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg.

ALGORITMUSELMÉLET 7. ELŐADÁS 10 Éllistás megadás G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-ből kimenő éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg. 1 1-ből kimenő élek cellái i n j c(i,j) egy tipikus cella

ALGORITMUSELMÉLET 7. ELŐADÁS 10 Éllistás megadás G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-ből kimenő éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg. 1 i n 1-ből kimenő élek cellái j c(i,j) egy tipikus cella Az (i, j) élnek megfelelő cella tartalmazza a j sorszámot, a c(i, j) súlyt (ha van), egy mutatót a következő cellára, és esetleg még egyet az előzőre is.

ALGORITMUSELMÉLET 7. ELŐADÁS 10 Éllistás megadás G = (V, E) gráf minden csúcsához egy lista tartozik. Az i V csúcs listájában tároljuk az i-ből kimenő éleket, és ha kell, ezek súlyát is. Az i listáján egy élnek a lista egy eleme (cellája) felel meg. 1 i n 1-ből kimenő élek cellái j c(i,j) egy tipikus cella Az (i, j) élnek megfelelő cella tartalmazza a j sorszámot, a c(i, j) súlyt (ha van), egy mutatót a következő cellára, és esetleg még egyet az előzőre is. Tárigény: n + e cella, Irányítatlan gráfoknál: n + 2e cella

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba?

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe?

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között?

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összekötő (nem feltétlenül egyszerű) u v irányított útjának a hossza az úton szereplő élek súlyainak összege.

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összekötő (nem feltétlenül egyszerű) u v irányított útjának a hossza az úton szereplő élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között.

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összekötő (nem feltétlenül egyszerű) u v irányított útjának a hossza az úton szereplő élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: 0, ha u = v;

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összekötő (nem feltétlenül egyszerű) u v irányított útjának a hossza az úton szereplő élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: 0, ha u = v;, ha nincs u v út

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összekötő (nem feltétlenül egyszerű) u v irányított útjának a hossza az úton szereplő élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: 0, ha u = v;, ha nincs u v út egyébként pedig a legrövidebb u v út hossza.

ALGORITMUSELMÉLET 7. ELŐADÁS 11 A legrövidebb utak problémája Legyen adott egy G = (V, E) irányított gráf a c(f), f E élsúlyokkal. Feladat. Mekkora a legrövidebb út egy adott pontból egy másik adott pontba? Feladat. Mekkora a legrövidebb út egy adott pontból az összes többibe? Feladat. Mekkora a legrövidebb út bármely két pont között? A G gráf egy u-t v-vel összekötő (nem feltétlenül egyszerű) u v irányított útjának a hossza az úton szereplő élek súlyainak összege. Legrövidebb u v út = egy olyan u v út, melynek a hossza minimális a G-beli u v utak között. u és v csúcsok (G-beli) d(u, v) távolsága: 0, ha u = v;, ha nincs u v út egyébként pedig a legrövidebb u v út hossza. Vigyázat, itt u és v nem felcserélhető: ha az egyik csúcs valamilyen távol van a másiktól, akkor nem biztos, hogy a másik is ugyanolyan távol van az egyiktől!

ALGORITMUSELMÉLET 7. ELŐADÁS 12 Dijkstra módszere Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R + nemnegatív értékű súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = Egy a G csúcsaival indexelt tömb

ALGORITMUSELMÉLET 7. ELŐADÁS 12 Dijkstra módszere Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R + nemnegatív értékű súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = Egy a G csúcsaival indexelt tömb az eljárás során addig megismert legrövidebb s v utak hossza

ALGORITMUSELMÉLET 7. ELŐADÁS 12 Dijkstra módszere Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R + nemnegatív értékű súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = Egy a G csúcsaival indexelt tömb az eljárás során addig megismert legrövidebb s v utak hossza Felső közelítése a keresett d(s, v) távolságnak

ALGORITMUSELMÉLET 7. ELŐADÁS 12 Dijkstra módszere Feladat. A legrövidebb utak problémája (egy forrásból): Adott egy G = (V, E) irányított gráf, a c : E R + nemnegatív értékű súlyfüggvény, és egy s V csúcs (a forrás). Határozzuk meg minden v V -re a d(s, v) távolságot. D[ ] = Egy a G csúcsaival indexelt tömb az eljárás során addig megismert legrövidebb s v utak hossza Felső közelítése a keresett d(s, v) távolságnak A közelítést lépésről lépésre finomítjuk, végül d(s, v)-t érjük el.

ALGORITMUSELMÉLET 7. ELŐADÁS 13 Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: C[v, w] = 0 ha v = w, c(v, w) ha v w és (v, w) éle G-nek, különben. Kezdetben D[v] := C[s, v] minden v V csúcsra.

ALGORITMUSELMÉLET 7. ELŐADÁS 13 Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: C[v, w] = 0 ha v = w, c(v, w) ha v w és (v, w) éle G-nek, különben. Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális

ALGORITMUSELMÉLET 7. ELŐADÁS 13 Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: C[v, w] = 0 ha v = w, c(v, w) ha v w és (v, w) éle G-nek, különben. Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális Biztos, hogy az egyetlen (s, x) élből álló út egy legrövidebb s x út, (az élsúlyok nemnegatívak!).

ALGORITMUSELMÉLET 7. ELŐADÁS 13 Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: C[v, w] = 0 ha v = w, c(v, w) ha v w és (v, w) éle G-nek, különben. Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális Biztos, hogy az egyetlen (s, x) élből álló út egy legrövidebb s x út, (az élsúlyok nemnegatívak!). A KÉSZ halmaz azokat a csúcsokat tartalmazza, amelyeknek s-től való távolságát már tudjuk.

ALGORITMUSELMÉLET 7. ELŐADÁS 13 Tegyük fel, hogy a G gráf az alábbi alakú C adjacencia-mátrixával adott: C[v, w] = 0 ha v = w, c(v, w) ha v w és (v, w) éle G-nek, különben. Kezdetben D[v] := C[s, v] minden v V csúcsra. Válasszuk ki ezután az s csúcs szomszédai közül a hozzá legközelebbit, vagyis egy olyan x V \ {s} csúcsot, melyre D[x] minimális Biztos, hogy az egyetlen (s, x) élből álló út egy legrövidebb s x út, (az élsúlyok nemnegatívak!). A KÉSZ halmaz azokat a csúcsokat tartalmazza, amelyeknek s-től való távolságát már tudjuk. = x-et betehetjük (s mellé) a KÉSZ halmazba.

ALGORITMUSELMÉLET 7. ELŐADÁS 14 Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w]. s x C[x, w] w

ALGORITMUSELMÉLET 7. ELŐADÁS 14 Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w]. s x C[x, w] w Újra válasszunk ki a v V \ KÉSZ csúcsok közül egy olyat, amelyre D[v] minimális.

ALGORITMUSELMÉLET 7. ELŐADÁS 14 Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w]. s x C[x, w] w Újra válasszunk ki a v V \ KÉSZ csúcsok közül egy olyat, amelyre D[v] minimális. Ezen csúcs D[ ]-értéke már az s-től való távolságát tartalmazza.

ALGORITMUSELMÉLET 7. ELŐADÁS 14 Ezek után módosítsuk a többi csúcs D[w] értékét, ha az eddig ismertnél rövidebb úton el lehet érni oda x-en keresztül, azaz ha D[x] + C[x, w] < D[w]. s x C[x, w] w Újra válasszunk ki a v V \ KÉSZ csúcsok közül egy olyat, amelyre D[v] minimális. Ezen csúcs D[ ]-értéke már az s-től való távolságát tartalmazza. Majd megint a D[ ]-értékeket módosítjuk, és így tovább, míg minden csúcs be nem kerül a KÉSZ halmazba.

ALGORITMUSELMÉLET 7. ELŐADÁS 15 Dijkstra algoritmusa adjacencia-mátrixszal (1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság első közelítése )

ALGORITMUSELMÉLET 7. ELŐADÁS 15 Dijkstra algoritmusa adjacencia-mátrixszal (1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság első közelítése ) (2) for i := 1 to n 1 do begin Válasszunk olyan x V \ KÉSZ csúcsot, melyre D[x] minimális. Tegyük x-et a KÉSZ-be.

ALGORITMUSELMÉLET 7. ELŐADÁS 15 Dijkstra algoritmusa adjacencia-mátrixszal (1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság első közelítése ) (2) for i := 1 to n 1 do begin Válasszunk olyan x V \ KÉSZ csúcsot, melyre D[x] minimális. Tegyük x-et a KÉSZ-be. (3) for minden w V \ KÉSZ csúcsra do D[w] := min{d[w], D[x] + C[x, w]} ( d(s, w) új közelítése ) end

ALGORITMUSELMÉLET 7. ELŐADÁS 15 Dijkstra algoritmusa adjacencia-mátrixszal (1) KÉSZ := {s} for minden v V csúcsra do D[v] := C[s, v] ( a d(s, v) távolság első közelítése ) (2) for i := 1 to n 1 do begin Válasszunk olyan x V \ KÉSZ csúcsot, melyre D[x] minimális. Tegyük x-et a KÉSZ-be. (3) for minden w V \ KÉSZ csúcsra do D[w] := min{d[w], D[x] + C[x, w]} ( d(s, w) új közelítése ) end Definíció. különleges út: egy s z irányított út különleges, ha a z végpontot kivéve minden pontja a KÉSZ halmazban van. A különleges úttal elérhető pontok éppen a KÉSZ-ből egyetlen éllel elérhető pontok.

ALGORITMUSELMÉLET 7. ELŐADÁS 16 Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

ALGORITMUSELMÉLET 7. ELŐADÁS 16 Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza. (b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van.

ALGORITMUSELMÉLET 7. ELŐADÁS 16 Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza. (b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külső (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza.

ALGORITMUSELMÉLET 7. ELŐADÁS 16 Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza. (b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külső (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval

ALGORITMUSELMÉLET 7. ELŐADÁS 16 Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza. (b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külső (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval (2) előtt

ALGORITMUSELMÉLET 7. ELŐADÁS 16 Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza. (b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külső (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval (2) előtt Tegyük fel, hogy igaz a j-edik iteráció után. Belátjuk, hogy igaz a j + 1-edik iteráció után is.

ALGORITMUSELMÉLET 7. ELŐADÁS 16 Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következők: (a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza. (b) Ha v KÉSZ, akkor van olyan d(s, v) hosszúságú (más szóval legrövidebb) s v út is, amelynek minden pontja a KÉSZ halmazban van. (c) Külső (vagyis w V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza. Bizonyítás: (a) Indukcióval (2) előtt Tegyük fel, hogy igaz a j-edik iteráció után. Belátjuk, hogy igaz a j + 1-edik iteráció után is. Tegyük fel, hogy az algoritmus a j + 1. iterációs lépésben az x csúcsot választja a KÉSZ-be.

ALGORITMUSELMÉLET 7. ELŐADÁS 17 s x y

ALGORITMUSELMÉLET 7. ELŐADÁS 17 s x Indirekt: mi van, ha D[x] nem a d(s, x) távolságot jelöli, azaz van ennél rövidebb s x út? y

ALGORITMUSELMÉLET 7. ELŐADÁS 17 s y x Indirekt: mi van, ha D[x] nem a d(s, x) távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út eleje" különleges = D[y] d(x, s) < D[x]

ALGORITMUSELMÉLET 7. ELŐADÁS 17 s y x Indirekt: mi van, ha D[x] nem a d(s, x) távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út eleje" különleges = D[y] d(x, s) < D[x] (b) Elég x-re = KÉSZ korábbi pontjaira az indukciós feltevésből

ALGORITMUSELMÉLET 7. ELŐADÁS 17 s y x Indirekt: mi van, ha D[x] nem a d(s, x) távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út eleje" különleges = D[y] d(x, s) < D[x] (b) Elég x-re = KÉSZ korábbi pontjaira az indukciós feltevésből Láttuk, hogy d(s, x) = D[x], ez egy különleges s x út hossza volt a j + 1. iteráció előtt (itt a (c)-re vonatkozó indukciós feltevést használtuk)

ALGORITMUSELMÉLET 7. ELŐADÁS 17 s y x Indirekt: mi van, ha D[x] nem a d(s, x) távolságot jelöli, azaz van ennél rövidebb s x út? Ezen út eleje" különleges = D[y] d(x, s) < D[x] (b) Elég x-re = KÉSZ korábbi pontjaira az indukciós feltevésből Láttuk, hogy d(s, x) = D[x], ez egy különleges s x út hossza volt a j + 1. iteráció előtt (itt a (c)-re vonatkozó indukciós feltevést használtuk) annak végeztével az út minden pontja KÉSZ-beli lesz.

ALGORITMUSELMÉLET 7. ELŐADÁS 18 x s w

ALGORITMUSELMÉLET 7. ELŐADÁS 18 x s w (c) A j + 1. iteráció előtt D[w] = min v KÉSZ\{x} {d(s, v) + C[v, w]}.

ALGORITMUSELMÉLET 7. ELŐADÁS 18 x s w (c) A j + 1. iteráció előtt D[w] = min v KÉSZ\{x} {d(s, v) + C[v, w]}. Utána D[w] = min {d(s, v) + C[v, w]}. v KÉSZ

ALGORITMUSELMÉLET 7. ELŐADÁS 18 x s w (c) A j + 1. iteráció előtt D[w] = min v KÉSZ\{x} {d(s, v) + C[v, w]}. Utána D[w] = min {d(s, v) + C[v, w]}. v KÉSZ = Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb

ALGORITMUSELMÉLET 7. ELŐADÁS 18 x s w (c) A j + 1. iteráció előtt D[w] = min v KÉSZ\{x} {d(s, v) + C[v, w]}. Utána D[w] = min {d(s, v) + C[v, w]}. v KÉSZ = Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb Lépészám: (2) ciklus O(n), ez lefut n 1-szer = O(n 2 )

ALGORITMUSELMÉLET 7. ELŐADÁS 18 x s w (c) A j + 1. iteráció előtt D[w] = min v KÉSZ\{x} {d(s, v) + C[v, w]}. Utána D[w] = min {d(s, v) + C[v, w]}. v KÉSZ = Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb Lépészám: (2) ciklus O(n), ez lefut n 1-szer = O(n 2 )