Czy są jakieś dobre logiczne uproszczenia wyrażeń? [Zamknięte]

110

Refaktoryzowałem stary kod i napotkałem kilka warunków JEŻELI, które były zbyt złożone i długie, i jestem pewien, że można je uprościć. Domyślam się, że te warunki urosły tak bardzo z powodu późniejszych modyfikacji.

W każdym razie zastanawiałem się, czy ktoś z was zna dobry internetowy program upraszczający, z którego mogę skorzystać. Nie interesuje mnie żaden konkretny język, tylko uproszczenie, które obejmowałoby na przykład:

((A OR B) AND (! B AND C) OR C)

Podaj mi uproszczoną wersję wyrażenia, jeśli taka istnieje.

Spojrzałem na inne podobne pytania, ale żadne nie wskazało mi dobrego uproszczenia.

Dzięki.

mojarras
źródło
1
WolframAlpha przybywa również w C . Żadnych dodatkowych bramek ...
Axel Kemper
1
Jest fajne narzędzie online - tma.main.jp/logic/index_en.html
Roman Hocke
Innym narzędziem jest boolean-algebra.com , które pokaże kroki, aby go rozwiązać. Na przykład, twoje można rozwiązać za pomocą samego prawa absorpcji A + AB = A. Nie jest zbyt zaawansowane, więc jeśli potrzebujesz czegoś innego niż minimalna forma, lepiej skorzystaj z innej witryny.
John Smith

Odpowiedzi:

93

Możesz wypróbować Wolfram Alpha, jak w tym przykładzie na podstawie wprowadzonych danych:

http://www.wolframalpha.com/input/?i=((A%20OR%20B)%20AND%20(NOT%20B%20AND%20C)%20OR%20C)&t=crmtb01&f=rc

500 wewnętrzny błąd serwera
źródło
3
Strona nie wydaje się zbyt dobra do upraszczania formuł logicznych, gdy stają się one nieco bardziej złożone. Spróbuj tego: (((NOT C) AND (NOT A)) LUB ((NOT B) AND (NOT C) AND (NOT D) AND (NOT A)) OR ((NOT B) AND (NOT C) AND D AND A) OR (B AND C AND (NOT D) AND (NOT A)) OR (B AND C AND D AND A))
Albert Hendriks
1
W rzeczy samej. Dziwne. Nawet nie radzi sobie z uproszczoną wersją NOT C AND NOT A OR NOT B AND NOT C AND NOT D AND NOT A OR NOT B AND NOT C AND D AND A OR B AND C AND NOT D AND NOT A OR B AND C AND D AND A.
500 - Wewnętrzny błąd serwera
2
Zauważ, że jeśli potrzebujesz tabeli prawdy, która nie zawsze jest wyświetlana dla niektórych wyrażeń, rozpocznij zapytanie słowami „tabela prawdy”, po których następuje wyrażenie
Belgi
16

Wypróbuj Logic Friday 1to zawiera narzędzia z Uniwersytetu Kalifornijskiego (Espresso i misII) i umożliwia ich użycie z graficznym interfejsem użytkownika. Możesz dowolnie wprowadzać równania boolowskie i tabele prawdy. Posiada również graficzny schemat bramki wejściowej i wyjściowej.

Minimalizacja może być przeprowadzona dwupoziomowo lub wielopoziomowo. Forma dwupoziomowa daje zminimalizowaną sumę produktów. Forma wielopoziomowa tworzy obwód złożony z bramek logicznych. Typy bramek mogą być ograniczone przez użytkownika.

Twoje wyrażenie upraszcza się do C.

Axel Kemper
źródło
2
W przypadku szybkiego narzędzia online jest to bardzo pomocne: tma.main.jp/logic/index_en.html
Lenar Hoyt,
6

Odkryłem, że Boolean Expression Reducer jest znacznie łatwiejszy w użyciu niż Logic Friday. Ponadto nie wymaga instalacji i jest wieloplatformowy (Java).

Również w Logic Friday wyrażenie A | Bpo prostu zwraca 3 wpisy w tablicy prawdy; Spodziewałem się 4.

Paweł Dubiel
źródło
3
Aktywuj opcję "Truthtable / Show all Rows" w Logic Friday 1. W przeciwnym razie otrzymasz tylko wszystkie wiersze z wartością wyjściową 1.
Axel Kemper
1
Wewnętrznie bexpred używa prostych algorytmów do łączenia terminów. Może być pomocny w przypadku małych wyrażeń, ale zdecydowanie nie jest najnowocześniejszy.
Axel Kemper
2
Dla wejścia "A * B * (! A * B +! A *! B)" ten jar zwraca SOP False, ale POS True. Niezupełnie wiarygodny scenariusz ...
Zło,
link jest uszkodzony, kto ma działający link?
HJLebbink