0

이 질문은 제가 처음부터 선택해야하는 것을 어디서부터 시작해야하는지 알지 못하기 때문에 저를 망치고 있습니다. 이 혼란스러운 표정은 내가 보통을 받아들이지 못하게하기 때문에 그것이 말이되지 않습니다. 또한, 그것은 심지어 어떤 의미가 없기 때문에 칭찬을 삭제할 수는 없습니다 (법을 사용함). 이 일을 도와주세요. 최소한 내가해야 할 일을 안내해 줄 수 있습니까? 어디에서 시작해야합니까? 나는 정말로 감사 할 것이다.법률 및 속성을 사용하여 5-var 부울 SOP 식 단순화

심볼 설명 :

! : NOT 게이트

+ : OR 게이트

. (점) : AND 게이트

부울 식 :!.!!!!.!

A. BE + (BC) .D E + (CD)합니다 .e + AD E + A (!의! CD)합니다 .e + AE + AB E + (AC) + BC D

나는 온라인 표현 simplifier을 사용하고 그것은 나에게 다음과 같은 대답을했다 :

A + B +! C + D + E

그러나 위의 긴 표현이이 짧은 표현에서 어떻게 단순화 되었습니까? 나는 법률과 재산을 안다. 그러나 내가 길게 사람을 단순화하기 시작해야하는 방법을 얻지 않고있다? 먼저 어떤 용어를보아야합니까? 친절하게 아무도 나를 도와주세요.

+0

"법률 및 재산"을 사용해야합니까? 이 경우 32 열만있는 진리표를 만드는 것이 훨씬 쉬울 것입니다. 귀하의 최종 표현이 정확하다면, 단 하나의 예외를 제외하고 테이블은 모든 Trues에서 끝납니다. 그것과 동등한 표현을 만드는 것은 사소한 일이다. –

+0

예 @RoryDaulton,이 긴 표현을 단순화하기 위해 단순화의 모든 단계를 작성해야합니다. 음, 진실성 표를 어떻게 만들어야하는지 나에게 말해 줄 수 있니? 그리고 그 표현은? 그리고 변수에 대한 입력은 무엇입니까? 단순화 된 표정은 진실 표에서 어떻게 생성됩니까? –

답변

1

(이것은 당신의 의견에 직접 답하고, 사이드 가지 주요 질문에 대답합니다. 원하는 단순화 표현을 얻을. 짧은에, 다른 방법을 사용)

당신은 복잡한 표현을 가지고, 하나는 5 개의 논리 변수만을 사용합니다. 이 문제는 단지 2^5 = 32 행을 갖는 진리표를 만드는 것이 훨씬 쉽습니다. 결과를보고이를 사용하여 단순화 된 동일한 표현을 작성할 수 있습니다. 이것은 원래 질문에서 요구하는 "법칙 및 속성"을 사용하지 않지만 불리언 표현을 단순화하는 표준 기술입니다.

거의 모든 Discrete Mathematics 클래스에서 진리표를 만드는 법을 배웠어야합니다. 간단히 말하자면 각 행의 각 요소가 (True) 또는 F (False) 인 테이블을 만듭니다. 행에는 Ts와 Fs의 가능한 모든 조합이 포함됩니다. 5 개의 변수에 대해 2^5 = 32 행을 사용합니다. 각 행에 대해 첫 번째 값을 A에 할당하고 두 번째 값을 B에 할당합니다. 그런 다음 해당 값의 표현식을 평가하고 행 끝에 결과를 씁니다.

이것은 손으로 할 수 있지만 표현식이 복잡하기 때문에 충분히 피할 수 있습니다. 다음은 원하는 테이블을 인쇄하는 Python 3 스크립트입니다. 파이썬에는 Ts와 Fs의 모든 가능한 조합을 얻는 것을 단순화하는 product() 함수가 있습니다. 이 스크립트는 B[]을 사용하여 부울 값을 단일 문자 T 또는 F으로 변환합니다.

from itertools import product 

"""Make a truth table for the Boolean expression 
    A.!B.E + !(B.C).D.!E + !(C.D).E+!A.D.!E + A.!(C.D).E + A.E + A.B.!E + !(A.C) + B.C.!D 
""" 
B = ('F', 'T') 
print('A B C D E : Result') 
print('- - - - - : ------') 
for a, b, c, d, e in product((True, False), repeat=5): 
    print(B[a], B[b], B[c], B[d], B[e], end=' : ') 
    print(B[ 
      (a and not b and e) 
      or (not (b and c) and d and not e) 
      or (not (c and d) and e) 
      or (not a and d and not e) 
      or (a and not (c and d) and e) 
      or (a and e) 
      or (a and b and not e) 
      or (not (a and c)) 
      or (b and c and not d) 
    ]) 

다음은 결과입니다 :

A B C D E : Result 
- - - - - : ------ 
T T T T T : T 
T T T T F : T 
T T T F T : T 
T T T F F : T 
T T F T T : T 
T T F T F : T 
T T F F T : T 
T T F F F : T 
T F T T T : T 
T F T T F : T 
T F T F T : T 
T F T F F : F 
T F F T T : T 
T F F T F : T 
T F F F T : T 
T F F F F : T 
F T T T T : T 
F T T T F : T 
F T T F T : T 
F T T F F : T 
F T F T T : T 
F T F T F : T 
F T F F T : T 
F T F F F : T 
F F T T T : T 
F F T T F : T 
F F T F T : T 
F F T F F : T 
F F F T T : T 
F F F T F : T 
F F F F T : T 
F F F F F : T 

우리는 결과가 항상 한 줄 T F T F F을 제외하고 T 인 것을 알 수있다. 즉, A가 True, B가 False, C가 True, D와 E가 False가 아닌 한 표현식이 참임을 의미합니다. 그래서 우리는

!(A.!B.C.!D.!E) 

에 드 모르 강의 법칙의 간단한 사용을 (당신의 표기법 사용) 표현식을 단순화 할 수 정규형이 변경 :

!A + B + !C + D + E 

당신이 원하는 것입니다.

+0

간단한 말로 좋은 설명을 주셔서 대단히 감사합니다. 그래, 나는 수학 수학 과정을 공부하고 진도표를 만드는 방법을 안다. A + 학점으로 90 % 이상을 받았다. 그러나이 주제 인 디지털 전자 공학, 나는 새롭고이 문제를 풀 수있는 방법을 모른다. 멋진 설명을 해주셔서 고맙습니다. 저는 현재 C++을 연구 중이므로 파이썬에 대해 아무것도 모릅니다. 그러나 이미 C++에 거의 익숙한만큼 제게 의미가있는 코드를 보았습니다. 나는 한 가지 더 질문이있다. min-terms의 합으로이 단순화 된 표현식 (즉, '! A + B +! C + D + E')을 어떻게 표현할 수 있을까요? –

+0

@KhubaibKhawar : "최소 용어"가 무엇인지 모르겠습니다. 나는 디지털 전자 공학이 아닌 수학을 공부했는데 용어가 다를 수 있습니다. 최종 표현식은 분리형 정규 형식입니다 - 동일한 것입니까? –

+0

진리표에서 부울 표현식의 최소 항을 추출 할 수 있습니다. {{T, F}'대신 '{0, 1}'을 사용하려고합니다. 따라서 {{0, 1}} 진리표 , 그 결과에 해당하는 행의 변수는 '1'을 나타내는 결과를 표현의 최소 항 (min-terms)이라고합니다. –