Język dedukcyjny
Język dedukcyjny to język programowania komputerowego , w którym program jest zbiorem predykatów („faktów”) i łączących je reguł. Taki język jest używany do tworzenia systemów opartych na wiedzy lub systemów eksperckich , które mogą dedukować odpowiedzi na zestawy problemów, stosując reguły do podanych faktów. Przykładem języka dedukcyjnego jest Prolog lub jego kuzyn do zapytań do bazy danych, Datalog .
Historia
Jak sama nazwa wskazuje, języki dedukcyjne są zakorzenione w zasadach rozumowania dedukcyjnego; wyciąganie wniosków na podstawie aktualnej wiedzy. Pierwsza rekomendacja użycia klauzulowej formy logiki do reprezentowania programów komputerowych została sformułowana przez Cordella Greena (1969) w Stanford Research Institute (obecnie SRI International ). Pomysł ten można również powiązać z walką między proceduralną i deklaratywną reprezentacją informacji we wczesnych systemach sztucznej inteligencji. Języki dedukcyjne i ich zastosowanie w programowaniu logicznym można również datować na ten sam rok, w którym Foster i Elcock wprowadzili Absys , pierwszy dedukcyjny / logiczny język programowania. Wkrótce potem pierwszy system Prolog został wprowadzony w 1972 roku przez Colmerauera we współpracy z Robertem Kowalskim .
składniki
Składnikami języka dedukcyjnego są system logiki formalnej i baza wiedzy , na której stosowana jest logika.
Logika formalna
Logika formalna to nauka o wnioskowaniu w odniesieniu do treści formalnych. Cechą odróżniającą logikę formalną od nieformalnej jest to, że w pierwszym przypadku reguła logiczna zastosowana do treści nie jest specyficzna dla danej sytuacji. Prawa obowiązują niezależnie od zmiany kontekstu. Chociaż w poniższym przykładzie opisano logikę pierwszego rzędu w celu zademonstrowania zastosowań języka dedukcyjnego, żaden system formalny nie jest wymagany, a użycie określonego systemu jest zdefiniowane w ramach reguł językowych lub gramatyki.
Jako dane wejściowe predykat przyjmuje dowolny obiekt (obiekty) w dziedzinie zainteresowania i wyprowadza jedną z dwóch wartości boolowskich: prawda lub fałsz. Rozważmy na przykład zdania „Barack Obama jest 44. prezydentem” i „Jeśli dzisiaj będzie padać, przyniosę parasol”. Pierwsza to stwierdzenie z powiązaną wartością logiczną. Drugi to instrukcja warunkowa polegająca na wartości innej instrukcji. Każde z tych zdań można podzielić na predykaty, które można porównywać i tworzyć bazę wiedzy języka dedukcyjnego.
Co więcej, zmienne takie jak „Barack Obama” czy „prezydent” można określić ilościowo. Weźmy na przykład „Barack Obama” jako zmienną „x”. W zdaniu „Istnieje taki„ x ”, że jeśli„ x ”jest prezydentem, to„ x ”jest naczelnym wodzem”. To jest przykład kwantyfikatora egzystencjalnego w logice pierwszego rzędu. Weźmy „president” jako zmienną „y”. W zdaniu „Za każde„ y ”,„ y ” jest przywódcą swojego narodu”. To jest przykład uniwersalnego kwantyfikatora.
Baza wiedzy
Zbiór „faktów” lub predykatów i zmiennych tworzy bazę wiedzy języka dedukcyjnego. W zależności od języka kolejność deklaracji tych predykatów w bazie wiedzy może, ale nie musi, wpływać na wynik zastosowania reguł logicznych. Po zastosowaniu pewnych „reguł” lub wniosków, do bazy wiedzy mogą zostać dodane nowe predykaty. W miarę ustalania lub dodawania nowych faktów tworzą one podstawę dla nowych wniosków. Jako rdzeń wczesnych systemów eksperckich, systemów sztucznej inteligencji, które mogą podejmować decyzje jak ekspert, bazy wiedzy dostarczały więcej informacji niż bazy danych. Zawierały dane strukturalne, z klasami, podklasami i instancjami.
Prolog
Prolog jest przykładem dedukcyjnego, deklaratywnego języka, który stosuje logikę pierwszego rzędu do bazy wiedzy. Aby uruchomić program w Prologu, zadawane jest zapytanie i na podstawie mechanizmu wnioskowania oraz konkretnych faktów w bazie wiedzy zwracany jest wynik. Wynikiem może być wszystko, od nowej relacji lub predykatu po literał, taki jak Boolean (prawda/fałsz), w zależności od silnika i systemu typu .
- JM Fostera i EW Elcocka. ABSYS 1: Przyrostowy kompilator twierdzeń: wprowadzenie, Machine Intelligence 4, Edinburgh U Press, 1969, s. 423–429
- Cordell Green. Zastosowanie dowodu twierdzenia do rozwiązywania problemów IJCAI 1969.
- Cordell Green, absolwent Centrum Sztucznej Inteligencji SRI International , pobrane 12/09/14.
- Robert Kowalski i Donald i Kuehner, Rozdzielczość liniowa z funkcją wyboru Sztuczna inteligencja, tom. 2, 1971, s. 227–60.
- Robert Kowalski Predicate Logic as a Programming Language Memo 70, Department of Artificial Intelligence, Edinburgh University. 1973. Również w P
Kategoria: Programowanie komputerowe Bazy danych