15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30.



Hasonló dokumentumok
Programozás II. előadás

Rendezések. Összehasonlító rendezések

Számláló rendezés. Példa

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

Haladó rendezések. PPT 2007/2008 tavasz.

Leszámláló rendezés. 1. Végigmegyünk az A-n, és ha egy elem értéke i, akkor megnöveljük C[i] értékét eggyel.

1. ábra. Számláló rendezés

Számjegyes vagy radix rendezés

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6.

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:

Gyakorló feladatok ZH-ra

Algoritmuselmélet 2. előadás

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

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

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont)

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

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Felvételi tematika INFORMATIKA

A félév során előkerülő témakörök

22. GRÁFOK ÁBRÁZOLÁSA

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Táblázatok fontosabb műveletei 1

Algoritmusok és adatszerkezetek I. 4. előadás

Algoritmusok és adatszerkezetek I. 1. előadás

14. Mediánok és rendezett minták

Algoritmuselmélet 1. előadás

Informatikai tehetséggondozás:

INFORMATIKA javítókulcs 2016

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

Összetett programozási tételek

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

Sorozatok I. Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma)

GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév

A rész (30 pont) A.1. Vajon mit csinál? (5 pont) A generál(n) algoritmus egy n természetes számot dolgoz fel (0 < n < 100).

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

BABEŞ-BOLYAI TUDOMÁNYEGYETEM MATEMATIKA-INFORMATIKA KAR Felvételi verseny - minta Informatika írásbeli

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

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

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

Algoritmuselmélet 1. előadás

Számításelmélet. Második előadás

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Adatszerkezetek 1. előadá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:

10. Szimultán kiválasztások

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Egyszerű programozási tételek

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

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.

Adatszerkezetek 2. Dr. Iványi Péter

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

XIII. Bolyai Konferencia Bodnár József Eötvös József Collegium, ELTE TTK, III. matematikus. A véletlen nyomában

Algoritmusok, adatszerkezetek, objektumok

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

PROGRAMOZÁSI TÉTELEK

Láncolt listák Témakörök. Lista alapfogalmak

Egyszerű programozási tételek

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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

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

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

1.1. Alapfeladatok. hogy F 1 = 1, F 2 = 1 és általában F n+2 = F n+1 + F n (mert a jobboldali ág egy szinttel lennebb van, mint a baloldali).

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

III. Gráfok. 1. Irányítatlan gráfok:

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Tuesday, March 6, 12. Hasító táblázatok

Programozási tételek. PPT 2007/2008 tavasz.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

Struktúra nélküli adatszerkezetek

PRÓBAÉRETTSÉGI VIZSGA január 18.

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

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.

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

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Algoritmuselmélet 12. előadás

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

Adatszerkezetek 7a. Dr. IványiPéter

Gyakori elemhalmazok kinyerése

Programozási módszertan. Mohó algoritmusok

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Adatszerkezetek 1. Dr. Iványi Péter

MATEMATIKA ÉRETTSÉGI május 8. EMELT SZINT

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Algoritmuselmélet 7. előadás

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

Algoritmusok bonyolultsága

Általános algoritmustervezési módszerek

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Átírás:

15. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. Edényrendezés Tegyük fel, hogy tudjuk, hogy a bemenő elemek (A[1..n] elemei) egy m elemű U halmazból kerülnek ki, pl. " A[i]-re igaz, hogy A[i] [1..m]. Lefoglalunk egy U elemeivel indexelt B tömböt (m db ládát), először mind üres. B segédtömb elemei lehetnek pl. láncolt listák. Lépések: 1. végigolvassuk az A-t, és az s = A[i] elemet a B[s] lista végére fűzzük. 2. elejétől a végéig növő sorrendben végigmegyünk B-n, és a B[i] listák tartalmát visszaírjuk A-ba. Általánosabb megfogalmazás. Legyen K az S sorozat elemeinek típusértékhalmaza, φ : K [0..M 1] olyan függvény, amire igaz, hogy ha j(k 1 ) < j(k 2 ), akkor k 1 < k 2. Legyenek E 0, E 1,... E M 1 edények, melyek éppen olyan sorozatok, mint S. Az egyes edényekben megmarad az S-beli elemek ottani relatív sorrendje. 1

Struktogram. Ahhoz, hogy Edényrend(S) egyszeri szétrakással rendezzen, elégséges, ha: minden edényben legfeljebb egy elem van, ( i [0, M 1] : E i 1) vagy: az egyes edényekben csak azonos elemek vannak, vagy: az egyes edények rendezettek. Ha az előző feltételek valamelyike teljesül, akkor tökéletes az edényrendezés. Ennek műveletigénye: θ(n), ahol n = S. Példa: nagyon sok embert kell magasság szerint sorba rakni = megéri minden egyes testmagasság számára egy edényt létrehozni. Lépésszám B létrehozása: O(m) első fázis: O(n) második fázis: O(n + m) összesen: O(n + m) Ez gyorsabb, mint az általános alsó korlát, ha pl. m c n!! Radix rendezés Tegyük fel, hogy a kulcsok összetettek, több komponensből állnak, (t 1,...t k ) alakú szavak, ahol a t i komponens az L i rendezett típusból való, a rendezés lexikografikus. Példa: Legyen (U; <) a huszadik századi dátumok összessége az időrendnek megfelelő rendezéssel: L 1 = {1900; 1901;...; 1999} n 1 = 100 L 2 = {január, február,..., december} n 2 = 12 L 3 = {1; 2;...; 31} n 3 = 31 2

A dátumok rendezése éppen az L i típusokból származó lexikografikus rendezés lesz. Menete. Rendezzük a sorozatot az utolsó, a k-adik komponensek szerint edényrendezéssel! A kapott eredményt rendezzük a k-1-edik komponensek szerint edényrendezéssel stb. Fontos, hogy az edényrendezésnél az elemeket a ládában mindig a lista végére tettük. Így, ha két azonos kulcsú elem közül az egyik megelőzi a másikat, akkor a rendezés után sem változik a sorrendjük. Ez egy konzervatív rendezés. Példa. Általános leírás. Az e = e d e d 1...e 2 e 1 számot jobbról balra, az alacsony helyiértékek felől indulva pozíciónként szétrakja edényekbe, majd összefűzi az edények tartalmát. Definíció. S i-rendezett (jelölés: x i y ), ha minden x = x d x d 1...x 2 x 1 és y = y d y d 1...y 2 y 1 ra: x < 0 y x i y x i < y i vagy x i = y i és i 1 y(i > 0) Ekkor a d-rendezés a közönséges rendezés Az i. pozíción a ϕ i függvényt alkalmazzuk: ϕ i (e) = e i Az i. pozíción végrehajtott szétrakás és összefűzés után S "i-rendezett" lesz. Hatékonyság 2 d-szer megyünk végig az S sorozaton, így T (n) = θ(d S ) 3

Struktogram Szokásos implementáció S fejelemes láncolt lista Az edényeket egy fej és egy vége mutató ábrázolja. A szétrakás és az összefűzés az elemek láncolásával megoldható. Összefűzéskor nem kell az egyes edények részlistáit végigolvasni, hanem egy darabban lehet őket láncolni. Leszámláló rendezés Tegyük fel, hogy van n db bemeneti elem, s ezek mindegyike 1 és k közötti egész szám. Az alapötlet: meghatározzuk minden egyes x bemeneti elemre azoknak az elemeknek a számát, amelyek kisebbek, mint az x. Ezután x-et közvetlenül a saját pozíciójára tudom helyezni. Legyen a bemenet az A[1..n] tömb, a kimenet a B[1..n] tömb. Mindkettő hossza: hossz[a] = hossz[b] = n Szükség van még egy C[1..k] tömbre átmeneti munkaterületként. Menete 1. Végigmegyünk az A-n, és ha egy elem értéke i, akkor megnöveljük C[i] értékét eggyel. 4

2. Minden i-re 1..k között meghatározzuk, hogy hány olyan bemeneti elem van, amelyiknek az értéke i (összegzés C-n) 3. Minden j-re n..1 között A[j]-t betesszük B megfelelő pozíciójába - ezt a C-ből állapítjuk meg.... 5

...... a végén: Ha betettük, akkor a C[A[j]] értékét csökkentjük, így a következő vele egyenlő elem már elé kerül, vagyis így stabil lesz a rendezés, az egyenlő elemeknél megtartja az eredeti sorrendet. Pszeudokód for i 1 to k do C[i] 0 for j 1 to hossz(a) do C[A[j]] C[A[j]] + 1 for i 2 to k do C[i] C [i] + C[i-1] for j hossz(a) downto 1 do B[C[A[j]]] A[j] C[A[j]] C[A[j]] - 1 C-ben az i-vel = elemek száma C-ben az i-vel elemek száma 6