Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.

Hasonló dokumentumok
Hátizsák feladat. Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8.

Megoldás meghatározása Ez a szakasz kitölti a c és S táblázatokat, a kiíratás S alapján egy rekurzív algoritmussal megtehető.

Az absztrakt adattípus egy (E,M) párral adható meg, ahol E az értékhalmaz, M a műveletek halmaza. Fő tulajdonságok. Verem

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

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

3. Absztrakt adattípusok

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

A Verem absztrakt adattípus

Bináris keresőfák. Adat : M Elemtip és Elemtip-on értelmezett egy lineáris rendezési reláció,

Kupac adatszerkezet. 1. ábra.

Egyesíthető prioritási sor

Partíció probléma rekurzíómemorizálással

Egyesíthető prioritási sor

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

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

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

Korlátozás és szétválasztás elve. ADAGOLO adattípus

Algoritmusok és adatszerkezetek gyakorlat 07

Programozás alapjai II. (7. ea) C++

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

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

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Számjegyes vagy radix rendezés

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Algoritmusok és adatszerkezetek II.

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

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Mohó algoritmusok. Példa:

Az B sorozatban a pontok helyes preorder sorrendben vannak. A preorder bejárásban p k -t közvetlenül q m követi.

22. GRÁFOK ÁBRÁZOLÁSA

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

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

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

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Adatszerkezetek 1. előadás

Programozás alapjai. 5. előadás

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

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

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

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

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

Adatszerkezet - műveletek

Programozási módszertan. Mohó algoritmusok

15. A VERSENYRENDEZÉS

Adatszerkezetek I. 1. előadás

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

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:

Adatszerkezetek 7a. Dr. IványiPéter

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

Önszervező bináris keresőfák

Algoritmizálás, adatmodellezés 1. előadás

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

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

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

A kurzus teljesítésének feltételei. Az I404 kódú kurzus teljesítéséhez meg kell oldani egy otthoni feladatot, határidő április 30.

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

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

Adatszerkezetek 1. Dr. Iványi Péter

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Általános algoritmustervezési módszerek

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Struktúra nélküli adatszerkezetek

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

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

Algoritmuselmélet 1. előadás

C programozási nyelv Pointerek, tömbök, pointer aritmetika

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

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

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

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

Elemi adatszerkezetek

Algoritmuselmélet 2. előadás

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Algoritmizálás és adatmodellezés tanítása 1. előadás

Láncolt listák. PPT 2007/2008 tavasz.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

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

Érdekes informatika feladatok

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

Adatszerkezetek 2. Dr. Iványi Péter

Táblázatok fontosabb műveletei 1

Fibonacci számok. Dinamikus programozással

A programozás alapjai 1 Rekurzió

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

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

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

Felvételi tematika INFORMATIKA

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Térinformatikai algoritmusok Elemi algoritmusok

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

Descartes-féle, derékszögű koordináta-rendszer

Generikus osztályok, gyűjtemények és algoritmusok

8. gyakorlat Pointerek, dinamikus memóriakezelés

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

Átírás:

Hátizsák feladat Egy adott hátizsákba tárgyakat akarunk pakolni. Adott n tárgy minden tárgynak van egy fontossági értéke ( f [i]), és egy súlya (s[i]), a hátizsákba maximum összesen S súlyt pakolhatunk. Az s[i] és S értékek egészek. Szeretnénk úgy választani tárgyakat, hogy az összfontosság maximális legyen. Tehát feladatunk, hogy kiválasszuk a tárgyaknak olyan halmazai közül, amelyekre az összsúly nem haladja meg S-t azt, amelyre maximális az összfontosság. Definiáljuk az F(W,i) függvényt, minden i = 1,...,n, W = 0,...,S értékre. Ez a függvény azon hátizsák probléma optimális függvényértékét adja meg, amelyben a tárgyak listája az első i tárgyat tartalmazza, és a hátizsák mérete W. Ekkor a kezdeti értékekre F(W,1) = f [1], ha s 1 W és 0 különben. Másrészt a következő rekurzió teljesül: F(W,i + 1) = max{f(w,i), f [i + 1] + F(W s[i + 1],i)}, ha s[i + 1] W. Továbbá F(W,i + 1) = F(W,i), ha s[i + 1] > W, A rekurzió valóban fennáll. A részprobléma optimális megoldásában vagy szerepel az i + 1-edik tárgy vagy nem, és ezen két eset maximuma adja az optimális célfüggvényértéket. Hatizsak for x:=0 to s[1]-1 F[x,1]:=0 for x:=s[1] to S F[x,1]:=f[1] for i:=2 to n {for x:=0 to S {F[x,i]:= F[x,i-1] if (s[i]<=x and F[x,i]<F[x-s[i],i-1]+f[i]) then F[x,i]:=F[x-s[i],i-1]+f[i]}} KIIR while(f[x,i]>0) {while (i>=1 and F[x,i]==F[x,i-1]) {i=i-1} print "i" x:=x-s[i] i:=i-1} Példa: A tárgyak (súly, fontosság) párokban (4,6) (3,5) (2,3) (2,3) a hátizsák kapacitása 8. Megoldás: 4,3,1. Az adatkezelés szintjei Probléma szintje. Modell szintje. 1. táblázat. A hátizsák megoldó algoritmus teljes táblázata 0 0 3 5 6 8 9 11 12 0 0 3 5 6 8 9 11 11 0 0 0 5 6 6 6 11 11 0 0 0 0 6 6 6 6 6 1

Absztrakt adattípus szintje. Absztrakt adatszerkezet szintje. Adatszerkezet szintje. Gépi szint. Absztrakt adattípus Az absztrakt adattípus egy (E,M) párral adható meg, ahol E az értékhalmaz, M a műveletek halmaza. Fő tulajdonságok Nem ismert az adatokat tároló adatszerkezet. Nem ismertek a műveleteket megvalósító algoritmusok, a műveletek specifikációjukkal definiáltak. Verem Értékhalmaz: E Verem = [a 1,...,a n : a i E,i = 1,...,n,] Műveletek: V : Verem, x : E {Igaz} Letesit(V) {V = []} {V = V } Megszuntet(V) {Igaz} {V = V } Uresit(V) {V = []} {V = [a 1,...,a n ]} VeremBe(V,x) {V = [a 1,...,a n,x]} {V = [a 1,...,a n ],n > 0} VeremBol(V,x) {V = [a 1,...,a n 1 ],x = a n } {V = V } NemUres(V) {NemUres = (Pre(V ) [])} {V = [a 1,...,a n ],n > 0} Teteje(V,x) {x = a n,v = Pre(V )} {V = [a 1,...,a n ],n > 0} Torol(V) {V = [a 1,...,a n 1 ]} Megvalósítás: tömb, lánc, kombinált. Lényeg: Az az elem kerül ki, amely utolsónak került be. Sor Értékhalmaz: E Sor = [a 1,...,a n : a i E,i = 1,...,n,] Műveletek: S: Sor, x : E {Igaz} Letesit(S) {S = []} {S = S} Megszuntet(S) {Igaz} {S = S} Uresit(S) {S = []} {S = [a 1,...,a n ]} SorBa(S,x) {S = [a 1,...,a n,x]} {S = [a 1,...,a n ],n > 0} SorBol(S,x) {S = [a 2,...,a n ],x = a 1 } {S = [a 1,...,a n ]} Elemszam(S) {Elemszam = n} 2

{S = [a 1,...,a n ],n > 0} Elso(S,x) {x = a 1,S = Pre(S)} {S = [a 1,...,a n ],n > 0} Torol(S) {S = [a 2,...,a n ]} Megvalósítás: tömb, lánc kombinált. Lényeg: Az az elem kerül ki, amely elsőként került be. Prioritási Sor Értékhalmaz: E, E-n értelmezett a lineáris rendezési reláció PriSor = S E. Műveletek: S : PriSor, x : E. {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {Igaz} {S = S} Uresit(S) {S = /0} {S = S} SorBa(S,x) {S = Pre(S) {x}} {S /0} SorBol(S,x) {x = min(pre(s)),pre(s) = S {x}} {S = {a 1,...,a n }} Elemszam(S) {Elemszam = n} {S /0} Elso(S,x) {x = min(pre(s)),pre(s) = S} {S /0} Torol(S) {S = Pre(S) \ {min(pre(s))}} Prioritási sor megvalósítások: PriSorT: kupac-tömb adatszerkezettel, PriSorR: kupac-tömb adatszerkezettel, a rendezési reláció konstruktor paraméter. Lényeg: Az az elem kerül ki, amely legkisebb. Példa Probléma: Halmaz k-adik legkisebb elemének kiválasztása. Bemenet: H = {a 1,...,a n }, különböző egész számok, 1 k n. Kimenet: a i H, amelyre {x : x H,x a i } = k, Feltételezzük, hogy az input egy T tömbben van eltárolva. Ekkor a megoldás. Valaszt Letesit S:Prisor for i:=1 to n Sorba(S,T[i]) for i=1 to k Sorbol(S,x) Return x Halmaz Értékhalmaz: E, Halmaz= H E Műveletek: H : Halmaz, x : E, I : Iterator {Igaz} Letesit(H) {H = /0} 3

{H = H} Megszuntet(H) {Igaz} {H = H} Uresit(H) {H = /0} {H = {a 1,...,a n }} Elemszam(H) {Elemszam = n} {H = H} Eleme(H,x) {Eleme = (x Pre(H))} {H = H} Bovit(H,x) {H = Pre(H) {x}} {H = H} Torol(H,x) {H = Pre(H) \ {x}} {H = H} IterKezd(H, I) {} {I = I} IterAd(I,x) {} {I = I} IterVege(I) {} Megvalósítás: bitvektor, tömb, lánc, hasítótábla. Iterátor használata Pascal megvalósítás: IterKezd(H,I); While Not IterVege(I) Do Begin IterAd(I,x); M(x); End; java megvalósítás: Iterator<E> I=H.iterator(); //IterKezd(H,I) while (I.hasNext()){ //!IterVege(I) x=i.next(); //IterAd(I,x) M(x); } vagy kiterjesztett for-ciklussal: for (E x:h) M(x); Példák további absztrakt adattípusokra Lista Kétirányú Lista Tömb Sorozat Függvény Reláció 4

Absztrakt adatszerkezetek Absztrakt adatszerkezet egy A = (M,R,Adat) rendezett hármas, ahol M az absztrakt memóriahelyek, cellák halmaza. R = {r 1,...,r k } a cellák közötti szerkezeti kapcsolatok. Adat a cellák adattartalmát megadó (parciális) függvény, c M esetén Adat(c) a c cellában lévő adat. f : A B parciális függvény esetén, ha x A elemre f nem értelmezett, akkor az f (x) = jelölést alkalmazzuk, tehát mint ha f : A B { } mindenütt értelmezett (totális) függvény lenne. Lánc A = (M,R,Adat) lánc, ha R = {kovet}, ahol kovet M M parciális függvény, amelyre teljesül: ( fej M)( x M)(!k 0)(x = kovet k ( f e j)) Nyilvánvalóan pontosan egy olyan c M cella van, amelyre kovet(c) =, ezt láncvégnek nevezzük. A lánc hosszán a cellák n számát értjük. Ha n > 0, akkor kovet (n 1) ( f e j) =láncvég. Az A = (M,R,Adat) lánc rendezett lánc a relációra nézve, ha ( x M)(Adat(x) Adat(kovet(x))) Az A = (M,R,Adat) körlánc, ha R = {kovet}, ahol kovet M M (totális) függvény, amelyre teljesül: ( x,y M)( k 0)(y = kovet k (x)) Kétirányú lánc Az A = (M,R,Adat) kétirányú lánc, ha R = {kovet, eloz}, ahol kovet, eloz M M parciális függvények, hogy: (M,{kovet,},Adat) és (M,{eloz},Adat) mindegyike lánc, és ( x M)(x = eloz(kovet(x)) = kovet(eloz(x))) Az A = (M,R,Adat) kétirányú körlánc, ha R = {kovet,eloz}, ahol kovet, eloz M M (teljesen értelmezett) függvények, hogy: (M,{kovet,},Adat) és (M,{eloz},Adat) mindegyike körlánc, és ( x M)(x = eloz(kovet(x)) = kovet(eloz(x)))... 1 2 3 n-1 n... 1 2 3 n-1 n 1. ábra. Fa 5

... 1 2 3 n-1 n... 1 2 3 n-1 n 2. ábra. A = (M,R,Adat) nem-rendezett fa, ha R = {r}, r M M bináris reláció, és van olyan g M, hogy a G = (M,r) irányított gráfban bármely x M-re pontosan egy (g,x) út vezet. g-t a fa gyökerének nevezzük. Vegyük észre, hogy ha minden él irányát megfordítjuk, akkor egy olyan f : M M parciális függvény gráfját kapjuk, amely csak g-re nincs értelmezve, és f körmentes. Tehát minden nem-rendezett fa egyértelműen megadható egy olyan Apa : M M parciális függvénnyel, amelyre teljesül a következő feltétel. ( g M)((Apa(g) = ) ( x M)(!k 0)(Apa k (x) = g)) Rendezett fa Legyen A=(M,R,Adat) olyan absztrakt adatszerkezet, hogy R = { f }, f : M (M { }). Tehát x M, f (x) = (y 1,...,y k ), ahol y i (M { }), i = 1,...,k. Minden i > 0 természetes számra és x M-re legyen f i (x) az f (x) i-edik komponense. Tehát f i (x) az x i-edik fiát adja. Ha f i (x) =, akkor hiányzik az i-edik fiú. Az A adatszerkezetet fának nevezzük, ha van olyan g M, hogy teljesül az alábbi négy feltétel: ( x M)( i)(g f i (x)) a gyökér nem fia senkinek, ( y g M)( x M)( i)( f i (x) = y) minden pont, ami nem gyökér fia valakinek ( x,y M)( i, j)( f i (x) = f j (y)) (x = y i = j)) minden pontnak legfeljebb egy apja van ( x g M)( i 1,...,i k )(x = f ik... f i1 (g)) minden pontba vezet út a gyökérből. Fa megadása elsőfiú-testvér kapcsolattal Legyen A = (M,R,Adat) olyan absztrakt adatszerkezet, hogy R = {e,t}, e,t : M M { }). Legyen f i (x) = t i 1 (e(x)) i > 0. Az A adatszerkezet fa, ha az f i függvények teljesítik a megfelelő feltételeket. Fák algebrai definíciója Legyen E tetszőleges adathalmaz. Az E-feletti fák Fa(E) halmaza az a legszűkebb halmaz, amelyre teljesül az alábbi három feltétel: Fa(E) ( a E)a Fa(E) 6

( a E)( t 1,...,t k Fa(E))(a(t 1,...,t k ) Fa(E)) Adatszerkezetek Egy A = (M,R,Adat) absztrakt adatszerkezet megvalósítása: Konkrét memória allokálás az M-beli absztrakt memória cellák számára. Az R szerkezeti kapcsolatok ábrázolása. Alapműveletek algoritmusainak megadása. Belső adatszerkezet A cellákat a főtárban lefoglalt memóriamezők tárolják. Minden cellát a számara lefoglalt memóriamező kezdőcíme azonosít. Külső adatszerkezet A cellákat külső tárolón (lemez) fájl tárolja. Minden cellát egy (F, p) pár azonosít, ahol F a tároló fájl azonosítója és p az F fájlon belüli rekordsorszám. Elosztott adatszerkezet Az egyes cellákat különböző számítógépeken tárolhatjuk. Egy cella azonosításához egy (G,F, p) hármast kell megadni, ahol G a hálózatba kapcsolt számítógép (adott hálózati protokoll szerinti) azonosítója, F a fájl azonosítója és p a fájlon belüli rekordsorszám. Endogén ábrázolás Az adatot és a szerkezeti kapcsolatot ugyanaz a cella tartalmazza. Exogén ábrázolás Külön cella tartalmazza az adatot és a szerkezeti kapcsolatokat. A szerkezeti kapcsolatot tartalmazó cellában a megfelelő adatra mutató hivatkozást tároljuk. Objektum orientált programozási nyelv esetén az adatszerkezetek ábrázolása alapvetően exogén. Például a java esetén csak akkor alkalmazható endogén ábrázolás, ha az adatok típusa elemi típus (int, long, float, double, char, boolean). Heterogén ábrázolás Egyes cellák csak szerkezeti kapcsolatot tartalmaznak, mások tartalmazhatnak adatot és a szerkezeti kapcsolatokat. Statikus ábrázolás A memória lefoglalás statikus tömbbel történik. Minden cellát tömbbeli indexe azonosít. Hiányzó szomszédot a 0 (vagy -1) index azonosítja. Dinamikus ábrázolás A cellák számára dinamikusan foglalunk memóriát, minden cellát pointer érték - memóriacím - azonosít. A hiányzó kapcsolatot a null (nil) pointer érték ábrázolja. A szerkezeti kapcsolatot, mint pointer értéket a cellában tároljuk. Szerkezeti kapcsolat számítása A szerkezeti kapcsolat esetenként megadható számítási eljárással is, nincs szükség a szerke- zeti kapcsolat tárolására. Minden x cellára és r szerkezeti kapcsolatra és adott i-re kiszámítható x-nek r-szerinti i-edik szomszédja. Például, teljes bináris fák esetén tömbben tárolva a bal és jobb fiú indexe számolható. 7

9 2 5 9 2 3 8 7 1 4 6 2 2 5 1 3 0 8 3 7 0 1 0 4 0 6 0 3. ábra. Kapcsolati tömb Kapcsolati tömb esetén egy pont fiaira mutatókat tárolunk statikusan, és tároljuk a fiúk számát is. A kapcsolati tömb előnye: Minden pont i-edik fia közvetlenül (konstans időben) elérhető. A kapcsolati tömb hátránya: Statikus, ezért nem lehet konstans időben bővíteni és törölni. Nagy memóriaigény. Kapcsolati lánc esetén egy pont fiaira mutatókat dinamikusan tároljuk láncban. Elsőfiú Apa testvér Elsőfiú tesvér ábrázolás esetén a pont az adaton kívül két mutatót tartalmaz, egyet a közvetlen testvérére egyet az elsőfiára. Elsőfiú Apa tesvér ábrázolás esetén a pont az adaton kívül három mutatót tartalmaz, egyet a közvetlen testvérére egyet az elsőfiára, egyet az apjára. 9 2 5 3 8 7 9 1 4 6 2 5 3 8 7 1 4 6 4. ábra. Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek. A fát egy tömbben reprezentáljuk, minden elem a szint szerinti bejárás szerinti sorszámának megfelelő eleme a tömbnek. A kupacot reprezentáló A tömbhöz két értéket rendelünk, hossz(a) a tömb mérete, kupacmeret(a) a kupac elemeinek a száma. 8

A kupac gyökere A[1], a szerkezeti kapcsolatok egyszerűen számolhatóak: A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] A[i] apja A[ i/2 ] A kupac minden gyökértől különböző elemére teljesül, hogy az értéke nem lehet nagyobb, mint az apjáé. Ennek következménye, hogy a kupac minden részfájára teljesül, hogy a gyökéreleme maximális. 1 2 3 4 5 6 7 8 9 5. ábra. A=[1,2,3,4,5,6,7,8,9] Kiskérdések Hátizsák feladat (KIIR is) Hátizsák feladat táblázatának kitöltése egy a feladatban megadott input esetén Lánc, körlánc, kétirányú lánc, körlánc definíciója kupac adatszerkezet definíciója 9