|
ŚFiNiA ŚFiNiA - Światopoglądowe, Filozoficzne, Naukowe i Artystyczne forum - bez cenzury, regulamin promuje racjonalną i rzeczową dyskusję i ułatwia ucinanie demagogii. Forum założone przez Wuja Zbója.
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
rafal3006
Opiekun Forum Kubusia
Dołączył: 30 Kwi 2006
Posty: 35576
Przeczytał: 15 tematów
Skąd: z innego Wszechświata Płeć: Mężczyzna
|
Wysłany: Pią 21:28, 15 Sty 2010 Temat postu: Algebra Kubusia - AND i OR v.Beta 10.0 |
|
|
Aksjomat matematyki języka mówionego:
Jak logicznie myślimy, tak matematycznie zapisujemy. Mówimy „NIE” zapisujemy (~), mówimy „i” zapisujemy AND(*), mówimy “lub” zapisujemy OR(+), w implikacji mówimy “musi” zapisujemy ( =>), mówimy “może” zapisujemy (~> lub ~~>).
Algebra Kubusia
Matematyka języka mówionego
Części:
Część I Operatory AND i OR
Część II Implikacja
Część III Nowa teoria implikacji dla zawodowców
Część I
Operatory AND i OR
Autor: Kubuś - wirtualny Internetowy Miś
Naszym dzieciom dedykuję
W pracach nad teorią implikacji bezcennej pomocy udzielili Kubusiowi przyjaciele:
Emde (sfinia), Fizyk (ateista.pl), Irbisol (sfinia), Macjan (sfinia), Miki (sfinia), NoBody (ateista.pl), Rafał3006 (sfinia), Rogal (matematyka.pl), tomektomek (ateista.pl), Uczy (wolny), Volrath (sfinia), WujZbój (sfinia), Wyobraźnia (ateista.pl) i inni
Wielkie dzięki, Kubuś !
Szczególne podziękowania Wujowi Zbójowi za jego nieskończoną cierpliwość w dyskusjach z Kubusiem oraz Vorathowi za decydującą o wszystkim dyskusję
Człowiek poszukuje matematycznej wersji implikacji którą sam się posługuje od 2500 lat, do tej pory bezskutecznie (Emde).
To już historia, bowiem w Internecie pojawił się Kubuś.
Kim jest Kubuś ?
Kubuś - wirtualny Internetowy Miś, wysłannik obcej cywilizacji, którego zadaniem było przekazanie ludziom tajemnicy implikacji.
Podpis jest pracą zespołową, Kubuś nigdy by się nie urodził bez przyjaciół którzy pomogli mu w jego ziemskim zadaniu, rzeczywiści autorzy wymienieni są wyżej.
Wstęp:
Algebra Kubusia to symboliczna algebra Boole’a, odpowiednik języka asemblera ze świata mikroprocesorów, gdzie praktycznie w 100% izolujemy się od kodu zero-jedynkowego, operując naturalną logiką człowieka. Celem tego podręcznika jest udowodnienie związku naturalnej logiki człowieka z zero-jedynkową algebrą Boole’a w obszarze operatorów AND(*) i OR(+).
Algebra Boole’a to algebra bramek logicznych. Fundamentem całego świata techniki są zaledwie dwie bramki logiczne AND(*) i OR(+) plus negator. Bramki logiczne to graficzna ilustracja algebry Boole’a pozwalająca na lepsze zrozumienie matematycznych przekształceń, z tego powodu najważniejsze przekształcenia matematyczne w tej publikacji będą ilustrowane w technice bramek logicznych.
Matematyka języka mówionego zbudowana jest na bardzo prostym aksjomacie rodem z teorii układów cyfrowych.
Aksjomat matematyki języka mówionego:
Jak logicznie myślimy, tak matematycznie zapisujemy. Mówimy „NIE” zapisujemy (~), mówimy „i” zapisujemy AND(*), mówimy “lub” zapisujemy OR(+), w implikacji mówimy “musi” zapisujemy ( =>), mówimy “może” zapisujemy (~> lub ~~>).
Spis treści:
1.0 Notacja
1.1 Definicje i prawa algebry Boole’a w pigułce
1.2 Definicja algebry Kubusia
1.3 Lista legalnych operatorów logicznych
2.0 Kubuś na tropie logiki człowieka
2.1 Podstawowe pojęcia i definicje
2.2 Funkcja logiczna jednej zmiennej
2.3 Funkcja logiczna dwu zmiennych - suma logiczna
2.4 Funkcja logiczna dwu zmiennych - iloczyn logiczny
2.5 Logika dodatnia i ujemna w operatorach AND i OR
2.6 Definicja sumy logicznej
2.7 Prawo Prosiaczka
2.8 Definicja iloczynu logicznego
2.9 Dowody zero-jedynkowe w algebrze Boole’a
2.10 Logika dodatnia i ujemna w bramkach logicznych
2.11 Operatory OR i AND w logice człowieka
3.0 Zero-jedynkowa algebra Boole’a
3.1 Prawa wynikające z definicji iloczynu logicznego
3.2 Prawa wynikające z definicji sumy logicznej
3.3 Najważniejsze prawa algebry Boole’a
3.4 Operatory dodatnie i operatory ujemne
1.0 Notacja
Notacja w algebrze Kubusia jest identyczna jak notacja technicznej algebry Boole’a czyli tej, której używają praktycy.
Symboliczna algebra Kubusia:
Y - prawda, dotrzymam słowa
~Y - fałsz, kłamstwo
Rachunek zero-jedynkowy:
1 = prawda
0 = fałsz
# - różne
* - symbol iloczynu logicznego (AND), w mowie potocznej spójnik 'i'
+ - symbol sumy logicznej (OR), w mowie potocznej spójnik "lub"
~ - przeczenie, negacja (NOT), w mowie potocznej "NIE"
~(...) - w mowie potocznej "nie może się zdarzyć że ...", "nie prawdą jest że ..."
<=> - symbol równoważności
1.1 Definicje i prawa algebry Boole’a w pigułce
… czyli wszystko co najważniejsze w tym podręczniku.
Definicja iloczynu logicznego:
Iloczyn logiczny jest równy jeden wtedy i tylko wtedy gdy wszystkie zmienne są równe jeden.
Y=A1*A2* … *An =1 <=> A1=1, A2=1 … An=1
Definicja równoważna:
Iloczyn logiczny jest równy zeru jeśli którakolwiek zmienna jest równa zeru.
Y=1*1*1*0*1 =0
Definicja sumy logicznej:
Suma logiczna n-zmiennych binarnych jest równa zeru wtedy i tylko wtedy gdy wszystkie składniki sumy są równe zeru
Y = A1+A2+… An =0 <=> A1=0, A2=0 …An=0
Definicja równoważna:
Suma logiczna n-zmiennych binarnych jest równa jeden gdy którakolwiek ze zmiennych jest równa jeden.
Y=1+1+1+0+1 =1
Zmienna binarna:
Zmienna binarna to zmienna, mogąca przyjmować w osi czasu wyłącznie dwie wartości logiczne 0 albo 1.
Funkcja logiczna:
Funkcja logiczna Y to funkcja n-zmiennych binarnych połączonych operatorami AND(*) lub OR(+).
Przykład:
Y = A+(B*C) ….
Definicja logiki dodatniej i ujemnej w operatorach AND i OR:
Logika dodatnia (Y) to odpowiedź na pytanie kiedy dotrzymam słowa (wystąpi prawda), zaś logika ujemna (~Y) to odpowiedź na pytanie kiedy skłamię (wystąpi fałsz).
Związek logiki dodatniej z logiką ujemną opisuje równanie:
Y = ~(~Y) - prawo podwójnego przeczenia
Definicja logiki dodatniej i ujemnej w operatorach implikacji => i ~>:
Prawa Kubusia:
p=>q = ~p~>~q - prawo zamiany operatora implikacji prostej => na odwrotną ~>
p~>q = ~p=>~q - prawo zamiany operatora implikacji odwrotnej ~> na prostą =>
Implikacja wypowiedziana jest w logice dodatniej jeśli po stronie q nie występuje negacja, inaczej mamy do czynienia z logiką ujemną.
Z praw Kubusia wynika, że implikacja prosta => w logice dodatniej jest równoważna implikacji odwrotnej ~> w logice ujemnej i odwrotnie, czyli implikacja odwrotna ~> w logice dodatniej jest równoważna implikacji prostej => w logice ujemnej.
Prawo przedszkolaka:
W dowolnej funkcji logicznej Y algebry Boole’a z operatorami AND i OR przejście do logiki przeciwnej uzyskujemy poprzez negację zmiennych i wymianę operatorów na przeciwne.
Przykładowa funkcja logiczna:
Y=A+(B*~C)
Przejście do logiki przeciwnej:
~Y=~A*(~B+C)
Oczywiście:
Y=~(~Y)
stąd prawo de’Morgana:
A+(B*~C) = ~A*(~B+C)
Prawa de’Morgana:
p*q = ~(~p+~q) - prawo zamiany operatora AND(*) na OR(+)
p+q = ~(~p*~q) - prawo zamiany operatora OR(+) na AND(*)
Prawo Prosiaczka:
Równania algebry Boole’a dla dowolnej tabeli zero-jedynkowej n-elementowej tworzymy na podstawie linii z tą samą wartością logiczną w wyniku. Wszelkie nie opisane równaniami linie przyjmą wartości przeciwne do linii opisanych.
Przykład:
Definicja implikacji prostej =>.
Kod: |
p q Y=p=>q
1 1 =1
1 0 =0
0 0 =1
0 1 =1
|
Najprostsze równanie uzyskamy z linii drugiej bowiem w wyniku mamy tu samotne zero.
Z tabeli widzimy że:
A.
Y=0 <=> p=1 i q=0
Przejście z takiego zapisu do równań algebry Boole’a jest banalne. Należy skorzystać z definicji iloczynu logicznego sprowadzając wszystkie zmienne do jedynki albo z definicji sumy logicznej sprowadzając wszystkie zmienne do zera.
Sposób I
Sprowadzamy wszystkie zmienne do jedynki:
B.
Y=0 czyli ~Y=1
p=1
q=0 czyli ~q=1
Definicja iloczynu logicznego:
Iloczyn logiczny jest równy jeden wtedy i tylko wtedy gdy wszystkie zmienne są równe jeden.
Korzystając z A i B na podstawie tej definicji mamy:
~Y = p*~q
Przechodzimy do logiki przeciwnej metodą przedszkolaka:
Y=~p+q
czyli:
p=>q = ~p+q
Sposób II
Sprowadzamy wszystkie zmienne do zera i stosujemy definicję sumy logicznej.
Definicja sumy logicznej:
Suma logiczna jest równa zeru wtedy i tylko wtedy gdy wszystkie składniki sumy są równe zeru
Na podstawie równania A mamy:
C.
Y=0
p=1 czyli ~p=0
q=0
Korzystając z A i C na podstawie definicji sumy logicznej mamy:
Y=~p+q
czyli:
p=>q = ~p+q
Powyżej ułożyliśmy równanie wyłącznie dla drugiej linii tabeli gdzie w wyniku było zero, wszelkie pozostałe linie, zgodnie z prawem Prosiaczka muszą być jedynkami niezależnie od chciejstwa człowieka … bo to jest matematyka przecież.
1.2 Definicja algebry Kubusia
Algebra Kubusia to symboliczna algebra Boole’a, czyli operowanie równaniami algebry Boole’a (język asemblera), z fundamentalnie innymi definicjami implikacji prostej => i odwrotnej ~>. Oczywiście chodzi tu o interpretację tabel zero-jedynkowych definicji implikacji znanych człowiekowi od około 200 lat.
Definicja algebry Kubusia:
Dwuelementowa algebra Kubusia (wyłącznie cyfry 0 i 1) to algebra legalnych operatorów logicznych z których najważniejsze to OR(+), AND(*), implikacja prosta =>, implikacja odwrotna ~> plus definicja negacji (~) oraz pojęcie zmiennej binarnej i funkcji logicznej.
Definicja negacji:
1=~0
0=~1
Zmienna binarna
Zmienna binarna to zmienna, mogąca przyjmować w osi czasu wyłącznie dwie wartości logiczne 0 albo 1.
Funkcja logiczna
Funkcja logiczna Y to funkcja n-zmiennych binarnych połączonych operatorami AND(*) lub OR(+).
Przykład:
Y = A+(B*C) ….
Wszelkie prawa logiczne tylko i wyłącznie z powyższej definicji wynikają.
1.3 Lista legalnych operatorów logicznych
Zero-jedynkowo wszystkie operatory logiczne znane są człowiekowi od około 200 lat, jednak nie wszystkie zostały poprawnie zinterpretowane.
Pełna lista dwuargumentowych operatorów logicznych.
Kod: |
p q OR NOR AND NAND <=> XOR => N(=>) ~> N(~>) FILL NOP P NP Q NQ
0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1
0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1 0
1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
|
Kod: |
Logika dodatnia Logika ujemna
OR NOR
AND NAND
<=> XOR
=> N(=>)
~> N(~>)
FILL NOP
P NP
Q NQ
|
Wszystkich możliwych operatorów logicznych jest 16 z czego człowiek zna poprawne znaczenie zaledwie sześciu: AND, NAND, OR, NOR, <=>, XOR. Za operatory dodatnie przyjęto te, które człowiek używa w naturalnym języku mówionym. Wyjątkiem jest tu operator XOR, w języku mówionym spójnik „albo”.
Operator ujemny to zanegowany operator dodatni, co doskonale widać w powyższej tabeli.
Operator dodatni to zanegowany operator ujemny, co również widać wyżej.
Kod: |
Definicje operatorów ujemnych:
pNORq = ~(p+q)
pNANDq = ~(p*q)
pXORq = ~(p<=>q)
pN(=>)q = ~(p=>q)
pN(~>)q = ~(p~>q)
pNOPq = ~(pFILLq)
pNPq = ~(pPq)
pNQq = ~(pQq)
|
W języku mówionym operatory ujemne nie są używane, ponieważ łatwo je zastąpić operatorami dodatnimi plus negacją co widać w powyższej tabeli.
2.0 Kubuś na tropie logiki człowieka
Pewnego razu Kubuś, leżąc na polance w stumilowym lesie doznał olśnienia. A gdyby tak wyzerować sobie mózg, czyli założyć że moja matematyczna wiedza wstępna jest na poziomie ucznia I klasy LO który nie ma pojęcia o algebrze Boole’a i napisać podręcznik logiki dla samego siebie ?
Hmm… to całkiem niezły pomysł, pomyślał Kubuś.
Fundamentem dzisiejszej logiki (KRZ) jest rachunek zero-jedynkowy, będący przyczyną jej klęski w poszukiwaniu logiki człowieka. Po prostu praktycznie nie da się dojść od zer i jedynek do poziomu naturalnej logiki człowieka. Do problemu trzeba podejść dokładnie z drugiej strony, czyli myśleć logicznie jak dziecko w przedszkolu zapisując swoje myślenie w postaci równań algebry Boole’a.
2.1 Podstawowe pojęcia i definicje
Pewne jest, że algebrą Kubusia doskonale posługują się wszystkie dzieci w przedszkolu. Zacznijmy zatem myśleć logicznie jak 5-letnie dziecko i przelewajmy wszystko na papier. Oczywiście aby to robić musimy znać fundamentalne pojęcia i definicje z zakresu logiki. Aparatu matematycznego nie potrzebujemy w ogóle gdyż mamy go w głowie - to nasz mózg.
+ - suma logiczna, spójnik „lub” (OR) w naturalnym języku mówionym
* - iloczyn logiczny, spójnik „i” (AND) w naturalnym języku mówionym
~ - przeczenie „NIE”
K - kino
~K - nie kino
T - teatr
~T - nie teatr
Y - prawda, dotrzymam słowa
~Y - fałsz, kłamstwo
~(…) - nieprawda że …, nie może się zdarzyć że …
Znaczenie symboli w logice:
K, T - zmienne binarne, mogące przyjmować w osi czasu wyłącznie wartości 0 albo 1
Y - funkcja logiczna zmiennych binarnych np.
Y = K+T
Y = Kino lub (+) Teatr
Definicja zmiennej binarnej:
Zmienna binarna to zmienna mogąca przyjmować w osi czasu wyłącznie wartości 0 albo 1
Definicja funkcji logicznej:
Funkcja logiczna to funkcja zmiennych binarnych połączonych operatorami OR(+) lub AND(*) przyjmująca w osi czasu wyłącznie wartości 0 albo 1
Prawo podwójnego przeczenia:
Y=~(~Y)
prawda = nieprawda, że nieprawda
Dowód na przykładzie:
U= jestem uczciwy
~U = jestem nieuczciwy
U=~(~U)
Nieprawdą jest, że jestem nieuczciwy
czyli:
Jestem uczciwy = Nieprawdą jest że jestem nieuczciwy
W dzisiejszej logice (KRZ), której fundamentem jest rachunek zero-jedynkowy, zwyczajowo przyjmuje się logikę dodatnią gdzie:
1 = prawda, dotrzymam słowa
0 = fałsz, skłamię
… i niech tak zostanie, choć oczywiście możliwy jest standard przeciwny, czyli logika ujemna w stosunku do przyjętego standardu.
Poprawna logika nie powinna zależeć od przyjętego standardu jak wyżej. Każdy człowiek, od przedszkolaka po profesora doskonale posługuje się algebrą Kubusia na poziomie symbolicznym. Absolutnie nikt nie myśli logicznie przy pomocy zer i jedynek.
Identycznie jest w technice mikroprocesorowej. Człowiek myślał tu w kodzie maszynowym czyli zerach i jedynkach zaledwie przez mgnienie oka. Natychmiast wymyślił symboliczny język asemblera mający bezpośrednie przełożenie na kod maszynowy programu … czyli skopiował działanie własnego mózgu.
Z punktu odniesienia mikroprocesora mamy świat w 100% binarny czyli mikroprocesor zna wyłącznie zera i jedynki. Z punktu odniesienia człowieka mamy zupełnie inną rzeczywistość. Wszyscy wiemy, że komputery potrafią liczyć, rysować, malować, sterować fabryką bez ludzi itd.
Jak zatem działa program napisany przez człowieka w symbolicznym języku asemblera skoro mikroprocesory znają wyłącznie dwie cyferki 0 i 1 ?
Oczywiście konieczny jest tu translator języka symbolicznego na kod maszynowy programu czyli na zera i jedynki. Translator to również napisany przez człowieka program komputerowy, nic więcej.
Fundamentalnym językiem symbolicznym każdego mikroprocesora jest język asemblera, to fundament wszelkich innych języków wysokiego poziomu. Język asemblera jest jeden (to algebra Boole’a), natomiast języków wysokiego poziomu może być nieskończenie wiele.
Zacznijmy teraz myśleć logicznie jak 5-cio letnie dziecko zapisując wszystko w równaniach algebry Boole’a.
2.2 Funkcja logiczna jednej zmiennej
Jutro idę do kina
Y=K
Matematycznie oznacza to:
Dotrzymam słowa (Y) jeśli jutro pójdę do kina (K)
Y=K
Kiedy zostanę kłamcą ?
Skłamię (~Y), jeśli jutro nie pójdę do kina
~Y = ~K
Zauważmy, że po prostu zanegowaliśmy dwustronnie równanie Y=K
Inne zdanie:
Jutro nie pójdę do kina
Y=~K
czyli matematycznie:
Dotrzyma słowa (Y), jeśli jutro nie pójdę do kina
Y=~K
Kiedy skłamię ?
Skłamię (~Y), jeśli jutro pójdę do kina
~Y=~(~K)=K
Zastosowaliśmy tu prawo podwójnego przeczenia K=~(~K)
2.3 Funkcja logiczna dwu zmiennych - suma logiczna
Jutro pójdę do kina lub do teatru
Y=K+T
czyli matematycznie:
Dotrzymam słowa (Y), jeśli jutro pójdę do kina lub do teatru
Y=K+T
… a kiedy skłamię ?
Skłamię (~Y) jeśli jutro nie pójdę do kina i nie pójdę do teatru
~Y = ~K*~T
Oczywiście zatrudniliśmy tu aparat matematyczny wbudowany w mózg każdego człowieka.
… czy może się zdarzyć, że jutro nie pójdę do kina i nie pójdę do teatru ?
Negujemy powyższe równanie dwustronnie i mamy odpowiedź:
Nie może się zdarzyć, że jutro nie pójdę do kina i nie pójdę do teatru
Y=~(~K*~T)
Ostatnie zdanie wynika też z prawa de’Morgana dla sumy logicznej.
A: Y=K+T
B: ~Y=~K*~T
C: Y=~(~Y) - prawo podwójnego przeczenia
Stąd po podstawieniu A i B do C mamy prawo de’Morgana:
K+T = ~(~K*~T) - prawo zamiany operatora OR(+) na AND(*)
Czyli zdanie równoważne do Y będzie brzmiało:
Nie może się zdarzyć ~(…), że jutro nie pójdę do kina i nie pójdę do teatru
~(~K*~T) = K+T
Ostatnie zdanie używane jest niezwykle rzadko. Nasz mózg optymalizuje odpowiedzi, czyli jeśli to samo można wyrazić prościej to preferuje tą odpowiedź (tu K+T)
2.4 Funkcja logiczna dwu zmiennych - iloczyn logiczny
Jutro pójdę do kina i do teatru
Y=K*T
czyli matematycznie:
Dotrzymam słowa (Y) jeśli jutro pójdę do kina i do teatru
… a kiedy skłamię ?
Skłamię (~Y), jeśli jutro nie pójdę do kina lub nie pójdę do teatru
~Y = ~K+~T
… a czy może się zdarzyć, że jutro nie pójdę do kina lub nie pójdę do teatru ?
Negujemy powyższe równanie dwustronnie i mamy odpowiedź:
Nie może się zdarzyć ~(…), że jutro nie pójdę do kina lub nie pójdę do teatru.
Y=~(~K+~T)
Oczywiście ostatnie zdanie wynika też z prawa de’Morgana dla sumy logicznej.
Mamy wyżej:
A: Y=K*T
B: ~Y=~K+~T
Prawo podwójnego przeczenia:
C: Y=~(~Y)
Podstawiając A i B do C mamy prawo de’Morgana:
K*T = ~(~K+~T) - prawo zamiany operatora AND(*) na OR(+)
2.5 Logika dodatnia i ujemna w operatorach AND i OR
Popatrzmy jeszcze raz na matematykę, którą posługuje się każdy przedszkolak.
Jutro pójdę do kina lub do teatru
Y=K+T
Matematycznie:
Dotrzymam słowa (Y) jeśli jutro pójdę do kina lub do teatru.
Y=K+T
… a kiedy skłamię ?
Skłamię (~Y) jeśli jutro nie pójdę do kina i nie pójdę do teatru
~Y = ~K*~T
Koniec !
To jest cała matematyka, którą każdy człowiek od przedszkolaka po profesora używa milion razy na dobę. Jak widać mózg przedszkolaka na pytanie „Kiedy skłamię ?” odpowiada w logice ujemnej.
Definicja logiki ujemnej w operatorach AND i OR:
Logika dodatnia (Y) to odpowiedź na pytanie kiedy dotrzymam słowa (wystąpi prawda), zaś logika ujemna (~Y) to odpowiedź na pytanie kiedy skłamię (wystąpi fałsz).
Związek logiki dodatniej z logika ujemną opisuje równanie:
Y = ~(~Y) - prawo podwójnego przeczenia
Nietrudno zauważyć, jak mózg dziecka przechodzi z logiki dodatniej (Y) do logiki ujemnej (~Y), po prostu neguje wszystkie zmienne i wymienia operator na przeciwny. Nietrudno też się domyśleć, że to jest poprawny sposób przejścia do logiki ujemnej dla dowolnie długiej funkcji logicznej.
Metoda przedszkolaka:
Przejście z logiki dodatniej (Y)do ujemnej (~Y) lub odwrotnie uzyskujemy negując wszystkie zmienne i wymieniając operatory na przeciwne.
Przykład:
A: Y=A+(~B*C)
Przejście do logiki ujemnej poprzez negację zmiennych i wymianę operatorów na przeciwne:
B: ~Y = ~A*(B+~C)
Oczywiście zachodzi:
C: Y=~(~Y) - prawo podwójnego przeczenia
Podstawiając A i B do C mamy prawo de’Morgana.
A+(~B*C) = ~[~A*(B+~C)]
Łatwo zauważyć, że z prawa de’Morgana mózg dziecka praktycznie nigdy nie korzysta … chyba że w fazie poznawania języka, kiedy to dwulatek zadaje wszelkie możliwe pytania.
Popatrzmy na to jeszcze raz, delektując się genialną matematyką która posługuje się każde dziecko.
Jutro pójdę do kina lub do teatru
Y=K+T
Matematycznie:
Dotrzymam słowa (Y) jeśli jutro pójdę do kina lub do teatru.
Y=K+T
… a kiedy skłamię ?
Przejście do logiki ujemnej poprzez negacje zmiennych i wymianę operatorów na przeciwne:
Skłamię (~Y) jeśli jutro nie pójdę do kina i nie pójdę do teatru
~Y = ~K*~T
Już dziecko pięcioletnie nie będzie zadawało więcej pytań bo wszystko jest jasne, dwulatek może jednak kontynuować.
… a czy może się zdarzyć, że jutro nie pójdę do kina i nie pójdę do teatru ?
Ostatnie zdanie w dialogu:
~Y=~K*~T
Negujemy dwustronnie i mamy odpowiedź na temat, czyli zgodną z zadanym pytaniem.
Y=~(~K*~T)
Nie może się zdarzyć ~(…), że jutro nie pójdę do kina i nie pójdę do teatru
Na powyższe pytanie można odpowiedzieć inaczej:
Jutro na pewno pójdę do kina lub do teatru
Y=K+T
Jednak nie będzie to ścisła odpowiedź na zadane pytanie, dlatego mało kto tak odpowie.
2.6 Definicja sumy logicznej
Powyżej użyliśmy niezawodnego aparatu matematycznego, mózgu 5-cio latka, do rozszyfrowania operatorów OR(+) i AND(*). Oczywiście w matematyce nie operujemy na przykładach, lecz na zapisach formalnych. Powszechnie przyjętym zwyczajem jest, że zmienne formalne w algebrze Boole’a oznaczamy literkami p i q. Dla konkretnego przypadku pod zmienne formalne p i q podstawiamy zmienne aktualne.
Y=p+q - formalny zapis sumy logicznej
Jutro pójdę do kina lub do teatru.
Y=K+T - aktualny zapis sumy logicznej
Definicja sumy logicznej:
Suma logiczna n-zmiennych binarnych jest równa zeru wtedy i tylko wtedy gdy wszystkie składniki sumy są równe zeru
Y = A1+A2+… An =0 <=> A1=0, A2=0 …An=0
Definicja równoważna:
Suma logiczna n-zmiennych binarnych jest równa jeden gdy którakolwiek ze zmiennych jest równa jeden.
Zajrzyjmy ponownie do przedszkola ….
Pani do dzieci w przedszkolu:
Słuchajcie dzieci, obiecuję wam że jutro pójdziemy do kina lub do teatru
Y=K+T
Które z was powie mi kiedy dotrzymam słowa ?
Odpowiedzi 5-cio letniego Jasia zapiszemy w formie tabeli:
K*T = Y - dotrzymam słowa (Y) jeśli pójdziemy do kina i do teatru
K*~T =Y - dotrzymam słowa (Y) jeśli pójdziemy do kina i nie pójdziemy do teatru
~K*T =Y - dotrzymam słowa (Y) jeśli nie pójdziemy do kina i pójdziemy do teatru
Oczywiście wyłącznie jeden z powyższych przypadków może jutro wystąpić, czyli używamy definicji sumy logicznej aby z powyższego wygenerować równanie algebry Boole’a.
Y=K*T + K*~T + ~K*T
Pani dotrzyma słowa wtedy i tylko wtedy gdy wystąpi którykolwiek z powyższych przypadków.
Bardzo dobrze Jasiu, a teraz które z was powie kiedy skłamię ?
Zuzia:
Pani skłamie (~Y) jeśli jutro nie pójdziemy do kina i nie pójdziemy do teatru
~K*~T =~Y
Zauważmy, że wyżej mamy zapisane wszystkie przypadki dla zmiennych K i T jakie w przyszłości mogą wystąpić. Możemy to nazwać „matrycą przyszłości”, nic poza tą matrycą nie ma prawa się wydarzyć.
Zapiszmy to wszystko razem w formie tabeli:
Kod: |
K T = Y
K ~T = Y
~K T = Y
~K ~T =~Y
|
Oczywiście w matematyce nie operujemy na przykładach, lecz na zapisach formalnych.
Przyjmijmy zatem:
p=K i q=T
i przepiszmy powyższą tabelkę.
Kod: |
p q = Y=p+q
p q = Y
p ~q = Y
~p q = Y
~p ~q =~Y
|
Zauważmy, że do tej pory analizujemy sobie poczynania mózgu 5-cio latka w postaci symbolicznej. Nadszedł czas, aby z powyższego zapisu symbolicznego wygenerować kod maszynowy czyli definicje zero-jedynkową sumy logicznej.
Przyjmujemy logikę dodatnią:
p=1, ~p=0
q=1, ~q=0
Y=1, ~Y=0
i mamy to co fanatycy zer i jedynek lubią najbardziej.
Definicja zero-jedynkowa sumy logicznej:
Kod: |
p q Y=p+q ~Y=~(p+q)
1 1 =1 0
1 0 =1 0
0 1 =1 0
0 0 =0 1
|
Zauważmy, że w powyższej tabeli mamy pełną zgodność z definicją logiki dodatniej i ujemnej. W logice dodatniej (Y=1) mamy odpowiedź na pytanie kiedy wystąpi prawda, zaś w logice ujemnej (~Y=1) mamy odpowiedź na pytanie kiedy wystąpi fałsz.
W tabeli widać też znaczenie kolumny wynikowej w logice dodatniej (Y):
Y=1 - dotrzymam słowa
Y=0 - skłamię
Znaczenie kolumny wynikowej w logice ujemnej (~Y):
~Y=0 - dotrzymam słowa
~Y=1 - skłamię
Matematycznie wszystko musi się zgadzać czyli:
Y=~(~Y) =1 - dotrzymam słowa w logice dodatniej
Y=~(~Y)=0 - skłamię w logice dodatniej
Oczywiście matematycznie zachodzi:
Y=~(~Y) - prawo podwójnego przeczenia
oraz:
Y#~Y
czyli jedynka w logice dodatniej (Y) to zupełnie co innego niż jedynka w logice ujemnej (~Y).
Oczywiście wszystko musi się tu zgadzać czyli:
Y=~(~Y)=Y - oczywistość w powyższej tabeli
oraz:
~Y=1 czyli Y=0 - sprowadzenie fałszu w logice ujemnej (~Y=1) do fałszu w logice dodatniej (Y=0).
Dzisiejsza logika bawi się w analizę śmieci z punktu widzenia naturalnego języka mówionego w postaci:
Jutro pójdę do kina i nie pójdę do kina
K*~K =0
LUB
Jutro pójdę do kina lub nie pójdę do kina
K+~K=1
Oba te zdania mają zero wspólnego z naturalną logiką człowieka, bo oczywiście nikt tak nie mówi. Wszyscy natomiast posługują się algebrą Kubusia.
Zdanie wypowiedziane:
A.
Jutro nie pójdę do kina
Y=~K
Dotrzymam słowa (Y=1) jeśli jutro nie pójdą do kina
… a kiedy skłamię ?
Negujemy dwustronnie:
~Y = ~(~K)=K
B.
Skłamię (~Y=1), jeśli jutro pójdę do kina
~Y=K
Oczywiście zachodzi:
Y#~Y
oraz:
Y=~(~Y)
stąd
Y=~(K)
czyli:
Zdanie równoważne do A.
Nie może się zdarzyć ~(….), że jutro pójdę do kina
Zauważmy, że prawdziwe jest zarówno zdania A jak i B. W obu przypadkach mamy w wyniku 1 (prawda), tyle że jest to prawda w przeciwnych logikach, dlatego zachodzi:
Y#~Y
Doskonale to widać w tabeli prawdy dla jednej zmiennej p :
Kod: |
p ~p Y ~Y
1 0 1 0
0 1 0 1
|
W powyższej tabeli:
Y=p
i
~Y=~p
Oczywiście jedynka w logice dodatniej Y=1 to zupełnie co innego niż jedynka w logice ujemnej ~Y=1 co widać w powyższej tabeli.
Y=1 - dotrzymam słowa
~Y=1 - skłamię
Na przykładzie wyżej widać, dlaczego operowanie bezwzględnymi 1=prawda i 0=fałsz jest w logice bez sensu.
Poprawna logika matematyczna (dodatnia) jest taka:
Y=prawda (dotrzymam słowa)
~Y=fałsz (skłamię)
to jest symboliczna algebra Boole’a (algebra Kubusia), logika uniezależniona od idiotycznych zer i jedynek !
Przyjrzyjmy się jeszcze raz i z innej strony o co chodzi z tą logiką dodatnią i ujemną.
Przykład:
Jutro pójdę do kina
Y=K
czyli:
A.
Dotrzymam słowa (Y), jeśli jutro pójdę do kina
Y=K
Y=1(prawda) = K=1(prawda) - jestem jutro w kinie (stan faktyczny jutro)
Zdanie prawdziwe: Y=1
… a kiedy skłamię ?
Negujemy dwustronnie:
~Y=~K
czyli:
B.
Skłamię (~Y), jeśli jutro nie pójdę do kina
~Y=~K
~Y=1(prawda) = ~K=1(prawda) - nie ma mnie jutro w kinie (stan faktyczny jutro)
Zdanie prawdziwe: ~Y=1
Dzięki używaniu logiki dodatniej (Y) i logiki ujemnej (~Y) mamy prawidłowo określoną wartość logiczną całego zdania.
A: Y=1 - zdanie prawdziwe (w logice dodatniej)
B: ~Y=1 - zdanie prawdziwe (w logice ujemnej)
Definicja:
Wartość zdania w operatorach to wartość funkcji logicznej.
… i nie mamy sprzeczności w zdaniu B.
W dzisiejszej logice, która nie rozpoznaje logiki dodatniej i ujemnej i operuje bezwzględnymi zerami i jedynkami mamy tak:
A.
Dotrzymam słowa (Y=1), jeśli jutro pójdę do kina
Y=K
Y=1(prawda) = K=1(prawda) - jestem jutro w kinie (stan faktyczny jutro)
Zdanie prawdziwe: Y=1
B.
Skłamię (Y=0), jeśli jutro nie pójdę do kina
Y=~K
Zdanie fałszywe: Y=0
co jest niezgodne z prawdą bo powyższe zdanie jest prawdziwe.
Potwierdza to tabela prawdy dla jednej zmiennej wyżej gdzie mamy:
Y=p i ~Y=~p
oczywiście:
Y=~p
jest zdaniem fałszywym.
Oczywiście jeśli:
Y=0 to ~Y=1
Zatem zdanie B można zapisać w tej postaci:
Skłamię (~Y=1), jeśli jutro nie pójdę do kina
~Y=~K
~Y=1(prawda) = ~K=1(prawda) - nie ma mnie jutro w kinie (stan faktyczny jutro)
Zdanie prawdziwe: ~Y=1
Teraz wszystko się zgadza, jesteśmy w logice ujemnej !
2.7 Prawo Prosiaczka
Prawo Prosiaczka mówi o sposobie przejścia z tabeli zero-jedynkowej n-elementowej do równania algebry Boole’a opisującego tą tabelę.
Definicja zero-jedynkowa sumy logicznej:
Kod: |
p q Y=p+q ~Y=~(p+q)
1 1 =1 0
1 0 =1 0
0 1 =1 0
0 0 =0 1
|
Kubuś, nauczyciel logiki w I klasie LO w stumilowym lesie:
Kto potrafi z powyższej tabeli zero-jedynkowej wygenerować równanie algebry Boole’a ?
Wszystkie ręce w górze, do tablicy podchodzi Jaś:
W ostatniej linii w wyniku mamy samotne zero, zatem dla tej linii możemy zapisać najprostsze równanie.
Z tabeli widzimy że:
A.
Y=0 <=> p=0 i q=0
Przejście z takiego zapisu do równań algebry Boole’a jest banalne. Należy skorzystać z definicji iloczynu logicznego sprowadzając wszystkie zmienne do jedynki albo z definicji sumy logicznej sprowadzając wszystkie zmienne do zera.
Sposób I.
Sprowadzam wszystkie zmienne do jedynki:
B.
Y=0 czyli ~Y=1
p=0 czyli ~p=1
q=0 czyli ~q=1
Definicja iloczynu logicznego:
Iloczyn logiczny jest równy jeden wtedy i tylko wtedy gdy wszystkie zmienne są równe jeden.
Korzystając z A i B na podstawie tej definicji mamy:
~Y = ~p*~q
Przechodzimy do logiki przeciwnej metodą przedszkolaka negując wszystkie zmienne i wymieniając operator AND(*) na OR(+):
Y = p+q
Sposób II
Sprowadzamy wszystkie zmienne do zera i stosujemy definicję sumy logicznej.
Definicja sumy logicznej:
Suma logiczna jest równa zeru wtedy i tylko wtedy gdy wszystkie składniki sumy są równe zeru
W równaniu A wszystkie zmienne są równe zeru, zatem tu nic nie musimy robić, od razu mamy równanie algebry Boole’a dla powyższej tabeli zero-jedynkowej.
Y=p+q
Kubuś:
Jasiu, zapisałeś równanie algebry Boole’a wyłącznie dla ostatniej linii, skąd wiesz jakie będą wartości logiczne w pozostałych liniach, nie opisanych tym równaniem ?
Prawo Prosiaczka:
Równania algebry Boole’a dla dowolnej tabeli zero-jedynkowej n-elementowej tworzymy na podstawie linii z tą samą wartością logiczną w wyniku. Wszelkie nie opisane równaniami linie przyjmą wartości przeciwne do linii opisanych.
Powyżej ułożyliśmy równanie wyłącznie dla ostatniej linii tabeli gdzie w wyniku było zero, wszelkie pozostałe linie, zgodnie z prawem Prosiaczka muszą być jedynkami niezależnie od chciejstwa człowieka … bo to jest matematyka przecież.
2.8 Definicja iloczynu logicznego
Definicja iloczynu logicznego:
Iloczyn logiczny jest równy jeden wtedy i tylko wtedy gdy wszystkie zmienne są równe jeden.
Y=A1*A2* … *An =1 <=> A1=1, A2=1 … An=1
Definicja równoważna:
Iloczyn logiczny jest równy zeru jeśli którakolwiek zmienna jest równa zeru.
Jutro pójdę do kina i do teatru
Y=K*T
Matematycznie:
Dotrzymam słowa (Y) jeśli jutro pójdę do kina i do teatru
Y=K*T
… a kiedy skłamię ?
Przejście do logiki ujemnej metodą przedszkolaka, negujemy zmienne i wymieniamy operator.
Skłamię (~Y) jeśli jutro nie pójdę do kina lub nie pójdę teatru
~Y=~K+~T
Oczywiście dotrzymam słowa wtedy i tylko wtedy gdy pójdę do kina i do teatru, w przeciwnym przypadku skłamię. Rozpiszmy szczegółowo te przypadki.
K*T=Y - dotrzymam słowa jeśli pójdę do kina i do teatru
W przeciwnym przypadku skłamię czyli uzupełniamy pozostałe możliwości:
K*~T=~Y - skłamię (~Y) jeśli pójdę do kina i nie pójdę do teatru
~K*~T=~Y - skłamię (~Y) jeśli nie pójdę do kina i nie pójdę do teatru
~K*T =~Y - skłamię (~Y) jeśli nie pójdę do kina i pójdę do teatru
Oczywiście skłamię jeśli wystąpi którykolwiek z powyższych przypadków czyli:
~Y = K*~T + ~K*~T + ~K*T
Na podstawie powyższego budujemy tabelę prawdy dla iloczyny logicznego
Kod: |
K T = Y=K*T
K ~T =~Y
~K ~T =~Y
~K T =~Y
|
Przechodzimy teraz na zapis symboliczny przy użyciu parametrów formalnych p i q podstawiając:
p=K, q=T
stąd mamy symboliczną definicje iloczynu logicznego:
Kod: |
p q = Y=p*q
p q = Y
p ~q =~Y
~p ~q =~Y
~p q =~Y
|
Zauważmy, że tu również uzyskaliśmy pełną definicję iloczynu logicznego na poziomie symbolicznym czyli absolutne zero styczności z kodem maszynowym, zerami i jedynkami.
Równania algebry Boole’a najłatwiej utworzyć korzystając z definicji symbolicznej.
Z pierwszej linii otrzymujemy najprostsze równanie:
A1: Y=p*q - dotrzymam słowa
Z kolejnych trzech linii mamy:
B1: ~Y=(p*~q) + (~p*~q) + (~p*q) - skłamię
W sumie na podstawie powyższych równań możemy ułożyć aż osiem różnych zdań, cztery z nich (matematycznie równoważne) będą mówiły kiedy dotrzymam słowa (Y), zaś kolejne cztery (także równoważne) kiedy skłamię (~Y).
A1: Y=p*q - dotrzymam słowa
Dotrzymam słowa (Y), jeśli jutro pójdę do kina i do teatru
Y=K*T
Negujemy równania dwustronnie:
A2: ~Y=~(p*q) - skłamię
Skłamię (~Y), jeśli nie zdarzy się ~(…) że jutro pójdę do kina i do teatru
~Y=~(K*T)
Przechodzimy z równaniem A1 do logiki ujemnej metodą przedszkolaka negując zmienne i wymieniając operatory na przeciwne:
A3: ~Y=~p+~q - skłamię
Skłamię (~Y), jeśli jutro nie pójdę do kina lub nie pójdę do teatru
~Y=~K+~T
Negujemy dwustronnie równanie A3:
A4: Y=~(~p+~q) - dotrzymam słowa
Dotrzymam słowa (Y), jeśli nie zdarzy się ~(…) że jutro nie pójdę do kina lub nie pójdę do teatru
Y=~(~K+~T)
To co wyżej to najczęstsze zdania w języku mówionym. Zdania serii B są zdecydowanie rzadsze bo bardziej złożone.
B1: ~Y=(p*~q) + (~p*~q) + (~p*q) - skłamię
~Y=(K*~T)+(~K*~T)+(~K*T)
Skłamię (~Y), jeśli zdarzy się którykolwiek z powyższych przypadków.
Negujemy dwustronnie:
B2: Y=~[(p*~q) + (~p*~q) + (~p*q)] - dotrzymam słowa
Przechodzimy z równaniem B1 do logiki przeciwnej negując zmienne i wymieniając operatory na przeciwne:
B3: Y=(~p+q)*(p+q)*(p+~q) - dotrzymam słowa
Negujemy dwustronnie:
B4: ~Y=~[(~p+q)*(p+q)*(p+~q)] - skłamię
W sumie mamy fantastyczną właściwość języka mówionego czyli powiedzenie tego samego na wiele różnych sposobów. Zauważmy, że nigdzie wyżej nie mamy styczności z kodem maszynowym języka czyli idiotycznymi zerami i jedynkami. Taki związek oczywiście istnieje i jest łatwy do pokazania.
Przechodzimy do zero-jedynkowej definicji iloczynu logicznego w logice dodatniej przyjmując:
p=1, ~p=0
q=1, ~q=0
Y=1, ~Y=0
Zero jedynkowa definicja iloczynu logicznego:
Kod: |
p q Y=p*q ~Y=~(p*q)
1 1 =1 0
1 0 =0 1
0 0 =0 1
0 1 =0 1
|
Tu również mamy doskonałą zgodność z definicją logiki dodatniej i ujemnej.
Dotrzymam słowa (Y=1) wtedy i tylko wtedy gdy p*q czyli:
Y=p*q - dotrzymam słowa
Skłamię (~Y=1) gdy:
~Y=p*~q + ~p*~q + ~p*q - skłamię
Załóżmy teraz, że mamy wyłącznie tabelę zero-jedynkową jak wyżej. Jak dla takiej tabeli ułożyć równanie algebry Boole’a. Oczywiście najprostsze równanie uzyskamy z pierwszej linii bo mamy tu samotną jedynkę w wyniku. Na podstawie tej linii możemy ułożyć równanie na dwa sposoby.
Dla powyższej tabeli możemy zapisać:
A.
Y=1 <=> p=1 i q=1 - na podstawie pierwszej linii
Sposób I
Sprowadzamy wszystkie sygnały do jedynki i korzystamy z definicji iloczynu logicznego.
Definicja iloczynu logicznego:
Iloczyn logiczny jest równy jeden gdy wszystkie składniki iloczynu są równe jeden
Wszystkie sygnały w równaniu A są jedynkami zatem tylko je przepisujemy, nic nie musimy negować.
Y=p*q
Sposób II
Sprowadzamy wszystkie sygnały do zera i korzystamy z definicji sumy logicznej.
Definicja sumy logicznej:
Suma logiczna jest równa zeru gdy wszystkie składniki sumy są równe zeru
Sprowadzamy sygnały A do zera:
Y=1 czyli ~Y=0
p=1 czyli ~p=0
q=1 czyli ~q=0
Stąd na podstawie definicji sumy logicznej mamy:
~Y = ~p+~q
Oczywiście przechodzimy do logiki dodatniej ponieważ człowiek używa logiki ujemnej wyłącznie w przeczeniach. Negujemy sygnały i wymieniamy operatory na przeciwne.
Y=p*q
Na zakończenie zabawy z operatorami typu AND(*) i OR(+) pokażemy dowód prawa de’Morgana metodą zero-jedynkową.
2.9 Dowody zero-jedynkowe w algebrze Boole’a
Dowody zero-jedynkowe w algebrze Boole’a są równoważne do odpowiednich dowodów w równaniach matematycznych które wykonywaliśmy do tej pory. Dowody te są zdecydowanie bardziej czasochłonne i w wielu przypadkach nie wiadomo o co chodzi np. zasługą dowodów zero-jedynkowych jest fakt, że człowiek do tej pory nie był w stanie zlokalizować implikacji którą się posługuje.
Prawo de’Morgana:
p*q=~(~p+~q)
Dowód zero-jedynkowy:
Kod: |
p q Y=p*q ~p ~q ~Y=~p+~q Y=~(~p+~q)
1 1 1 0 0 0 1
1 0 0 0 1 1 0
0 0 0 1 1 1 0
0 1 0 1 0 1 0
|
Jak widać rozpatrujemy tu wszystkie możliwe przypadki dla zmiennych p i q. Równość kolumn trzeciej i ostatniej wskazuje na poprawność prawa de’Morgana. Kluczową różnicą tabeli wyżej w stosunku do identycznej tabeli znanej matematykom jest rozróżnianie logiki dodatniej (Y) od logiki ujemnej (~Y). Zdanie p*q w logice dodatniej (Y) to zupełnie co innego niże zdanie ~p+~q w logice ujemnej (~Y).
Zobaczmy po raz n-ty jak genialnie prosto przechodzi mózg przedszkolaka z logiki dodatniej do ujemnej.
Jutro pójdę do kina i do teatru
Y=K*T
Matematycznie oznacza to:
Dotrzymam słowa (Y) jeśli jutro pójdę do kina i do teatru
A: Y=K*T
… a kiedy skłamię ?
Przejście do logiki ujemnej poprzez negacje zmiennych i wymianę operatorów na przeciwne:
~Y=~K+~T
Skłamię (~Y), jeśli jutro nie pójdę do kina lub nie pójdę do teatru
~Y=~K+~T
… a czy może się zdarzyć, że jutro nie pójdę do kina lub nie pójdę do teatru ?
Negujemy powyższe równanie dwustronnie:
B: Y=~(~K+~T)
Nie może się zdarzyć ~(…), że jutro nie pójdę do kina lub nie pójdę do teatru
~(~K+~T)
Z równań A i B mamy prawo de’Morgana:
K*T = ~(~K+~T)
Jak widzimy w języku mówionym każdy człowiek stosuje podświadomie prawa de’Morgana ….potrafi to robić nawet przedszkolak, naturalny ekspert algebry Kubusia.
Na zakończenie pokażemy dowód prawa de’Morgana w bramkach logicznych. Bramki logiczne to graficzna ilustracja skomplikowanych niekiedy przekształceń matematycznych. Dzięki nim łatwiej zorientować się „o co tu chodzi”.
2.10 Logika dodatnia i ujemna w bramkach logicznych
Podstawowe pojęcia w teorii układów logicznych.
Sygnał cyfrowy (zmienna binarna) to sygnał mogący przyjmować w osi czasu wyłącznie dwa stany 0 albo 1.
Wyjście cyfrowe (funkcja logiczna) to wyjście układu logicznego, dowolnie złożonego, zbudowanego z bramek logicznych typu OR(+) lub AND(*) oraz negatorów.
Bramki logiczne to domena elektroników logików. Już na pierwszym wykładzie z „Teorii układów logicznych” dowiadujemy się, że w dowolną linię układu logicznego zbudowanego na bramkach logicznych możemy wstawić dwa negatory (na schemacie kółka) i nic się nie zmieni zgodnie z prawem podwójnego przeczenia.
A=~(~A)
Kod: |
Negator i prawo podwójnego przeczenia
Y=A ~Y=~A Y=~(~A)=A
-----O-------------O---------
|
Na wejście negatora (na schematach kółko) podajemy sygnał A, na jego wyjściu otrzymujemy sygnał zanegowany ~A który podajemy na kolejny negator. Po drugim negatorze mamy oczywiście sygnał cyfrowy identyczny z A zgodnie z prawem podwójnego przeczenia.
Po drugim wykładzie wiemy już jak zastąpić bramkę OR(+) bramką AND(*) i odwrotnie. Tu korzystamy z praw de’Morgana.
p*q = ~(~p+~q) - prawo zamiany bramki AND(*) na OR(+)
p+q = ~(~p*~q) - prawo zamiany bramki OR(+) na AND(*)
Przy pomocy negatora możemy symbolicznie pokazać obsługę zdań prostych.
Jutro nie pójdę do kina
Y=~K
czyli matematycznie:
Dotrzyma słowa (Y), jeśli jutro nie pójdę do kina
Y=~K
Kiedy skłamię ?
Negujemy dwustronnie.
Skłamię (~Y), jeśli jutro pójdę do kina
~Y=~(~K)=K
Zastosowaliśmy tu prawo podwójnego przeczenia K=~(~K)
Kod: |
-------
| |
Y=~K ----------| ~ |O----------> ~Y=K
| |
-------
|
W technice cyfrowej symbolem negacji jest kółko, nie musimy rysować całego negatora jak wyżej. Ze schematu widać że, na wejście negatora podajemy sygnał (funkcję logiczną) Y=~K, zaś na wyjściu otrzymujemy sygnał zanegowany ~Y=K.
Oczywiście mamy:
Y#~Y
czyli sygnał na wejściu negatora to zupełnie co innego niż sygnał na jego wyjściu.
Łatwo się o tym przekonać biorąc do ręki rzeczywisty negator np. układ scalony 7404. Jeśli na wejście rzeczywistego negatora podamy cyfrowy sygnał zero-jedynkowy (zmienny w czasie) to na jego wyjściu otrzymamy lustrzane odbicie sygnału wejściowego, co łatwo można zaobserwować na oscyloskopie, przyrządzie służącym do wizualizacji przebiegów zmiennych.
Zwarcie kabelkiem wejścia negatora z wyjściem, czyli wymuszenie:
Y=~Y
grozi oczywiście wybuchem czyli dużo dymu i smrodu.
Podstawowe schematy elektroniczne bramek OR(+) i AND(*) są następujące.
Kod: |
Bramka OR i jej schemat zastępczy wynikający z prawa de’Morgana
p q p q
| | | |
| | O O
------- -------
| | = | |
| OR | | AND |
------- -------
| O
| |
Y=p+q = Y=~(~p*~q)
|
Z powyższego wynika, że bramkę OR możemy zastąpić bramką AND plus trzema negatorami wstawionymi w linie wejściowe p i q oraz linię wyjściową Y.
Kod: |
Bramka AND i jej schemat zastępczy wynikający z prawa de’Morgana
p q p q
| | | |
| | O O
------- -------
| | = | |
| AND | | OR |
------- -------
| O
| |
Y=p*q = Y=~(~p+~q)
|
Podobnie bramkę AND możemy zastąpić bramką OR plus trzema negatorami. Fizycznie oznacza to, że możemy zbudować dwa układy jak wyżej (w technice cyfrowej to banał) a następnie połączyć sygnały p-p, q-q, Y-Y i wszystko będzie dalej pięknie działało.
Powróćmy jeszcze raz do dowodu praw de’Morgana uwzględniającego logikę dodatnią i ujemną by zobaczyć na bramkach logicznych skąd się to bierze.
Kod: |
p q Y=p*q ~p ~q ~Y=~p+~q Y=~(~p+~q)
1 1 1 0 0 0 1
1 0 0 0 1 1 0
0 0 0 1 1 1 0
0 1 0 1 0 1 0
|
Równość kolumn trzeciej i ostatniej jest dowodem poprawności prawa de’Morgana. Ten sam dowód krok po kroku w bramkach logicznych.
Na początku była bramka AND(*) ….
Kod: |
p q p q p q
| | | | | |
| | O O O O
| | |~p |~q |~p |~q
| | O O | |
| | |p |q | |
------- ------- -------
| | = | | = | |
| AND | | AND | | OR |
------- ------- -------
| |Y=p*q |
| O |
| |~Y=~(p*q) |~Y=~p+~q
| O O
| | |
Y=p*q = Y=p*q Y=~(~p+~q)
A B C
|
Schemat A:
Bramka AND rodem z teorii układów logicznych, realizująca funkcję logiczną Y=p*q.
Schemat B:
Na rysunku B wstawiliśmy w każdą linię wejściową bramki po dwie negacje oraz w linię wyjściową Y również dwie negacje.
Taki układ oczywiście nie zmieni się bo:
A=~(~A) - prawo podwójnego przeczenia.
W linii wejściowej p po minięciu pierwszego negatora otrzymamy sygnał ~p ale po minięciu drugiego negatora będziemy mieli sygnał p, identyczny jak na wejściu. Identycznie mamy w linii wejściowej q. Na wyjściu bramki AND mamy sygnał Y=p*q, po minięciu pierwszego negatora mamy ten sam sygnał w logice ujemnej ~Y=~(p*q), zaś po minięciu kolejnego negatora mamy sygnał identyczny jak bezpośrednio na wyjściu bramki AND czyli Y=p*q
Schemat C:
Ten schemat różni się od B wyłącznie tym, że zastosowaliśmy układ zastępczy bramki AND z zanegowanymi wejściami i zanegowanym wyjściem, którym jest po prostu bramka OR. Oczywiście na wyjściu ~Y mamy teraz ~Y=~p+~q zgodnie ze schematem ideowym, zaś po minięciu negatora na wyjściu (negujemy dwustronnie) mamy Y=~(~p+~q).
W matematyce wszystko musi się zgadzać.
Dla rysunków B i C mamy dla wyjścia ~Y:
~Y=~Y
czyli:
~(p*q) = ~p+~q - prawo de’Morgana w równoważnym zapisie
Zaś dla wyjścia Y:
Y=Y
czyli:
p*q = ~(~p+~q) - prawo de’Morgana w najpopularniejszym zapisie
Jak widzimy wyżej, przedszkolak przechodząc z logiki dodatniej do ujemnej w genialnie prosty sposób nie robi nic nadzwyczajnego.
Y=p*q
przejście do logiki ujemnej poprzez negację sygnałów i wymianę operatorów na przeciwne:
~Y=~p+~q
Wszystko jest tu w 100% zgodne z teorią bramek logicznych, czyli algebrą Boole’a. Mam nadzieję, że wszyscy rozumieją teraz dlaczego w nowatorskiej tabeli zero-jedynkowego dowodu prawa de’Morgana wyżej widnieje zapis ~Y=~p+~q a nie jak to jest w dzisiejszej matematyce gołe ~p+~q, które nie wiadomo czym jest.
Oczywiście sygnały w punktach Y i ~Y to zupełnie co innego, gdybyśmy je połączyli kabelkiem na powyższym schemacie (czyli wymusili Y=~Y) byłoby dużo dymu i smrodu, wszystko wyleciałoby w powietrze.
Przykład:
Jutro pójdę do kina i do teatru
Y=K+T
Matematycznie oznacza to:
Dotrzymam słowa (Y=1), jeśli jutro pójdę do kina i do teatru
Y=K*T
gdzie: Y=1 - zdanie prawdziwe
…. a kiedy skłamię ?
Przejście do logiki ujemnej poprzez negacje zmiennych i wymianę operatorów.
~Y=~K+~T
Skłamię (~Y=1), jeśli jutro nie pójdę do kina lub nie pójdę do teatru
~Y=~K+~T
gdzie: ~Y=1 - zdanie prawdziwe
Mamy tu do czynienia ze zdaniami prawdziwymi, ale nie równoważnymi bowiem występującymi w przeciwnych logikach.
2.11 Operatory AND i OR w logice człowieka
W algebrze Boole’a z operatorami AND i OR da się wypowiedzieć cztery różne zdania, a po uwzględnieniu praw de’Morgana nawet osiem.
p*q = ~(~p+~q)
p+q = ~(~p*~q)
~(p*q) = ~p+~q
~(p+q) = ~p*~q
W języku mówionym w zdaniach prostych przedrostek dotrzymam słowa (Y) jest domyślny czyli:
Jutro pójdę do kina lub do teatru
Y=K+T
matematycznie oznacza:
Dotrzymam słowa (Y) jeśli jutro pójdę do kina lub do teatru
Y=K+T
… a kiedy skłamię ?
Przechodzimy z powyższym do logiki przeciwnej metodą przedszkolaka czyli negujemy zmienne i odwracamy operatory.
~Y=~K*~T
Skłamię (~Y), jeśli jutro nie pójdę do kina i nie pójdę do teatru
~Y=~K*~T
Przedrostek skłamię (~Y) nie jest domyślny i musi zostać wypowiedziany czyli:
Skłamię (~Y), jeśli jutro pójdę do kina lub do teatru
~Y=K+T
… a kiedy powiem prawdę ?
Przechodzimy z powyższym do logiki przeciwnej czyli negujemy zmienne i odwracamy operatory.
Y=~K*~T
czyli:
Dotrzymam słowa (Y), jeśli jutro nie pójdę do kina i nie pójdę do teatru
Y=~K*~T
Oczywiście zdanie w logice dodatniej (Y) nie jest równoważne zdaniu w logice ujemnej (~Y) mimo że oba zdania są prawdziwe, tak wiec prawdziwość zdania nie oznacza automatycznie równoważności zdania.
3.0 Zero-jedynkowa algebra Boole’a
Algebra Kubusia, matematyka języka mówionego, jest algebrą symboliczną mającą 100% przełożenie na kod maszynowy czyli zera i jedynki, co pokazaliśmy wyżej.
Klasyczna, zero-jedynkowa algebra Boole’a to w dniu dzisiejszym zabytek klasy zerowej. Algebra ta jest co prawda fundamentem działania wszelkich komputerów (i całego naszego Wszechświata) ale człowiek myślał w zerach i jedynkach zaledwie przez mgnienie oka. Natychmiast wynalazł język symboliczny zwany asemblerem izolując się od kodu maszynowego … czyli skopiował działanie własnego mózgu. Żaden programista pisząc programy nie myśli w zerach i jedynkach bo to po prostu horror. Klasyczna algebra Boole’a, czyli algebra bramek logicznych, jest zupełnie nieprzydatna w technice bowiem nikt nie projektuje już automatów cyfrowych na bramkach logicznych, jak to miało miejsce przed wynalezieniem mikroprocesora. Pierwszy przyzwoity mikroprocesor (Intel 8080) pojawił się w roku 1974, ale już przed nim algebra Boole’a załamała się na układach cyfrowych średniej skali integracji (liczniki, rejestry, multipleksery itp.).
Oczywiście algebra Boole’a w najprostszej postaci będzie w technice przydatna zawsze, ale już nikt nigdy nie będzie używał bramek logicznych do projektowania złożonych automatów cyfrowych, tu królują mikroprocesory.
Fundamentalne prawa algebry Boole’a musi znać każdy programista piszący programy w dowolnym języku programowania … ale normalni ludzie nie muszą, tak wiec wszyscy których nie interesuje pisanie programów mogą ten rozdział pominąć.
3.1 Prawa wynikające z definicji iloczynu logicznego
Definicja iloczynu logicznego:
Iloczyn logiczny n-zmiennych binarnych jest równy jeden wtedy i tylko wtedy gdy wszystkie zmienne są równe jeden.
Definicja równoważna:
Iloczyn logiczny jest równy zeru gdy którakolwiek zmienna jest równa zeru.
Prawa wynikające bezpośrednio z definicji:
1*0=0
1*1=1
A*0=0
A*1=A
A*A=A
A*~A=0
W języku mówionym powyższe prawa nie są używane, przydają się jedynie w technice cyfrowej.
3.2 Prawa wynikające z definicji sumy logicznej
Definicja sumy logicznej:
Suma logiczna n-zminnych binarnych jest równa zeru wtedy i tylko wtedy gdy wszystkie zmienne są równe zeru.
Definicja równoważna:
Suma logiczna jest równa jeden gdy którakolwiek zmienna jest równa 1
Prawa wynikające bezpośrednio z definicji:
1+0=1
0+0=0
A+1=1
A+0=A
A+A=A
A+~A=1
W języku mówionym powyższe prawa nie są używane, przydają się jedynie w technice cyfrowej.
3.3 Najważniejsze prawa algebry Boole’a
W języku mówionym prawa łączności i przemienności to oczywistość, natomiast absorpcja, rozdzielność i pochłanianie są przydatne jedynie w technice cyfrowej.
Łączność:
A+(B+C) = (A+B)+C
A*(B*C)=(A*B)*C
Przemienność:
A+B=B+C
A*B=B*C
Absorbcja:
A+(A*B)=A
Dowód:
Jeśli A=1 to A+(A*B)=1+(A*B)=1
Jeśli A=0 to A+(A*B)=0+(0*B)=0+0=0
niezależnie od wartości B
CND
A*(A+B)=A
Dowód:
Jeśli A=1 to A*(A+B)= 1*(1+B)=1*1=1
Jeśli A=0 to A*(A+B)=0*(A+B)=0
niezależnie od wartości B.
CND
Rozdzielność:
A+(B*C) = (A+B)*(A+C)
A*(B+C)=(A*B)+(B*C)
Pochłanianie:
A*~A=0
A+~A=1
3.4 Operatory dodatnie i operatory ujemne
Tabela legalnych operatorów logicznych typu AND(*) I OR(+)
Kod: |
Tabela A
p q Y=p+q ~Y=pNORq Y=p*q ~Y=pNANDq
0 0 0 1 0 1
0 1 1 0 0 1
1 0 1 0 0 1
1 1 1 0 1 0
|
OR(+), AND(*) - operatory w logice dodatniej
NOR, NAND - operatory w logice ujemnej
Porównajmy powyższą tabele z tabelą używaną przez nas do tej pory.
Kod: |
Tabela B
p q Y=p+q ~Y=~(p+q) Y=p*q ~Y=~(p*q)
0 0 0 1 0 1
0 1 1 0 0 1
1 0 1 0 0 1
1 1 1 0 1 0
|
Z powyższych tabel wynikają definicje operatorów NOR i NAND:
pNORq = ~(p+q) = ~p*~q - na podstawie prawa de’Morgana
pNANDq = ~(p*q) = ~p+~q - na podstawie prawa de’Morgana
bo:
~Y=~Y
Stąd w katalogach układów cyfrowych znajdziemy takie definicje bramek NOR i NAND.
Funkcja logiczna realizowana przez bramkę NOR:
Y=~(p+q)
Funkcja logiczna realizowana przez bramkę NAND:
Y=~(p*q)
Zauważmy, że po takim manewrze operatorów ujemnych NAND i NOR nie wolno mieszać z operatorami dodatnimi AND i OR ponieważ zachodzi.
Y(NAND, NOR) # Y(AND, OR)
co doskonale widać na bramkach logicznych.
Kod: |
Bramka AND i bramka NAND
p q p q
| | | |
| | | |
------- -------
| | = | |
| AND | | NAND|
------- -------
| O
| |
|Y=p*q | Y=pNANDq=~(p*q)
O O
| |
|~Y=~(p*q) |~Y=~(pNANDq)=p*q
A B
|
A - punkt odniesienia, operator AND(*)
B - punkt odniesienia, operator NAND
Oczywistym jest, że zwarcie pozornie identycznych sygnałów:
Y=Y lub ~Y=~Y
grozi wysadzeniem bramki w powietrze.
Na powyższym schemacie zachodzą tożsamości po przekątnych czyli absolutna bzdura z punktu widzenia algebry Boole’a bo wtedy mamy:
Y=~Y
czyli:
Y=p*q <=> ~Y=~(pNANDq) = p*q
Wniosek:
Można myśleć logicznie albo w operatorach dodatnich AND i OR, albo w operatorach ujemnych NAND i NOR. Mieszanie tych operatorów w jednej logice to głupota.
Punkt odniesienia, operatory dodatnie AND i OR:
Y=prawda
~Y=fałsz
Punkt odniesienia, operatory ujemne NAND i NOR:
Y=fałsz
~Y=prawda
Wróćmy do symbolicznej definicji bramki AND.
Kod: |
Tabela A
p q = Y=p*q
p q = Y
p ~q =~Y
~p ~q =~Y
~p q =~Y
|
Dla punktu odniesienia AND i OR w tabeli A przyjmujemy:
p=1, ~p=0
q=1, ~q=0
Y=1(prawda), ~Y=0(Fałsz)
Tabela zero jedynkowa iloczynu logicznego dla punktu odniesienia AND(*) i OR(+):
Kod: |
p q Y=p*q=~(pNANDq) ~Y=~(p*q)=pNANDq
1 1 1 0
1 0 0 1
0 0 0 1
0 1 0 1
|
stąd:
Definicja operatora AND:
Y=1 <=> p=1 i q=1
Dla punktu odniesienia NAND i NOR w tabeli A przyjmujemy:
p=1, ~p=0
q=1, ~q=0
Y=0(fałsz), ~Y=1(prawda)
Tabela zero jedynkowa iloczynu logicznego dla punktu odniesienia NAND i NOR:
Kod: |
p q Y=pNANDq=~(p*q) ~Y=~(pNANDq)=p*q
1 1 0 1
1 0 1 0
0 0 1 0
0 1 1 0
|
stąd:
Definicja operatora NAND:
Y=0 <=> p=1 i q=1
|
|
Powrót do góry |
|
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
|