nevezetes algoritmusok n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Nevezetes algoritmusok PowerPoint Presentation
Download Presentation
Nevezetes algoritmusok

Loading in 2 Seconds...

play fullscreen
1 / 17

Nevezetes algoritmusok - PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on

Nevezetes algoritmusok. Lineáris keresés A legalapvetőbb keresési algoritmus. Adott elemet keresünk egy halmazban úgy, hogy minden elemet végignézünk, amíg a keresettet meg nem találjuk.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Nevezetes algoritmusok' - clover


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
Lineáris keresés

A legalapvetőbb keresési algoritmus. Adott elemet keresünk egy halmazban úgy, hogy minden elemet végignézünk, amíg a keresettet meg nem találjuk.

Legrosszabb eset: A halmaz minden elemével hasonlítunk, ez n összehason-lítást jelent. Átlagban: n/2+1 keresés.

Ha listában vagy külső táras állomány-ban kell rendeznünk. (Ekkor nehézkes a lista középső tagjának vizsgálata.)

slide3
Bináris keresés

Rendezett halmazban keresünk. A keresett elemet a középső elemhez hasonlítjuk. Ha egyezik, akkor megtaláltuk; ha nem, akkor abban a felében folytatjuk a keresést, amelyet a keresett érték kijelöl: ha a keresett érték kisebb, mint a középső elem, akkor az első felében, egyébként a másodikban. Az eljárást ilyen módon folytatjuk tovább.

[Log2n]+1 összehasonlítás.

Ha a középső elem vizsgálata nem okoz nehézséget. Pl.: tömbben tároljuk.

slide4

Beszúrás

Van egy n elemű rendezett halmazunk. Be akarunk szúrni egy n+1-edik elemet. Egyik lehetőség: végigszaladunk a halmazon, és betesszük a beszúrandó elemet az elé az elem elé, ami már nem előzi meg. Általában n/2, de a legrosszabb esetben n összehasonlításra van szükség. Másik lehetőség: a kérdéses elemet a középső elemmel hasonlítjuk össze. Ha az új elem megelőzi a középsőt, akkor a halmaz első felében keressük a helyét a továbbiakban, stb. A lépésszám log2n, vagy az erre következő első egész szám, azaz [log2n], ha n nem 2 hatványa.

slide5
Beszúrásos rendezés

A rendezés során sorrendbeli hibát keresünk a halmazban. Ennek során használhatunk lineáris (n(n-1)/2 összehasonlítás), illetve bináris keresést (n-1k=1log2(k+1) összehasonlítás). A kialakult sorrendtől eltérő helyet megjegyezzük, az ott lévő elemet elmentjük, majd addig keresünk attól visszafelé, amíg nála nagyobbat nem találunk, az elé kell majd beszúrnunk. Amikor a helyet megtaláltuk, akkor a közbeeső elemeket feljebb tolva, az imént kiemelt elemet a felszabaduló helyre illesztjük. Túl sok mozgatást igényel.

slide6
Shell rendezés

A beszúrásos módszer lépésenként finomított változata. A halmaznak csak minden d-edik elemét vizsgáljuk, azaz d lépésközzel végezzük el a beszúrásos rendezést. Ezután csökkentjük a lépésközt, és úgy végezzük el a rendezést. A folyamat addig tart, amíg a lépésköz 1 nem lesz.

slide7
Összefésülés

Van két n elemű halmazunk: (a1, ... , an) és (b1, ... ,bn). Ezeket kell egyesíteni. Hasonlítsuk össze az b1 elemet rendre az a1, a2, ... elemekkel. Beszúrjuk b1-et az elé az ai elé, amelyet közvetlenül megelőz. Ettől az ai-től folytatjuk tovább b2-re, stb. Legfeljebb 2n-1 összehasonlításra van szükség.

slide8
Minimum (maximum) elven alapuló rendezés

Egy adott részhalmazban (kezdetben a teljes halmaz) megkeressük a legkisebb (legnagyobb) elemet és ezt tesszük az első helyre. A következő lépésben a második elemtől kezdve vizsgáljuk és ismét a legkisebb (legnagyobb) elemet visszük előre, stb.

A mindenkori legkisebb elem keresése lineáris kereséssel történik.

slide9
Buborékrendezés

Növekvő sorrend: halmaz elejéről indulva rendre összehasonlítjuk a szomszédos elemeket, s ha a kisebb van hátrább, megcseréljük őket. Az eljárást mindaddig folytatjuk, amíg a rendezettség ki nem alakul. (Csökkenő sorrend fordítva!) Összehasonlítások száma n(n-1)/2. Kis sorozatok (max. 10-20 elemű) esetén használható, egyébként sok összehasonlítást igényel.

Módosított buborékrendezés

Az alapelv hasonló, de a pásztázás többirányú és váltakozó.

slide10
Gyorsrendezés (quick-sort)

Kiválasztjuk a halmaz tetszőleges elemét. Ezt nevezzük alapelemnek, mert ehhez viszonyítjuk a többit. Először balról lépegetünk addig, amíg ennél az alapelemnél csupa kisebbet találunk. Ha egy nagyobb vagy egyenlő elemhez érünk, jobbról vizsgálódunk, és keressük az alapelemnél nem nagyobb elemet. Ha megtaláltuk, kicseréljük a kettőt és a következő, eggyel nagyobb, illetve kisebb elemtől kezdjük a keresést és a cserét.

slide11

Kupac

A fa olyan gráf, amely körmentes, azaz bármely két csúcsa között pontosan egy élsorozaton át lehet eljutni. A bináris fa olyan fa, amelynek csúcspontjaiból maximum 2 részfa nyílik (azaz fokszáma 2).

A kupac egy olyan teljes bináris fa, amelyben egy tetszőleges csúcsban lévő érték nem lehet nagyobb a fiaiban lévő elemeknél.

slide12

Egy f gyökerű részfa kupaccá alakítása a következő módon történik (a, az f-ben tárolt érték, f1 és f2 f fiai, a bennük tárolt érték a1,a2):

Felszivárog(f){Ha min(a1,a2)<a, akkor min{a1,a2} és a helyet cserél.Ha az a elem ai-vel cserélt helyet, akkor felszivárog(fi)}

A következő eljárás az egész fát kupaccá teszi:

Kupacépítés(f){Az f fa v csúcsaira lentről felfelé, jobbról balra felszivárog(v)}

A kupacra két alapművelet jellemző: 1. a legkisebb elem törlése, amely a fa gyökerében van;2. új elem hozzáadása a kupachoz.

slide13

Részfa: t részfája a-nak, ha a a gyökere, azaz közvetlen megelőző eleme t-nek, vagy t részfája a valamely részfájának.

Elágazásszám: közvetlen részfák száma.

Fokszám: egy fa fokszáma pontjai max. elágazásszámával egyezik meg (a bináris fák fokszáma ezért 2).

Szülő/ős: egy fában, a gyökeret kivéve valamennyi csomópontnak egyedi szülője van, amelyet megelőző csomópontnak nevezünk. (N őse L-nek, ha L közvetlen leszármazottja N-nek).

slide14

Leszármazott (gyermek):az L csomópontot akkor nevezzük az N csomópont leszármazottjának, ha L az N-et közvetlenül követő elem, vagyis L az N gyermeke. Megkülönböztethetünk bal, illetve jobb oldali gyermekeket. A gyermekek egymásnak testvérei.

Szukcesszor: a fa egy elemének jobb/bal oldali szukcesszora az elemből kiinduló jobb/bal részfa gyökéreleme, amennyiben a részfa nem üres.

Él: egy csomópontból az azt követőbe húzott vonalat élnek nevezzük

slide16

Kupacrendezés

Bemenet a rendezendő sorozatot tartalmazó A[1..n] tömb. Először kupacot építünk, utána n-szer kivesszük a legkisebb elemet a kupacból, és újra kupaccá alakítunk. Az eljárás nem csökkenő sorrendben adja vissza az elemeket.

A kupacrendezés a leggyorsabb ismert rendező módszer.

slide17

Ládarendezés

A módszer akkor hasznos, ha a lehetséges elemek tartománya a rendezendő elemek számához képest nem túl nagy. Tegyük fel, hogy az A[1..n] tömböt szeretnénk rendezni, és tudjuk, hogy A elemei az m elemű U halmazból kerülnek ki. Ekkor lefoglalhatunk egy U elemeivel indexelt B tömböt. Ennek elemei - a ládák - U-beli elemek listái lesznek. Kezdetben minden láda üres. Az eljárás első fázisában végigolvassuk az A tömböt, és az s=A[i] elemet a B[s] lista végére fűzzük. A második fázisban azelejéről a végéig növő sorrendben végigmegyünk B-n és a B[i] listák tartalmát visszaírjuk A-ba.A módszer akkor hasznos, ha a lehetséges elemtípusok száma nem túl nagy a rendezendő elemek számához képest.