Repetition - PowerPoint PPT Presentation

1 / 10
About This Presentation
Title:

Repetition

Description:

Title: Repetition Author: Karl-Henrik Hagdahl Last modified by: Karl-Henrik Hagdahl Created Date: 11/7/2002 6:23:51 PM Document presentation format – PowerPoint PPT presentation

Number of Views:81
Avg rating:3.0/5.0
Slides: 11
Provided by: KarlH69
Category:
Tags: repetition

less

Transcript and Presenter's Notes

Title: Repetition


1
Repetition
Logikprogrammering måndag 11 november 2002
2
ö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

3
predikat och frågorförälder/2 och förfader/2
aritet (ställighet)
  • 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

fakta
huvud
regler
klausuler (totalt 4 st.)
kropp
fråga
4
enkla termer
  • atomer pelle, liten.fel.txt,
  • tal 42
  • variabler Träd, _Träd, _

5
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)

6
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 -gtåt höger, nedåt.
  • Vid if-then-else lyckas inte backtracking.

? (Xa Xb), (YX Yc). X a, Y a ? X
a, Y c ? X b, Y b ? X b, Y c ?
no
?- ((Xa Xb) -gt YX Yc). X a, Y a ? no
7
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
8
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(
rekursionAnrop) - rekursivt_predikat(Anrop).
?- rekursivt_predikat(Anrop). Anrop basfall ?
Anrop rekursion,basfall ? Anrop
rekursion,rekursion,basfall ? och så vidare
9
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

10
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.
Write a Comment
User Comments (0)
About PowerShow.com