Prolog Programowanie.pdf

(255 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
Prolog. Programowanie
Autorzy: W. F. Clocksin, C. S. Mellish
T³umaczenie: Tomasz ¯mijewski
ISBN: 83-7197-918-5
Tytu³ orygina³u:
Programming in Prolog
Format: B5, stron: 274
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Programowanie w Prologu ró¿ni siê zasadniczo od programowania w jêzykach
strukturalnych, takich jak Pascal czy C i jêzykach obiektowych jak Java. Dla wielu osób
zaczynaj¹cych przygodê z Prologiem zaskoczeniem jest fakt, ¿e pisanie programu
w tym jêzyku nie polega na kodowaniu algorytmu. Programista opisuje obiekty i zwi¹zki
miêdzy nimi, a tak¿e podaje warunki, jakie powinno spe³niaæ szukane rozwi¹zanie.
System sam przeprowadza obliczenia w oparciu o podane zale¿no ci logiczne, za
programista jedynie czê ciowo mo¿e wp³ywaæ na sposób dzia³ania programu.
Ksi¹¿ka „Prolog. Programowanie” to podrêcznik tego niezwyk³ego jêzyka
programowania stosowanego przy rozwi¹zywaniu problemów z ró¿nych dziedzin:
od logiki matematycznej i symbolicznego rozwi¹zywania równañ przez analizê jêzyka
naturalnego, a¿ do zagadnieñ zwi¹zanych ze sztuczn¹ inteligencj¹. Zawiera ona:
• Wprowadzenie do Prologu
• Podstawowe struktury danych
• Nawracanie, sterowanie nawracaniem za pomoc¹ symbolu odciêcia
• Operacje wej cia/wyj cia
• Predykaty
• Sk³adniê regu³ gramatycznych i analizê jêzyka naturalnego
• Wiele przyk³adowych programów
Wszystkim rozdzia³om towarzysz¹ æwiczenia. Uzupe³nieniem tekstu ksi¹¿ki s¹ dodatki
omawiaj¹ce m.in. rozwi¹zania æwiczeñ i ró¿nice miêdzy najwa¿niejszymi wersjami
Prologu.
„Prolog. Programowanie” to ksi¹¿ka dla studentów matematyki i informatyki, a tak¿e
dla wszystkich zainteresowanych programowaniem opartym na regu³ach logicznych.
Je li chcesz podj¹æ wyzwanie i nauczyæ siê Prologu, jest ksi¹¿ka dla Ciebie.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Wstęp ............................................................................................... 7
Rozdział 1. Wprowadzenie ................................................................................. 11
Prolog....................................................................................................................11
Obiekty i relacje .....................................................................................................12
Programowanie.......................................................................................................13
Fakty .....................................................................................................................14
Zapytania ...............................................................................................................16
Zmienne.................................................................................................................17
Koniunkcje.............................................................................................................19
Reguły ...................................................................................................................23
Podsumowanie i ćwiczenia ......................................................................................28
Rozdział 2. Prolog z bliska ................................................................................. 31
Składnia.................................................................................................................31
Stałe ................................................................................................................32
Zmienne...........................................................................................................32
Struktury..........................................................................................................33
Znaki .....................................................................................................................34
Operatory...............................................................................................................35
Równość i unifikacja...............................................................................................37
Arytmetyka ............................................................................................................38
Spełnianie celów — podsumowanie..........................................................................42
Udane spełnienie koniunkcji celów .....................................................................42
Cele i nawracanie..............................................................................................45
Unifikacja ........................................................................................................47
Rozdział 3. Korzystanie ze struktur danych......................................................... 49
Struktury a drzewa..................................................................................................49
Listy ......................................................................................................................51
Przeszukiwanie rekurencyjne ...................................................................................54
Odwzorowania .......................................................................................................57
Porównywanie rekurencyjne....................................................................................60
Łączenie struktur ....................................................................................................62
Akumulatory ..........................................................................................................66
Struktury ró nicowe................................................................................................68
Rozdział 4. Nawracanie i odcięcie...................................................................... 71
Generowanie wielu rozwiązań..................................................................................72
Odcięcie.................................................................................................................75
4
Prolog. Programowanie
Typowe zastosowania odcięcia.................................................................................80
Potwierdzanie wyboru reguły .............................................................................80
U ycie odcięcia z predykatem fail ......................................................................84
Kończenie generowania mo liwych rozwiązań i ich sprawdzanie ..........................86
Niebezpieczeństwa wynikające ze stosowania odcięcia ..............................................89
Rozdział 5. Wejście i wyjście ............................................................................. 91
Czytanie i pisanie termów........................................................................................92
Czytanie termów...............................................................................................92
Pisanie termów .................................................................................................93
Czytanie i pisanie znaków .......................................................................................96
Czytanie znaków...............................................................................................96
Pisanie znaków .................................................................................................97
Wczytywanie zdań..................................................................................................98
Czytanie z plików i pisanie do plików..................................................................... 101
Otwieranie i zamykanie strumieni..................................................................... 102
Zmiana bie ącego strumienia wejściowego i wyjściowego.................................. 103
Konsultowanie................................................................................................ 104
Deklarowanie operatorów...................................................................................... 105
Rozdział 6. Predykaty wbudowane ................................................................... 107
Wprowadzanie nowych klauzul.............................................................................. 107
Sukces i pora ka................................................................................................... 109
Klasyfikacja termów ............................................................................................. 110
Przetwarzanie klauzul jako termów ........................................................................ 111
Tworzenie składników struktur i sięganie do nich .................................................... 114
Wpływ na nawracanie ........................................................................................... 118
Tworzenie celów zło onych................................................................................... 119
Równość.............................................................................................................. 122
Wejście i wyjście .................................................................................................. 122
Obsługa plików..................................................................................................... 124
Wyliczanie wyra eń arytmetycznych...................................................................... 124
Porównywanie termów.......................................................................................... 126
Badanie działania Prologu ..................................................................................... 127
Rozdział 7. Przykładowe programy ................................................................... 129
Sortowany słownik w formie drzewa ...................................................................... 129
Przeszukiwanie labiryntu ....................................................................................... 132
Wie e Hanoi......................................................................................................... 135
Program magazynowy........................................................................................... 136
Przetwarzanie list.................................................................................................. 137
Zapis i przetwarzanie zbiorów................................................................................ 140
Sortowanie ........................................................................................................... 142
U ycie bazy danych .............................................................................................. 145
random .......................................................................................................... 145
gensym .......................................................................................................... 146
findall ............................................................................................................ 147
Przeszukiwanie grafów.......................................................................................... 149
Odsiej Dwójki i odsiej Trójki................................................................................. 153
Ró niczkowanie symboliczne ................................................................................ 155
Odwzorowywanie struktur i przekształcanie drzew .................................................. 157
Przetwarzanie programów ..................................................................................... 160
Literatura ............................................................................................................. 163
Spis treści
5
Rozdział 8. Usuwanie błędów w programach prologowych................................. 165
Układ programów ................................................................................................. 166
Typowe błędy....................................................................................................... 168
Śledzenie programu............................................................................................... 171
Śledzenie i punkty kontrolne .................................................................................. 177
Sprawdzanie celu ............................................................................................ 179
Sprawdzanie przodków.................................................................................... 180
Zmiana poziomu śledzenia............................................................................... 181
Zmiana sposobu spełnienia celu........................................................................ 182
Inne opcje ...................................................................................................... 183
Podsumowanie ............................................................................................... 184
Poprawianie błędów .............................................................................................. 184
Rozdział 9. Użycie reguł gramatycznych w Prologu ........................................... 187
Parsowanie........................................................................................................... 187
Problem parsowania w Prologu .............................................................................. 190
Notacja reguł gramatyki ........................................................................................ 194
Dodatkowe argumenty .......................................................................................... 196
Dodatkowe warunki .............................................................................................. 199
Podsumowanie ..................................................................................................... 201
Przekształcanie języka na logikę............................................................................. 202
Ogólniejsze zastosowanie reguł gramatyki .............................................................. 204
Rozdział 10. Prolog a logika............................................................................... 207
Krótkie wprowadzenie do rachunku predykatów...................................................... 207
Postać klauzulowa................................................................................................. 210
Zapis klauzul ........................................................................................................ 215
Rezolucja i dowodzenie twierdzeń.......................................................................... 216
Klauzule Horna .................................................................................................... 220
Prolog.................................................................................................................. 220
Prolog i programowanie w logice ........................................................................... 222
Rozdział 11. Projekty w Prologu......................................................................... 225
Łatwiejsze projekty............................................................................................... 225
Projekty zaawansowane ........................................................................................ 227
Dodatek A Odpowiedzi do niektórych ćwiczeń.................................................. 231
Dodatek B Klauzulowa postać programów ....................................................... 235
Dodatek C Przenośne programy w standardowym Prologu ................................ 241
Przenośność standardu Prologu .............................................................................. 241
Ró ne implementacje Prologu................................................................................ 242
Czego się wystrzegać ............................................................................................ 243
Definicje wybranych predykatów standardowych .................................................... 244
Przetwarzanie znaków..................................................................................... 245
Dyrektywy ..................................................................................................... 247
Wejście i wyjście strumieniowe........................................................................ 247
Ró ne ............................................................................................................ 249
Dodatek D Różne wersje Prologu..................................................................... 251
Dodatek E Dialekt edynburski......................................................................... 255
Dodatek F
micro-Prolog .................................................................................. 263
Skorowidz...................................................................................... 267
Rozdział 1.
Wprowadzenie
Prolog
Prolog to komputerowy język programowania. Jego początki sięgają roku 1970, od tego
czasu u ywano go w aplikacjach związanych z przetwarzaniem symbolicznym, w ta-
kich dziedzinach, jak:
relacyjne bazy danych,
logika matematyczna,
rozwiązywanie problemów abstrakcyjnych,
przetwarzanie języka naturalnego,
automatyzacja projektowania,
symboliczne rozwiązywanie równań,
analiza struktur biochemicznych,
ró ne zagadnienia z dziedziny sztucznej inteligencji.
Osoby dopiero zaczynające swoją przygodę z Prologiem są zaskoczone tym, e pisanie
programu w Prologu nie polega na opisywaniu algorytmu, jak to ma miejsce w trady-
cyjnych językach programowania. Zamiast tego programiści Prologu zajmują się ra-
czej formalnymi relacjami i obiektami związanymi z danym problemem, badając, które
relacje są „prawdziwe” dla szukanego rozwiązania. Tak więc Prolog mo e być uwa any
za język
opisowy
i
deklaratywny.
Programowanie w Prologu polega przede wszystkim
na opisaniu znanych faktów i relacji dotyczących problemu, w mniejszym stopniu na
podawaniu kolejnych kroków algorytmu. Kiedy programujemy w Prologu, sposób
pracy komputera częściowo wynika z deklaratywnej semantyki Prologu, częściowo
z tego, e Prolog na podstawie danego zbioru faktów mo e wnioskować nowe fakty,
a jedynie częściowo na podstawie jawnie podanych przez programistę instrukcji ste-
rujących.
Zgłoś jeśli naruszono regulamin