[카르노 맵]카르노 맵의 정의 및 예제

Programming/알고리즘|2017. 8. 29. 15:30
반응형

안녕하세요.

사실 회사일은 아직 바쁘긴하지만 시험 하나가 끝나서 포스팅합니다.

오늘 포스팅할건 카르노맵인데요.

집합을 배우면 간소화를 배우는데요.

거기서 간소화를 쉽게 해주는 기법 중 하나인 카르노맵입니다.

 

 

 

카르노 맵 정의

카르노맵은 간소화를 위해 Veitch라는 사람이 제안하고

Karnaug라는 사람이 개선해서 만들었다고 합니다.

 

카르노맵을 하기 위해서는 2가지가 있는데요.

- 최소항의 합 <- 이것만 씀

- 최대항의 곱

 

여기서 카르노맵 간소화는 최소항의 합만 씁니다.

 

 

 

"최소항의 합?"

 

 

최소항의 합이란 결과가 1인것만 쓴다는 얘기입니다.

무슨말인지 아직 감이 안 잡히지만

언제나처럼..... 아래 설명과 예제를 풀다보면 알게 될 것입니다.

 

 

 

 

카르노 맵 방법

1. 인접한 1을 직사각형 상태로 최대한 크게 묶는다.

2.

개로 묶는다.

3. 양 끝에 있는 얘들은 붙여서 묶을 수 있다.

4. 한 묶음 내에서 나온 원소는 교집합으로 계산해준다.

5. 각 묶음에서 나온 원소들끼리는 합집합으로 묶는다.

 

 

?!?!?

 

역시 설명으로만 하면 이해가 힘든거 같습니다.

아래 예제를 보겠습니다.

 


 

 

 


 

 

 

 

 

카르노 맵 예제

 

 

만약에 이런 식을(덧셈, 합) 간소화한다고하면 넘 복잡하고 헷갈리기 때문에

이럴 때 카르노맵을 쓰는데요.

 

먼저 카르노맵 표를 만들어줍니다.

이건 정의되있으니 이대로 외우시는게 편합니다.

 

1. 먼저 행에는 A와 A의 여집합(A위에 작대기를 얹어준것)을 넣어줍니다.
   A는 1이고 A의 여집합은 0입니다.
   위에서부터 0, 1순서대로 적어줍니다.






2. 그리고 열에는 B와 C에 대해 정의해줍니다.
 
는 0,
도 0이겠죠?
이걸 맨 처음 적어주고
그 다음은 01, 11, 10 순서대로 적어줍니다.
여기서 중요한거!
00, 01, 10, 11 순서가 아니고
00, 01, 11, 10의 순서대로 표를 그려줘야됩니다.






3. 표를 그려줬으면 나타낼 식을 카르노 맵에 적어줍니다.




위 식에서 주황색으로 나타낸 식에 대해서 카르노맵으로 나타내보겠습니다.


이니 행 중에 첫번째 행이고
는 열 중에 첫번째이지요?
해당 칸에 1을 적어줍니다.






4. 해당 식들을 전부 칸에 적어줍니다.








5. 칸에 다 적어줬으면 직사각형으로 묶는데 가장 크게, 2의 n승 개수로 묶어줍니다.
(2, 4, 8, 16.....)
묶을 때 겹쳐서 묶어도 됩니다.
일단 먼저 아래 길쭉한 사각형이 나오죠? 묶어보겠습니다.


여기서 보면 A는 1개이고
B를 봅시다.
B과 B의 여집합 모두 포함되어있지요?
B와 B의 여집합을 교집합 한건 아무것도 없습니다->그러니 생략.
C과 C의 여집합 모두 포함되있으니 교집합->생략.
남은 건 A하나 남았네요.




6. 또 아래와 같이 묶어줍니다.
이렇게 두개의 네모가 나왔는데 이건 양쪽에 두개가 있지요.
그럼 붙일 수 있습니다.


그럼 포함된것이


A와 A의 여집합->생략.
B와 B의 여집합->생략.
C의 여집합 한개가 남네요.

 

 

결과는

가 됩니다.

묶은 직사각형에서 나온 결과값은 합( + , 합집합)해주고

묶은 직사각형 내에서 연산은 곱( · , 교집합)해주는 걸 꼭 알아두시길 바랍니다~

읽어주셔서 감사합니다~

 

반응형

'Programming > 알고리즘' 카테고리의 다른 글

[허프만] 허프만 코딩 원리와 구현  (0) 2018.04.27
열심히 해야지~  (0) 2017.10.18
GrayCode 그레이 코드 변환  (0) 2017.08.29
[알고리즘] 브레젠험 알고리즘  (10) 2017.07.19
[알고리즘] DDA알고리즘  (1) 2017.06.19

댓글()