Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
informatyka:podstawy-dzialania-komputera:zamiania_tabeli_prawdy_na_wyrazenie_boolowskie [2024/04/02 09:24] – created kawcix | informatyka:podstawy-dzialania-komputera:zamiania_tabeli_prawdy_na_wyrazenie_boolowskie [2024/04/07 00:34] (current) – kawcix | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | s | + | ====== 2 Zamiana tabeli prawdy na wyrażenie boola ====== |
+ | |||
+ | <callout type=" | ||
+ | |||
+ | Mamy opisaną funckję boola za pomocą tabeli prawdy. | ||
+ | |||
+ | Będziemy dążyć do stworzenia wyrażenia boola na podstawie tej tabelki. Po co nam taka umiejętność? | ||
+ | |||
+ | Jest to niezbędne przy projektowaniu komputera i wszystkich urządzeń elektrycznych. Wiemy, co chcemy zrobić, ale musimy to zbudować z podstawowych operacji takich jak and or i not. | ||
+ | |||
+ | ^ x ^ y ^ z ^ **output** | ||
+ | | 0 | 0 | 0 | <color # | ||
+ | | 0 | 0 | 1 | 0 | | ||
+ | | 0 | 1 | 0 | <color # | ||
+ | | 0 | 1 | 1 | 0 | | ||
+ | | 1 | 0 | 0 | <color # | ||
+ | | 1 | 0 | 1 | 0 | | ||
+ | | 1 | 1 | 0 | 0 | | ||
+ | | 1 | 1 | 1 | 0 | | ||
+ | |||
+ | |||
+ | Skupiamy się tylko na wierszach tabeli, które zwracają 1. | ||
+ | |||
+ | Piszemy dla nich wyrażenie które poprostu pasuje. | ||
+ | |||
+ | Dla wiersza pierwszego może to być | ||
+ | |||
+ | ( NOT ( X ) AND NOT ( Y ) AND NOT( Z ) ) | ||
+ | |||
+ | Szukamy kolejnego wiersza który zwraca jeden. jest to wiersz 3 | ||
+ | |||
+ | znowu piszemy wyrażenie tak, aby dla podanych argumentów x = 0 y = 1 z = 0 otrzymać w wyniku 1 | ||
+ | |||
+ | ( NOT( X ) AND Y AND NOT( Z ) ) | ||
+ | |||
+ | następnym wierszem który zwraca nam 1 jest wiersz 5 | ||
+ | |||
+ | aby dla argumentów x = 1, y = 0, z = 0 otrzymać 1, piszemy: | ||
+ | |||
+ | (X AND NOT ( Y ) AND NOT( Z )) | ||
+ | |||
+ | |||
+ | |||
+ | Chcemy zbudować jedno wyrażenie, które zwróci nam dokładnie wartość 1 we wszystkich wierszach które powinny zwrócić 1, a 0 w reszcie. | ||
+ | |||
+ | Jest to bardzo proste, poprostu wykonujemy operacje OR na wszystkich wyrażeniach, | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ( NOT ( X ) AND NOT ( Y ) AND NOT( Z ) ) OR ( NOT( X ) AND Y AND NOT( Z ) ) OR (X AND NOT ( Y ) AND NOT( Z )) | ||
+ | |||
+ | Mamy jedno wyrażenie, które reprezentuję te tabelkę. Zwraca jedynkę tylko w 3 przypadkach. W innych zwraca 0. Możesz sobie podstawić wartości z tabeli powyżej, aby sprawdzić czy to prawda. | ||
+ | |||
+ | Oczywiście mając te wyrażenie, możemy zmieniać jego format, próbować je upraszczać itp. Nie będziemy tego robić. Niektóre mogą być prostsze lub dłuższe. Ma to znaczenie w wydajności kiedy zaczynamy to implementować w " | ||
+ | jest to Problem NP-trudny (https:// | ||
+ | |||
+ | Powyższe wyrażenie rozwiązane przez https:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Wychodzi nam, że wyrażenie może być uproszczone do | ||
+ | (NOT(z) AND NOT(Y)) OR (NOT(Z) AND NOT(X)) | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ |