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..
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
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.
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ń..
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..
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..
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.
- 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.
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.
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.
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..
Jeszcze bez komentarzy