Karl-Henrik Hagdahl, 11 november 20021 Repetition Logikprogrammering: måndag 11 november 2002.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Talföljder formler och summor
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Text och bild från wikipedia
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
2D1311 Programmeringsteknik med PBL
Prolog, Mån 16/9 Rebecca Jonson.
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
Sökning och sortering Linda Mannila
För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)
Logikprogrammering Ons, 25/9
Dcg-notation 21.2 G 2.3 M (BBS 8). dagens föreläsning extra argument i dcg-notation prolog-anrop i dcg-notation avslutande kommentarer om dcg.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Algoritmer och datastrukturer
Introduktion Logikprogrammering HT-02 Staffan Larsson.
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist
Grundläggande programmering
Föreläsning 5 Python: argument från kommando-tolken
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 7: Cut och negation (kap. 10) Teori –Förklarar hur man kontrollerar Prologs backtracking-beteende.
Text och bild från wikipedia
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Föreläsning 3: rekursion Teori –Introducera rekursiva definitioner i Prolog –Fyra exempel –Visa att.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 6: Definite Clause Grammars (kap. 7) Teori –Introducerar kontextfria grammatikor och några besläktade.
XSLT – en introduktion Digitalisering av kulturarvet.
Programmering B PHP Lektion 2
Programmering B PHP Lektion 2
Logikprogrammering och Prolog
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Listor En lista är en föränderlig ordnad samling objekt.
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
Bråk Text och bild från wikipedia. Vad är bråk 1/3 5/8 1/27 3 _
Namnrum, räckvidd och rekursion Linda Mannila
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Logikprogrammering 21/10 Binära träd
1 Programmera med strängar nr 9 Tal till sträng Sträng till tal Grep Sträng till lista av ord.
Kenneth Wilhelmsson 1 Logikprogrammering 10 P Onsdag 20 november 2002.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Logik med tillämpningar
Logikprogrammering 16/ : operatorer Staffan Larsson.
Labgrupper: 2 pers/grupp fr o m lab 2 schema ENKÄT.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
Aritmetik 3.4 M 8.2 E 2.2. dagens föreläsning operatorer för aritmetik tillämpningar.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
Föreläsning 9 Logik med tillämpningar Innehåll u Semantiska tablåer i predikatlogiken u Klausulform u Herbrandmodeller u Kapitel 3.5,
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
1 Objektorienterad programmering för ingenjörer, VT04 Kort repetition av C-programmering och nyttiga verktyg. Tomas Larsson B439.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
Pontus Johansson 1 grammatiker 21.1 G 1 (BBS 7)
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Logikprogrammering ons 4/9 Rebecca Jonson.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Funktioner något in och något annat ut.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
KPP053, HT2015 MATLAB, Föreläsning 4
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002

Karl-Henrik Hagdahl, 11 november översikt predikat och frågor enkla termer sammansatta termer backtracking unifiering rekursion –mappning och filtrering –sortering grammatiker (CFG) DCG-notation aritmetik ackumulatorer operatorer binära träd in- och uthantering findall, setof, bagof cut

Karl-Henrik Hagdahl, 11 november predikat och frågor förälder/2 och förfader/2 förälder(marit, mette-marit). förälder(mette-marit, marius). förfader(X,Z) :- förälder(X,Z). förfader(X,Z) :- förälder(X,Y), förfader(Y,Z). ?- förfader(X, marius). X = mette-marit ? ; X = marit ? yes huvud kropp fakta regler fråga klausuler (totalt 4 st.) aritet (ställighet)

Karl-Henrik Hagdahl, 11 november enkla termer atomer: pelle, ’liten.fel.txt’, + tal: 42 variabler: Träd, _Träd, _

Karl-Henrik Hagdahl, 11 november sammansatta termer (strukturer) Flera termer kan sättas ihop till en sammansatt term med hjälp av en funktor: Listor (med funktorn ”.”) ?- [h,e,j|[]] =.(h,.(e,.(j,[]))). yes Strängar ?- "hej" = [h,e,j]. yes Egna strukturer fras(np,[ord(namn,"lisa"),fras(prps,[])]) t(Left, Elem, Right) point(1,1)

Karl-Henrik Hagdahl, 11 november backtracking (tillbaka-spårning) När ett mål misslyckas går Prolog tillbaka till det senast uppfyllda målet för att försöka hitta alternativa lösningar. riktning: vänstra övre hörnet ->åt höger, nedåt. Vid if-then-else lyckas inte backtracking. ? – (X=a ; X=b), (Y=X ; Y=c). X = a, Y = a ? ; X = a, Y = c ? ; X = b, Y = b ? ; X = b, Y = c ? ; no ?- ((X=a ; X=b) -> Y=X ; Y=c). X = a, Y = a ? ; no

Karl-Henrik Hagdahl, 11 november unifiering (matchning) Unifiering av två termer lyckas om: –minst en av termerna är en oinstansierad variabel eller … –termerna är samma atom eller samma tal –termerna är två sammansatta termer där funktor och argument matchar Två variabler som unifierats är därefter identiska. ?- X = 1, Y = 2, X \= Y. X = 1, Y = 2 ? yes ?- X = 1, X \= Y, X = 2. no ?- X = Y, X == Y. Y = X ? yes ?- X == Y, X = Y. no

Karl-Henrik Hagdahl, 11 november rekursion Rekursiva predikat har alltid (minst) ett rekursivt anrop och (minst) ett basfall. Basfallet innehåller inget rekursivt anrop. Basfallet/en bör alltid göras så få och enkla som möjligt. Basfallet deklareras ofta som ett fakta, men inte alltid. Rekursionsfallet är alltid en regel (det rekursiva anropet sker i kroppen). rekursivt_predikat([basfall]). rekursivt_predikat([rekursion|Anrop]) :- rekursivt_predikat(Anrop). ?- rekursivt_predikat(Anrop). Anrop = [basfall] ? ; Anrop = [rekursion,basfall] ? ; Anrop = [rekursion,rekursion,basfall] ? ; och så vidare …

Karl-Henrik Hagdahl, 11 november mappning och filtrering Mappning är när man utför något på varje element i en lista och stoppa in resultatet i en ny lista. ?- leka_rövare("kalle",Rövartext). Rövartext = "kokalollole" ? yes Filtrering genererar också en ny lista, men väljer ut vissa element ur en lista och kastar resten av dem. ?- kasta_vokaler("Nefertiti",Sträng). Sträng = "Nfrtt" ? yes

Karl-Henrik Hagdahl, 11 november sortering insertionsort/2 : Sätt in ett element i taget på rätt plats med insert/3. quicksort/2 : Välj ett pivotelement och dela listan i mindre och större element med delning/3. Sortera delarna rekursivt och sätt ihop. mergesort/2 : Dela listan i två lika stora delar med halvera/3. Sortera delarna och sätt ihop dem med merge/3.