Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina...

56
Programowanie w logice Marek Góźdź Do wykladu: Sztuczna inteligencja. 2 marca 2020 M. Góźdź () 1 / 56

Transcript of Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina...

Page 1: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Programowanie w logice

Marek Góźdź

Do wykładu: Sztuczna inteligencja.

2 marca 2020

M. Góźdź () 1 / 56

Page 2: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Kilka pytań na początek:

Co to jest zachowanie „inteligentne”?

Czym ma być „sztuczna inteligencja”?

Na czym polegać ma jej sztuczność?

Czy nasza inteligencja też jest sztuczna?

Próbujemy skonstruować system analizy danych,

potrafiący znajdować punkty zbioru przy zadanych warunkach,

być może zdolny do świetnej interpolacji punktów zbioru.

Chcielibyśmy również móc ekstrapolować punkty, ale jest to możliwetylko w ograniczonym zakresie.

M. Góźdź () 2 / 56

Page 3: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Budowany system ma więc, na podstawie dostępnych danychwejściowych, podawać prawdopodobne wyniki.

Musi działać w oparciu o jakiś system wnioskowania oraz jakieś regułyanalizy danych.

Biorąc pod uwagę konstrukcję (większości) komputerów, opartych naalgebrze Boole’a, naturalnym wyborem wydaje się logika. W logicezdaniom przypisujemy wartości „prawda” lub „fałsz”, co pozwala naanalizę danych poprzez zadawanie pytań.

Sprawę ułatwia fakt, że wiele drzew decyzyjnych da się sprowadzić dopostaci binarnej.

Czym jest logika, czy istnieje wiele logik i czym one się od siebie różnią?Czy na codzień, w naszym myśleniu używamy logiki matematycznej? Jakąwartość logiczną przypisać zdaniu „Ładna bluzka!”, albo „Być może...”?

M. Góźdź () 3 / 56

Page 4: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

LOGIKA

M. Góźdź () 4 / 56

Page 5: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Definicje logiki podawane są najczęściej w odniesieniu do filozofii.

Logika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmującalogiczną teorię języka (semiotykę), logikę formalną (symboliczną),metodologię nauk i inne.

Logika formalna – dotyczy związków zachodzących między zdaniami, jakze zdań o pewnej określonej budowie wynikają inne zdania o pewnejokreślonej budowie, podaje reguły, określa schematy, formalną stronęwypowiedzi, analizuje wyrażenia.

Logika jako system dowodzenia twierdzeń używana była już w starożytnościprzez filozofów i filozofów przyrody, m.in. przez Arystotelesa.

Wiele wieków później powstała logika matematyczna, która jest logikąformalną.

M. Góźdź () 5 / 56

Page 6: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Logika matematyczna oparta jest na dwóch wartościach:prawda (1) i fałsz (0)

oraz trzech podstawowych operacjach:alternatywa (OR,+), koniunkcja (AND,·), zaprzeczenie (NOT, ).

p q p ∨ q p ∧ q p0 0 0 0 10 1 1 0 11 0 1 0 01 1 1 1 0

Daje to zrozumiałą interpretacją w języku rachunku zbiorów orazmożliwość skonstruowania algebry binarnej. Logika matematyczna jest zbyt„ścisła” i zazwyczaj nie jest używana przez filozofów.

M. Góźdź () 6 / 56

Page 7: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Logika dwuwartościowa podlega prawu wyłączonego środka.

Prawo wyłączonego środkaJeśli zdanie nie posiada wartości logicznej „prawda” to posiada wartośćlogiczną „fałsz”, zaś jeśli nie posiada wartości logicznej „fałsz”, to musiposiadać wartość logiczną „prawda”.

W zapisie logiki matematycznej prawo wyłączonego środka mówi, że dladowolnego zdania p wyrażenie (p ∨ p) jest prawdziwe. Można to zapisaćjako

p+ p = 1 ⇔ p · p = 0.

Logika wielowartościowa, niezależnie od interpretacji, nie podlega temuprawu.

M. Góźdź () 7 / 56

Page 8: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Rachunek oparty na dwuwartościowej logice matematycznej bazuje naogólniejszych pracach George’a Boole (1815–1864).

[G.Boole, The Mathematical Analysis of Logic, Being an Essay

Towards a Calculus of Deductive Reasoning, Macmillan, Barclay,

& Macmillan, Cambridge (1847)]

[G.Boole, The Calculus of Logic, The Cambridge and Dublin

Mathematical Journal 3, 183–198 (1848)]

[G.Boole, An Investigation of The Laws of Thought on Which are

Founded the Mathematical Theories of Logic and Probabilities,

Macmillan, London (1854)]

Boole prowadził prace m.in. nad równaniami różniczkowymi, rachunkiemwariacyjnym, niezmiennikami, logiką i jej opisem formalnym.

M. Góźdź () 8 / 56

Page 9: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Algebrą Boole’a nazywana jest struktura algebraiczna składająca się zezbioru X, dwóch jego wyróżnionych elementów 0, 1, działania unarnegoX → X oraz dwóch działań binarnych (X ×X)→ X, {X, 0, 1, , ·,+}.Spełnione muszą być warunki przemienności, łączności, absorpcji,rozdzielności i dopełnienia:

x+ y = y + x x · y = y · xx+ (y + z) = (x+ y) + z x · (y · z) = (x · y) · z

x+ (x · y) = x x · (x+ y) = xx+ (y · z) = (x+ y) · (x+ z) x · (y + z) = (x · y) + (x · z)

x+ x = 1 x · x = 0

M. Góźdź () 9 / 56

Page 10: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Uwagi:

Algebry Boole’a nie muszą być binarne! Istnieje wiele realizacjitych algebr, np. algebra Lindenbauma–Tarskiego budowana na zbiorzeklas abstrakcji relacji równoważności zdań.

Istnieją krótsze definicje tych algebr. Np. w definicji aksjomatycznejmożna przyjąć, że

1 = x+ x 0 = (x+ x)

dla dowolnego x ∈ X. Dwa działania binarne można zredukować dojednego działania uniwersalnego (NAND lub NOR).

Interpretacja binarnej algebry Boole’a w logice opiera się naprzyporządkowaniu 0 do fałszu, 1 do prawdy, mnożenia do AND,dodawania do OR, negacji do NOT.

M. Góźdź () 10 / 56

Page 11: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Czy na każde odpowiednio sformułowane zdanie jesteśmy zawsze w stanieodpowiedzieć „tak” lub „nie”? Stwierdzeniom typu:

Ten dom jest ładny.Franek jest sympatyczny.Jutro będę w Warszawie.

nie można przypisać jednoznacznie prawdy ani fałszu.

Logika dwuwartościowa w odniesieniu do prawdziwego życia jest zbytuboga. Problemem staje się:

brak możliwości gradacji stopnia prawdziwości,

uwzględnienie niewiedzy,

uwzględnienie czynników zewnętrznych.

Zwracał na to uwagę już Arystoteles, jednak nie udało mu się stworzyćspójnego systemu logiki wielowartościowej.

M. Góźdź () 11 / 56

Page 12: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

To może logika trójwartościowa?

Wartości logiczne są zazwyczaj oznaczane jako {0, 12 , 1} lub {F, 0,T}.Dodatkowa wartość logiczna oznacza połowę między prawdą a fałszem.

Użyteczniejsza jest zrównoważona logika trójwartościowa, która używa{−1, 0,+1}. Wprowadzenie znaku minus daje możliwość naturalnegosposobu zapisu liczb ujemnych oraz naturalnego wykonywania operacjiodejmowania i dzielenia.

Pomysł użycia symetrycznej logiki trójwartościowej, jako zrównoważoneji optymalnej dla arytmetyki, był popierany m.in. przez D.Knuthai C.Shannona.

M. Góźdź () 12 / 56

Page 13: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Prace nad logiką matematyczną oraz logikątrójwartościową prowadził przede wszystkim JanŁukasiewicz (1878–1956).[J.Łukasiewicz, O zasadzie sprzeczności u Arystotelesa. Studium

krytyczne, Kraków (1910)]

[J.Łukasiewicz, O logice trójwartościowej, Ruch Filozoficzny 9,

170–171 (1920)]

[J.Łukasiewicz, Interpretacja liczbowa teorii zdań, Ruch

Filozoficzny 6, 92–93 (1922)]

Podobne badania prowadził niezależnie Emil Post (1897–1954).

M. Góźdź () 13 / 56

Page 14: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

W systemie trójkowym zrównoważonym {−1, 0,+1} każdą liczbę zapisaćmożna na n tritach jako

x =n−1∑n=0

αn3n

gdzie α = −1, 0,+1. Na przykład:

7 = +1 · 32 − 1 · 31 + 1 · 30 +−+6 = +1 · 32 − 1 · 31 + 0 · 30 +− 0−6 = −1 · 32 + 1 · 31 + 0 · 30 −+ 0

Tworzy to naturalny i prosty system zapisu liczb ujemnych, jeśli„inwersję” zdefiniujemy jako „mnożenie przez (−1)”.Interpretacja w kategoriach logiki dwuwartościowej albo teorii zbiorówjest kłopotliwa.

M. Góźdź () 14 / 56

Page 15: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Dodawanie dane jest przez

OR3 + 0 –

+ +– + 00 + 0 –– 0 – –+

Mnożenie dane jest przez

AND3 + 0 –

+ + 0 –0 0 0 0– – 0 +

Inwersja zamienia +↔ −, 0↔ 0.

M. Góźdź () 15 / 56

Page 16: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

[N.P. Brusentsov, J.R.Alvarez, Ternary Computers: The Setun and the Setun 70, SoRuCom

2006, IFIP AICT 357 (2011) 74]

W połowie XX wieku Rosjanie pod kierownictwem N.P.Brusentsova(1925–2014) zbudowali komputer Setun’ na tritach.http://ternary.3neko.ru

Prototyp Setun’ (1960) Wersja produkcyjna (1965)

M. Góźdź () 16 / 56

Page 17: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Cechy:

Setun’ miał konstrukcję elektroniczną bardzo stabilną, odporną nawarunki zewnętrzne i prostszą niż konstrukcje binarne. Był też sporotańszy w produkcji.

Miał 18-tritowe słowo, co pozwalało na zapis liczb do wartości387420489; odpowiadało to 29 bitom.

Aby przyspieszyć działanie, pamięć RAM była podłączona dogłównego bębna pamięci magnetycznej i służyła jako cache. Składałasię z 3 stron po 54 słowa na każdej.

Lista rozkazowa była krótka i zawierała 24 instrukcje.

Pomimo zamówień, również z zagranicy, decyzją władzy nie wprowadzonogo do masowej produkcji. Wyprodukowano jedynie ok. 50 sztuk doośrodków akademickich i badawczych w ZSRR.

M. Góźdź () 17 / 56

Page 18: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Setun’70Nowsza konstrukcja, opróczprototypu nigdy nie produkowana,pojawiła się w 1970. Usprawnionoobsługę tritów tak, że można byłowykonywać operacje na słowacho zmiennej długości.

Setun’70 miał dwa stosy: jeden zapamiętywał stan akumulatora drugiegostosu, który był częścią automatu odpowiedzialnego za zagnieżdżaniepodprogramów.

M. Góźdź () 18 / 56

Page 19: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

W latach ’70 Uniwersytet Moskiewski wstrzymał finansowanieLaboratorium Komputerowego i zniszczył wszystkie kopie Setun’.Prototypowy Setun’70 został uratowany przez konstruktorów i stał siępodstawą systemu uczenia Nastavnik.

System ten jest (podobno) używany do dzisiaj.

M. Góźdź () 19 / 56

Page 20: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Uogólnienie prac nad 3-logiką doprowadziło dozdefiniowania logiki o jeszcze większej liczbiestanów. Lotfi Aliaskerzadeh (1921–2017)wprowadził zbiory rozmyte (1965) oraz opartą nanich logikę rozmytą (1973), w której wartościpośrednie pomiędzy 0 a 1 reprezentują „stopieńprawdziwości”, albo „stopień przynależności dopodzbioru”.

W teorii zbiorów rozmytych element podzbioru rozmytego należy do niego„w pewnym stopniu”.[L.A.Zadeh, Fuzzy sets, Information and Control. 8, 338-353 (1965)]

[L.A.Zadeh, Outline of a new approach to the analysis of complex systems and decision

processes, IEEE Trans. Systems, Man and Cybernetics 3, 28-44 (1973)]

M. Góźdź () 20 / 56

Page 21: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Definicja (autorstwa Aliaskerzadeha):Logika rozmyta to precyzyjny system wnioskowania, dedukcji i obliczeń.Analizowane obiekty są skojarzone z informacją, która jest lub może byćnieprecyzyjna, niepewna, niepełna, niewiarygodna, częściowo prawdziwalub częściowo możliwa.

Podobnie tłumaczy to Kosko:[B.Kosko, Fuzziness vs. Probability, International Journal of General Systems 17 (1990)

211-240.]

Rozmycie „ jest miarą stopnia, w jakim dane zdarzenie zajdzie, nie określajednak, czy ono zajdzie. To drugie opisuje przpadkowość”.

M. Góźdź () 21 / 56

Page 22: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Wartości pośrednie między 0 a 1 w logice rozmytej odpowiadają stopniuprzynależności do podzbioru rozmytego, a w praktyce np. stopniuprzynależności do kategorii w sytuacji, gdy granica między kategoriami niejest ściśle zdefiniowana. Na przykład wiek: młody, średni, stary, może miećrozmyte brzegi, które częściowo będą na siebie nachodziły.

25 35 45

młody stary

0,5

1sredni’

M. Góźdź () 22 / 56

Page 23: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Logika rozmyta jest w pewnym sensie uogólnieniem logiki klasycznej.Modeluje ona zjawiska i stwierdzenia nieprecyzyjne np. takie jak w zdaniu

Dziś jest zimno.i znajduje głównie zastosowanie

w tworzeniu systemów eksperckich, które działają m.in. w pralkach,lodówkach, odkurzaczach, systemach wentylacyjnych,

drzewach decyzyjnych o budowie bogatszej niż binarna,

kontrolerach przemysłowych (sterownikach) i innych.

Jako ciekawostkę można dodać, że w Japonii przy produkcji sake stosujesię urządzenia działające w oparciu o logikę rozmytą.

M. Góźdź () 23 / 56

Page 24: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

[Materiały Wydz. Elektrycznego Politechniki Warszawskiej,

www.isep.pw.edu.pl/ZakladNapedu/dyplomy/fuzzy/index.htm]

W logice rozmytej wprowadza się uogólnienia operacji iloczynu i sumy.Istnieje wiele możliwych definicji tych działań.

Przykłady operatorów t-normy (iloczynu) µA·B(x):

minimum min(µA(x), µB(x))

iloczyn µA(x) · µB(x)

iloczyn HamacheraµA(x) · µB(x)

µA(x) + µB(x)− µA(x) · µB(x)

iloczyn EinsteinaµA(x) · µB(x)

2− (µA(x) + µB(x)− µA(x) · µB(x))iloczyn drastyczny minimum, gdy max(µA(x), µB(x)) = 1

0 w innym przypadku

różnica ograniczona max(0, µA(x) + µB(x)− 1)

M. Góźdź () 24 / 56

Page 25: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykłady operatorów s-normy (sumy) µA+B(x):

maksimum max(µA(x), µB(x))

suma µA(x) + µB(x)− µA(x) · µB(x)

suma HamacheraµA(x) + µB(x)− 2µA(x) · µB(x)

1− µA(x) · µB(x)

suma EinsteinaµA(x) + µB(x)1 + µA(x) · µB(x)

suma drastyczna maksimum, gdy min(µA(x), µB(x)) = 0

1 w innym przypadku

suma ograniczona min(1, µA(x) + µB(x)− 1)

Negacja zdefiniowana jest jako µ = 1− µ.

M. Góźdź () 25 / 56

Page 26: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Logika powstała jako luźno sformalizowany system. Jej rozwój przebiegałwielotorowo, zaś jej sformułowanie matematyczne jest stosunkowo młode.

Pytanie: czy istnieje jakiś spójny system matematyczny spinający różnesystemy logiki?

Odpowiedź: Tak, są to algebry MV, zaproponowane przez Chen ChungChanga.[C.C.Chang, Algebraic analysis of many-valued logics, Transactions of the American

Mathematical Society 88, 467 (1958)]

[C.C.Chang, A new proof of the completeness of the Lukasiewicz axioms, Transactions of the

American Mathematical Society 93, 74 (1959)]

[C.C.Chang, The writing of the MV-algebras, Studia Logica, special issue on Many-valued

Logics (ed.: D.Mundici) 61, 3 (1998)]

M. Góźdź () 26 / 56

Page 27: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

[D.Mundici, MV-Algebras, wykłady na IX Congreso Dr. Antonio Monteiro (2007)]

Algebrą MV (many-valued) nazywamy {X,⊕, , 0}, gdzieX jest niepustym zbiorem,

⊕ jest binarnym działaniem (X ×X)→ X,jest unarnym działaniem X → X,

0 jest wyróżnionym elementem X,

które, dla x, y, z ∈ X, spełniają następujące zależności:

x⊕ (y ⊕ z) = (x⊕ y)⊕ z,x⊕ y = y ⊕ x,x⊕ 0 = x,¯x = x,

x⊕ 0 = 0,(x⊕ y)⊕ y = (y ⊕ x)⊕ x.

M. Góźdź () 27 / 56

Page 28: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykład: odcinek jednostkowy X = {x ∈ R : 0 ¬ x ¬ 1} z działaniami

x⊕ y = min(1, x+ y),x = 1− x,

tworzy standardową algebrę MV {X,⊕, , 0}.Często zakłada się dodatkowo, że 1 = 0, oraz x⊗ y = (x⊕ y). Możnawtedy wyprowadzić:

1 = 0,

x⊕ y = (x⊗ y),x⊕ x = 1.

M. Góźdź () 28 / 56

Page 29: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Kilka specjalnych algebr MV:

algebra standardowa na odcinku jednostkowym, opisujewielowartościową logikę Łukasiewicza

algebra trywialna: A = {0}, 0⊕ 0 = 0, 0 = 0algebra Boole’a: A = {0, 1}, ⊕ odpowiada alternatywie,odpowiada negacji; taką algebrę można zdefiniować równieżdokładając do definicji warunek x⊕ x = xalgebra MV3: dokładając do definicji warunek x⊕ x⊕ x = x⊕ xotrzymuje się algebrę dla trójwartościowej logiki Łukasiewicza Ł3algebry więcejwymiarowe opisują inne logiki wielowartościowe

M. Góźdź () 29 / 56

Page 30: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Jak interpretować wartości logiczne nie będące ani prawdą, ani fałszem?Istnieje kilka propozycji, pozwalających na zbudowanie odpowiedniegosystemu logicznego, ale nie wszystkie pozwalają stworzyć dla nich spójnyrachunek zdań.Przykłady:

nie wiem – oznacza, że nie dysponujemy odpowiednią informacją abyzaklasyfikować stwierdzenie do prawdy lub fałszu

0.6 – oznaczać może, że stwierdzenie jest prawdziwe w 60% zaśfałszywe w 40%

być może – jest możliwe, że stwierdzenie jest prawdziwe

Logiki wielowartościowe mają zastosowanie przy opisach systemówuczących się, systemów służących do analizy i podejmowania decyzji.Specjalnym przykładem układów o bogatszej logice są komputeryprobabilistyczne i kwantowe.

M. Góźdź () 30 / 56

Page 31: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

PROLOG

M. Góźdź () 31 / 56

Page 32: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Wracamy do dwuwartościowej logiki matematycznej.

Operacje logiczne można wykonać z pomocą popularnych językówprogramowania poprzez wbudowane operacje binarne oraz ciąg instrukcjiwarunkowych. Na przykład: „Jeśli jest ciepło i nie pada, to wyjdę naspacer” może zostać zapisane jako:

1 if (cieplo.eq.1) then2 if (niepada.eq.1) then3 wynik="Ide na spacer!"4 end if5 end if

W przypadku bardziej skomplikowanych zależności, taki zapis jestniewygodny i trudny do czytania.

M. Góźdź () 32 / 56

Page 33: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Jednym z paradygmatów programowania jest paradygmat deklaratywnyw logice. Języki z tego paradygmatu pozwalają na zapisywanie zdańlogicznych w czytelny sposób. W 1972 roku Alain Colmerauer opublikowałspecyfikację języka Prolog, który został stworzony m.in. do opisualgorytmów sztucznej inteligencji, języków naturalnych, automatykii algebry symbolicznej.

Poprzedni przykład zapisany w Prologu może wyglądać tak:

1 spacer :- dzis(cieplo), dzis(niepada ).

przy czym trzeba podać wcześniej, czy relacje dzis(cieplo)i dzis(niepada) są prawdziwe.

M. Góźdź () 33 / 56

Page 34: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Budowa programu w Prologu:

baza wiedzy – zbiór stwierdzeń, na podstawie których Prolog możewnioskować o prawdziwości zadanych pytań,

definicje predykatów,

pytanie.

Obowiązkowe jest tylko pytanie. Baza i własne definicje mogą w danymprogramie nie występować. Ważna jest kolejność, tj. nie można mieszaćbazy z definicjami, ani zadawać pytania bez podania wszystkich wstępnychinformacji.Poprzedni program plus przykładowa baza danych:

1 dzis(wtorek ).2 dzis(niepada ).3 dzis(zimno).4 dzis(cieplo ).5

6 spacer :- dzis(X), dzis(Y), X=cieplo , Y=niepada.

M. Góźdź () 34 / 56

Page 35: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Uwaga: system nie interpretuje treści bazy danych – w moim przykładziewe wtorek jest jednocześnie ciepło i zimno. Dla komputera cieploi zimno są etykietami stałych w programie i ich postać nie ma żadnegoznaczenia. Trzeba o tym pamiętać używając przymiotnika inteligentnyw odniesieniu do maszyny lub systemu komputerowego.

Prolog, aby ocenić, czy pytanie spacer jest prawdziwe, musiał:

zamienić to pytanie (korzystając z definicji) na zdanie logiczne,

rozłożyć to zdanie na stwierdzenia prostsze,

przypisać każdemu z tych stwierdzeń wartość logiczną,

połączyć te wartości logiczne operatorami logicznymi, tworząc wartośćlogiczną wyjściowego zdania,

utożsamić otrzymaną wartość logiczną z wartością logiczną pytania.

Taki ciąg działań nosi nazwę wnioskowania. Wyróżnia się wnioskowaniez góry na dół (top-down) oraz z dołu do góry (bottom-up).

M. Góźdź () 35 / 56

Page 36: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Wnioskowanie z góry na dół:

oryginalny problem rozkładany jest na prostsze składowe,

które są w podobny sposób analizowane,

proces odbywa się do momentu dotarcia do najprostszych stwierdzeń– trywialnych lub podanych w bazie wiedzy – lub do otrzymaniaswierdzeń nieprawdziwych.

Wnioskowanie z dołu do góry:

zaczynając z najprostszych stwierdzeń (trywialnych lub dostępnychw bazie wiedzy) konstruowane są stwierdzenia złożone,

cały proces jest kontynuowany aż uda się zbudować oryginalnezapytanie lub przejrzane zostaną wszystkie kombinacje faktówi takiego zapytania nie uda się uzyskać.

Oba typy wnioskowania są sobie równoważne pod względem logiki.

M. Góźdź () 36 / 56

Page 37: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykład: ciąg Fibonacciego. Ciąg zdefiniowany jest przez wzórrekurencyjny

f0 = 0, f1 = 1, fn = fn−1 + fn−2,

co daje 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, . . .

Uwaga:

czasami ciąg zaczyna się od 1, a nie od 0,

procedura wyznaczająca kolejne wyrazy ciągu może konstruować jew przód, aż do zadanego miejsca; jest to podejście z dołu do góry,

procedura może też rozkładać ciąg wstecz od zadanego miejsca dosamego początku ciągu; jest to podejście z góry na dół.

M. Góźdź () 37 / 56

Page 38: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Definicja z góry na dół (top-down)

1 fib(N,0) :- N =:= 0.2 fib(N,1) :- N =:= 1 ; N =:= 2.3 fib(N,X) :- N1 is N-1, fib(N1 ,Y),4 N2 is N-2, fib(N2 ,Z), X is Y+Z.

Zaczynamy od N i cofamy się (N1 is N-1, N2 is N-2) aż do N=0.

Przypadki specjalne wymienione są na początku; pełnią rolę warunkuzakończenia rekurencji.

Później wykonywana jest rekurencja.

Wynik (X is Y+Z) budowany jest po zakończeniu rekurencji.

M. Góźdź () 38 / 56

Page 39: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Definicja z dołu do góry (bottom-up)

1 fibonacci(N,X) :- fib(0,0,1,N,X).2

3 fib(N,X,_,N,X).4 fib(N1 ,X1 ,X2 ,N,X) :- N1 <N, N2 is N1+1,5 X3 is X1+X2 ,6 fib(N2 ,X2 ,X3 ,N,X).

Linia 1: predykat pomocniczy (nie jest konieczny, ale ukrywa zmiennepomocnicze).

Linia 3: warunek zakończenia rekurencji.

Linie 4-6: N, N1, N2 – numery elementów ciągu.

Linie 4-6: X1, X2, X3 – elementy ciągu.

N1, X1, X2 – akumulatory (zmienne pomocnicze).

Wyniki posrednie (X3 is X1+X2) są wyliczane przed kolejnymkrokiem rekurencji (kolejnym wywołaniem fib).

M. Góźdź () 39 / 56

Page 40: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Uwagi:

definicje z góry na dół są zazwyczaj prostsze i krótsze,

definicje z dołu do góry są bardziej złożone – w przykładzie z ciągiemFibonacciego wykorzystać trzeba było aż trzy akumulatory,

definicja z góry na dół wywołuje fib dwukrotnie, więc jej złożonośćskaluje się z liczbą rekurencji R jak 2R,

definicja z dołu do góry wywołuje fib raz, więc jej złożoność skalujesię liniowo z R.

M. Góźdź () 40 / 56

Page 41: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Funkcja dla zadanego argumentu zwraca pojedynczą wartość.Relacja dla zadanego argumentu zwraca zbiór wartości.Prolog pracuje na relacjach, dzięki czemu dla zadanych warunków jestw stanie znaleźć wiele różnych poprawnych rozwiązań (zakładając, że takierozwiązania istnieją).

1 kolor(slonce ,zolty ).2 kolor(kurczak ,zolty ).3 kolor(niebo ,niebieski ).4 kolor(awokado ,zielony ).5 kolor(liscie ,zielony ).6 kolor(piasek ,zolty ).7

8 | ?- kolor(X,zolty ).9

10 X = slonce ? ;11 X = kurczak ? ;12 X = piasek13 yes

M. Góźdź () 41 / 56

Page 42: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Mechanizm znajdowania kolejnych rozwiązań nazywany jest nawracaniem(backtracking).

W Prologu polega on na pozostawianiu znacznika w odpowiednimmiejscu bazy danych i na skokach pomiędzy głównym programema bazą.

Po powrocie do bazy znacznik jest usuwany i ustawiany za nowympotencjalnym rozwiązaniem.

Nowe rozwiązanie jest sprawdzane i cały schemat zaczyna siępowtarzać aż do przejrzenia całej bazy wiedzy (lub spełnienia innychwarunków zakończenia działania programu).

M. Góźdź () 42 / 56

Page 43: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykład 1: warunki liniowe. Możesz wyjść na dwór jeśli zjadłeś obiad,odrobiłeś lekcje i posprzątałeś w pokoju.

W programowaniu imperatywnym jest to zestaw trzech instrukcjiwarunkowych

1 if obiad then2 if lekcje then3 if pokoj then4 ide_na_dwor = true5 end if6 end if7 end if

Można też instrukcji warunkowych nie zagnieżdżać

1 if (obiad+lekcje+pokoj.eq.3) then2 ide_na_dwor = true3 end if

M. Góźdź () 43 / 56

Page 44: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

W Prologu to samo rozwiązanie ma postać

1 ide_na_dwor :- obiad (1), lekcje (1), pokoj (1).

Uwagi:

kolejność warunków nie ma znaczenia, chociaż komputer sprawdza ichprawdziwość w kolejności podania w kodzie

drugie rozwiązanie w Fortranie też zawiera kilka instrukcji if, gdyżwcześniej trzeba pod zmienne obiad, pokoj i lekcje podstawićwartości 1 jeśli odpowiednie warunki są spełnione

kod w Prologu też ma ukryte trzy instrukcje warunkowe

M. Góźdź () 44 / 56

Page 45: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykład 2: zależności (też liniowe). Pewna cecha pozwala namuszeregować elementy. Niech tą cechą będzie wielkość miasta, co daje namprzykładowy ciąg:

Pcim → Lublin → Warszawa → Toronto → MeksykW tym przykładzie kolejność warunków ma znaczenie. Dodatkowozachodzi przechodniość, czyli jeśli Pcim jest mniejszy od Lublina, a Lublinod Warszawy, to Pcim jest również mniejszy od Warszawy.

1 mn(pcim ,lublin ).2 mn(lublin ,warszawa ).3 mn(warszawa ,toronto ).4 mn(toronto ,meksyk ).5

6 mniejszy(X,Y) :- mn(X,Y);7 (mn(X,Z), mniejszy(Z,Y)).

M. Góźdź () 45 / 56

Page 46: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Uwagi:

kolejność argumentów w relacjach w bazie danych ma znaczenie

znajdowanie wielu wyników możliwe dzięki zastosowaniu rekurencjii temu, że Prolog wykorzystuje relacje

| ?- mniejszy(X,toronto).

X = warszawa ? aX = pcimX = lublinno

| ?- mniejszy(lublin,X).

X = warszawa ? aX = torontoX = meksykno

M. Góźdź () 46 / 56

Page 47: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykład 3: drzewo binarne.

MA PIÓRA?tak / \ nie/ \

UMIE LATAĆ? MA PŁETWY?tak / \ nie tak / \ nie/ \ / \

ORZEŁ STRUŚ DELFIN MIŚ

Uwagi:

w takim drzewie nie ma zależności (jak w przypadku miast), jestjedynie zestaw cech przypisanych czterem odpowiedziom

jest to model podejmowania decyzji w oparciu o zestaw danych

M. Góźdź () 47 / 56

Page 48: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

W Prologu można to zakodować na wiele sposobów, np.:

1 cechy(orzel ,tak ,tak ,_).2 cechy(strus ,tak ,nie ,_).3 cechy(delfin ,nie ,_,tak).4 cechy(mis ,nie ,_,nie).

1 orzel :- piora(tak), lata(tak).2 strus :- piora(tak), lata(nie).3 delfin :- piora(nie), pletwy(tak).4 mis :- piora(nie), pletwy(nie).

1 orzel (1 ,1).2 strus (1 ,0).3 delfin (0,1).4 mis(0,0).

M. Góźdź () 48 / 56

Page 49: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykład 4: analiza danych. Wybieramy elementy zbioru spełniającezadane kryterium.

1 temperatura(dubaj ,32).2 temperatura(warszawa ,4).3 temperatura(koluszki ,27).4 temperatura(dolGuldur ,-15).5

6 cieplo(X) :- temperatura(X,T), T>20.7 zimno(X) :- temperatura(X,T), T<10.8 mroz(X) :- temperatura(X,T), T<0.

M. Góźdź () 49 / 56

Page 50: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Warunki mogą się nakładać, czyli w Dol Guldur jest zarówno zimno, jaki mróz.

| ?- cieplo(X).

X = dubaj ? ;X = koluszki ? ;no

| ?- zimno(X).

X = warszawa ? ;X = dolGulduryes

| ?- mroz(X).

X = dolGulduryes

M. Góźdź () 50 / 56

Page 51: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Programowanie w logice z więzamiCLP (Costraint Logic Programming)

Aby przyspieszyć obliczenia, można nałożyć ograniczenia na przestrzeńwyników. Warunki w pierwszej kolejności powinny dotyczyć przestrzeniwyników, a dopiero później samych rozwiązań.

W GNU Prologu system ten nazywa się FDS (Finite Domain Solver).

W SWI Prologu wbudowano CLPFD (Constraint Logic Programming overFinite Domains).

M. Góźdź () 51 / 56

Page 52: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Podanie warunków w takiej kolejności:Z=X*Y, X<100, Y<40

spowoduje stworzenie przestrzeni dla Z o domyślnym rozmiarzefd_max_integer×fd_max_integer, przy czymfd_max_integer = 268435455.

Przy takiej kolejności:X<100, Y<40, Z=X*Y

system najpierw nałoży ograniczenia na przestrzenie X i Y, a dopiero potemstworzy przestrzeń dla Z, która teraz będzie miała rozmiar 100×40.

M. Góźdź () 52 / 56

Page 53: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Algebra Boole’a.Operatory logiczne w systemie FDS

#\ X NOT XX #<=> Y X równoważne YX #\<=> Y X nie równoważne YX ## Y X XOR Y jest prawdziweX #==> Y X implikuje YX #\==> Y X nie implikuje YX #/\ Y X AND Y jest prawdziweX #\/\ Y X AND Y jest fałszyweX #\/ Y X OR Y jest prawdziweX #\\/ Y X OR Y jest fałszywe

M. Góźdź () 53 / 56

Page 54: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Przykłady: Negacja

1 | ?- #\ X #<=> 1.2 X = 0

(Nie)równoważność

1 | ?- X=1, Y #<=> X, Z #\<=> Y.2 X = 13 Y = 14 Z = 0

XOR (dodawanie modulo 2)

1 | ?- X=1, Y=0, X##Y.2 X = 13 Y = 04 yes5

6 | ?- X=1, Y=1, X##Y.7 no % ktoś wie dlaczego?

M. Góźdź () 54 / 56

Page 55: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Prawo de Morgana

1 | ?- (#\(X #/\ Y)) #<=> ((#\ X) #\/ (#\ Y)),2 fd_labeling ([X,Y]).3

4 X = 05 Y = 0 ? ;6

7 X = 08 Y = 1 ?9

10 X = 111 Y = 0 ? ;12

13 X = 114 Y = 1 ? ;15 yes

M. Góźdź () 55 / 56

Page 56: Marek Góźdź - Lublinkft.umcs.lublin.pl/mgozdz/programowanie-logika.pdfLogika – dyscyplina naukowa zaliczana do nauk filozoficznych, obejmująca logiczną teorię języka (semiotykę),

Ostatni przykład: kwadrat magiczny 3×3.

1 kwadrat(S,X) :-2 S=[E11 ,E12 ,E13 ,E21 ,E22 ,E23 ,E31 ,E32 ,E33],3 fd_domain(S,1,9),4 fd_all_different(S),5 fd_labeling(S),6 sum_list ([E11 ,E12 ,E13],X),7 sum_list ([E21 ,E22 ,E23],X),8 sum_list ([E31 ,E32 ,E33],X),9 sum_list ([E11 ,E21 ,E31],X),10 sum_list ([E12 ,E22 ,E32],X),11 sum_list ([E13 ,E23 ,E33],X),12 sum_list ([E11 ,E22 ,E33],X),13 sum_list ([E13 ,E22 ,E31],X).

M. Góźdź () 56 / 56