Logikai programozás 6..

Slides:



Advertisements
Hasonló előadás
Nevezetes algoritmusok
Advertisements

Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
Programozási tételek, és „négyzetes” rendezések
EXCEL TÁBLÁZATKEZELŐ ALKALMAZÁS
Seminar on Lyophilization Seminar on Lyophilization Budapest, Hungary
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Programozás III KOLLEKCIÓK 2..
Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok.  Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám,
Edény „vissza” rendezés
Algoritmizálás, adatmodellezés tanítása 4. előadás
Táblázat kezelő programok
Utórendezéses edényrendezés, RADIX „előre”
Az összehasonlító rendezések
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
16. Tétel. Adatbázis: Olyan adatgyűjtemény, amely egy adott feladathoz kapcsolódó adatokat szervezett módon tárolja, és biztosítja az adatokhoz való hozzáférést,
Gombkötő Attila Lineáris egyenlet.
Programozás I. Horváth Ernő 1. Elérhetőségek Bauer Péter Horváth Ernő Tanszéki honlap
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
SQL.
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Alap logikai áramkörök
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
Rendezési algoritmusok
Listák, Vermek és Várakozási Sorok. Listák Pl: Kirándulók listája Bevásárló lista Alma Kenyér Krumpli Szappan Mosópor Bevásárló lista.
Adatszerkezetek 1. előadás
Egyirányban láncolt lista
Hierarchikus lista Kétféle értelemezése van:
Rendezések és szövegkezelő függvények
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Copyright 2007, SPSS Hungary. 1 SPSS 16 újdonságok.
Visual Basic 2008 Express Edition
RADIX bináris számokra ___A___ Szembe 2 mutatóval, ha a felsőnél 1-es, az alsónál 0, akkor csere.
Java programozási nyelv Metódusok
Programozási tételek.
Programozás III KOLLEKCIÓK.
Programozás III KOLLEKCIÓK.
Programozási tételek.
Programozás III KOLLEKCIÓK.
Logikai programozás. ISMÉTLÉS Fibonacci sorozat: a/ fibonacci(1,1). fibonacci(2,1). fibonacci(N,F) :- N > 1, N1 is N - 1, N2 is N - 2, fibonacci(N1, F1),
Edényrendezés. Működés, elvek - Az edényrendezés nem összehasonlító rendezés. - A rendezendő elemeket nem hasonlítjuk össze, hanem a rendezés során az.
Objektum orientált programozás
Bucket sort avagy lineáris idejű rendezés. Pszeudo kód n hosszú L listára for i = 1..n If B[L[i]] != üres Akkor [L[i] Beszúrásos rendezéssel B[L[i]]-be.
(Bináris) Kupac (heap) adattípus
Fájlkezelés Programozási tételek
KÉSZÍTETTE: KOVÁCSICS KRISZTIÁN
Huffman kód.
NJSzT Nemes Tihamér Országos Középiskolai Sámítástechnikai Tanulmányi Verseny.
AZ INTERNET SZOLGÁLTATÁSAI Készítette: Horváth Tünde.
Táblák létrehozása és feltöltése adatokkal Rendezés Szűrés.
Szöveg beírásához kattintson ide A SCRATCH környezet bemutatása szakköri tapasztalatok alapján Gödöny Péter Budapesti Műszaki Szakképzési Centrum Pataky.
Webáruház rendszerek Reisz Péter G-3S
Szakmai és személyes portfólió elkészítése
Lekérdezések Adott tulajdonságú adatok listázásának módja a lekérdezés. A lekérdezések segítségével az adatbázisból megjeleníthetjük, módosíthatjuk, törölhetjük.
Script nyelvek előadás
Programozási nyelvek Programozási alapismeretek
INFORMATIKA ELŐADÁS október 15. I. ELŐADÓ Informatika
INFORMATIKA ELŐADÁS október 20. I. ELŐADÓ Informatika
Script nyelvek előadás
Magyar Tudományos Művek Tára (MTMT)
Neumann János Informatikai Kar
PLC PROGRAMOZÁS Gyakorlat
Script nyelvek előadás
Logikai programozás 4..
Tömbök és programozási tételek
Logikai programozás 6..
Programozási tételek Mik is ezek?
Egyenletek.
Előadás másolata:

Logikai programozás 6.

LISTÁK RENDEZÉSE Buborék rendezés: buborekRendezes(Relacio, Lista, RendezettLista) :- csere(Relacio, Lista, UjLista), !, buborekRendezes(Relacio, UjLista, RendezettLista). buborekRendezes(_, RendezettLista, RendezettLista). csere(Relacio, [A,B|Lista], [B,A|Lista]) :- ellenorzes(Relacio, B, A). csere(Relacio, [A|Lista], [A|UjLista]) :- csere(Relacio, Lista, UjLista).

LISTÁK RENDEZÉSE folyt.: folyt.: ellenorzes(Relacio, A, B) :- Cel =.. [Relacio,A,B], Cel. ellenorzes(Relacio, A, B) :- Cel =.. [Relacio,A,B], Cel. Teszt: ?- buborekRendezes(<, [5,3,7,5,2,8,4,3,6], Lista). ?- buborekRendezes(@<, [tej, víz, sör, bor], Lista).

LISTÁK RENDEZÉSE Buborék rendezés probléma: Tegyük fel, hogy a 100. és 101. elemet kellett megcserélni. Ekkor 99-szer fölöslegesen hasonlítottunk, hiszen a lista eleje már rendezett. (Korábban már rendeztük.) Emiatt nagyon nagy a redundancia. Javítás: a cserével végigmegyünk a listán, és a rendezést csak akkor folytatjuk, ha a lista még nem rendezett.

LISTÁK RENDEZÉSE Buborék rendezés (hatékonyabb): buborekRendezes2(Relacio, Lista, RendezettLista) :- csere(Relacio, Lista, UjLista), Lista \= UjLista,!, buborekRendezes2(Relacio, UjLista, RendezettLista). buborekRendezes2(_, RendezettLista, RendezettLista). csere(Relacio, [A,B|Lista], [B,A|Lista]) :- ellenorzes(Relacio, B, A). csere(Relacio, [A|Lista], [A|UjLista]) :- csere(Relacio, Lista, UjLista). csere(_,[],[]).

LISTÁK RENDEZÉSE Quick sort: quicksort(_, [], []). quicksort(Relacio, [Fej|Torzs], RendezettLista) :- split(Relacio, Fej, Torzs, Bal, Jobb), quicksort(Relacio, Bal, RendezettBal), quicksort(Relacio, Jobb, RendezettJobb), append(RendezettBal, [Fej|RendezettJobb], RendezettLista).

LISTÁK RENDEZÉSE Quick sort (folyt.): split(_, _, [], [], []). split(Relacio, VagoErtek, [Fej|Torzs], [Fej|Bal], Jobb) :- ellenorzes(Relacio, Fej, VagoErtek), !, split(Relacio, VagoErtek, Torzs, Bal, Jobb). split(Relacio, VagoErtek, [Fej|Torzs], Bal, [Fej|Jobb]) :- split(Relacio, VagoErtek, Torzs, Bal, Jobb).

LISTÁK RENDEZÉSE Quick sort: Teszt: ?- quicksort(<, [5,3,7,5,2,8,4,3,6], Lista). ?- quicksort(@<, [tej, víz, sör, bor], Lista).

REKURZÍV ADATSZERKEZETEK 1. Lista lista : elem + lista szemléltetés: út egy gráfban leállás: üres lista gyökér 2. Fa fa fa

FA STRUKTÚRA Fa megadása: fa(gyökér, fa, fa) + üres Az, hogy a fa definíciójában hol van az elem (gyökér), és hol vannak a részfák, lényegtelen, csak következetesnek kell lenni. Ez milyen fa?

BINÁRIS FA Bináris fa bejárása: – Preorder – Inorder – Postorder gyökér – bal – jobb bal – gyökér – jobb bal – jobb – gyökér

BINÁRIS FA kiir(ures). kiir(fa(Elem,Bal,Jobb)) :- writeln(Elem), kiir(Bal), kiir(Jobb). Ez milyen kiírás? Inorder: kiir(ures). kiir(fa(Elem,Bal,Jobb)) :- kiir(Bal), writeln(Elem), kiir(Jobb).

BINÁRIS FA Példa: csalad(fa('Kati', fa('Barna', fa('Anna',ures,ures), fa('Bela',ures,ures) ), fa('Pali', fa('Marta',fa('Laci',ures,ures), ures), fa('Zoli', fa('Robi',ures,ures), ures) ) ) ). indit :- csalad(Fa), kiir(Fa). Mit ír ki inorder bejárással?

ügyes faépítés + megfelelő bejárás BINÁRIS FA Bináris rendezés ügyes faépítés + megfelelő bejárás Építés: A gyökértől balra az összes elem kisebb, jobbra pedig az összes elem nagyobb, mint a gyökérelem (vagy összetett elemeknél ugyanez vonatkozik a kulcsokra). Bejárás: inorder

BINÁRIS FA Faépítés: epit(Regifa,Keszfa):- read(Elem),Elem\==end_of_file, beszur(Elem,Regifa,Ujfa), epit(Ujfa, Keszfa). epit(Fa,Fa).

BINÁRIS FA beszur(Elem, ures, ) :- !. fa(Elem,ures,ures) beszur(Elem, fa(Gyoker,Bal,Jobb), ) :- Elem @< Gyoker,!, fa(Gyoker,Ujbal,Jobb) beszur(Elem,Bal,Ujbal). beszur(Elem, fa(Gyoker,Bal,Jobb), fa(Gyoker,Bal,Ujjobb)) :- beszur(Elem,Jobb,Ujjobb).

BINÁRIS FA start :- write('Beolvasando file neve: '), read(Be), see(Be), be(Fa), seen, write('Eredmeny file neve: '), read(Ered), tell(Ered), ki(Fa,'fileba'), told, writeln('Rendezve:'), ki(Fa,'kepernyore'). be(Fa):- epit(ures,Fa).

BINÁRIS FA ki(ures,_). ki(fa(Elem,Bal,Jobb), Tipus) :- ki(Bal,Tipus), ir(Elem,Tipus), ki(Jobb,Tipus). ir(Elem, 'fileba') :- writeq(Elem), writeln('.'). ir(Elem, 'kepernyore') :- writeln(Elem).

HATÉKONYSÁG Buborék rendezés: Legrosszabb eset: ?- buborekRendezes2(<, [10,9,8,7,6,5,4,3,2,1], List). Az algoritmus először a 10-et viszi a lista végére, majd a 9-et, stb. Minden esetben végig kell mennünk a listán (n elem), és n-1 összehasonlítást végezni. Így n*(n-1) összehasonlítást végzünk. Vagyis a rendezés komplexitása: O(n2). (Bizonyítható, hogy az első változaté O(n3))

HATÉKONYSÁG Split: n elemű lista esetén n-1 hasonlítás kell. Így az algoritmus komplexitása: O(n). Quick sort: Azon múlik, hogy melyik elem mentén vágtuk szét a listát.

Kiegyensúlyozott vágás HATÉKONYSÁG Quick sort: Kiegyensúlyozott vágás

Teljesen kiegyensúlyozatlan vágás HATÉKONYSÁG Quick sort: Teljesen kiegyensúlyozatlan vágás (Ha pl. az input lista már rendezett, és mindig a fej alapján vágunk.)

HATÉKONYSÁG Quick sort: Komplexitás: Kiegyensúlyozott lista esetén O(n*log(n)). Teljesen kiegyensúlyozatlan lista esetén O(n2). Bináris rendezés: Feljavítható O(n*log(n)) komplexitásra.