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 .

Kategoria: Programowanie komputerowe Bazy danych