• Nem Talált Eredményt

Algoritmuselmélet 7. el ˝oadás

N/A
N/A
Protected

Academic year: 2022

Ossza meg "Algoritmuselmélet 7. el ˝oadás"

Copied!
110
0
0

Teljes szövegt

(1)

Algoritmuselmélet 7. el ˝ oadás

Katona Gyula Y.

Budapesti M ˝uszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz.

I. B. 137/b

kiskat@cs.bme.hu

2002 Március 11.

(2)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 1

Múltkori animációk

Java animáció: Hash-elés Java animáció: Huffman-fa

(3)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 2

A Lempel–Ziv–Welch-módszer

A. Lempel és J. Ziv, 1970; T. Welch 1984

(4)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

(5)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝unként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. =⇒ S

(6)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝unként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. =⇒ S

• az egybet ˝us szavak, azaz Σ elemei mind benne vannak S-ben;

(7)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝unként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. =⇒ S

• az egybet ˝us szavak, azaz Σ elemei mind benne vannak S-ben;

• ha egy szó benne van a szótárban, akkor annak minden kezd ˝odarabja is benne van;

(8)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝unként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. =⇒ S

• az egybet ˝us szavak, azaz Σ elemei mind benne vannak S-ben;

• ha egy szó benne van a szótárban, akkor annak minden kezd ˝odarabja 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.

(9)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝unként kódól, hanem a szöveg bizonyos szavaiból szótárat épít. =⇒ S

• az egybet ˝us szavak, azaz Σ elemei mind benne vannak S-ben;

• ha egy szó benne van a szótárban, akkor annak minden kezd ˝odarabja 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.

(10)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 3

LZW kódolás

• az összenyomni kívánt szöveget S-beli szavak egymásutánjára bontjuk

(11)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

(12)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝oben épül, b ˝ovül az S szótár

(13)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝oben épül, b ˝ovül az S szótár

• nincs optimalizálás, de a gyakorlatban jól m ˝uködik

(14)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝oben épül, b ˝ovül az S szótár

• nincs optimalizálás, de a gyakorlatban jól m ˝uködik

A szótár egyik szokásos tárolási módja a szófa adatszerkezet.

(15)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝oben épül, b ˝ovül az S szótár

• nincs optimalizálás, de a gyakorlatban jól m ˝ukö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 ˝o Y bet ˝uvel való folytatása már nincs S-ben, akkor c(x)-et kiírjuk a kódolt szövegbe.

(16)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝oben épül, b ˝ovül az S szótár

• nincs optimalizálás, de a gyakorlatban jól m ˝ukö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 ˝o Y bet ˝uvel 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 ˝o kódérték lesz.

(17)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝oben épül, b ˝ovül az S szótár

• nincs optimalizálás, de a gyakorlatban jól m ˝ukö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 ˝o Y bet ˝uvel 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 ˝o kódérték lesz.

Ezután az Y bet ˝uvel kezd ˝od ˝oen folytatjuk a bemeneti szöveg olvasását.

(18)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 4

Legyen z egy szó típusú változó, K egy bet ˝u típusú változó. A z változó

értéke kezdetben az összenyomni szánt állomány els ˝o bet ˝uje. Végig teljesül, hogy z ∈ S.

(19)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 4

Legyen z egy szó típusú változó, K egy bet ˝u típusú változó. A z változó

értéke kezdetben az összenyomni szánt állomány els ˝o bet ˝uje. Végig teljesül, hogy z ∈ S.

(0) Olvassuk a bemen ˝o állomány következ ˝o bet ˝ujét K-ba.

(20)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 4

Legyen z egy szó típusú változó, K egy bet ˝u típusú változó. A z változó

értéke kezdetben az összenyomni szánt állomány els ˝o bet ˝uje. Végig teljesül, hogy z ∈ S.

(0) Olvassuk a bemen ˝o állomány következ ˝o bet ˝ujét K-ba.

(1) Ha az el ˝oz ˝o olvasási kísérlet sikertelen volt (vége a bemenetnek), akkor írjuk ki c(z)-t, és álljunk meg.

(21)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 4

Legyen z egy szó típusú változó, K egy bet ˝u típusú változó. A z változó

értéke kezdetben az összenyomni szánt állomány els ˝o bet ˝uje. Végig teljesül, hogy z ∈ S.

(0) Olvassuk a bemen ˝o állomány következ ˝o bet ˝ujét K-ba.

(1) Ha az el ˝oz ˝o 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.

(22)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 4

Legyen z egy szó típusú változó, K egy bet ˝u típusú változó. A z változó

értéke kezdetben az összenyomni szánt állomány els ˝o bet ˝uje. Végig teljesül, hogy z ∈ S.

(0) Olvassuk a bemen ˝o állomány következ ˝o bet ˝ujét K-ba.

(1) Ha az el ˝oz ˝o 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 6∈ S) írjuk ki c(z)-t, tegyük a zK szót S-be. Legyen z ← K, majd menjünk vissza (0)-ra.

(23)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 4

Legyen z egy szó típusú változó, K egy bet ˝u típusú változó. A z változó

értéke kezdetben az összenyomni szánt állomány els ˝o bet ˝uje. Végig teljesül, hogy z ∈ S.

(0) Olvassuk a bemen ˝o állomány következ ˝o bet ˝ujét K-ba.

(1) Ha az el ˝oz ˝o 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 6∈ 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. =⇒

(24)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 4

Legyen z egy szó típusú változó, K egy bet ˝u típusú változó. A z változó

értéke kezdetben az összenyomni szánt állomány els ˝o bet ˝uje. Végig teljesül, hogy z ∈ S.

(0) Olvassuk a bemen ˝o állomány következ ˝o bet ˝ujét K-ba.

(1) Ha az el ˝oz ˝o 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 6∈ 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 ˝ovítünk tovább, úgy folytatjuk.

(25)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa

Szótár

a → 1 b → 2 c → 3

(26)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1

0000

Szótár

a → 1 b → 2 c → 3

⇒ ab → 4

(27)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2

0000 0001

Szótár

a → 1 b → 2 c → 3 ab → 4

⇒ ba → 5

(28)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4

0000 0001 0011

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5

⇒ abc → 6

(29)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3

0000 0001 0011 0010

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6

⇒ cb → 7

(30)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3 5

0000 0001 0011 0010 0100

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6 cb → 7

⇒ bab → 8

(31)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3 5 8

0000 0001 0011 0010 0100 1000

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6 cb → 7 bab → 8

⇒ baba → 9

(32)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3 5 8 1

0000 0001 0011 0010 0100 1000 0000

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6 cb → 7 bab → 8 baba → 9

⇒ aa → 10

(33)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3 5 8 1 10

0000 0001 0011 0010 0100 1000 0000 1001

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6 cb → 7 bab → 8 baba → 9 aa → 10

⇒ aaa → 11

(34)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11

0000 0001 0011 0010 0100 1000 0000 1001 1010

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6 cb → 7 bab → 8 baba → 9 aa → 10 aaa → 11

⇒ aaaa → 12

(35)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 1 0000 0001 0011 0010 0100 1000 0000 1001 1010 0000

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6 cb → 7 bab → 8 baba → 9 aa → 10 aaa → 11 aaaa → 12

(36)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 5

Példa LZW-re

Legyen Σ = {a, b, c} és c(a) = 1, c(b) = 2, c(c) = 3.

ababcbababaaaaaaa 1 2 4 3 5 8 1 10 11 1

0000 0001 0011 0010 0100 1000 0000 1001 1010 0000

Szótár

a → 1 b → 2 c → 3 ab → 4 ba → 5 abc → 6 cb → 7 bab → 8 baba → 9 aa → 10 aaa → 11 aaaa → 12

(37)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

(38)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us szavak kódjainak, valamint a kódok képzési szabályának ismeretében, nem kell tárolni S-et.

(39)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 =⇒

(40)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u kódja =⇒ ab

(41)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 =⇒

(42)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

(43)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

1 2 4 3 5 8 1 10 11 1 ababcba

a→ 1 b→ 2 c→ 3 ab→ 4 ba→ 5 abc→ 6 cb→ 7

(44)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

1 2 4 3 5 8 1 10 11 1 ababcba

a→ 1 b→ 2 c→ 3 ab→ 4 ba→ 5 abc→ 6 cb→ 7

=⇒

a 8-as kódú szó ba∗ alakú,

(45)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

1 2 4 3 5 8 1 10 11 1 ababcba

a→ 1 b→ 2 c→ 3 ab→ 4 ba→ 5 abc→ 6 cb→ 7

=⇒

a 8-as kódú szó ba∗ alakú,

következ ˝o bet ˝u biztos b

(46)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

1 2 4 3 5 8 1 10 11 1 ababcba

a→ 1 b→ 2 c→ 3 ab→ 4 ba→ 5 abc→ 6 cb→ 7

=⇒

a 8-as kódú szó ba∗ alakú,

következ ˝o bet ˝u biztos b c(bab) = 8

(47)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

1 2 4 3 5 8 1 10 11 1 ababcba

a→ 1 b→ 2 c→ 3 ab→ 4 ba→ 5 abc→ 6 cb→ 7

=⇒

a 8-as kódú szó ba∗ alakú,

következ ˝o bet ˝u biztos b c(bab) = 8

ababcbabab

(48)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

1 2 4 3 5 8 1 10 11 1 ababcba

a→ 1 b→ 2 c→ 3 ab→ 4 ba→ 5 abc→ 6 cb→ 7

=⇒

a 8-as kódú szó ba∗ alakú,

következ ˝o bet ˝u biztos b c(bab) = 8

ababcbabab

Java animáció: LZW-kódolás

(49)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 6

Dekódolás

Elvégezhet ˝o pusztán az egybet ˝us 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 ˝o két jel bet ˝u 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 ˝o szó, ami S-be került =⇒ c(ba) = 5 . . . Ha itt tartunk

1 2 4 3 5 8 1 10 11 1 ababcba

a→ 1 b→ 2 c→ 3 ab→ 4 ba→ 5 abc→ 6 cb→ 7

=⇒

a 8-as kódú szó ba∗ alakú,

következ ˝o bet ˝u biztos b c(bab) = 8

ababcbabab

Java animáció: LZW-kódolás Laczay Bálint féle GIF animáció

(50)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 7

Gráfalgoritmusok

• irányított gráfok: G = (V, E)

(51)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

(52)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

(53)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

(54)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o – a V elemeivel indexelt – n-szer n-es mátrix:

A[i, j] =

0 ha (i, j) 6∈ E, 1 ha (i, j) ∈ E.

(55)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o – a V elemeivel indexelt – n-szer n-es mátrix:

A[i, j] =

0 ha (i, j) 6∈ E, 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).

(56)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o – a V elemeivel indexelt – n-szer n-es mátrix:

A[i, j] =

0 ha (i, j) 6∈ E, 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).

v4 5

1

1

1

−1 v3 3

v1 v5

5 v2

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

(57)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= j és (i, j) éle G-nek,

∗ különben.

(58)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= j és (i, j) éle G-nek,

∗ különben.

v4 5

1

1

1

−1 v3 3

v1 v5

5 v2

C =

0 5 ∗ 1 ∗

∗ 0 ∗ ∗ −1

∗ 1 0 ∗ ∗

∗ ∗ 1 0 5

∗ ∗ 3 ∗ 0

(59)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= j és (i, j) éle G-nek,

∗ különben.

v4 5

1

1

1

−1 v3 3

v1 v5

5 v2

C =

0 5 ∗ 1 ∗

∗ 0 ∗ ∗ −1

∗ 1 0 ∗ ∗

∗ ∗ 1 0 5

∗ ∗ 3 ∗ 0

Hátránya =⇒ a mérete (n2 tömbelem) teljesen független az élek számától.

(60)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 10

Éllistás megadás

G = (V, E) gráf minden csúcsához egy lista tartozik.

(61)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

(62)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Az i listáján egy élnek a lista egy eleme (cellája) felel meg.

(63)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Az i listáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

r r r r

- - -

?

1

i

n - r r r

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella

-

?

(64)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Az i listáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

r r r r

- - -

?

1

i

n - r r r

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella

-

?

Az (i, j) élnek megfelel ˝o cella tartalmazza a j sorszámot, a c(i, j) súlyt (ha van), egy mutatót a következ ˝o cellára, és esetleg még egyet az el ˝oz ˝ore is.

(65)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝ol kimen ˝o éleket, és ha kell, ezek súlyát is.

Az i listáján egy élnek a lista egy eleme (cellája) felel meg.

- -

jc(i,j)

r r r r

- - -

?

1

i

n - r r r

1-b ˝ol kimen ˝o élek cellái

egy tipikus cella

-

?

Az (i, j) élnek megfelel ˝o cella tartalmazza a j sorszámot, a c(i, j) súlyt (ha van), egy mutatót a következ ˝o cellára, és esetleg még egyet az el ˝oz ˝ore is.

Tárigény: n + e cella, Irányítatlan gráfoknál:

n + 2e cella

(66)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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?

(67)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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?

(68)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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?

(69)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o (nem feltétlenül egyszer ˝u) u v irányított útjának a hossza az úton szerepl ˝o élek súlyainak összege.

(70)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o (nem feltétlenül egyszer ˝u) u v irányított útjának a hossza az úton szerepl ˝o é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.

(71)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o (nem feltétlenül egyszer ˝u) u v irányított útjának a hossza az úton szerepl ˝o é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;

(72)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o (nem feltétlenül egyszer ˝u) u v irányított útjának a hossza az úton szerepl ˝o é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

(73)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o (nem feltétlenül egyszer ˝u) u v irányított útjának a hossza az úton szerepl ˝o é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.

(74)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o (nem feltétlenül egyszer ˝u) u v irányított útjának a hossza az úton szerepl ˝o é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 ˝o: 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 ˝ol!

(75)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝u 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

(76)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝u 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

(77)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝u 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 ˝o közelítése a keresett d(s, v) távolságnak

(78)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝u 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 ˝o közelítése a keresett d(s, v) távolságnak

• A közelítést lépésr ˝ol lépésre finomítjuk, végül d(s, v)-t érjük el.

(79)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= w és (v, w) éle G-nek,

∞ különben.

Kezdetben D[v] := C[s, v] minden v ∈ V csúcsra.

(80)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= 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

(81)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= 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 ˝ol álló út egy legrövidebb s x út, (az élsúlyok nemnegatívak!).

(82)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= 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 ˝ol á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 ˝ol való távolságát már tudjuk.

(83)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 6= 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 ˝ol á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 ˝ol való távolságát már tudjuk.

=⇒ x-et betehetjük (s mellé) a KÉSZ halmazba.

(84)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

w

C [x, w ]

(85)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

w

C [x, w ]

Újra válasszunk ki a v ∈ V \ KÉSZ csúcsok közül egy olyat, amelyre D[v]

minimális.

(86)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

w

C [x, 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 ˝ol való távolságát tartalmazza.

(87)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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

w

C [x, 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 ˝ol 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.

(88)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o közelítése ∗)

(89)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o 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.

(90)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o 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

(91)

ALGORITMUSELMÉLET 7. EL ˝OADÁ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 ˝o 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 ˝o

pontok éppen a KÉSZ-b ˝ol egyetlen éllel elérhet ˝o pontok.

(92)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következ ˝ok:

(a) KÉSZ pontjaira D[v] a legrövidebb s v utak hossza.

(93)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következ ˝ok:

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

(94)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következ ˝ok:

(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 ˝o (vagyis w ∈ V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza.

(95)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következ ˝ok:

(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 ˝o (vagyis w ∈ V \ KÉSZ) pontokra D[w] a legrövidebb különleges s w utak hossza.

Bizonyítás: (a) Indukcióval

(96)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következ ˝ok:

(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 ˝o (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 ˝ott

(97)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következ ˝ok:

(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 ˝o (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 ˝ott

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.

(98)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 16

Tétel. A (2) ciklus minden iterációs lépése után érvényesek a következ ˝ok:

(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 ˝o (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 ˝ott

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.

(99)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 17

x s

y

(100)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 17

x s

y

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?

(101)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 17

x s

y

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]

(102)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 17

x s

y

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 ˝ol

(103)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 17

x s

y

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 ˝ol

Láttuk, hogy d(s, x) = D[x], ez egy különleges s x út hossza volt a j + 1.

iteráció el ˝ott (itt a (c)-re vonatkozó indukciós feltevést használtuk)

(104)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 17

x s

y

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 ˝ol

Láttuk, hogy d(s, x) = D[x], ez egy különleges s x út hossza volt a j + 1.

iteráció el ˝ott (itt a (c)-re vonatkozó indukciós feltevést használtuk) annak végeztével az út minden pontja KÉSZ-beli lesz.

(105)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 18

x

w

s

(106)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 18

x

w s

(c) A j + 1. iteráció el ˝ott

D[w] = min

vKÉSZ\{x}

{d(s, v) + C[v, w]}.

(107)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 18

x

w s

(c) A j + 1. iteráció el ˝ott

D[w] = min

vKÉSZ\{x}

{d(s, v) + C[v, w]}.

Utána D[w] = min

vKÉSZ

{d(s, v) + C[v, w]}.

(108)

ALGORITMUSELMÉLET 7. EL ˝OADÁS 18

x

w s

(c) A j + 1. iteráció el ˝ott

D[w] = min

vKÉSZ\{x}

{d(s, v) + C[v, w]}.

Utána D[w] = min

vKÉSZ

{d(s, v) + C[v, w]}.

=⇒ Elég megnézni, hogy D[w] vagy d(s, x) + C[x, w] nagyobb

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

Ahhoz, hogy belássuk, hogy i szuperforrás, meg kell vizsgálni az i-edik sor és i-edik oszlop minden elemét.... Ahhoz, hogy belássuk, hogy i szuperforrás, meg kell vizsgálni az

Mindig a legkisebb súlyú olyan élet színezzük kékre, ami még nem alkot kört az eddigi kék élekkel.. = ⇒ A kék élek végig egy erd ˝ot határoznak meg, akkor van kész,

Amikor a többágú kapcsolatot binárissá írtuk át, akkor olyan egyedhalmaz keletkezik (a kapcsolatból), aminek általában nincs is attribútuma, ezért ennek az egyedhalmaznak

Az M Turing-gép számolási ideje az s inputon a megállásáig végrehajtott lépések száma tárigénye pedig a felhasznált (olvasott) szalagcellák száma.... Id ˝ o-

Az adatbázis fogalmi keretének megadására jók, tervet lehet velük készíteni, amit aztán majd át kell alakítani az adatbáziskezel ˝o által használt formális megadási

On-line változatban is m ˝uködik a piros-kék algoritmus: színezzük az új élet élet kékre; ha emiatt kialakul egy kék kör, akkor abból töröljünk egy maximális súlyú

Ez BCNF, de mégis redundáns, mert ha valamelyik tárgynál szerepel egy gyereknév, akkor az összes többinél is szerepelnie kell. beszúrni nehéz, mert amikor egy sort

• relációs algebra (LEAP, letölthet ˝o, SIGMOD-ról link), ISBL nehezen emészthet ˝obb, algebrai alapú; ez volt: láttuk, hogy relációs algebrával jól meg lehet