PROLOG:
Język deklaratywny. Podajemy warunki, jakie ma spełniać wynik. Mniejszy nacisk kładziony na sekwencję operacji. Opisujemy problem w kategoriach specyfikacji związków zachodzących pomiędzy obiektami z dziedziny problemu. Problem jest zapisywany za pomocą logiki formalnej, z użyciem trochę innej specyfikacji:
ZACHODZI f(X,Y)
WTEDY GDY
ZACHODZI g(X,Z) I ZACHODZI h(Z,Y)
Pomimo charakteru deklaratywnego, daje się przetłumaczyć sprawnie na sekwencję operacji (wykorzystywane w interpreterach). Ma aspekt proceduralny. Pisząc kod należy mieć na uwadze to, jak on zostanie wykonany.
Zajęcia będą kładły nacisk na język PROLOG (gdyż jest pojęciowo nowy :)), zwłaszcza pod kątem formułowania problemów i zastosowań w sztucznej inteligencji.
2. Wykład 2:
Przykład przetwarzania danych symbolicznych:
W zastosowaniach Al zmienia się model świata. Metody i algorytmy poszukiwania rozwiązań oraz problemy z nimi związane pozostają te same. Także metody konstruowania modeli nie zmieniają się. Dlatego będziemy pracowali na prostych przykładach.
Układanie planu sekwencji akcji:
W tzw. świecie klocków. Przyjmijmy, że w naszym świecie są cztery pola, na których możemy rozmieszczać klocki. Mamy dany pewien stan początkowy i docelowy. Klocki mogą być ustawione jeden na drugim. W naszym świecie operujemy pojęciami, cechami stanów:
- co na czym stoi
- pole / klocek wolny (nic na nim nie stoi) lub nie.
Przykładowo:
klocek2
klocekl klocek5
polel pole2 pole3 pole4 Tworzymy struktury danych:
Struktura danych definiująca związki przestrzenne: class ZW_P
- typ związku (tutaj tylko LEZY NA)
- element nad
- elementpod
Przykładowy związek:
ZW_P
LEZYNA
KLOCEK5
KLOCEK2