This document discusses algorithms for solving satisfiability (SAT) problems. It first defines several types of SAT problems, including GSAT, SAT, 1-SAT, 2-SAT, and 3-SAT. It then explains that any GSAT problem can be transformed into an equivalent 3-SAT problem in polynomial time. The document goes on to describe algorithms for solving 1-SAT, 2-SAT and 3-SAT problems, noting that 1-SAT and 2-SAT can be solved in linear time while 3-SAT is NP-complete.
2. 강의자 소개
2020 AL林 정기 스터디 2
이름 최문기
소속 서울시립대 컴퓨터과학부(16학번)
핸들 iknoom1107(BOJ) IKnoom(Codeforces) IKnoom(AtCoder)
ICPC 팀 ManManChiAnunTeam (2020 Seoul Regional 본선 진출 및 28위)
- 김정현, 최문기, 최연웅
4. 부울식(boolean expression)
2020 AL林 정기 스터디 4
✓ 부울식
부울식은 부울 변수(이진 변수)들이 다음 연산자로 결합된 것이다.
∧, ∨, →, ⇔, ¬
부울 변수(이진 변수) : 0 또는 1만 값으로 받을 수 있는 변수
5. 부울 연산
2020 AL林 정기 스터디 5
논리곱(∧, AND)
논리합(∨, OR)
논리 부정(¬, NOT)
a b a ∧ b
0 0 0
0 1 0
1 0 0
1 1 1
a b a ∨ b
0 0 0
0 1 1
1 0 1
1 1 1
a ¬a
0 1
1 0
6. 리터럴, 절, CNF
2020 AL林 정기 스터디 6
• 부울 변수나 그 역을 리터럴Literal이라고 한다.
• 리터럴들이 논리합으로 연결된 것을 절Clause이라 한다.
• 절들이 논리곱으로 연결된 것을 CNFConjunctive Normal Form(논리곱 정규형)이라 한다.
• 각 절이 정확히 k개의 서로 다른 리터럴로 되어있는 CNF를 k-CNF라 한다.
18. 정리1 : 모든 GSAT는 다항시간 안에 3-SAT로 변환 가능하다.
2020 AL林 정기 스터디 18
이와 같은 방법으로 정리하면 부울식에 각 절에는 리터럴이 1개 또는 2개 또는 3개이다.
리터럴이 2개인 경우 : 변수 𝑝를 도입하여 3개로 늘릴 수 있다.
(𝑎 ∨ 𝑏) ≡ (𝑎 ∨ 𝑏 ∨ 𝑝) ∧ (𝑎 ∨ 𝑏 ∨ ¬𝑝)
리터럴이 1개인 경우 : 변수 𝑝1, 𝑝2를 도입하여 3개로 늘릴 수 있다.
𝑎 ≡ (𝑎 ∨ 𝑝1 ∨ 𝑝2) ∧ (𝑎 ∨ ¬𝑝1 ∨ 𝑝2) ∧ (𝑎 ∨ 𝑝1 ∨ ¬𝑝2) ∧ (𝑎 ∨ ¬𝑝1 ∨ ¬𝑝2)
19. 정리1 : 모든 GSAT는 다항시간 안에 3-SAT로 변환 가능하다.
2020 AL林 정기 스터디 19
따라서 모든 GSAT는 3-SAT로 변환 가능함을 보였다.
20. 여기까지 정리
2020 AL林 정기 스터디 20
1. 다음 문제들을 정의했습니다.
- GSAT
- SAT
- 1-SAT, 2-SAT, 3-SAT
2. 모든 GSAT는 다항시간 안에 3-SAT로 변환이 가능함을 보였습니다.
22. Algorithms for solving SAT
2020 AL林 정기 스터디 22
• 1-SAT을 푸는 알고리즘
• 2-SAT을 푸는 알고리즘
• 3-SAT을 푸는 알고리즘
23. Solving 1-SAT
2020 AL林 정기 스터디 23
𝑥1 ∧ ¬𝑥2 ∧ ¬𝑥3가 만족 가능한가?
1-SAT는 아주 쉽게 선형시간 안에 풀립니다.
1. 한 부울식에 𝑥1 , ¬𝑥1 이 같이 있으면 성립하지 않고
2. 그렇지 않으면 모든 절이 1이 되도록하여 만족시킬 수 있습니다.
24. Solving 2-SAT
2020 AL林 정기 스터디 24
(𝑥1 ∨ ¬𝑥2) ∧ (𝑥2 ∨ 𝑥3) ∧ (¬𝑥3 ∨ ¬𝑥1)가 만족 가능한가?
2-SAT 또한 SCC를 이용하면 선형시간 안에 풀립니다. (1976, 로버트 타잔)
1. 각 리터럴을 노드로 하여 그래프로 치환합니다.
2. SCC를 구하고 𝑥1 , ¬𝑥1 이 같은 SCC에 있으면 불가능하고 아니면 가능합니다.
25. 2-SAT Algorithm : 자세히
2020 AL林 정기 스터디 25
먼저 각 리터럴을 노드로 하여 그래프로 치환합니다.
간선은 어떻게 표현해야할까요?
만약 𝑎 ∨ 𝑏가 성립하려면 다음 두 명제가 성립해야합니다.
1. ¬𝑎 → 𝑏 : a가 성립하지 않으면 b가 성립해야하고
2. ¬𝑏 → 𝑎 : b가 성립하지 않으면 a가 성립해야합니다.
26. 2-SAT Algorithm : 자세히
2020 AL林 정기 스터디 26
𝑎 ∨ 𝑏 ≡ ¬𝑎 → 𝑏 ∧ (¬𝑏 → 𝑎)
이렇게 각 리터럴을 명제로 보고 간선을 명제 사이의 관계로 봅시다.
그럼 명제들 사이의 그래프가 만들어집니다.
28. 𝑥 , ¬𝑥 이 같은 SCC에 있으면 불가능하고 아니면 가능합니다.
2-SAT Algorithm
2020 AL林 정기 스터디 28
𝑥1 𝑥2
𝑥3
¬𝑥1 ¬𝑥2 ¬𝑥3
29. Solving 3-SAT
2020 AL林 정기 스터디 29
(𝑥1 ∨ ¬𝑥2 ∨ 𝑥3) ∧ (¬𝑥1 ∨ ¬𝑥3 ∨ 𝑥4)가 만족 가능한가?
선형시간 안에 풀 수 없습니다.
이 문제는 NP-완비에 속하는 문제이며
현재 가장 빠른 알고리즘은 O(1.308n)라고 합니다. (PPSZ algorithm)
손으로 직접 풀어보기
31. P=NP? P≠NP?
2020 AL林 정기 스터디 31
https://en.wikipedia.org/wiki/P_versus_NP_problem
32. P, NP, NP-하드, NP-완비
2020 AL林 정기 스터디 32
P문제 : (Polynomial) 다항식 시간에 해결할 수 있는 문제
NP문제 : (Nondeterministic Polynomial) 비결정론적 다항식 시간에 해결할 수 있는 문제
NP-하드NP-Hard : 모든 NP문제를 다항식 시간 안에 변환하여
어떤 문제 A를 만들 수 있다면 A는 NP-하드 문제이다.
NP-완비NP-Complete : 어떤 문제 A가 NP이면서 NP-하드이면 NP-완비 문제이다.
33. P, NP, NP-하드, NP-완비
2020 AL林 정기 스터디 33
어떤 문제가 NP-완비임을 보이는 방법!
1. NP임을 보인다.
2. NP-하드임을 보인다.
34. P, NP, NP-하드, NP-완비
2020 AL林 정기 스터디 34
1. 어떤 문제 A가 NP임을 보인다.
NP에 속하는 문제는 그 문제의 답에 대한 근거가 주어졌을 때 그것이 옳은 근거인지 다항 시간 안에 판별
할 수 있으면 됩니다. 즉, 다항시간 안에 답이 맞는지 확인 할 수 있으면 됩니다.
2. (★) 어떤 문제 A가 NP-하드임을 보인다.
직접 보이기가 정말 정말 어렵다고 합니다.
그래서 이미 알려진 NP-하드 문제를 다항 시간 안에 A로 변환할 수 있는지를 확인합니다.
어떤 NP-하드 문제를 다항 시간 안에 A로 바꿀 수 있다면 NP-하드의 정의에 의하여 A도 NP-하드입니다.
35. 최초의 NP-하드 문제
2020 AL林 정기 스터디 35
1971년에 스티븐 쿡이
GSAT(일반 부울식 만족 문제)가 NP-하드임을
NP-하드의 정의에 따라서 증명하였습니다.
(상당히 복잡한 증명이라고 합니다.)
그리고 덕분에 왼쪽 트리와 같이
NP-하드 문제들이 증명이 되었다고 합니다.
(이걸 말하고 싶었어요. SAT는 NP-하드의 아버지)
36. 2-SAT : 대회를 준비한다면..
2020 AL林 정기 스터디 36
여러 대회에서 2-SAT 관련 문제가 출제되기도 합니다.
그만큼 잘 알려져 있다고 할 수 있지요.
ICPC : https://www.acmicpc.net/problem/16367
UCPC : https://www.acmicpc.net/problem/13166
정올 고등부 : https://www.acmicpc.net/problem/2519
37. Applications
2020 AL林 정기 스터디 37
https://ai.stackexchange.com/questions/67/what-are-the-real-world-uses-for-sat-solvers
https://en.wikipedia.org/wiki/2-satisfiability#Applications
38. 참고 및 출처
2020 AL林 정기 스터디 38
문병로, 쉽게 배우는 알고리즘, 한빛 아카데미(2018)
Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford, Introduction to Algorithms
(3rd ed.). MIT Press and McGraw-Hill(1990). ISBN 0-262-03384-4. 5 printings up to 2016
https://m.blog.naver.com/PostView.nhn?blogId=kks227&logNo=220803009418&proxyReferer=https:%2F
%2Fwww.google.com%2F
wikipedia.org