Adakah penyederhanaan ekspresi boolean yang bagus di luar sana? [Tutup]

110

Saya refactoring kode lama dan menemukan beberapa kondisi IF yang terlalu rumit dan panjang dan saya yakin bisa disederhanakan. Dugaan saya adalah bahwa kondisi tersebut berkembang pesat karena modifikasi selanjutnya.

Bagaimanapun, saya ingin tahu apakah ada di antara Anda yang mengetahui penyederhanaan online yang bagus yang dapat saya gunakan. Saya tidak tertarik pada bahasa tertentu, hanya penyederhanaan yang akan mengambil contoh:

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

Dan beri saya versi ekspresi yang disederhanakan, jika ada.

Saya telah melihat pertanyaan serupa lainnya tetapi tidak ada yang mengarahkan saya ke penyederhanaan yang baik.

Terima kasih.

mojarras
sumber
1
WolframAlpha juga tiba di C . Tidak ada gerbang tambahan ...
Axel Kemper
1
Ada alat online yang bagus - tma.main.jp/logic/index_en.html
Roman Hocke
Alat lain adalah boolean-algebra.com yang akan menunjukkan langkah-langkah untuk menyelesaikannya. Misalnya, milik Anda dapat diselesaikan hanya dengan hukum absorpsi A + AB = A. Ini tidak terlalu maju jadi jika Anda membutuhkan sesuatu selain bentuk minimal maka Anda lebih baik menggunakan situs lain.
John Smith

Jawaban:

93

Anda dapat mencoba Wolfram Alpha seperti pada contoh ini berdasarkan masukan Anda:

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

500 Internal Server Error
sumber
3
Situs web tampaknya tidak terlalu bagus untuk menyederhanakan rumus boolean ketika rumus tersebut menjadi sedikit lebih kompleks. Coba yang ini: (((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 DAN A) ATAU (B DAN C AND (BUKAN D) DAN (BUKAN A)) ATAU (B DAN C DAN D DAN A))
Albert Hendriks
1
Memang. Aneh. Ia bahkan muntah pada versi yang disederhanakan 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 - Kesalahan Server Internal
2
Perhatikan bahwa jika Anda menginginkan tabel kebenaran, yang tidak selalu ditampilkan untuk beberapa ekspresi, mulailah kueri dengan kata-kata "tabel kebenaran" diikuti dengan ekspresi
Belgi
16

Try Logic Friday 1It mencakup alat dari Universitas California (Espresso dan misII) dan membuatnya dapat digunakan dengan GUI. Anda dapat memasukkan persamaan boolean dan tabel kebenaran sesuai keinginan. Ia juga dilengkapi dengan input dan output diagram gerbang grafis.

Minimisasi dapat dilakukan dua level atau multi level. Bentuk dua tingkat menghasilkan jumlah produk yang diminimalkan. Bentuk multi-level menciptakan sirkuit yang terdiri dari gerbang logis. Jenis gerbang dapat dibatasi oleh pengguna.

Ekspresi Anda disederhanakan menjadi C.

Axel Kemper
sumber
2
Untuk alat online cepat, ini sangat membantu: tma.main.jp/logic/index_en.html
Lenar Hoyt
6

Saya menemukan bahwa The Boolean Expression Reducer jauh lebih mudah digunakan daripada Logic Friday. Ditambah tidak memerlukan instalasi dan multi-platform (Java).

Juga di Logic Friday ekspresi A | Bhanya mengembalikan 3 entri dalam tabel kebenaran; Saya mengharapkan 4.

Pawel Dubiel
sumber
3
Aktifkan opsi "Truthtable / Show all Rows" di Logic Friday 1. Jika tidak, Anda hanya mendapatkan semua baris dengan nilai output 1.
Axel Kemper
1
Secara internal, bexpred menggunakan algoritma sederhana untuk menggabungkan minterms. Ini mungkin membantu untuk ekspresi kecil tetapi jelas bukan seni yang canggih.
Axel Kemper
2
Untuk "A * B * (! A * B +! A *! B)" masukan jar ini mengembalikan SOP False tetapi POS True. Bukan skrip yang benar-benar dapat diandalkan ...
Evil
tautan rusak, siapa yang memiliki tautan yang berfungsi?
HJLebbink