Professional Documents
Culture Documents
Algoritmusok: Fogalma
Algoritmusok: Fogalma
Fogalma
algoritmus = jól definiált számítási eljárás; bemenet / kimenet: véges számú érték; előállítás:
véges számú lépés
haszna: pontosan meghatározott számítási feladatok megoldása
helyes algoritmus = minden bemenetre megáll és helyes eredményt ad
hatékonysága = sebessége
NP-teljes feladatok = feladatok, amelyekre nem ismerünk hatékony algoritmust
o ha egyetlen NP-teljes feladatra létezik hatékony algoritmus, akkor mindegyikre
létezik (pl. Négyszín-tétel)
elemzés: végrehajtáshoz szükséges erőforrások meghatározása (pl. memória, futási idő)
o bemenet mérete: bemenő elemek száma növelése: lineárisan növeli a várható
lépések számát
o futási idő: végrehajtott alapműveletek száma (pl. hasonlítás, értékadás)
Lineáris keresés
rendezetlen tömbön dolgozik
elemzése:
o elindul a tömb első elemétől
o legjobb / legrosszabb eset: 1 lépésben / utolsó lépésben találjuk meg
o ha a keresett elem nem található n + 1 lépésben ér véget az algoritmus
adatok lineáris növekedése műveletek számának lineáris növekedése
O JELÖLÉS Ω JELÖLÉS
aszimptotikus felső korlátot ad a függvényre (o aszimptotikus alsó korlátot ad a függvényre (ω
jelölés– nem éles felső korlát) jelölés – nem éles alsó korlát)
g(n) függvény: O(g ( n ) ) azon függvények g(n) függvény: Ω(g ( n )) azon függvények
halmaza, amelyek esetén: halmaza, amelyek esetén:
létezik c és n0 pozitív állandó, úgy, hogy létezik c és n0 pozitív állandó, úgy, hogy
minden n ≥ n0 esetén teljesül, hogy minden n ≥ n0 esetén teljesül, hogy
0 ≤ f ( n ) ≤ cg ( n ) 0 ≤ cg ( n ) ≤ f ( n)
bármely két f ( n ) és g(n) függvény esetén:
o f ( n )=θ ( g ( n ) ), ha f ( n )=O ( g ( n ) ) és f ( n )=Ω ( g ( n ) )
függvények összehasonlítása:
o tranzitivitás f ( n )=θ ( g ( n ) ) és g ( n )=θ ( h ( n ) ) akkor f ( n )=θ ( h ( n ) )
o reflexivitás f ( n )=θ ( f ( n ) )
o szimmetria f ( n )=θ ( g ( n ) ) akkor, és csakis akkor, ha g ( n )=θ ( f ( n ) )
Halmaz
homogén, statikus, struktúra nélküli, nincs sorrend, véges
halmazokra értelmezett műveletek: eleme-e, unió/metszet/különbségképzés, összehasonlítás
(egyenlőség, részhalmaz)
halmaz adatszerkezet műveletei: létrehozás (felsorolás, korlátozott absztrakció, üres
halmaz), bővítés, törlés
ábrázolás (halmazok karakterisztikus függvényén alapul):
o lehetséges elemek számát korlátozzuk megfeleltetés a lehetséges elemek és a
lefoglalt bitek között áll fent
o az adott elem halmazhoz tartozása hozzátartozó bit „1”-re állítása
multihalmaz = egy adott elem többször is előfordulhat
o homogén, statikus / dinamikus, struktúra nélküli, nincs sorrend, véges
o eleme-e, unió, metszet, különbség, hányszor eleme, számosság
o létrehozás, bővítés, törlés, (csere)
o ábrázolás: nem kétértékű karakterisztikus függvény egész számok használata a
reprezentációban
Tömb
homogén, statikus, összetett adattípus
elemeire egyesével indexekkel hivatkozhatunk – asszociatív
dimenzió vektorok, mátrixok
folytonos elhelyezkedés a memóriában
tömb adatszerkezet műveletei: létrehozás, csere, törlés, elérés, rendezés, keresés, bejárás
Tömb – mátrixok
műveletek: létrehozás, elérés, csere, bejárás
reprezentáció:
o folytonos ábrázolás; sorfolytonos / oszlopfolytonos ábrázolás
o címfüggvényen alapul – meghatározza az elem térbeli elhelyezkedését (indexek
értékeinek és az adatszerkezet kezdő memóriacíme alapján)
háromszögmátrix
o főátló alatt / felett csupa 0 alsó / felső háromszögmátrix
o cél: helytakarékos tárolás
Sor
homogén, speciális szekvenciális, dinamikus, megőrzi az elemek sorrendjét (FIFO)
lineáris adatszerkezet
műveletek: létrehozás, üres-e, elem behelyezése, első elem kivétele, első elem olvasása
sor reprezentációja tömbben:
o index (sor eleje), sor hosszának megadása
Verem
homogén, speciális szekvenciális, dinamikus, megfordítja az elemek sorrendjét (LIFO)
lineáris adatszerkezet
műveletek: létrehozás, üres-e, elem behelyezése, felső elem kivétele, felső elem olvasása