[카르노 맵]카르노 맵의 정의 및 예제
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에 대해 정의해줍니다. 이걸 맨 처음 적어주고 그 다음은 01, 11, 10 순서대로 적어줍니다. 여기서 중요한거! 00, 01, 10, 11 순서가 아니고 00, 01, 11, 10의 순서대로 표를 그려줘야됩니다. 3. 표를 그려줬으면 나타낼 식을 카르노 맵에 적어줍니다. 위 식에서 주황색으로 나타낸 식에 대해서 카르노맵으로 나타내보겠습니다. 해당 칸에 1을 적어줍니다. 4. 해당 식들을 전부 칸에 적어줍니다. 5. 칸에 다 적어줬으면 직사각형으로 묶는데 가장 크게, 2의 n승 개수로 묶어줍니다. (2, 4, 8, 16.....) 묶을 때 겹쳐서 묶어도 됩니다. 일단 먼저 아래 길쭉한 사각형이 나오죠? 묶어보겠습니다. 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 |
댓글()







