Mérnöki modellalkotás Az elmélettől a gyakorlatig. Prefix fák tömörítése: a dinamikus programozás

Hasonló dokumentumok
Mérnöki modellalkotás Az elmélettől a gyakorlatig. IP forgalomtovábbítás: Prefix fák és fabejárások

Házi feladatok megoldása. Automaták analízise, szintézise és minimalizálása. Házi feladatok megoldása. Házi feladatok megoldása

Kombinációs hálózatok egyszerűsítése

Lineáris egyenletrendszerek

Az LR elemző felépítése. Léptetés. Redukálás. Kiegészített grammatika. Mit kell redukálni? Kiegészített grammatika. elemző. elemző.

Az internet ökoszisztémája és evolúciója

Országos Középiskolai Tanulmányi Verseny 2010/2011 Matematika I. kategória (SZAKKÖZÉPISKOLA) Az 1. forduló feladatainak megoldása

Házi feladatok megoldása. Veremautomaták. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 12. gyakorlat

IX. A TRIGONOMETRIA ALKALMAZÁSA A GEOMETRIÁBAN

Környezetfüggetlen nyelvek

Házi feladatok megoldása. Harmadik típusú nyelvek és véges automaták. Házi feladatok megoldása. VDA-hoz 3NF nyelvtan készítése

Adatszerkezetek 7a. Dr. IványiPéter

Környezetfüggetlen nyelvek

4. Hatványozás, gyökvonás

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

Algoritmusok és adatszerkezetek gyakorlat 07

Kovács Judit ELEKTRO TEC HNIKA-ELEKTRONIKA 137

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

Exponenciális és logaritmikus egyenletek, egyenletrendszerek, egyenlôtlenségek

4. Legyen Σ = {0, 1}. Adjon meg egy determinisztikus véges automatát, amely azokat a szavakat fogadja el,

5. Logaritmus. I. Nulladik ZH-ban láttuk: 125 -öt kapjunk. A 3 5 -nek a 3. hatványa 5, log. x Mennyi a log kifejezés értéke?

7. tétel: Elsı- és másodfokú egyenletek és egyenletrendszerek megoldási módszerei

Jobbra és balraforgatás

7 7, ,22 13,22 13, ,28

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Programtervezési ismeretek

GAZDASÁGI MATEMATIKA I.

Mátrixok és determinánsok

6. Tárkezelés. Operációs rendszerek. Bevezetés A program címeinek kötése. A címleképzés. A címek kötésének lehetőségei

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

Kupac adatszerkezet. 1. ábra.

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Fonya ZH recap szabivános typo lehet, bocs

MATEMATIKA FELADATLAP a 4. évfolyamosok számára

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

Győry Ákos: A Titu-lemma. A Titu-lemma. Győry Ákos Földes Ferenc Gimnázium, Miskolc

Improprius integrálás

Középiskolás leszek! matematika. 13. feladatsor

4. előadás Determinisztikus véges automaták

V. Koordinátageometria

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

MATEMATIKA FELADATLAP a 4. évfolyamosok számára

Összeállította: dr. Leitold Adrien egyetemi docens

Improprius integrálás

MATEMATIKA FELADATLAP a 6. évfolyamosok számára

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

Formális nyelvek. Aszalós László, Mihálydeák Tamás. Számítógéptudományi Tanszék. December 6, 2017

MATEMATIKA FELADATLAP

MATEMATIKA FELADATLAP a 6. évfolyamosok számára

Irodalom. Formális nyelvek I/1. Véges automaták és reguláris nyelvek. A formális nyelvek egy alkalmazása. Polygon, 2004.

Adatszerkezetek és algoritmusok

II. EGYENLETEK ÉS EGYENLŐTLENSÉGEK

9. Exponenciális és logaritmusos egyenletek, egyenlőtlenségek

1. Végezd el a kijelölt mûveleteket a betûk helyére írt számokkal! Húzd alá azokat a mûveleteket,

1. Laboratóriumi gyakorlat ELMÉLETI ALAPFOGALMAK

Többváltozós analízis gyakorlat

MATEMATIKA FELADATLAP a 4. évfolyamosok számára

Elemi adatszerkezetek

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

1. feladat Oldja meg a valós számok halmazán a következő egyenletet: 3. x log3 2

MATEMATIKA FELADATLAP a 4. évfolyamosok számára

5. A logaritmus fogalma, a logaritmus azonosságai

Példa 30 14, 22 55,

Logisztika A. 4. gyakorlat Egységrakomány képzés

1144 PROGRAMOZÁSMÓDSZERTAN, PROGRAMOZÁSI NYELVEK

MATEMATIKA FELADATLAP a 4. évfolyamosok számára

10. előadás Speciális többágú fák

Minta feladatsor I. rész

I. HALMAZOK, KOMBINATORIKA

Gyakorló feladatsor 9. osztály

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

11. évfolyam feladatsorának megoldásai

Arányosság. törtszámot az a és a b szám arányának, egyszer en aránynak nevezzük.

PÉLDA: Négyezer-hatszázöt Jel Szám

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

MATEMATIKA FELADATLAP a 6. évfolyamosok számára

Juhász István Orosz Gyula Paróczay József Szászné Dr. Simon Judit MATEMATIKA 10. Az érthetõ matematika tankönyv feladatainak megoldásai

M. 2. Döntsük el, hogy a következő két szám közül melyik a nagyobb:

Információs Technológia

Formális nyelvek I/2.

PÉLDA: Négyezer-hatszázöt Jel Szám

Irodalom. Formális nyelvek I. Véges automaták és reguláris nyelvek. A formális nyelvek egy alkalmazása. Polygon, 2004.

Néhány szó a mátrixokról

Információs Technológia

Rendezettminta-fa [2] [2]

MATEMATIKA FELADATLAP a 4. évfolyamosok számára

Ptolemaios-tétele, Casey-tétel, feladatok

FELVÉTELI VIZSGA, július 15.

FELVÉTELI FELADATOK 8. évfolyamosok számára. M 1 feladatlap. Név:...

2. Gauss elimináció. 2.1 Oldjuk meg Gauss-Jordan eliminációval a következő egyenletrendszert:

0.1 Deníció. Egy (X, A, µ) téren értelmezett mérhet függvényekb l álló valamely (f α ) α egyenletesen integrálhatónak mondunk, ha

A valós számok halmaza

Gyakorló feladatsor 11. osztály

A programozás alapjai 1 Rekurzió

6. Laboratóriumi gyakorlat KAPACITÍV SZINTÉRZÉKELŐK

Fibonacci számok. Dinamikus programozással

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.

MATEMATIKA FELADATLAP a 6. évfolyamosok számára

MATEMATIKA FELADATLAP a 8. évfolyamosok számára

Átírás:

Mérnöki modelllkotás Az elmélettől gykorltig Prefix fák tömörítése: dinmikus progrmozás

Trtlom Ismétlés: IP forglomtováítás és LPM prefix fák és fejárások normlizálás: minimális prefix-mentes form FIB ggregáió: FIBek leírás minimális számú prefixszel Szint-tömörítés

Ismétlés

IPv4 forglomtováítás Minden somg trtlmzz él IP ímét Keresés forglomtováítási tálán (FIB) Eredmény: z útvonlon következő router (next-hop) IP íme 92.68../24 FIB:.../8.3..2.3..2/24.2..2/24 FIB:.4../6.2..2.4../24.4.5./24 Forrás 92.68..37 CSOMAG Célím:.4.9.29 Cél.4.9.29.4.9./24

A legspeifikus prefix Longest Prefix Mth (LPM): h egy IP ímre tö ejegyzés illeszkedik, kkor legtö iten illeszkedő prefix preferált Tálázt: LPM komplexitás O(n), n ejegyzésre Bináris prefix f: O(log n) futási idően LPM IP prefix Prefix NH 6.../3 96.../4 96.../3 76.../4

A prefix f: keresés A keresett IP ím következő itjének megfelelően vgy élímkéjű élen lépünk tová Tároljuk legutoljár olvsott ímkét LPM(69.2.75.54) = LPM(...) NULL LPM(78.4.66.9) = LPM(...) NULL

Prefix fák ekvivleniáj FIBek leírás nem egyedi: FIB ggregáió IP prefix Prefix Címke.../ - 28.../.../2 28.../2 IP prefix Prefix Címke.../ - 64.../ 92.../2 Két FIB ekvivlens, h minden 32 ites IPv4 ímre z LPM eredménye megegyezik FIB FIB 2, h LPM(FIB, ) = LPM(FIB 2, )

Fejárások: preorder preorder(f, f, i): lklmzzuk f-et F gyökerére mjd l és jo oldli részfákr rekurzívn preorder(f, f, i): x f(f, i) preorder(left(f), f, x) preorder(right(f), f, x) Írjuk e minden pont gyökértől vett távolságot: preorder(f, f, ) 3 2 3 2 2 2 3 f(f, i): lel(f) i return (i+) 3 3 3 3 4 4 4

Fejárások: postorder postorder(f, f): f függvényt elő lklmzzuk részfákon rekurzívn és sk ezután gyökéren postorder(f, f): postorder(left(f), f) postorder(right(f), f) return f(f) Írjuk e minden pont részf leveleinek számát f(f): if (F lef): lel(f) else: lel(f) lel(left(f)) + lel(right(f)) 5 2 3 2

Egy hsznos f-trnszformáió FIB ekvivlens trnszformáiój egyedi lk Egymás utáni preorder és postorder ejárássl. preorder(f, f, d ) 2. postorder(f, g) f(f, i): if F is interior: if left(f): dd_node(left(f)) if right(f): dd_node(right(f)) if (lel(f) == ): lel(f) i return lel(f) g(f, i): if F is lef: return if lel(left(f)) == lel(right(f)) == lel(f): remove_node(left(f)) remove_node(right(f)) return lel(f) =

Normlizálás d : z első preorder-t kezdeti ímkével indítjuk Ez kerül ímkézetlen pontokr: defult gtewy! IP prefix Prefix Címke.../ - 28.../.../2 28.../2 normlizálás IP prefix Prefix Címke.../2 64.../2 28.../

Normlizálás: tuljdonságok A normlizált FIB táláztos formán prefixmentes: egyik ináris kuls sem prefixe másiknk Ninsenek kevésé speifikus ejegyzések! IP prefix Prefix Címke.../2 64.../2 28.../ A prefix f levél-ímkézett (ímke sk levélen) és szályos (nins enne NULL pointer ) A továikn normlizált lkot hsználjuk

FIB ggregáió: FIB leírás minimális számú prefixszel

FIB ggregáió Egy IP router minden továítndó somgr LPM keresést végez K. 5 ejegyzésesen tö millió LPM/se A routerek kezdenek kifogyni memóriáól, hogy z Internet növekszik FIB ggregáió: FIB ekvivlens trnszformáiój memóritkrékos formá Régei routerek is hsználhtók mrdnk Befér FIB gyors memóriá (he)

FIB optimális tömörítése Láthttuk, hogy egy FIB leírás nem egyedi Egyes ejegyzések feleslegesek lehetnek IP prefix Prefix Címke.../ -.../ 28.../ 28.../2 92.../2 ORTC IP prefix Prefix Címke.../ 28.../ 92.../2 ORTC (Optiml Routing Tle Compression): ejegyzések számánk minimlizálás FIBen

ORTC: lpgondolt Bejegyzések szám FIBen = prefix fán levő ímkézett pontok szám Az ORTC élj olyn prefix f előállítás, melyen lehető legkevese ímke vn Ötlet: h egy pont szülőjétől ímkéjével zonos ímkét örököl, kkor nem kell ele ímkét írnunk Mivel z LPM eredménye ejárás során utoljár látott ímke, jó ímkére emlékszünk Helyes válsztássl megspórolhtó egy ímke!

ORTC: lpgondolt Elhgyhtó ejegyzés például egy levélen, h szülőtől zonos ímkét örököl H zonn szülő más ímkét trtlmz, kkor ki kell írnunk levéle ímkéjét Különen hiás somgtováítás ( helyett )

ORTC: lpgondolt Hsonlón teljes részfákr: elhgyhtó ímke h szülőtől megfelelő ímkét örököl H zonn szülő más ímkét válszt, kkor ki kell írnunk pont ímkéjét!? szülő ímkéje vgy szülő ímkéje vgy = elég ímke! két ímke kell!

ORTC Induljunk FIB normlizált lkjáól IP prefix Prefix Címke.../ -.../.../2 28.../2.../3 normlizálás

ORTC Jelölje DF z F (rész)f számár preferált ímkék hlmzát H F vlmely DF -eli ímkét örököl szülőtől, kkor F gyökérpontjá nem kell ímkét írnunk {} {} {, } {, } {} {} {} {} {}

Preferált ímkék: levélpontok H F levélpont, kkor DF = { lel(f) }? {} Emlékeztető: levélpontn mindig vn ímke, mert normlizált lkól indultunk Hsonlón: első pontoknk mindig lesz két gyermeke normlizálás mitt

Preferált ímkék: első pontok H F teljes részf (gyökere első pont), kkor: )H gyermekeihez trtozó D left(f) illetve D right(f) hlmzn vn zonos ímke, kkor ezt írv F- e két részfán spórolunk egy-egy ímkét h D left(f) D right(f), kkor D F = D left(f) D right(f) D F = {} {,} = {} nins ímke F-en {} {} {} {,} - ímke lolli részfán - ímke joolli részfán összesen 2 ímkével kevese!

Preferált ímkék: első pontok 2)H zonn D left(f) és D right(f) hlmzokn nins közös ímke H F pont Dleft(F) -eli ímkét örököl szülőjétől, kkor jooldli részfán lesz egy ímkével kevese de loldlin nem H Dright(F) -eli ímkét örököl, vie vers H egyiket sem, kkor nem tudunk spórolni Tehát F-en Dleft(F) és D right(f) uniój preferált h D left(f) D right(f) =, kkor D F = D left(f) D right(f)

Preferált ímkék: első pontok D F -eli ímkét örökölve, például -t D F = {,,} {} {} {} {,} nem D F -eli ímkét örökölve, például d-t h jó ímkét kpunk, - ímke d = d h nem jó ímkét kpunk, nem tudunk spórolni

ORTC lgoritmus Input: normlizált prefix f ) Postorder ejárássl előállítjuk z egyes részfákr z D F hlmzokt postorder(f, f) f(f): if F is lef: D F lel(f) else: if D left(f) D right(f) : D F D left(f) D right(f) else: D F D left(f) D right(f)

ORTC lgoritmus 2)Megkeressük z optimális ímkét gyökéren ármely d D ímkét válszthtjuk, zonos számú ímke lesz kpott fán D F = {,} gyökér ímkéje '' {} {,} {,} {} 4 ímke fán {} {} {} {} {} gyökér ímkéje '' 4 ímke fán

ORTC lgoritmus 3)Preorder ejárássl előállítjuk z optimális prefix fát A gyökére kiírjuk z imént tlált d ímkét preorder(f, g, d ), kezdeti érték: d f(f, d): if d D F : lel(f) return d else: // szülő jó ímkét válszt // üres ímke // szülő rossz ímkén lel(f) hoose ny d D F return lel(f)

ORTC lgoritmus A végén z üres leveleket eltávolíthtjuk {,} {} {} {,} {} {} {} {} {} {}

Dinmikus progrmozás Az ORTC lgoritmus klsszikus strtégiát követ: prolémát felosztjuk egymás ágyzódó részprolémákr legszűke részprolémától indulv rekurzívn felírjuk megoldást Most z egymás ágyzódó részprolémákt részfák definiálják A legszűke részprolém z egyszerű levél Egy első pontot mindig z ltt levő részfák megoldás ismeretéen oldunk meg

Dinmikus progrmozás Ez z áltlános prolémmegoldási strtégi dinmikus progrmozás ( divide nd onquer ) {} {,} {} {} {}

Dinmikus progrmozás Az ORTC lgoritmus ekvivlensen felírhtó dinmikus progrm formáján is A művészet részprolémák definiálás fákon végzett optimlizálás esetén triviális áltlános eseten prolém struktúrájáól Htékony áltlános optimizálási strtégi!

ORTC: péld )Prefix f felírás IP prefix Prefix Címke.../ - 28.../.../2 64.../2 28.../2.../3

ORTC: péld 2)Normlizálás normlizálás

ORTC: péld 3)Preferált ímkék keresése {} {} {,} {,} {} {} {} {}

ORTC: péld 4)Gyökérpont ímkéjének megválsztás 5)Módosított prefix f felírás {} {} {,} {,} {} {} {} {}

ORTC: péld 6)Üres levélpontok eltávolítás

ORTC: péld 7)FIB felírás (6 ejegyzés helyett elég 3, rádásul next-hop ímke teljesen eltűnik) IP prefix Prefix Címke.../ - 28.../2 32.../3

ORTC: péld ORTC IP prefix Prefix Címke.../ - 28.../.../2 64.../2 28.../2.../3 IP prefix Prefix Címke.../ - 28.../2 32.../3

ORTC: összefoglló Áltlán 3 4%-kl kise prefix f A FIB táláztos formáj még kise lehet: TCAM-ek hsználtkor kulsfontosságú! A módosított FIB teljesen ekvivlens z eredetivel (minden somgot pont ugynrr next-hopr küld) és z LPM keresés is zonos ORTC futási idő: 3 fejárás (optimlizálhtó kettőre) lineáris idejű lgoritmus De frissítés/módosítás nehéz újr kell építeni z egész fát: O(N) z optimális O(log N) helyett

FIB ggregáió: Prefix fák szinttömörítése

Szinttömörített prefix fák Eddig ináris prefix fákkl dolgoztunk: minden első pontnk 2 gyermeke vn fán Szinttömörített f: minden első pontnk 2 k gyermeke vn vlmely k > egész számr Bináris prefix f (normlizált) Szinttömötített prefix f (normlizált) Alterntív szinttömötített prefix f (normlizált)

Szinttömörített prefix fák LPM lpvetően ugynz, mint ináris fán, de h egy pontnk 2 k gyermeke vn, kkor egyszerre k itet olvsunk kulsól (IP ím) 2=2 gyermek esetén itet, 4=2 2 esetén kettőt Bináris prefix f (normlizált) Szinttömötített prefix f (normlizált) Alterntív szinttömötített prefix f (normlizált)

Prefix kiterjesztése Szinttömörítés: teljes mélységű fákt állítunk elő Ekvivlens zzl, minth 28.../ prefixet de-ggregáltuk voln FIBen IP prefix Prefix Címke.../2 64.../2 28.../ IP prefix Prefix Címke.../2 64.../2 28.../2 92.../2

Szinttömörített prefix fák Előny: kevese pointer = kise tárolási méret + gyors LPM (kevese szintet kell ejárni) Hátrány: pontokn tárolni kell gyermekek 2 k számát, pontosn k-t (ez z ún. stride) Bináris prefix f (normlizált) Szinttömötített prefix f (normlizált) Alterntív szinttömötített prefix f (normlizált)

Optimális szinttömörítés Nem mindegy, hogy f egyes pontjit mekkor stride-r írjuk ki optimlizálás Az lái példán z első szinttömörített fán sk 6 pointer vn, másodikn 8 Bináris prefix f (normlizált) Szinttömötített prefix f (normlizált) Alterntív szinttömötített prefix f (normlizált)

Optimális szinttömörítés Induljunk ki normlizált ináris prefix fáól Legyen h(f) egy F részf mélysége és legyen C i (F) z F részfán z i-edik szinten levő gyermekek hlmz ( gyökértől számítv) F F 2 h(f ) = 2 C h(f 2 ) = (F ) C 2 (F ) C (F 2 )

Optimális szinttömörítés Jelölje nk (F) z F részfán levő pointerek számát n z eseten, h F gyökeréen gyermekek szám pont 2 k (stride=k) Tegyük fel, hogy vlhogy már meghtároztuk F összes részfájár z optimális stride méretet és hozzá trtozó optimális n(f) fméretet Levélpontokr könnyű: levélpont ltti részf mindig üres (nins enne pointer), így: n(f) = h F levélpont

Optimális szinttömörítés Ötlet: h egy F részfát k stride-r írunk ki, kkor enne levő poiterek szám n k (F) = 2 k + n(g) G C k (F) Például z lái F f 2-es stride-on: 6 pointer 2 2 = 4 pointer F n 2 (F) = 4 + (2 + + + ) = 6 C 2 (F) n = 2 n =

Optimális szinttömörítés Természetesen minden pontr érdemes legkise fát eredményező stride-ot válsztni n(f) = min n k (F) = min (2 k + n(g)) k=..h(f) k=..h(f) G C k (F) Algoritmus: postorder sorrenden minden F részfár kiszámítjuk z optimális n(f) értéket Dinmikus progrm: részprolémák ismét részfák, önmgukn optimálisn megoldhtók! n(f) = min (2 k + n(g)) k=..h(f) G C k (F) F első pont n(f) = F levélpont

Optimális szinttömörítés: péld )Induljunk normlizált ináris prefix fáól

Optimális szinttömörítés: péld 2)Minden F részfár htározzuk meg z n k (F) és n(f) értékeket postorder sorrenden n =2+(+)=2 n=2 n= n=

Optimális szinttömörítés: péld 2)Minden F részfár htározzuk meg z n k (F) és n(f) értékeket postorder sorrenden n =2+(2+)=4 n 2 =4+(+++) n=4 n=2 n= n= n=

Optimális szinttömörítés: péld 2)Minden F részfár htározzuk meg z n k (F) és n(f) értékeket postorder sorrenden n=2 n=4 n= n= n= n =2+(+) n=2 n= n=

Optimális szinttömörítés: péld 2)Minden F részfár htározzuk meg z n k (F) és n(f) értékeket postorder sorrenden n=2 n=4 n= n= n= n =2+(4+2)=8 n 2 =4+(2+++)=6 n 3 =8+(++...)=8 n=6 n=2 n= n=

Optimális szinttömörítés: péld 3)Az optimális megoldás n(f)=6 irtokán előállítjuk z optimális szinttömörített prefix fát egy preorder ejárássl megoldhtó, h pontokn tároljuk z optimális stride-méretet n = 6 = n 2 optimális stride=2

Optimális szinttömörítés A szükséges preorder/postorder ejárásokt most nem részletezzük (gykorlt) A szinttömörítés sökkenti f méretét és szintjeinek számát (vgyis z LPM keresés idejét) A gykorltn elterjedten hsznált: Linux kernel fi_trie dtstruktúráj egy szint- (és útvonl)tömörített prefix f network proesszorok mindegyike támogtj Intel DPDK Kominálhtó z ORTC-vel (PhD tém, vlki?)