카르노 맵 풀이기
무료 온라인 카르노 맵 풀이기: 변수 두 개에서 여섯 개까지의 불 대수 식을 입력하면 모든 묶음을 표시한 카르노 맵과 거기서 읽어 낸 최소 곱의 합 또는 합의 곱을 얻습니다.
분석할 논리적 표현식을 입력하세요 (명제 논리, 불린 대수 지원)
가이드
연산자를 클릭하면 계산기에서 해당 예제를 실행합니다. 각 연산자마다 입력할 수 있는 모든 표기를 함께 보여 줍니다.
식을 입력하면 이 카르노 맵 풀이기가 진리값을 그레이 코드 격자에 배치하고, 묶을 수 있는 묶음마다 테두리를 두른 뒤 거기서 최소 형태를 읽어 냅니다. 기호(¬ ∧ ∨ → ↔)와 일반 ASCII(!, &, |, ->, <->)를 모두 받고, 변수 두 개에서 여섯 개까지 다루며, 그저 괜찮은 답이 아니라 정확한 최소해를 구합니다. 아무것도 업로드되지 않습니다. 맵은 브라우저 안에서 만들어집니다.
카르노 맵 푸는 방법
- 위 입력란에 식을 씁니다. 예를 들어 (A & B) | (!A & C)입니다. 기호를 직접 치기 번거로우면 연산자 키보드가 넣어 줍니다.
- 풀이기가 식에서 변수를 읽어 진리값을 격자에 놓습니다. 두 축은 그레이 코드(00, 01, 11, 10)로 되어 있어 이웃한 칸은 정확히 변수 하나만 다릅니다. 바로 그 때문에 칸의 묶음이 항 하나로 줄어듭니다.
- 색이 있는 테두리 하나가 묶음 하나입니다. 범례의 묶음에 마우스를 올리거나 눌러 맵에서 짚어 보세요. 필수로 표시된 묶음도 눈여겨보십시오. 어떤 최소 형태도 그것들을 뺄 수 없습니다. 묶음은 맵의 가장자리를 넘어 이어질 수 있고, 한 칸이 여러 묶음에 속할 수도 있습니다.
- 아래에서 최소 형태를 읽습니다. 곱의 합과 합의 곱을 오가고, 결과를 복사하고, 계산기로 다시 불러오거나, 맵을 LaTeX 또는 TikZ로 내보낼 수 있습니다.
풀이기가 주는 것
- 모든 묶음에 색과 테두리를 두르고, 필수 묶음을 표시하며, 각 묶음이 남기는 항을 함께 보여 줍니다.
- 정말로 최소인 형태: 덮개를 탐욕적으로 고르지 않고 정확히 탐색하므로, 순환형 맵에서도 가장 짧은 답이 나옵니다.
- 같은 맵에서 곱의 합이든 합의 곱이든 - 1을 묶거나 0을 묶거나.
- 맵을 LaTeX로: 단순한 표로도, 테두리와 범례까지 갖춘 TikZ 그림으로도.
- 같은 식을 전체 계산기에서 열면 진리표와 성질, 동치 형태까지 함께 나옵니다.
풀이 예시
(((A∧B)∧C)∨((A∧B)∧¬C))∨((¬A∧B)∧C)의 맵입니다. 참인 칸이 셋이고, 두 칸짜리 묶음 두 개가 그중 한 칸에서 겹치며 이들을 덮습니다. 방법 전체가 여기 축소되어 있습니다. 묶음 안에서 값이 바뀌는 변수는 그 묶음의 항에서 빠지고, 한 칸은 두 번 덮여도 됩니다.
카르노 맵
색이 있는 각 묶음은 참인 칸의 직사각형을 덮습니다. 묶음 안에서 값이 바뀌는 변수는 사라지므로 묶음마다 하나의 논리곱이 남습니다. 이 맵을 읽는 법 →
| ABC | 00 | 01 | 11 | 10 |
|---|---|---|---|---|
| 0 | ⊥ | ⊥ | ⊤ | ⊥ |
| 1 | ⊥ | ⊥ | ⊤ | ⊤ |
묶음
카르노 맵에는 변수를 몇 개까지 쓸 수 있나요?
이 풀이기는 변수 2개에서 6개까지의 맵을 그립니다. 2개 미만이면 묶을 것이 없고, 다섯 개와 여섯 개는 두 장 또는 네 장의 평면을 쌓아 그리고, 6개를 넘으면 그렇게 해도 옆에 있는 진리표보다 읽기 쉽다고 하기 어려워집니다. 변수가 더 많을 때도 계산기의 동치 형태가 최소화된 DNF를 줍니다.
| 변수 | 칸 | 격자 |
|---|---|---|
| 2 | 4 | 2 × 2 |
| 3 | 8 | 2 × 4 |
| 4 | 16 | 4 × 4 |
| 5 | 32 | 2 × (4 × 4) |
| 6 | 64 | 4 × (4 × 4) |
곱의 합과 합의 곱
참인 칸을 묶으면 곱의 합이 됩니다. 묶음마다 논리곱 하나가 나오고 그것들을 OR로 잇습니다. 거짓인 칸을 묶으면 합의 곱이 되며 리터럴은 나올 때 부정됩니다. 묶음마다 논리합 하나가 나오고 그것들을 AND로 잇습니다. 둘 다 같은 함수를 나타내고, 어느 쪽이 짧은지는 1과 0 중 어느 쪽이 더 깔끔한 직사각형을 이루는지에 달려 있습니다. 그래서 풀이기는 둘 다 보여 주고, 짧은 쪽을 고르면 됩니다.
자주 묻는 질문
논리 계산기 사용에 대해 자주 묻는 질문과 답변
카르노 맵에는 변수를 몇 개까지 쓸 수 있나요?
이 솔버는 변수 두 개에서 여섯 개까지의 맵을 그립니다. 두 개면 2 × 2 격자, 세 개면 2 × 4, 네 개면 4 × 4입니다. 다섯 개와 여섯 개는 교재가 그리는 방식 그대로, 4 × 4 평면을 두 장 또는 네 장 겹쳐 그리고 이웃한 평면에서 같은 자리에 있는 칸을 인접한 것으로 셉니다. 겹치는 변수를 언급하지 않는 묶음은 어느 장에서나 같은 직사각형입니다. 여섯 개를 넘으면 머릿속에 담아야 할 인접 관계가 더 이상 눈에 보이지 않습니다. 맵의 쓸모는 오직 그것뿐이니, 그때는 계산기의 동치 형태에 있는 최소화 DNF를 쓰세요.
곱의 합과 합의 곱은 무엇이 다른가요?
같은 맵을 읽는 두 가지 방법입니다. 참인 칸을 묶으면 곱의 합이 됩니다. 묶음마다 논리곱 하나가 나오고 그것들을 OR로 잇습니다. 거짓인 칸을 묶으면 합의 곱이 되며 리터럴은 나올 때 부정됩니다. 묶음마다 논리합 하나가 나오고 그것들을 AND로 잇습니다. 둘 다 같은 함수를 나타내며, 어느 쪽이 짧은지는 1과 0 중 어느 쪽이 더 깔끔한 직사각형을 이루는지에 달려 있습니다.
솔버가 주는 답이 정말 최소 형태인가요?
그렇습니다. 필수 주 함의항을 먼저 취하고, 나머지 덮개는 탐욕적으로 고르는 대신 분기 한정법으로 남김없이 탐색합니다. 이는 순환형 맵 - 어떤 묶음도 필수가 아닌 맵 - 에서 중요합니다. 탐욕적 선택은 최소보다 항이 하나 많은 덮개에서 멈출 수 있고, 그 사실을 결코 알려 주지 않기 때문입니다. 지배당한 행과 열은 필수 항과 함께 지워지며, 표가 더 줄어들지 않을 때까지 반복됩니다. 그래서 대부분의 맵은 탐색까지 가지도 않고, 변수가 여섯 개여도 정확한 답이 곧바로 나옵니다.
열 이름이 00, 01, 10, 11이 아니라 00, 01, 11, 10인 이유는 무엇인가요?
그 순서라야 맵이 제구실을 하기 때문입니다. 이름표는 그레이 코드로 배열되어 연이은 두 값이 정확히 한 비트만 다릅니다. 그래서 이웃한 두 칸은 정확히 변수 하나만 다르고, 값이 같은 직사각형은 그 변수가 빠진 항이 됩니다. 보통의 이진 순서라면 01과 10이 나란히 놓이지만 두 비트가 다르므로 묶어 봐야 아무 의미가 없습니다. 가장자리가 이어지는 것도 같은 이유입니다. 첫 열과 마지막 열도 한 비트만 다르므로 묶음이 한쪽으로 나갔다가 반대쪽에서 이어질 수 있습니다.
칸을 무관 항으로 표시할 수 있나요?
직접은 안 됩니다. 솔버가 맵으로 그리는 것은 식이고, 식은 모든 행에서 참이거나 거짓입니다. 입력할 세 번째 값이 없습니다. 어떤 함수가 실제로 입력 하나를 무시한다면 그것을 식에 써 넣으세요. 맵이 보여 줍니다. (D | !D) 같은 항은 함수가 의존하지 않는 변수로 D를 맵에 올립니다. 미리 준비된 유효 BCD 자릿수 맵이 바로 그렇게 만들어졌습니다.