Funkcje i przykłady programowania logicznego

1684
David Holt
Funkcje i przykłady programowania logicznego

Plik programowanie logiczne to paradygmat programowania, który wykorzystuje obwody logiczne, a nie tylko funkcje matematyczne, aby kontrolować sposób przedstawiania faktów i reguł.

Zamiast starannie ustrukturyzowanego przepływu sterowania, który dyktuje, kiedy wykonać i jak oceniać wywołania funkcji lub inne instrukcje, reguły logiczne programu są zapisywane jako klauzule lub predykaty logiczne..

Przykłady programowania logicznego w Prologu. Źródło: Autor: Kuldeepsheoran1 - zrzut ekranu, CC BY-SA 3.0, wikimedia commons

To podejście, które jest często używane w programowaniu ewolucyjnym i genetycznym, ogólnie mówi modelowi, jaki cel ma osiągnąć, a nie jak go osiągnąć..

Każda reguła zawiera nagłówek i treść ze sformalizowaną logiką zamiast wykonywalnej funkcji matematycznej. Na przykład „I jest prawdą (nagłówek): jeśli C1, C2 i C3 są prawdziwe (treść)”. Fakty lub wyniki są wyrażane bez treści, na przykład „I to prawda”.

Jednak w przypadku niektórych języków programowania, takich jak Prolog, można również uwzględnić programowanie imperatywne, aby powiedzieć modelowi, jak rozwiązać określone problemy. Na przykład „Aby rozwiązać Y, dodaj C1, C2 i C3”.

Indeks artykułów

  • 1 Charakterystyka programowania logicznego
    • 1.1 Prawda i logiczna dedukcja
    • 1.2 Logika pierwszego rzędu
    • 1.3 Forma clausalna
    • 1.4 Sztuczna inteligencja
  • 2 Przykłady programowania logicznego
    • 2.1 Przykład 1
    • 2.2 Przykład 2
  • 3 Odnośniki

Charakterystyka programowania logicznego

Programowanie logiczne znacznie różni się od innych istniejących strategii programowania. Zamiast wydawać instrukcje komputerowi z programem, ustanawiane są relacje między obiektami. W ten sposób komputer może rozumować te relacje, a tym samym osiągać logiczne rozwiązania.

W programie logicznym istnieją dwa główne zestawy kodu: fakty i reguły. Reguły stosuje się do faktów w celu zdobycia wiedzy o środowisku.

Prawda i logiczna dedukcja

Programy logiczne można rozszyfrować za pomocą dwóch ważnych pojęć: prawdy i logicznej dedukcji. Prawda wychodzi na jaw, jeśli obliczenia w programie są prawdziwe, czy nie, po wykonaniu symboli programu. Odliczenie logiczne określa, czy klauzula logiczna jest konsekwencją programu.

Instrukcje te zawsze będą interpretowane jako instrukcje i klauzule logiczne, a wynik ich wykonania będzie logiczną konsekwencją zawartych w nich obliczeń..

Logika pierwszego rzędu

Jest pochodną logiki zdań. Zastanów się, czy obiekty są prawdziwe, czy fałszywe z częściowej perspektywy świata, zwanej domeną. Programowanie logiczne opiera się na uogólnieniu logiki pierwszego rzędu.

Ta logika składa się ze składni i semantyki. Składnia to formalny język używany do wyrażania pojęć. Z drugiej strony semantyka formuł logicznych pierwszego rzędu wskazuje, jak określić prawdziwą wartość dowolnej formuły.

Ta logika opiera się na alfabecie i języku pierwszego rzędu, a także na zestawie aksjomatów i reguł wnioskowania..

Forma clausalna

Jest to podzbiór logiki pierwszego rzędu. Ma znormalizowaną postać, w której instrukcja jest zdefiniowana przez uniwersalny przedrostek lub łańcuch uniwersalnych kwantyfikatorów oraz dowolny zestaw kwantyfikatorów z klauzuli.

Podczas wysyłania zapytania do programu zostanie uwzględniona treść klauzuli, której nagłówek może się pokrywać. To jest to samo, co stosowanie reguły wnioskowania w logice.

Jako krok w wnioskowaniu wybrano dwie klauzule, które mają taką właściwość, że jedna zawiera rozłączny X (literał dodatni), a druga zawiera rozłączny ¬X (literał ujemny). Te kompromisy są znane jako komplementarne.

Z tych dwóch początkowych klauzul budowana jest nowa klauzula rozstrzygająca przy użyciu wszystkich literałów, z wyjątkiem komplementarnych..

Sztuczna inteligencja

Programowanie logiczne to metodologia używana do wnioskowania komputerów, ponieważ jest przydatna do reprezentowania wiedzy. Logika służy do reprezentowania wiedzy i wnioskowania, aby sobie z nią poradzić.

Logika używana do przedstawiania wiedzy to forma klauzuli. Jest używany, ponieważ logika pierwszego rzędu jest dobrze rozumiana i może reprezentować wszystkie problemy obliczeniowe.

Prolog to język programowania oparty na ideach programowania logicznego. Ideą Prologu jest sprawienie, by logika wyglądała jak język programowania.

Przykłady programowania logicznego

Przykład 1

- Fakt: Ruby to kot.

- Zasada: wszystkie koty mają zęby.

- Zapytanie: Czy Rubí ma zęby?

- Wniosek: tak.

Zasadę „wszystkie koty mają zęby” można zastosować do Rubí, ponieważ istnieje fakt, że „Rubí to kot”. Ten przykład nie jest napisany przy użyciu prawdziwej składni języka programowania.

Przykład 2

Ten przykład można zobaczyć w Prologu, ponieważ jest to jeden z najpopularniejszych języków programowania logiki:

- kobiecy (alissa).

- męski (bobby).

- męski (Carlos).

- kobiecy (doris).

- son_of (doris, carlos).

- son_of (Carlos, Bobby).

- son_of (doris, alissa).

- ojciec_z (K, P): - męski (K), syn_z (P, K).

Ten program staje się trudny do odczytania, ponieważ Prolog znacznie różni się od innych języków. Dowolny składnik kodu, który przypomina „żeński (alissa)”. to jest fakt.

Jedną z reguł jest „ojciec_z (F, P): - męski (K), syn_z (P, K)”. Symbol „: -” można odczytać jako „jest prawdą, jeśli”. Wielkie litery oznaczają, że zmienne można zastosować do dowolnego obiektu, więc F może oznaczać carlos, doris, alissa lub bobby. Ten kod można przetłumaczyć jako:

- Alissa jest kobietą.

- Bobby to mężczyzna.

- Carlos to mężczyzna.

- Doris jest kobietą.

- Doris jest córką Carlosa.

- Carlos jest synem Bobby'ego.

- Doris jest córką Alissy.

- „F jest ojcem P” jest prawdą, jeśli F jest mężczyzną i jeśli P jest synem F.

Konsultacja

Załóżmy, że chcesz zapoznać się z programem, aby uzyskać więcej informacji. Możesz wyszukiwać, pytając, z kim jest ojciec Bobby :? - father_of (bobby, X). System wskaże następującą odpowiedź: X = Carlos.

W tym przypadku przekazywana jest relacja, w której jedna z jej wartości jest zmienną. To, co zrobił Prolog, polegało na zastosowaniu różnych obiektów do tej relacji, aż jeden z nich był logicznie trwały.

Jedynym ojcem Carlosa jest Bobby, a Bobby jest mężczyzną. To spełniało regułę „ojciec_z (F, P): - męski (K), syn_z (P, K).”. Kiedy X równa się „carlos”, logika jest solidna.

Inne zapytania

Do Prologu można skierować inne, bardziej ogólne zapytania, które powodują, że system generuje wiele wyników:

- ?- father_of (Ojciec, Dziecko).

- Ojciec = bobby

- Dziecko = Carlos

- Ojciec = Carlos

- Dziecko = doris

Jak zaobserwowano, programowanie logiczne nie wymaga posiadania informacji, że alissa czy bobby są ludźmi, aby uzyskać wiedzę o nich. W rzeczywistości nie jest konieczne wskazywanie, że istnieje pojęcie zwane osobą.

W większości nielogicznych języków programowania należałoby najpierw zdefiniować te pojęcia, zanim będzie można pisać programy przetwarzające informacje o ludziach..

Bibliografia

  1. Głęboka sztuczna inteligencja (2020). Programowanie logiczne. Zaczerpnięte z: deepai.org.
  2. Wikiwersytet (2020). Teoria języków programowania / Programowanie logiczne. Zaczerpnięte z: en.wikiversity.org.
  3. Imperial College London (2006). Programowanie logiczne. Zaczerpnięte z: doc.ic.ac.uk.
  4. Jia-Huai You (2020). Wprowadzenie do programowania logicznego. Uniwersytet Alberty. Zaczerpnięte z: eng.ucy.ac.cy.
  5. C2 Wiki (2020). Programowanie logiczne. Zaczerpnięte z: wiki.c2.com.

Jeszcze bez komentarzy