Logicznym wyrażenie ( a && b )
(oba a
i b
mają wartości logicznych) można zapisać jak !(!a || !b)
, na przykład. Czy to nie znaczy, że &&
jest „niepotrzebne”? Czy to oznacza, że wszystkie wyrażenia logiczne można tworzyć tylko przy użyciu ||
i !
?
logic
logical-operators
JakeTheSnake
źródło
źródło
A and B == !A nor !B == !(!A or !B)
. PodobnieA or B == !A nand !B == !(!A and !B)
. Oczywiście przekazanie tej samej wartości do obu wejść NAND lub NOR da taki sam wynik jak zwykłe NIE. XOR i XNOR są również możliwe, ale bardziej złożone. Zobacz twierdzenie De MorganaOdpowiedzi:
Tak, jak inne odpowiedzi wskazał, zestaw składający się z operatorami
||
i!
jest funkcjonalnie kompletne . Oto konstruktywny dowód na to, pokazujący, jak używać ich do wyrażania wszystkich szesnastu możliwych logicznych połączeń między zmiennymi logicznymiA
iB
:A || !A
!A || !B
!B || A
!A || B
A || B
!B
!A
!(!A || B) || !(A || !B)
!(!A || !B) || !(A || B)
A
B
!(A || B)
!(!A || B)
!(!B || A)
!(!A || !B)
!(A || !A)
Zauważ, że zarówno NAND, jak i NOR same w sobie są funkcjonalnie kompletne (co można udowodnić za pomocą tej samej metody powyżej), więc jeśli chcesz sprawdzić, czy zestaw operatorów jest funkcjonalnie kompletny, wystarczy pokazać, że możesz wyrazić NAND lub NOR z tym.
Oto wykres przedstawiający diagramy Venna dla każdego z wyżej wymienionych połączeń:
[ źródło ]
źródło
||
raczej niż|
) lub skutków ubocznych (istotne, ponieważ ocena wartości true, false, XOR i XNOR ocenia ich argumenty więcej razy niż pierwotna stała lub operator).!(!A || !B)
Ma takie same zwarcia i oceny, jakA && B
). Nie sądzę, że możesz to zrobić dla XOR i XNOR bez dodatkowych konstrukcji (np.a ? !b : b
), A prawda lub fałsz nie jest problemem, jeśli możesz zapisać wartości, ponieważ możesz uruchomić swój program, definiująctrue
ifalse
używając jakiejś sztucznej zmiennej boolean.Opisujesz kompletność funkcjonalną .
Opisuje to zestaw operatorów logicznych, który wystarcza do „wyrażenia wszystkich możliwych tabel prawdy”. Zestaw operatora Java {
||
,!
} jest wystarczający; odpowiada on zestawowi {∨, ¬}, który jest wymieniony w sekcji „Minimalne kompletne funkcjonalnie zestawy operatorów”.Zbiór wszystkich tabel prawdy oznacza wszystkie możliwe zestawy 4 wartości logicznych, które mogą być wynikiem operacji między 2 wartościami logicznymi. Ponieważ istnieją dwie możliwe wartości wartości logicznej, istnieją 2 4 lub 16 możliwych tabel prawdy.
Oto tabela numerów tabel prawdy (0–15)
||
oraz!
kombinacji, które ją dają, oraz opis.Istnieje wiele innych takich funkcjonalnie kompletnych zestawów, w tym zestawy jednego elementu {NAND} i {NOR}, które nie mają odpowiadających pojedynczych operatorów w Javie.
źródło
Tak.
Wszystkie bramki logiczne mogą być wykonane z bram NOR.
Ponieważ bramka NOR może być wykonana z NOT i OR, wynik jest następujący.
źródło
[citation-needed]
znak.Poświęć trochę czasu na zapoznanie się z Prawami DeMorgan, jeśli możesz.
Znajdziesz tam odpowiedź w czytaniu, a także odniesienia do logicznych dowodów.
Ale w zasadzie odpowiedź brzmi tak.
EDYCJA : Dla jasności chodzi mi o to, że można logicznie wywnioskować wyrażenie OR z wyrażenia AND i odwrotnie. Istnieje również więcej praw dotyczących logicznej równoważności i wnioskowania, ale myślę, że to najbardziej apropos.
EDYCJA 2 : Oto dowód za pomocą tabeli prawdy pokazujący logiczną równoważność następującego wyrażenia.
Prawo DeMorgan:
!(!A || !B) -> A && B
źródło
NAND i NOR są uniwersalne, można ich użyć do zbudowania dowolnej operacji logicznej, którą chcesz gdziekolwiek; inni operatorzy są dostępni w językach programowania, aby ułatwić pisanie i tworzenie czytelnych kodów.
Również wszystkie operacje logiczne, które muszą być podłączone w obwodzie, są również opracowywane przy użyciu układów scalonych NAND lub NOR.
źródło
Tak, zgodnie z algebrą boolowską, dowolną funkcję boolowską można wyrazić jako sumę minterms lub iloczyn maxterms, który nazywa się kanoniczną formą normalną . Nie ma powodu, dla którego taka logika nie mogłaby zostać zastosowana do tych samych operatorów wykorzystywanych w informatyce.
https://en.wikipedia.org/wiki/Canonical_normal_form
źródło