3. előadás. alapfogalmak. Reprezentáció és implementáció, algoritmusok, a halmaz és a multihalmaz, tömbök.

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "3. előadás. alapfogalmak. Reprezentáció és implementáció, algoritmusok, a halmaz és a multihalmaz, tömbök."

Átírás

1 3. előadás, algoritmusok, a halmaz és a multihalmaz, tömbök. Adatszerkezetek és algoritmusok előadás február 25. Szétszórt (láncolt) építőelemei,, és Debreceni Egyetem Informatikai Kar

2 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Új algoritmusok, Scolar Informatika, Donald E. Knuth: A számítógépprogramozás művészete 1. (Alapvető algoritmusok), Műszaki Könyvkiadó, Donald E. Knuth: A számítógépprogramozás művészete 3. (Keresés és rendezés), Műszaki Könyvkiadó, Seymour Lipschutz: Adatszerkezetek, Panem-McGraw-Hill, Budapest, Rónyai Lajos, Ivanyos Gábor, Szabó Réka:, Typotex, Budapest, Félév teljesítésének feltételei: Gyakorlati aláírás 2 ZH Írásbeli vizsga, aminek az értékelésébe... További részletek: Szétszórt (láncolt) építőelemei

3 Beszúró rendezés procedure BESZÚRÓ-RENDEZÉS(A) 1 for j 2 to méret(a) do 2 kulcs A[j] 3 i j 1 4 while i 1 és A[i] > kulcs do 5 A[i + 1] A[i] 6 i i 1 7 end while 8 A[i + 1] kulcs 9 end for end procedure Vegyük észre: a while ciklus lineáris keresést használ kulcs helyének meghatározására az A elejében. Lehetne ezt bináris keresésre cserélni? Szétszórt (láncolt) építőelemei

4 Rendszer Elemek: egyedek Tulajdonságok (statikus rész) Viselkedés (dinamikus rész) Kölcsönhatás Komplex rendszer Nyílt rendszer Dinamikus rendszer Szétszórt (láncolt) építőelemei

5 Absztrakció, modellezés Modellalkotás, absztrakció Adatmodell, eljárásmodell Adat, információ Az adatelemek lehetnek egyszerűek (atomiak) és összetettek. Minden adatelem rendelkezik valamilyen értékkel. Az adatelemek között jól meghatározott kapcsolatrendszer van. Az adatelemek és a közöttük lévő kapcsolatok definiálják a logikai (absztrakt) adatszerkezetet. Független hardvertől, szoftvertől. Fizikai adatszerkezet (társzerkezet): adatszerkezet az operatív tárban vagy periférián (háttértáron). Szétszórt (láncolt) építőelemei

6 osztályozása Lehetséges csoportosítási szempontok: 1 Változhat-e az adatszerkezet elemeinek száma? statikus dinamikus 2 Milyen az adatszerkezet elemeinek a típusa? homogén heterogén 3 Milyen kapcsolatban állnak egymással az adatelemek az adatszerkezetben? Egy homogén adatszerkezet lehet struktúra nélküli asszociatív szekvenciális hierarchikus hálós A heterogén et nem csoportosítjuk ilyen szempont alapján. Szétszórt (láncolt) építőelemei

7 kel végezhető műveletek (Alapvető algoritmusok) 1 Létrehozás 2 Módosítás bővítés törlés (fizikai, logikai) csere 3 Rendezés 4 Keresés 5 Elérés 6 Bejárás 7 Feldolgozás Szétszórt (láncolt) építőelemei

8 Ábrázolási (i) módok Ábrázolás alatt az adatszerkezet memóriában való megjelenési formáját értjük. Ez minden adatszerkezet esetén lehet folytonos (vektorszerű) szétszórt (láncolt) Az adatelemek számára tárhelyeket foglalunk a memóriában. Egy tárhely mindig egy bájtcsoportot jelent, amely egy adatelem értékét tárolja, illetve szerkezetleíró információkat is hordozhat. Szétszórt (láncolt) építőelemei

9 Egy tárhelyen egy adatelem értékét tároljuk. A tárhelyek a memóriában folytonos, összefüggő tárterületet alkotnak, a tárhelyek mérete azonos. Előnye: közvetlen elérés, a kezdőcím és az egy adatelemhez tartozó tárhely méretének ismeretében a csere művelete könnyen megvalósítható hatékony rendező algoritmusok (pl. gyorsrendezés) hatékony kereső algoritmusok (pl. bináris keresés) Hátránya: nem segíti a bővítés és a fizikai törlés műveletének végrehajtását Szétszórt (láncolt) építőelemei

10 Szétszórt (láncolt) Egy tárhelyen egy adatelem értékét (adatrész) és legalább egy mutató értékét (mutatórész) tároljuk. A mutatók értékei memóriacímek lehetnek, amelyek megmondják az adatelem rákövetkezőinek tárbeli helyét. A tárhelyek mérete nem szükségképpen azonos, elhelyezkedésük a memóriában tetszőleges. tárhely {}}{ } {{ } adatrész } {{ } mutatórész A szétszórt ábrázolási mód alapvető fajtái: egyirányban láncolt lista cirkuláris lista kétirányban láncolt lista multilista Szétszórt (láncolt) építőelemei

11 Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. fej tárhely { (listaelem) }} { }{{}}{{} adatrész mutatórész nil A láncolt lista első elemének tárbeli címét egy mutató, a fejmutató tárolja. A láncolt lista végét egy speciális érték, a NIL érték jelzi. Amennyiben a fejmutató tartalmazza ezt az értéket, akkor az egyirányban láncolt lista üres Szétszórt (láncolt) építőelemei

12 Cirkuláris lista Hasonló az egyirányban láncolt listához, ám itt egyik listaelem mutatórésze sem tartalmazhatja a NIL értéket: az utolsó listaelem mutatórészébe az első listaelem címe kerül. fej tárhely { (listaelem) }} { }{{}}{{} adatrész mutatórész A cirkuláris lista első elemének tárbeli címét most is egy mutató, a fejmutató tárolja. Amennyiben a fejmutató a NIL értéket tartalmazza, akkor a cirkuláris lista üres. Szétszórt (láncolt) építőelemei

13 Kétirányban láncolt lista Hasonló az egyirányban láncolt listához, ám itt minden listaelem mutatórésze két részből áll: az egyik mutató az adott listaelemet megelőző, a másik az adott listaelemet követő listaelemre mutat. egyik fej adatrész mutatórész {}}{{}}{ nil } {{ } tárhely (listaelem) másik fej nil Két lánc alakul ki, két fejmutatóval. A fejmutatók a kétirányban láncolt lista első és utolsó elemére mutatnak. Ha mindkét fejmutató értéke NIL, akkor a kétirányban láncolt listának nincs egyetlen eleme sem, azaz üres. (És mi a helyzet, ha csak az egyikfej mutató értéke NIL?) Szétszórt (láncolt) építőelemei

14 Kétirányban láncolt lista Hasonló az egyirányban láncolt listához, ám itt minden listaelem mutatórésze két részből áll: az egyik mutató az adott listaelemet megelőző, a másik az adott listaelemet követő listaelemre mutat. egyik fej adatrész mutatórész {}}{{}}{ nil } {{ } tárhely (listaelem) másik fej nil Két lánc alakul ki, két fejmutatóval. A fejmutatók a kétirányban láncolt lista első és utolsó elemére mutatnak. Ha mindkét fejmutató értéke NIL, akkor a kétirányban láncolt listának nincs egyetlen eleme sem, azaz üres. (És mi a helyzet, ha csak az egyikfej mutató értéke NIL?) Szétszórt (láncolt) építőelemei

15 Multilista (1) Ebben a változatban a listaelemek adatrésze összetett. Az adatrész minden komponensére fölépíthető egy egyirányban láncolt lista. betű A 54 R 79 } {{ } adatrész szám G tárhely { (listaelem) }} { nil 18 nil } {{ } mutatórész Annyi lánc alakítható ki, ahány komponensből áll az adatrész. Minden lista külön fejmutatóval rendelkezik, és minden listaelem mindegyik láncban előfordul egyszer. Szétszórt (láncolt) építőelemei

16 Multilista (2) Ebben a változatban a listaelemek adatrésze általában összetett. Az adatrész valamely komponensének értékeit figyelembe véve építjük föl az egyirányban láncolt listákat. Adamkó 1978 Espák 1978 nil Jeszenszky 1975 Kollár 1977 nil 1978 Szétszórt (láncolt) Kósa 1975 Pánovics 1975 nil Annyi lánc alakul ki, ahány különböző értéket az adatrész adott komponense felvesz. Minden lista külön fejmutatóval rendelkezik, és minden listaelem csak egy láncban szerepel, pontosan egyszer. építőelemei

17 Multilista (3) Ebben a változatban a listaelemek tartalmaznak egy-egy fejmutatót is, melyek újabb láncolt listák első elemeire mutatnak. A B D nil nil Béla nil Szétszórt (láncolt) fej Aladár Anna nil építőelemei Az allisták szerkezete eltérhet a főlista szerkezetétől.

18 grafikus (képi) megjelenítésénél használt jelölések: : adatelem : kapcsolat két adatelem között Amikor egy absztrakt adatszerkezethez megadjuk a i módját és a leképezését, akkor megadjuk az absztrakt adatszerkezet reprezentációját. Szétszórt (láncolt) absztrakt adatszerkezet leképezés ábrázolás Ha a reprezentáció mellé megadjuk a műveletek megvalósítását (algoritmusok) is, akkor megadjuk az absztrakt adatszerkezet ját. építőelemei

19 Algoritmus fogalma Olyan eljárás (elemi lépések sorozata), melynek során a következők teljesülnek: jól meghatározott objektumokon jól meghatározott műveleteket végzünk minden lépés elvégzése után egyértelműen definiált helyzet áll elő véges sok lépés után végetér nem csak egy feladatra, hanem egy feladatosztály tagjaira érvényes Szétszórt (láncolt) építőelemei

20 at a következő módokon lehet megadni: természetes (beszélt) emberi nyelven pontokba szedett természetes nyelvi utasításokkal folyamatábrával pszeudonyelvvel (lásd gyakorlaton) valamilyen programozási nyelven Szétszórt (láncolt) építőelemei

21 Példa folyamatábrával START be: N összeg 0 i 1 Szétszórt (láncolt) összeg összeg + i i i + 1 igen i N nem ki: összeg STOP építőelemei

22 építőelemei Vezérlési szerkezetek 1 szekvencia (utasítások végrehajtása a felírás sorrendjében) 2 szelekció (elágazások) 3 iteráció (ciklusok) 4 alprogramok hívása ( kész algoritmusok bevonása a részfeladatok megoldásába) Szétszórt (láncolt) építőelemei

23 Szabad helyek kezelése Adatszerkezetek szétszórt ábrázolása esetén Az ához memória kell, ami véges. A szabad helyekkel gazdálkodni kell! Lehetséges módszerek (a szabad tárhelyek nyilvántartására) folytonos ábrázolás esetén: szabad tárhelyek összegyűjtése a lefoglalt tárterület végén (időigényes) szemétgyűjtögetés (garbage collection) elemmozgatással minden tárhelyhez hozzárendelünk egy bitet, ami a foglaltságot jelzi (nincs elemmozgatás) szétszórt ábrázolás esetén: szabad helyek láncolt listája (probléma: különböző méretű tárhelyek) szemétgyűjtögetés (garbage collection) a szabad helyek láncolásával a szabad helyek nyilvántartása bitvektor segítségével Szétszórt (láncolt) építőelemei

24 Halmaz és multihalmaz és a multihalmaz struktúra nélküli, homogén és dinamikus. Szétszórt (láncolt) minden eleme különböző. ban előfordulhatnak azonos elemek is. Mindkét adatszerkezetre igaz, hogy az adatszerkezetben lévő elemek között nincs kapcsolat (ezért struktúra nélküli ). építőelemei

25 adatszerkezet adatszerkezet a matematikai halmaz fogalom megjelenése az szintjén. Mindig véges ennyiben nem felel meg teljesen a matematikai halmaz fogalmának. alapműveletei eleme, : megmondja, hogy egy adatelem benne van-e a halmazban vagy sem unió, : két halmaz unióját adja metszet, : két halmaz metszetét adja különbség, \: két halmaz különbségét adja Szétszórt (láncolt) építőelemei

26 adatszerkezet Az kel végezhető hagyományos műveletek megvalósítása halmazok esetén: Létrehozás kétféleképpen: explicit módon, a halmaz elemeinek felsorolásával (esetleg üresen) egy predikátum segítségével Bővítés unióképzéssel Törlés csak fizikai, különbségképzéssel Csere nincs Rendezés, keresés, elérés, bejárás nem értelmezettek Feldolgozás a halmaz alapműveleteinek a segítségével Szétszórt (láncolt) építőelemei

27 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. K Z A R T D E S Szétszórt (láncolt) A Z építőelemei

28 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. K Z A R T D E S Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z építőelemei lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy egy bit méretű tárterületet.

29 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. K Z A R T D E S Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z építőelemei lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy egy bit méretű tárterületet. Az adott értékű adatelemhez tartozó bit fogja jelezni, hogy az adatelem benne van-e a halmazban (1) vagy sem (0).

30 adatszerkezet ja Folytonos reprezentáció esetén a halmaz alapműveleteinek megvalósítása visszavezethető egyszerű bitműveletekre: Unióképzés x A B x A x B Metszetképzés Szétszórt (láncolt) Különbségképzés x A B x A x B x A \ B x A x / B építőelemei

31 adatszerkezet abban különbözik a halmaztól, hogy megengedi az adatelemek ismétlődését, benne több azonos értékű elem is előfordulhat. alapműveletei eleme, : megmondja, hogy egy adatelem benne van-e a multihalmazban vagy sem unió, : két multihalmaz unióját adja metszet, : két multihalmaz metszetét adja különbség, \: két multihalmaz különbségét adja Multihalmazoknál az kel végezhető hagyományos műveletek megvalósítása hasonló a halmazokéhoz (lásd ott). feldolgozása a multihalmaz alapműveleteinek a segítségével történik. Szétszórt (láncolt) építőelemei

32 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) építőelemei lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk.

33 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

34 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) 2 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

35 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

36 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

37 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

38 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

39 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

40 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

41 adatszerkezet reprezentációja Klasszikus reprezentációja folytonosan, karakterisztikus függvény segítségével történik. R E K Z A D A T S Z E E T E K Szétszórt (láncolt) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z lehetséges elemeit sorba rendezzük, s mindegyikhez hozzárendelünk egy tárterületet. általában 1 bájtot A tárhelyeken az adott értékű elemek előfordulásainak számát tároljuk. építőelemei

42 adatszerkezet ja Folytonos reprezentáció esetén a multihalmaz alapműveleteinek megvalósítása visszavezethető egyszerű aritmetikai (számtani) műveletekre: Unióképzés x A B-ben = x A-ban + x B-ben Metszetképzés x A B-ben = min{x A-ban, x B-ben} Szétszórt (láncolt) építőelemei Különbségképzés x A \ B-ben = max{0, x A-ban x B-ben}

43 Az asszociatív olyan, amelyekből bizonyos adott feltételeknek eleget tevő részhalmazokat választhatunk ki. A legfontosabb művelet tehát a részhalmaz kiválasztásának, a részhalmazképzésnek a művelete. Szétszórt (láncolt) építőelemei A részhalmazok ahogy az ábrán is látható átfedhetik egymást. Egyes esetekben a részhalmazok egyeleműek, máskor akárhány eleműek lehetnek.

44 adatszerkezet Statikus, homogén és asszociatív adatszerkezet. A felépítése definiálja: benne az adatelemek egymáshoz viszonyított helyzete a lényeges. bármelyik eleme egész számok sorozatán keresztül érhető el. Minden adatelemhez különböző egészszám-sorozat tartozik, így az asszociativitást biztosító részhalmazok egyeleműek és diszjunktak. A számsorozat számait indexeknek nevezzük, segítségükkel tudjuk az adatelemet kiválasztani. Az indexek darabszámát a tömb dimenziójának hívjuk. Ha mást nem mondunk, a tömb elemeinek az indexelése mindegyik dimenzióban 1-től indul. Szétszórt (láncolt) építőelemei

45 adatszerkezet A legegyszerűbb eset: egydimenziós tömb (vektor 1 ) Kétdimenziós tömb (mátrix). sor Szétszórt (láncolt) oszlop Léteznek magasabb dimenziójú tömbök is. A dimenziók száma tetszőlegesen nagy lehet, de mindig véges. 1 A vektor szó minden egyéb jelző nélküli használatakor statikus, egydimenziós tömbre gondolunk. építőelemei

46 Tömbökkel végezhető műveletek Létrehozás: rögzítjük a dimenziók számát és az indextartományokat. Ezzel egyben meghatározzuk a tömb elemszámát is. A szerkezet kialakításával párhuzamosan elemeket is elhelyezhetünk a tömbben. Bővítés: nincs, ugyanis a tömb statikus. Csere: bármely (létező) elem értékét felülírhatjuk egy új értékkel elhelyezhetünk elemet oda, ahová a létrehozáskor nem tettünk Törlés: csak logikai. Elérés: az adatelemek elérése közvetlen, az indexek segítségével. Rendezés: egydimenziós tömbök esetén értelmezhető, ott bármelyik rendezési algoritmus alkalmazható. Keresés: reprezentációfüggő művelet, egydimenziós tömbök esetén nagy a jelentősége, ott bármelyik keresési algoritmus alkalmazható. Bejárás: többdimenziós tömbök esetén reprezentációfüggő művelet (lásd később). A feldolgozás alapja a közvetlen elérés. Szétszórt (láncolt) építőelemei

47 Tömbök folytonos reprezentációja Az A[s..t] egydimenziós tömb leképezése: a s a s+1 a t K A hoz szükséges tárterület mérete: l (t s + 1) bájt, ahol l az egy adatelem ához szükséges tárhely mérete. Ha ismerjük a tárterület kezdőcímét (K ), akkor a következő címfüggvény segítségével bármely elem tárbeli címe meghatározható: az i indexű elem címe = K + l (i s) Szétszórt (láncolt) építőelemei

48 Tömbök folytonos reprezentációja Az A[s..t] egydimenziós tömb leképezése: a s a s+1 a t K }{{} l A hoz szükséges tárterület mérete: l (t s + 1) bájt, ahol l az egy adatelem ához szükséges tárhely mérete. Ha ismerjük a tárterület kezdőcímét (K ), akkor a következő címfüggvény segítségével bármely elem tárbeli címe meghatározható: az i indexű elem címe = K + l (i s) Szétszórt (láncolt) építőelemei

49 Tömbök folytonos reprezentációja Az A[s..t] egydimenziós tömb leképezése: a s a s+1 a t K }{{} l A hoz szükséges tárterület mérete: l (t s + 1) bájt, ahol l az egy adatelem ához szükséges tárhely mérete. Ha ismerjük a tárterület kezdőcímét (K ), akkor a következő címfüggvény segítségével bármely elem tárbeli címe meghatározható: az i indexű elem címe = K + l (i s) Szétszórt (láncolt) építőelemei

50 Tömbök folytonos reprezentációja Az A[s..n, t..m] kétdimenziós tömb leképezése történhet sorfolytonosan (lásd az ábrán) vagy oszlopfolytonosan. a s,t a s,t+1 a s,m K a n,t a n,t+1 a n,m Szétszórt (láncolt) }{{} l építőelemei

51 Tömbök folytonos reprezentációja Az A[s..n, t..m] kétdimenziós tömb leképezése történhet sorfolytonosan (lásd az ábrán) vagy oszlopfolytonosan. a s,t a s,t+1 a s,m K a s,t a s,t+1 a s,m }{{} l a n,t a n,t+1 a n,m Szétszórt (láncolt) építőelemei

52 Tömbök folytonos reprezentációja Az A[s..n, t..m] kétdimenziós tömb leképezése történhet sorfolytonosan (lásd az ábrán) vagy oszlopfolytonosan. a s,t a s,t+1 a s,m K a s,t a s,t+1 a s,m a s+1,t }{{} l a n,t a n,t+1 a n,m Szétszórt (láncolt) építőelemei

53 Tömbök folytonos reprezentációja Az A[s..n, t..m] kétdimenziós tömb leképezése történhet sorfolytonosan (lásd az ábrán) vagy oszlopfolytonosan. a s,t a s,t+1 a s,m K a n,t a n,t+1 a n,m a s,t a s,t+1 a s,m a s+1,t a n,t a n,t+1 a n,m }{{} l Szétszórt (láncolt) építőelemei

54 Tömbök folytonos reprezentációja Az A[s..n, t..m] kétdimenziós tömb leképezése történhet sorfolytonosan (lásd az ábrán) vagy oszlopfolytonosan. a s,t a s,t+1 a s,m K a n,t a n,t+1 a n,m Szétszórt (láncolt) a s,t a s,t+1 a s,m a s+1,t a n,t a n,t+1 a n,m }{{} l Sorfolytonos esetén ha ismerjük a tárterület kezdőcímét (K ), akkor a következő címfüggvény segítségével bármely elem tárbeli címe meghatározható: az (i, j) indexű elem címe = K + l (i s) (m t + 1) + l (j t) építőelemei

55 Tömbök folytonos reprezentációja Az A[s 1..n 1, s 2..n 2,..., s d..n d ] d dimenziós tömb sorfolytonos leképezése esetén a címfüggvény a következő (K továbbra is a tárterület kezdőcímét, l pedig az egy adatelem ához szükséges tárhely méretét jelöli): az (x 1, x 2,..., x d ) indexű elem címe = d d = K + l (x i s i ) (n j s j + 1) i=1 j=i+1 d j=d+1 (n j s j + 1) 1 Szétszórt (láncolt) építőelemei

56 Tömbök folytonos reprezentációja Az A[s 1..n 1, s 2..n 2,..., s d..n d ] d dimenziós tömb oszlopfolytonos leképezése esetén a címfüggvény a következő (K továbbra is a tárterület kezdőcímét, l pedig az egy adatelem ához szükséges tárhely méretét jelöli): az (x 1, x 2,..., x d ) indexű elem címe = d i 1 = K + l (x i s i ) (n j s j + 1) i=1 j=1 0 (n j s j + 1) 1 j=1 Szétszórt (láncolt) építőelemei

57 A háromszögmátrixok négyzetes (kvadratikus) mátrixok. a 1,1 a 1,2 a 1,3... a 1,n a 2,1 a 2,2 a 2,3... a 2,n a 3,1 a 3,2 a 3,3... a 3,n a n,1 a n,2 a n,3... a n,n Kétfajta háromszögmátrixot szoktunk megkülönböztetni: a felsőháromszög-mátrixot és az alsóháromszög-mátrixot.. Szétszórt (láncolt) építőelemei

58 A háromszögmátrixok négyzetes (kvadratikus) mátrixok. a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n Szétszórt (láncolt) a n,n építőelemei Az olyan négyzetes mátrixot, amelynek főátlója alatt csupa 0 elem található, felsőháromszög-mátrixnak nevezzük.

59 A háromszögmátrixok négyzetes (kvadratikus) mátrixok. a 1, a 2,1 a 2, a 3,1 a 3,2 a 3, Szétszórt (láncolt) a n,1 a n,2 a n,3... a n,n építőelemei Ha a négyzetes mátrix főátlója fölött lévő elemek mindegyikének értéke 0, akkor alsóháromszög-mátrixról beszélünk.

60 folytonos reprezentációja Az általános négyzetes mátrixokkal szemben, ahol az értékes elemek száma n 2, a háromszögmátrixoknál az értékes elemek száma csupán n (n + 1). 2 Az értékes elemeket emiatt sor- vagy oszlopfolytonosan egy n (n+1) 2 elemű V vektorra szoktuk leképezni. Szétszórt (láncolt) építőelemei

61 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) építőelemei (n 1) n 2 + n V :

62 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) a 1,1 (n 1) n 2 + n építőelemei V :

63 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) a 1,1 a 1,2 a 2,2 (n 1) n 2 + n építőelemei V :

64 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) a 1,1 a 1,2 a 2,2 a 1,3 a 2,3 a 3,3 (n 1) n 2 + n építőelemei V :

65 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) építőelemei a 1,1 a 1,2 a 2,2 a 1,3 a 2,3 a 3,3 a 1,n a 2,n a 3,n a n,n (n 1) n 2 + n V :

66 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) építőelemei a 1,1 a 1,2 a 2,2 a 1,3 a 2,3 a 3,3 a 1,n a 2,n a 3,n a n,n (n 1) n 2 + n V :

67 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) építőelemei a 1,1 a 1,2 a 2,2 a 1,3 a 2,3 a 3,3 a 1,n a 2,n a 3,n a n,n (n 1) n 2 + n V :

68 Felsőháromszög-mátrixok folytonos reprezentációja A felsőháromszög-mátrix értékes elemeit (a főátló elemeit és a fölötte elhelyezkedő elemeket) oszlopfolytonosan célszerű leképezni egy n (n+1) 2 elemű V vektorra: a 1,1 a 1,2 a 1,3... a 1,n 0 a 2,2 a 2,3... a 2,n 0 0 a 3,3... a 3,n a n,n Szétszórt (láncolt) építőelemei (n 1) n (n 1) n 2 + n V : a 1,1 a 1,2 a 2,2 a 1,3 a 2,3 a 3,3 a 1,n a 2,n a 3,n a n,n

69 Háromszög-mátrixok folytonos reprezentációja Felsőháromszög mátrixok esetén ennek megfelelően A V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti felsőháromszög-mátrix (i, j) indexű elemének az értékét: { 0, ha i > j a i,j = V t, egyébként, ahol t = j (j 1) 2 + i Alsóháromszög-mátrixok esetén viszont sorfolytonos leképezést célszerű használni. Ennek megfelelően, a V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti alsóháromszög-mátrix (i, j) indexű elemének az értékét: { 0, ha i < j a i,j = V t, egyébként, ahol t = i (i 1) 2 + j Szétszórt (láncolt) építőelemei

70 Háromszög-mátrixok folytonos reprezentációja Felsőháromszög mátrixok esetén ennek megfelelően A V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti felsőháromszög-mátrix (i, j) indexű elemének az értékét: { 0, ha i > j a i,j = V t, egyébként, ahol t = j (j 1) 2 + i Alsóháromszög-mátrixok esetén viszont sorfolytonos leképezést célszerű használni. Ennek megfelelően, a V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti alsóháromszög-mátrix (i, j) indexű elemének az értékét: { 0, ha i < j a i,j = V t, egyébként, ahol t = i (i 1) 2 + j Szétszórt (láncolt) építőelemei

71 Háromszög-mátrixok folytonos reprezentációja Felsőháromszög mátrixok esetén ennek megfelelően A V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti felsőháromszög-mátrix (i, j) indexű elemének az értékét: { 0, ha i > j a i,j = V t, egyébként, ahol t = j (j 1) 2 + i Alsóháromszög-mátrixok esetén viszont sorfolytonos leképezést célszerű használni. Ennek megfelelően, a V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti alsóháromszög-mátrix (i, j) indexű elemének az értékét: { 0, ha i < j a i,j = V t, egyébként, ahol t = i (i 1) 2 + j Szétszórt (láncolt) építőelemei

72 Szimmetrikus mátrixok A szimmetrikus mátrixok négyzetes (kvadratikus) mátrixok. a 1,1 a 1,2 a 1,3... a 1,n a 2,1 a 2,2 a 2,3... a 2,n a 3,1 a 3,2 a 3,3... a 3,n a n,1 a n,2 a n,3... a n,n Szétszórt (láncolt) építőelemei Melyekre teljesül az a i,j = a j,i egyenlőség bármely i-re és j-re (1 i, j n).

73 Szimmetrikus mátrixok folytonos reprezentációja Szimmetrikus mátrixok esetén vagy a felső háromszöget képezzük le oszlopfolytonosan, vagy pedig az alsóháromszöget sorfolytonosan A V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti szimmetrikus mátrix (i, j) indexű elemének az értékét: a i,j = V t, ahol t = { j (j 1) 2 + i, ha i j i (i 1) 2 + j egyébként, a 1,1 a 1,2 a 1,3... a 1,n a 2,1 a 2,2 a 2,3... a 2,n Szétszórt (láncolt) építőelemei a 3,1 a 3,2 a 3,3... a 3,n a n,1 a n,2 a n,3... a n,n

74 Szimmetrikus mátrixok folytonos reprezentációja Szimmetrikus mátrixok esetén vagy a felső háromszöget képezzük le oszlopfolytonosan, vagy pedig az alsóháromszöget sorfolytonosan A V vektorból a következő képlet segítségével kaphatjuk vissza az eredeti szimmetrikus mátrix (i, j) indexű elemének az értékét: a i,j = V t, ahol t = u (u 1) + v; u = MAX(i, j) és v = MIN(i, j) 2 a 1,1 a 1,2 a 1,3... a 1,n a 2,1 a 2,2 a 2,3... a 2,n Szétszórt (láncolt) építőelemei a 3,1 a 3,2 a 3,3... a 3,n a n,1 a n,2 a n,3... a n,n

75 Általában egydimenziós tömböt értünk alatta, ekkor más szavakkal (dinamikus) vektornak is nevezzük. A dinamikus tömb mérete szűkebb értelemben a feldolgozás során tetszőlegesen (dinamikusan) változik. Ebben az esetben gyakorlatilag egy szekvenciális lista adatszerkezetet kapunk (lásd később). Tágabb értelemben fizikailag továbbra is statikus tömbről beszélünk, a logikai adatszerkezet létrehozáskor megadott elemszámát viszont később bizonyos határok között a lefoglalt tárterület méretétől függően módosíthatjuk. Ilyenkor a tömb végén lehetnek adatelemek által nem használt, de a létrehozáskor lefoglalt tárhelyek. Bővítés a dinamikus tömb tetszőleges helyén végrehajtható. Fizikai törlés bármely elem esetén értelmezhető. A dinamikus tömb egyéb műveletei megegyeznek a (statikus) tömb műveleteivel. Szétszórt (láncolt) építőelemei

76 A ritka mátrixok olyan (általában nagyméretű) mátrixok, amelyekben a legtöbb elem értéke ugyanaz (általában 0). Az ettől eltérő értékkel rendelkező elemeket ritka elemeknek nevezzük Szétszórt (láncolt) építőelemei

77 folytonos reprezentációja Helytakarékossági okból a ritka mátrixnak csak az értékes elemeit (a ritka elemeket), valamint azok sor- és oszlopindexeit célszerű tárolni három vektorban, mégpedig a sorindexek, azon belül pedig az oszlopindexek szerint növekvő sorrendben. Ezt a módszert 3 soros reprezentációnak nevezzük: Szétszórt (láncolt) építőelemei SOR = OSZLOP = ÉRTÉK = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2)

78 folytonos reprezentációja A 3 soros reprezentáció létrehozása Az algoritmus bemenete az A m n-es mátrix, kimenete: k, SOR, OSZLOP, ÉRTÉK. 1: procedure LÉTREHOZÁS(A) 2: k 0 3: for i 1 to m do 4: for j 1 to n do 5: if A[i, j] 0 then 6: k k + 1 7: SOR[k] i 8: OSZLOP[k] j 9: ÉRTÉK[k] A[i, j] 10: end if 11: end for 12: end for 13: end procedure Szétszórt (láncolt) építőelemei

79 folytonos reprezentációja Elérés a 3 soros reprezentációban Az algoritmus bemenete: SOR, OSZLOP, ÉRTÉK, i, j, kimenete a mátrix (i, j) indexű elemének az értéke. 1: function ELÉRÉS(SOR, OSZLOP, ÉRTÉK, i, j) 2: for l 1 to méret(sor) do 3: if SOR[l] = i then 4: if OSZLOP[l] = j then 5: return ÉRTÉK[l] 6: end if 7: if OSZLOP[l] > j then 8: return 0 9: end if 10: end if 11: if SOR[l] > i then 12: return 0 13: end if 14: end for 15: return 0 16: end function Szétszórt (láncolt) építőelemei

80 folytonos reprezentációja A 3 soros reprezentáció nem segíti a ritka mátrix oszlopfolytonos feldolgozását, ezért bevezethetünk egy negyedik vektort, amelynek az elemei az aktuális ritka elem oszlopában található következő ritka elem reprezentációbeli indexét adják meg. Ezt a módszert 4 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0 ) Szétszórt (láncolt) építőelemei

81 folytonos reprezentációja A 3 soros reprezentáció nem segíti a ritka mátrix oszlopfolytonos feldolgozását, ezért bevezethetünk egy negyedik vektort, amelynek az elemei az aktuális ritka elem oszlopában található következő ritka elem reprezentációbeli indexét adják meg. Ezt a módszert 4 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4 ) Szétszórt (láncolt) építőelemei

82 folytonos reprezentációja A 3 soros reprezentáció nem segíti a ritka mátrix oszlopfolytonos feldolgozását, ezért bevezethetünk egy negyedik vektort, amelynek az elemei az aktuális ritka elem oszlopában található következő ritka elem reprezentációbeli indexét adják meg. Ezt a módszert 4 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5 ) Szétszórt (láncolt) építőelemei

83 folytonos reprezentációja A 3 soros reprezentáció nem segíti a ritka mátrix oszlopfolytonos feldolgozását, ezért bevezethetünk egy negyedik vektort, amelynek az elemei az aktuális ritka elem oszlopában található következő ritka elem reprezentációbeli indexét adják meg. Ezt a módszert 4 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0 ) Szétszórt (láncolt) építőelemei

84 folytonos reprezentációja A 3 soros reprezentáció nem segíti a ritka mátrix oszlopfolytonos feldolgozását, ezért bevezethetünk egy negyedik vektort, amelynek az elemei az aktuális ritka elem oszlopában található következő ritka elem reprezentációbeli indexét adják meg. Ezt a módszert 4 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) Szétszórt (láncolt) építőelemei

85 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1 ) Szétszórt (láncolt) építőelemei

86 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1, 4 ) Szétszórt (láncolt) építőelemei

87 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1, 4, 0, 0 ) Szétszórt (láncolt) építőelemei

88 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1, 4, 0, 0, 5) Szétszórt (láncolt) építőelemei

89 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = O = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1, 4, 0, 0, 5) (1 ) Szétszórt (láncolt) építőelemei

90 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = O = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1, 4, 0, 0, 5) (1, 2 ) Szétszórt (láncolt) építőelemei

91 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = O = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1, 4, 0, 0, 5) (1, 2, 0, 0, 0 ) Szétszórt (láncolt) építőelemei

92 folytonos reprezentációja Ahhoz, hogy ne kelljen keresnünk az egyes sorok és oszlopok első ritka elemét, a 4 soros reprezentációt kiegészíthetjük még két vektorral, amelyeknek az elemei a megfelelő sor, illetve oszlop első ritka elemének a reprezentációbeli indexét adják meg. Ezt a módszert 4+2 soros reprezentációnak nevezzük: SOR = OSZLOP = ÉRTÉK = KÖVINDEX = S = O = (1, 1, 1, 2, 5) (1, 2, 6, 2, 6) (1, 2, 6, 4, 2) (0, 4, 5, 0, 0) (1, 4, 0, 0, 5) (1, 2, 0, 0, 0, 3) Szétszórt (láncolt) építőelemei

93 szétszórt reprezentációja A folytonos reprezentáció hátránya, hogy nem tudjuk előre, hány ritka elem van a mátrixban, így azt sem tudjuk, mekkora vektorokra lesz szükségünk. Megoldás: tároljuk a ritka elemeket és azok indexeit egy egyirányban láncolt listában sorindex, azon belül oszlopindex szerinti növekvő sorrendben! Szétszórt (láncolt) nil építőelemei

94 szétszórt reprezentációja A sor- és oszlopfolytonos feldolgozást egyaránt elősegíti, ha a ritka elemeket multilistában helyezzük el: Szétszórt (láncolt) építőelemei

95 szétszórt reprezentációja A sor- és oszlopfolytonos feldolgozást egyaránt elősegíti, ha a ritka elemeket multilistában helyezzük el: Szétszórt (láncolt) építőelemei nil nil nil

96 szétszórt reprezentációja A sor- és oszlopfolytonos feldolgozást egyaránt elősegíti, ha a ritka elemeket multilistában helyezzük el: Szétszórt (láncolt) építőelemei nil nil nil nil nil nil

97 szétszórt reprezentációja A sor- és oszlopfolytonos feldolgozást egyaránt elősegíti, ha a ritka elemeket multilistában helyezzük el: Szétszórt (láncolt) oszlop nil nil nil építőelemei sor nil nil nil nil nil nil nil nil

Adatszerkezetek 1. előadás

Adatszerkezetek 1. előadás Adatszerkezetek 1. előadás Irodalom: Lipschutz: Adatszerkezetek Morvay, Sebők: Számítógépes adatkezelés Cormen, Leiserson, Rives, Stein: Új algoritmusok http://it.inf.unideb.hu/~halasz http://it.inf.unideb.hu/adatszerk

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

Egyirányban láncolt lista

Egyirányban láncolt lista Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten

Részletesebben

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

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.. A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6

Részletesebben

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

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 . előadás ról általában, soros, önátrendező, rendezett és kulcstranszformációs Adatszerkezetek és algoritmusok előadás 0. április. ról általában,, és Debreceni Egyetem Informatikai Kar. Általános tudnivalók

Részletesebben

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

2. Milyen értéket határoz meg az alábbi algoritmus, ha A egy vektor?. (2 pont) A Név: l 2017.04.06 Neptun kód: Gyakorlat vezet : HG BP l 1. Az A vektor tartalmát az alábbi KUPACOL eljárással rendezzük át maximum kupaccá. A={28, 87, 96, 65, 55, 32, 51, 69} Mi lesz az értéke az A vektor

Részletesebben

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

Algoritmusok és adatszerkezetek I. 1. előadás Algoritmusok és adatszerkezetek I 1 előadás Típusok osztályozása Összetettség (strukturáltság) szempontjából: elemi (vagy skalár, vagy strukturálatlan) összetett (más szóval strukturált) Strukturálási

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok Adatszerkezetek és algoritmusok Jegyzet dr. Juhász István előadása alapján Készítette Csordás Annamária és Mohai Gábor A valós világban rendszerekről beszélünk. A dolgok összetevői egymással kölcsönhatásban

Részletesebben

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

3. TÖMBÖK A tömb absztrakt adattípus Legyen T az E alaptípus feletti k ( 1) dimenziós tömb típus. Vezessük be az I I1

3. TÖMBÖK A tömb absztrakt adattípus Legyen T az E alaptípus feletti k ( 1) dimenziós tömb típus. Vezessük be az I I1 3. TÖMBÖK Az egyszerű adattípusok ismertetését a tömbökkel kezdjük. Az sem okozna zavart, ha ezt a fejezet nem szerepelne jegyzetünkben, tekintettel arra, hogy a tömböket ismerjük a programozási kurzusokból.

Részletesebben

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

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

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

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 Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

Részletesebben

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

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

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

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Érdekes informatika feladatok

Érdekes informatika feladatok A keres,kkel és adatbázissal ellátott lengyel honlap számos díjat kapott: Spirit of Delphi '98, Delphi Community Award, Poland on the Internet, Golden Bagel Award stb. Az itt megtalálható komponenseket

Részletesebben

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista. Lista adatszerkezet A lista adatszerkezet jellemzői 1 Különböző problémák számítógépes megoldása során gyakran van szükség olyan adatszerkezetre, amely nagyszámú, azonos típusú elem tárolására alkalmas,

Részletesebben

Táblázatok fontosabb műveletei 1

Táblázatok fontosabb műveletei 1 Táblázatok fontosabb műveletei 1 - - Soros táblázat procedure BESZÚR1(TÁBLA, újelem) - - beszúrás soros táblázatba - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok

Részletesebben

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

Algoritmizálás, adatmodellezés 1. előadás Algoritmizálás, adatmodellezés 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az induló élből

Részletesebben

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

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás.  Szénási Sándor Láncolt listák Egyszerű, rendezett és speciális láncolt listák előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Láncolt

Részletesebben

22. GRÁFOK ÁBRÁZOLÁSA

22. GRÁFOK ÁBRÁZOLÁSA 22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is

Részletesebben

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

10. előadás Speciális többágú fák 10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.

Részletesebben

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

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

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

A félév során előkerülő témakörök A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

1.előadás Tornai Kálmán

1.előadás Tornai Kálmán 1.előadás Tornai Kálmán tornai.kalman@itk.ppke.hu Általános tudnivalók Előadás: 2 óra (Labor)gyakorlat: 3 óra Előismeretek: Kötelező: Bevezetés a programozásba I-II. Algebra és diszkrét matematika I. II.

Részletesebben

Programozás II. előadás

Programozás II. előadás Nem összehasonlító rendezések Nem összehasonlító rendezések Programozás II. előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Programozás II. 2 Rendezés

Részletesebben

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

Haladó rendezések. PPT 2007/2008 tavasz. Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

Részletesebben

2. előadás. Lineáris algebra numerikus módszerei. Mátrixok Mátrixműveletek Speciális mátrixok, vektorok Norma

2. előadás. Lineáris algebra numerikus módszerei. Mátrixok Mátrixműveletek Speciális mátrixok, vektorok Norma Mátrixok Definíció Az m n típusú (méretű) valós A mátrixon valós a ij számok alábbi táblázatát értjük: a 11 a 12... a 1j... a 1n.......... A = a i1 a i2... a ij... a in........... a m1 a m2... a mj...

Részletesebben

1. előadás. számításokban. Adatszerkezetek és algoritmusok előadás február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor

1. előadás. számításokban. Adatszerkezetek és algoritmusok előadás február 12. Kósa Márk, Pánovics János, Szathmáry László és Halász Gábor 1. előadás mint Adatszerkezetek és algoritmusok előadás 2019. február 12. fogalma megadása építőelemei mint helyessége elemzés,, és Debreceni Egyetem Informatikai Kar 1.1 Általános tudnivalók Ajánlott

Részletesebben

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

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel (record) tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is A tétel elemei mezők. Például tétel: személy elemei: név, lakcím, születési

Részletesebben

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

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

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

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

Részletesebben

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

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

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk

Részletesebben

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

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév

Részletesebben

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat

Részletesebben

Adatszerkezetek I. 1. előadás

Adatszerkezetek I. 1. előadás Adatszerkezetek I. 1. előadás Adatok jellemzői ismétlés 1. Azonosító Az a jelsorozat, amellyel hivatkozhatunk a tartalmára, amely által módosíthatjuk tartalmát. 2. Hozzáférési jog Adatokat módosítani,

Részletesebben

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

Láncolt listák Témakörök. Lista alapfogalmak Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök

Részletesebben

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.

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. Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

Részletesebben

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

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3 Láncolt Listák Adatszerkezetek Adatszerkezet: Az adatelemek egy olyan véges halmaza, amelyben az adatelemek között szerkezeti összefüggések vannak Megvalósítások: - Tömb, Láncolt lista, Fa, Kupac, Gráf,

Részletesebben

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.

Részletesebben

I. VEKTOROK, MÁTRIXOK

I. VEKTOROK, MÁTRIXOK 217/18 1 félév I VEKTOROK, MÁTRIXOK I1 I2 Vektorok 1 A síkon derékszögű koordinátarendszerben minden v vektornak van vízszintes és van függőleges koordinátája, ezeket sorrendben v 1 és v 2 jelöli A v síkbeli

Részletesebben

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

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. 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

Részletesebben

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

7. előadás. Gyorsrendezés, rendezés lineáris lépésszámmal. Adatszerkezetek és algoritmusok előadás március 6. 7. előadás, rendezés lineáris lépésszámmal Adatszerkezetek és algoritmusok előadás 2018. március 6.,, és Debreceni Egyetem Informatikai Kar 7.1 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen,

Részletesebben

Algoritmuselmélet 1. előadás

Algoritmuselmélet 1. előadás Algoritmuselmélet 1. 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 Február 11. ALGORITMUSELMÉLET 1. ELŐADÁS 1 Források

Részletesebben

Adatbázis rendszerek Gy: Algoritmusok C-ben

Adatbázis rendszerek Gy: Algoritmusok C-ben Adatbázis rendszerek 1. 1. Gy: Algoritmusok C-ben 53/1 B ITv: MAN 2015.09.08 Alapalgoritmusok Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés Összefésülés Szétválogatás Gyorsrendezés 53/2 Összegzés

Részletesebben

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

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 Gráfok 1. Tárolási módok, bejárások előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Gráfok 1. Tárolási módok Szélességi

Részletesebben

Algoritmizálás és adatmodellezés 2. előadás

Algoritmizálás és adatmodellezés 2. előadás Algoritmizálás és adatmodellezés 2 előadás Összetett típusok 1 Rekord 2 Halmaz (+multialmaz, intervallumalmaz) 3 Tömb (vektor, mátrix) 4 Szekvenciális fájl (input, output) Pap Gáborné, Zsakó László: Algoritmizálás,

Részletesebben

hatására hátra lép x egységgel a toll

hatására hátra lép x egységgel a toll Ciklusszervező utasítások minden programozási nyelvben léteznek, így például a LOGO-ban is. LOGO nyelven, (vagy legalábbis LOGO-szerű nyelven) írt programok gyakran szerepelnek az iskola számítástechnikai

Részletesebben

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

Rendezések. Összehasonlító rendezések Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk

Részletesebben

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz 2018/2019 ősz Elérhetőségek Előadó: (safaro@math.bme.hu) Fogadóóra: hétfő 9-10 (H épület 3. emelet 310-es ajtó) A pontos tárgykövetelmények a www.math.bme.hu/~safaro/kalkulus oldalon találhatóak. A mátrix

Részletesebben

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan

Részletesebben

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

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat 9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:

Részletesebben

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

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I. Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom 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

Részletesebben

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

Láncolt listák. PPT 2007/2008 tavasz. Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Láncolt listák elvi felépítése Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Láncolt

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

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

Algoritmizálás és adatmodellezés tanítása 6. előadás Algoritmizálás és adatmodellezés tanítása 6. előadás Összetett típusok 1. Rekord 2. Halmaz (+multihalmaz, intervallumhalmaz) 3. Tömb (vektor, mátrix) 4. Szekvenciális file (input, output) Pap Gáborné,

Részletesebben

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

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 1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június

Részletesebben

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

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék 9. előadás Wagner György Általános Informatikai Tanszék Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb,

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. 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 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

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

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 Keresés Rendezés Feladat 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 2016. november 7. Farkas B., Fiala

Részletesebben

Bevezetés a programozásba. 5. Előadás: Tömbök

Bevezetés a programozásba. 5. Előadás: Tömbök Bevezetés a programozásba 5. Előadás: Tömbök ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és

Részletesebben

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK Sorozat fogalma Definíció: Számsorozaton olyan függvényt értünk, amelynek értelmezési tartománya a pozitív egész

Részletesebben

INFORMATIKA javítókulcs 2016

INFORMATIKA javítókulcs 2016 INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.

Részletesebben

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

Tuesday, March 6, 12. Hasító táblázatok Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok

Részletesebben

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet   takach november 30. 1 Diszkrét matematika I, 12 előadás Dr Takách Géza NyME FMK Informatikai Intézet takach@infnymehu http://infnymehu/ takach 2005 november 30 Vektorok Definíció Egy tetszőleges n pozitív egész számra n-komponensű

Részletesebben

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

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 Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív

Részletesebben

Gyakorló feladatok ZH-ra

Gyakorló feladatok ZH-ra Algoritmuselmélet Schlotter Ildi 2011. április 6. ildi@cs.bme.hu Gyakorló feladatok ZH-ra Nagyságrendek 1. Egy algoritmusról tudjuk, hogy a lépésszáma O(n 2 ). Lehetséges-e, hogy (a) minden páros n-re

Részletesebben

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási

Részletesebben

Algoritmuselmélet 1. előadás

Algoritmuselmélet 1. előadás Algoritmuselmélet 1. 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 Február 11. ALGORITMUSELMÉLET 1. ELŐADÁS 1 Források

Részletesebben

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS)

6. LISTÁK ábra. A lista absztrakt adatszerkezet (ADS) 6. LISTÁK Az előző fejezetekben megismerkedtünk a láncolt ábrázolással. Láttuk a verem és a sor, valamint előre tekintve a keresőfa pointeres megvalósításának a lehetőségét és előnyeit. A láncolt ábrázolással

Részletesebben

Programozás I. - 11. gyakorlat

Programozás I. - 11. gyakorlat Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

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

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism) Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes

Részletesebben

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

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

Részletesebben

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1 Halmazelmélet 1. előadás Farkas István DE ATC Gazdaságelemzési és Statisztikai Tanszék Halmazelmélet p. 1/1 A halmaz fogalma, jelölések A halmaz fogalmát a matematikában nem definiáljuk, tulajdonságaival

Részletesebben

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján

6. gyakorlat. Gelle Kitti. Csendes Tibor Somogyi Viktor. London András. jegyzetei alapján Közelítő és szimbolikus számítások 6. gyakorlat Sajátérték, Gersgorin körök Készítette: Gelle Kitti Csendes Tibor Somogyi Viktor Vinkó Tamás London András Deák Gábor jegyzetei alapján . Mátrixok sajátértékei

Részletesebben

Algoritmusok vektorokkal keresések 1

Algoritmusok vektorokkal keresések 1 Algoritmusok vektorokkal keresések 1 function TELJES_KERES1(A, érték) - - teljes keresés while ciklussal 1. i 1 2. while i méret(a) és A[i] érték do 3. i i + 1 4. end while 5. if i > méret(a) then 6. KIVÉTEL

Részletesebben

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27 Vektorterek Wettl Ferenc 2015. február 17. Wettl Ferenc Vektorterek 2015. február 17. 1 / 27 Tartalom 1 Egyenletrendszerek 2 Algebrai struktúrák 3 Vektortér 4 Bázis, dimenzió 5 Valós mátrixok és egyenletrendszerek

Részletesebben

8. gyakorlat Pointerek, dinamikus memóriakezelés

8. gyakorlat Pointerek, dinamikus memóriakezelés 8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.

Részletesebben

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések

Részletesebben

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

Ö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. Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,

Részletesebben

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

Számláló rendezés. Példa Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a

Részletesebben

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6.

6. előadás. Kiegyensúlyozottság, AVL-fa, piros-fekete fa. Adatszerkezetek és algoritmusok előadás március 6. 6. előadás, AVL-fa, piros-fekete fa Adatszerkezetek és algoritmusok előadás 2018. március 6.,, és Debreceni Egyetem Informatikai Kar 6.1 Általános tudnivalók Ajánlott irodalom: Thomas H. Cormen, Charles

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,

Részletesebben

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

Algoritmusok és adatszerkezetek I. 4. előadás Algoritmusok és adatszerkezetek I. 4. előadás A lista olyan sorozat, amelyben műveleteket egy kiválasztott, az ún. aktuális elemmel lehet végezni. A lista rendelkezik az alábbi műveletekkel: Üres: Lista

Részletesebben

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.

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. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt kimeneti adatot

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

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

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

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)

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 Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

Adatbáziskezelés. Indexek, normalizálás NZS 1

Adatbáziskezelés. Indexek, normalizálás NZS 1 Adatbáziskezelés Indexek, normalizálás NZS 1 Fáljszervezés módjai Soros elérés: a rekordok a fájlban tetszőleges sorrendben, például a felvitel sorrendjében helyezkednek el. A rekord azonosítója vagyis

Részletesebben

Vektorok, mátrixok, lineáris egyenletrendszerek

Vektorok, mátrixok, lineáris egyenletrendszerek a Matematika mérnököknek I. című tárgyhoz Vektorok, mátrixok, lineáris egyenletrendszerek Vektorok A rendezett valós számpárokat kétdimenziós valós vektoroknak nevezzük. Jelölésükre latin kisbetűket használunk.

Részletesebben

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok. Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

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

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 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 Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Bevezetés az informatikába

Bevezetés az informatikába Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.

Részletesebben