2009-03-20 29 views
7

Tôi khá chắc chắn tôi có thể nhớ làm một cái gì đó như thế này trong một trong các khóa học cấp đại học của tôi và rằng có một số loại công thức cho nó, nhưng tâm trí của tôi là không cho tôi vượt ra ngoài đó.Làm thế nào để giảm một tuyên bố hợp lý?

Với tuyên bố: (a hoặc b hoặc d) AND (a OR c)

Tôi khá chắc chắn rằng điều này có thể được giảm xuống còn: (a hoặc b hoặc d HOẶC c)

Nhưng tôi không thể nhớ làm thế nào tôi sẽ đi về chứng minh nó.

Có thể đó là một loạt các bảng logic?

Trả lời

10

Bạn không thể giảm "(a HOẶC b HOẶC d) VÀ (a HOẶC c)" thành "(a HOẶC b HOẶC d HOẶC c)" vì cũ không hài lòng với "c = true, a, b, d = false ", trong khi cái sau là. Vì vậy, bạn không thể chứng minh giảm chính xác hoặc là :)

Nói chung, có nhiều cách để giảm kích thước công thức Boolean, và nó cũng là một câu hỏi về những gì bạn muốn tối ưu hóa (tổng kích thước? đánh giá?). Bản đồ Karnaugh chỉ hoạt động với một số lượng nhỏ các biến. Việc giảm các công thức Boolean lớn thành các công thức nhỏ hơn là một chủ đề nâng cao là chìa khóa trong ví dụ. thiết kế mạch logic tự động.

+0

tốt đẹp! +1 – Learning

+0

vì vậy các chương trình của họ có sẵn để thực hiện việc này không? – Dave

+0

Thanh toán, ví dụ: http://babbage.cs.qc.edu/courses/Minimize/ –

3

Bản đồ Karnaugh, điều quan trọng là "vẽ" tất cả các yếu tố đầu vào có thể và cho biết kết quả đầu ra của chúng. Sau đó, bạn có thể bắt đầu lọc ra các đầu vào không tạo sự khác biệt cho đầu ra, do đó làm giảm bản đồ. Khi nó được tối ưu hóa, bạn có thể tạo ra logic của bạn từ nó.

đồ
4

Một Karnaugh là bạn của bạn ở đây:

http://en.wikipedia.org/wiki/Karnaugh_map

Bạn sẽ loại phải xây dựng nó theo hướng ngược lại từ các phương trình trên, nhưng nó là một công cụ tốt để cho bạn biết nếu nó có thể được giảm thêm nữa.

2

(a HOẶC b HOẶC d) VÀ (a HOẶC c)

Điều này có nghĩa là khi đúng, mọi thứ đều đúng!

=> a OR {(b HOẶC d) AND (c)}

=> a OR (B và C) OR (d và C)

tôi nghĩ rằng kết quả (a OR b HOẶC d HOẶC c) là sai, nhưng cho tôi một bàn tay khi nó sai.

0

Có, bạn có thể chứng minh điều đó. Bạn không thể giảm nó thành (a HOẶC b HOẶC d HOẶC c)

Nhìn vào dòng thứ 3 bên dưới. Mức giảm của bạn sẽ không tạo được câu trả lời đúng.

Chỉ cần chạy nó thông qua:

A B C D
0 0 0 0 = 0
0 0 0 1 = 0
0 0 1 0 = 0
.
.
.
1 0 0 0 = 1
1 0 0 1 = 1

Cho đến nay tôi đã có (A HOẶC (???)) :(

1

một hoặc {(b HOẶC d) VÀ c}

Lý do: Nếu "a", thì tuyên bố là đúng. khác, bạn cần b hoặc d (để đáp ứng phần đầu tiên của câu lệnh) và c (thỏa mãn nửa sau đối với trường hợp khi! a

1

Sử dụng Karnaugh maps:

này được A hoặc B hoặc d:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | X| X| X| 
01 | X| X| X| X| 
11 | X| X| X| X| 
10 | | X| X| X| 
    +-----------+ 

Đây là một HOẶC c:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | | X| X| 
01 | | | X| X| 
11 | X| X| X| X| 
10 | X| X| X| X| 
    +-----------+ 

giao nhau họ, chúng tôi nhận được:

 
\ab 
cd\ 00 01 11 10 
---+-----------+ 
00 | | | X| X| 
01 | | | X| X| 
11 | X| X| X| X| 
10 | | X| X| X| 
    +-----------+ 

Rõ ràng, đây là một HOẶC (cái gì đó), trong đó (cái gì đó) là:

 
    00 01 
11 | X| X| 
10 | | X|

Vì (cái gì đó) không phải là một hình chữ nhật, nó đòi hỏi hai biểu thức, có thể là AND'ed hoặc OR'ed với nhau, tùy thuộc vào cách chúng ta muốn tiếp cận nó. Chúng ta sẽ sử dụng OR trong ví dụ này, vì nó đưa ra một biểu thức đơn giản hơn.

Trong trường hợp này, chúng tôi có thể nhóm hai chữ X bên cạnh nhau bằng hai ký tự khác để điền vào toàn bộ dòng cd, vì vậy cd có thể là một trong các biểu thức. Chúng tôi cũng có thể nhóm cả hai lên nhau với hai bên phải để tạo thành một hình vuông. Hình vuông này đại diện cho biểu thức bc, vì cả a và d đều khác nhau trong hình vuông.

Vì vậy, sự biểu hiện cuối cùng là a OR ((C và D) OR (B và D)), hoặc a + cd + bd. Đẹp hơn nhiều, phải không?

1

SOP hình thức tối thiểu:

y = a | b&c | c&d; 

POS có cùng chi phí (số cổng để thực hiện sơ đồ logic):

y = (a|c)&(a|b|d); 
Các vấn đề liên quan