Computational Boolean Algebra: Shannon expansion, SAT

TL;DR 1. 문제의식: Karnaugh map이 깨지는 순간 1.1 40 variables면 Karnaugh map은 끝 1.2 이 글이 노리는 3가지 2. Shannon cofactor: “변수 고정”이 만들어내는 새 function 2.1 정의: cofactor는...

Computational Boolean Algebra: Shannon expansion, SAT
Photo by Markus Spiske / Unsplash

TL;DR

  • Shannon expansion은 Boolean function을 MUX 한 개로 분해하는 공식이다.
  • cofactor는 “변수 하나를 0/1로 고정한 새 function”이며, 그래서 해당 변수는 cofactor 안에서 사라진다.
  • Boolean difference는 “입력 x를 뒤집었을 때 출력이 바뀌는가?”를 계산하는 sensitivity function이다.
  • ∃(existential) quantification은 “아무 해 하나만 존재하면 됨”을 수식으로 만든 연산이고, 이게 SAT의 핵심이다.
  • Optimization이 어려운 이유: SAT는 하나만 찾으면 끝, Optimization은 모든 후보를 비교해야 한다.

1. 문제의식: Karnaugh map이 깨지는 순간

1.1 40 variables면 Karnaugh map은 끝

  • 2^40 규모 → “그릴 수는 있어도 쓸 수 없다”
  • 결론: Boolean function을 손으로가 아니라 data structure + operator로 다뤄야 한다.

1.2 이 글이 노리는 3가지

  • decomposition (쪼개기)
  • computation (프로그램이 다룰 수 있는 표현)
  • application (EDA에서 바로 쓰는 연산)

2. Shannon cofactor: “변수 고정”이 만들어내는 새 function

2.1 정의: cofactor는 substitution이다

  • f의 입력 변수 x에 대해
    • positive cofactor: ( f_{x} = f(x=1) )
    • negative cofactor: ( f_{~{x}} = f(x=0) )

2.2 핵심 포인트: “새 function이며, x가 사라진다”

  • x를 0/1로 고정했으니, 결과에는 더 이상 x가 등장할 수 없음.
  • 이걸 놓치면 이후 Boolean difference / quantification이 다 무너짐.

2.3 (짧은 예시)

  • 예: ( f(x,y,z) = xy+x~z+~xyz )
    • ( f(x=1) = y + \bar{z} ) (단순화 가능)
    • ( f(x=0) = yz )

3. Shannon expansion: “Boolean function = MUX”로 보는 순간 끝난다

3.1 정리 (Shannon expansion theorem)

어떤 f와 어떤 변수 x에 대해서도:
f=x⋅f(x=1)+~x⋅f(x=0)

3.2 하드웨어 관점: Shannon expansion = 2:1 MUX

  • select = x
  • data1 = f(x=1)
  • data0 = f(x=0)
  • output이 곧 f

📌 여기서 “브랜치(branch)” 감각이 생김:

  • x=0 브랜치로 내려가면 f(x=0)만 보면 됨
  • x=1 브랜치로 내려가면 f(x=1)만 보면 됨

3.3 MUX tree = recursive decomposition

  • 변수 하나 → 2개 브랜치
  • 변수 두 개 → 4개 브랜치
  • k개 변수 → 2^k 브랜치
  • 이게 “열거”처럼 보이지만, EDA는 여기서 pruning을 한다. (뒤에서 설명)
[Figure 1] Shannon expansion을 2:1 MUX로 그린 그림
[Figure 2] 2-variable expansion이 4개의 leaf를 만드는 MUX tree 그림

4. cofactor는 “연산이 교환된다”: 계산이 쉬워지는 이유

4.1 아주 중요한 성질

  • complement:
    • (~f)x=~(𝑓𝑥)
  • AND/OR/XOR도 동일하게 “cofactor 먼저 → 연산 나중” 가능
    • (𝑓∧𝑔)𝑥=𝑓𝑥∧𝑔𝑥

즉, 큰 식을 만들고 cofactor 하는 게 아니라
cofactor를 먼저 해서 식을 작게 만든 뒤 계산한다.


5. Boolean difference: “민감도(sensitivity)”를 수식으로 만든 것

5.1 정의

∂f/∂x​=f(x=1)⊕f(x=0)

5.2 의미: “x를 flip했을 때 출력이 바뀌는 조건”

  • XOR는 “다르면 1”
  • 따라서 Boolean difference가 1인 입력 패턴에서는:
    • x를 0→1 또는 1→0 바꾸면 f가 반드시 바뀜

5.3 예시로 감 잡기

  • inverter: f=~x
    • 𝑓(1)=0,𝑓(0)=1⇒∂𝑓/∂𝑥=1
    • 항상 민감
  • AND: ( f=xy )
    • 𝑓(1)=𝑦,𝑓(0)=0⇒∂𝑓/∂𝑥=𝑦
    • y=1일 때만 x 변화가 출력에 영향
  • OR: ( f=x+y )
    • 𝑓(1)=1, 𝑓(0)=𝑦 ⇒ ∂𝑓/∂𝑥=~𝑦
    • y=0일 때만 영향

5.4 “x가 F에 논리적 영향 없다?”의 정확한 해석

  • “항상 영향 없다”는 뜻이 아님.
  • 특정 입력 조건에서 영향이 없을 수 있다는 뜻.
  • 그 조건을 딱 뽑아주는 게 Boolean difference.
[Figure 3] AND/OR에서 Boolean difference가 왜 y / ȳ가 되는지 게이트 그림

6. Quantification: “변수 제거”를 목적 함수로 만든 연산

6.1 existential quantification (∃): “아무 해 하나만 있으면 됨”

∃xf=f(x=0)∨f(x=1)
  • 의미: 다른 입력이 고정됐을 때, x를 잘 고르면 f=1이 되는가?

6.2 universal quantification (∀): “모든 경우에 성립해야 함”

∀xf=f(x=0)∧f(x=1)
  • 의미: x가 뭐든 상관없이 항상 f=1인가?

6.3 네가 말한 문장과 1:1 대응

“모두 열거할 필요 없이, 아무 해 하나만 찾으면 되니깐”

이게 정확히:

∃ quantification
  • 그리고 SAT의 핵심 형태:∃X:F(X)=1

7. SAT vs Optimization: 왜 “최적화”가 더 빡센가

Amazon

7.1 SAT는 “하나만 찾으면 끝”

  • 조건 만족 해가 존재하면 끝
  • 브랜치 탐색 중에 하나라도 만족하면 종료 가능 (pruning)

7.2 Optimization은 “비교가 본질”

  • 더 좋은 해가 있는지 증명하려면
    • 다른 브랜치들도 계속 봐야 함
  • 그래서 EDA 최적화가 구조적으로 어렵다 (NP-hard 얘기로 연결 가능)
[Figure 4] SAT는 첫 만족에서 stop, Optimization은 계속 탐색하는 트리 그림

다음 강의로 자연스럽게 연결: Tautology와 URP

8.1 tautology는 “항상 1인가?”

  • ​f≡1?
  • 핵심 아이디어: f가 tautology ⇔ f(x=0)와 f(x=1)도 둘 다 tautology

8.2 URP의 직감

  • Shannon cofactor로 분해(브랜치)
  • unate 같은 조건이면 중간에서 바로 종료(강한 pruning)
  • 결국 “열거”가 아니라 “버릴 건 빨리 버리는 알고리즘”이 됨

이 글에서 반드시 가져가야 하는 5개

  1. cofactor는 substitution이며, 결과 function에서 해당 변수는 사라진다
  2. Shannon expansion은 수식이면서 동시에 2:1 MUX 모델이다
  3. Boolean difference는 “x 변화가 출력에 영향 주는 조건”을 주는 function이다
  4. ∃ quantification은 “하나만 있으면 됨”을 OR로 구현한다
  5. SAT는 하나면 끝, Optimization은 비교 때문에 더 오래걸린다

글 참여 도구

공유하기 토론 참여
이 글이 어떤 도움을 줬나요? 공개 숫자 없이 품질 개선 신호로만 사용합니다.

비공개 제보

오류나 추가 설명이 필요한가요?

공개 토론 대신 편집자에게 직접 보낼 수정·질문·다음 글 요청을 남겨주세요.

VLSI Korea

비공개 제보 보내기

작성한 내용은 [email protected]로 전달됩니다.

어떻게 받을까요?

익명 모드는 이름과 이메일을 보내지 않습니다. 다만 전송 서비스가 IP 등 기술 정보를 처리할 수 있어 절대적인 익명성을 보장하지는 않습니다.

ENGINEER DISCUSSION

현장에서는 어떻게 보고 계신가요?

동의, 반론, 보완 자료와 현업 경험을 남겨주세요. 답글 알림이 다시 토론으로 연결됩니다.

VLSI KOREA BRIEFING

매일, 중요한 신호만.

반도체 설계와 산업의 변화를 현직 엔지니어 관점에서 정리합니다. 무료이며 페이월이 없습니다.

FOR BUSINESS

이런 기술 콘텐츠가 필요하신가요?

기업용 기술 콘텐츠, 스폰서드 딥다이브, 사내 브리핑을 명확한 범위와 가격으로 진행합니다.

협업 방식·가격 보기 →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
MY VLSI

내 읽기 보관함

저장한 글과 읽던 글을 한곳에서 이어보세요.