๐ง Problem
์ด์ ๊ธ์์ ์ดํด๋ณด์๋ problem์ ๊ด๋ จํ ๊ฐ๋ ๋ค์ ๋ค์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Problem Instance : ์ด๋ค ๋ฌธ์ (problem)๋ฅผ ์ ์ํ๋ input์ด๋ฉฐ, ์ด๋ ํด๋น input์ ์ผ์ข ์ binary string์ผ๋ก ์๊ฐํ ์ ์์ต๋๋ค.
Problem : ์ด๋ค ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋(YES๋ผ ๋ตํ๋) problem instance๋ค์ ์งํฉ์ ์๋ฏธํฉ๋๋ค.
์ด๋ Problem์ ์ํ๋ instance๋ค์ YES instance๋ผ ํฉ๋๋ค.
Algorithm : ์ด๋ค problem X์ ๋ํ์ฌ,
์ด๋ค mapping ํจ์ A๊ฐ ์์์ s $\in $ X์ ๋ํ์ฌ A(s) = YES์ด๊ณ ,
์ญ( A(s) = YES์ผ ๊ฒฝ์ฐ s $\in$ X )๋ ์ฑ๋ฆฝํ๋ ๊ฒฝ์ฐ A๋ฅผ problem X๋ฅผ ํด๊ฒฐํ๋ Algorithm์ด๋ผ๊ณ ํฉ๋๋ค.
๐ง Polynomial Running Time Algorithm
์์์ input(string) s์ ๋ํด์, A(s)๊ฐ ์ต๋ O( poly( |s| ) ) ๋จ๊ณ ์์ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ,
Algorithm A๋ polynomial running time์ ๊ฐ์ง๊ณ ์๋ค๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ฒ๋ธ์ ๋ ฌ, ํต์ ๋ ฌ ๋ฑ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ์๊ฐ๋ณต์ก๋๋ก $O(n^2)$ ์ ๊ฐ์ง๋๋ค.
์ฆ ์ด๋ค์ Polynomial Time Algorithm์ ๋๋ค.
๐ง P(Polynomial Time)
์ด์ P์ ๋ํ์ฌ ์ ์ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
P(Polynomial time) : polynomial running time์ ๊ฐ์ง algorithm์ด ์กด์ฌํ๋ ๋ชจ๋ decision problem๋ค์ ์งํฉ์ ์๋ฏธํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ์ ๋ฌธ์ ๋ค์ด P์ ์ํ๋ ๋ฌธ์ ๋ค์ ๋๋ค.
- ์ ์ ์ด n๊ฐ์ธ ๊ทธ๋ํ์์, Shortest Path์ ๊ธธ์ด๊ฐ k ์ด์์ธ ๋ ์ ์ u, v๊ฐ ์กด์ฌํ๋๊ฐ?
- ์ ์ ์ด n๊ฐ, edge๊ฐ m๊ฐ์ธ ๊ทธ๋ํ์ biconnected component๋ k๊ฐ ์ด์ ์กด์ฌํ๋๊ฐ?
- ๊ธธ์ด๊ฐ n์ธ sequence์ LIS์ ๊ธธ์ด๊ฐ k ์ด์์ธ๊ฐ?
๊ทธ์ ๋ฐํ์ฌ, ์ด์ ๊ธ์์ ์ดํด๋ณธ Independent Sets, Cliques, Vertex Cover, 3-SAT ๋ฌธ์ ๋ค์ P ๋ฌธ์ ๊ฐ ์๋๋๋ค.
์ฆ ํด๋น ๋ฌธ์ ๋ค์ polynomial runnong time์ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋์ง ๋ชจ๋ฆ ๋๋ค.
์์ ๊ฐ์ ๋ฌธ์ ๋ค์ ์์์ด ๋ง์ด ์กด์ฌํ๋๋ฐ, ์ ํฌ๋`์์ ๊ฐ์ ๋ฌธ์ ๋ค`์ ๊ณตํต์ ์ธ ํน์ง์ ์ง์คํ์ฌ ์ด๋ค์ formalํ๊ฒ ์ ์ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง Certifiers
์์์ ์ธ๊ธ๋ ๋ฌธ์ ๋ค์ ๊ณตํต์ ์ธ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Problem X์ ์ํ instance $I_X$ ์ ๋ํ์ฌ, ํด๋น $I_X$ ๊ฐ ์ค์ ๋ก YES Instance์ธ์ง ํ์ธํ ์ ์๋ poly( |$I_X$| )์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ proof/certificate/solution์ด ์กด์ฌํฉ๋๋ค.
๊ฐ๋จํ 2-SAT๋ฌธ์ ๋ฅผ ํตํด ์์๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด์ ์ด๋ฅผ ํตํด Certifier์ ๋ํ ์ ์๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ค Problem X์ input(string) s ๋ํ์ฌ,
1) s $\in$ X ์ด๋ฉด C(s, t) = YES๋ฅผ ๋ง์กฑ์ํค๋ string t๊ฐ ์กด์ฌํ๊ณ ,
2) ๋ฐ๋๋ก ์ด๋ค s์ t์ ๋ํ์ฌ, C(s, t) = YES ์ด๋ฉด s $\in$ X์ด๋ค.
1), 2)๋ฅผ ๋ง์กฑ์ํค๋ ์๊ณ ๋ฆฌ์ฆ C๋ฅผ problem X์ certifier๋ผ๊ณ ํฉ๋๋ค.
์ด ๋ string t๋ s์ certificate(ํน์ proof)๋ผ๊ณ ํฉ๋๋ค.
์ด๋ ํน๋ณํ ๋ชจ๋ string s์ ๋ํ์ฌ,
1) s $\in$ X if and only if |t| $\leq$ poly(|s|) ์ด๋ฉด์, C(s, t) = YES๋ฅผ ๋ง์กฑ์ํค๋ t๊ฐ ์กด์ฌํ๋ค.
2) Polynomial time ์์ ๋ต์ ๋ผ ์ ์๋ค.
1), 2) ๋ฅผ ๋ง์กฑํ๋ Certifier C๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ C๋ฅผ efficient certifier๋ผ๊ณ ํฉ๋๋ค.
์กฐ๊ธ์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด, ์ด๋ค ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ๋์ ํ๋ ์ ์, ์ 3์ ๋๋ช ([1], [2]๋ก ํ๊ฒ ์ต๋๋ค.)๋ฅผ ์ถ๊ฐํ์ฌ ์ค๋ช ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ๊ฐ ๋ฌธ์ ๋ฅผ ํ๋ ค๋ ๊ณ์ ์๋ํ์์ผ๋, ๋ฌธ์ ๊ฐ ํ๋ฆฌ์ง ์์ ๋๋๋๊ณ ์์๋ค๊ณ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ด๋ [1]์ด ์ ํํ ์์, ์ด๊ฒ ๋ต์ธ๊ฑฐ ๊ฐ์๋ฐ ํ๋ฒ ํ์ธํด ์ค ์ ์์ด? ๋ผ๊ณ ํ๋ฉฐ ์ข ์ด๋ฅผ ํ๋ ์ค๋๋ค.
์ ๋ ํด๋น ์ข ์ด์ ์ ํ ๊ฒ์ด ๋ต์ธ์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ด๋ ํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ํ์ธํด ๋ณด์๊ณ , ๊ฒฐ๊ตญ ์ด๊ฒ์ด ๋ต์ด ์๋์ ํ์ธํ์์ต๋๋ค.
์ด๋ฒ์๋ [2]๊ฐ ์ ์๊ฒ ์์ ์ด๊ฒ ๋ต์ธ๊ฑฐ ๊ฐ์๋ฐ ํ๋ฒ ํ์ธํด ์ค ์ ์์ด? ๋ผ๊ณ ํ๋ฉฐ ์ข ์ด๋ฅผ ํ๋ ์ค๋๋ค.
๋๊ฐ์ด ํด๋น ์ข ์ด์ ์ ํ ๊ฒ์ด ๋ต์ธ์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ด๋ ํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ํ์ธํด ๋ณด์๊ณ , ๊ฒฐ๊ตญ ์ด๊ฒ์ด ๋ต์์ ํ์ธํ์์ต๋๋ค.
๊ทธ๋ ์ง๋ง, ์ฌ์ ํ ๋ต์ ์ด๋ป๊ฒ ๊ตฌํ๋์ง๋ ๋ชจ๋ฅด๋ ์ํฉ์ ๋๋ค.
์์ ๊ฐ์ ์ํฉ์์, [2]๊ฐ ์ ์๊ฒ ์ค ๋ต์ด certificate๊ฐ ๋๋ ๊ฒ์ด๊ณ ,
([1]์ด ์ค ๋ต์ certificate๊ฐ ์๋)
์ ๊ฐ ์ข ์ด๋ฅผ ๋ฐ์ ๋ต์ธ์ง ํ์ธํ๋ ๊ณผ์ (์๊ณ ๋ฆฌ์ฆ)์ Certifier๋ผ๊ณ ํฉ๋๋ค.
๐ง Certifiers ์์ - Independent Set
Problem : ์ด๋ค ๊ทธ๋ํ G = (V, E) ๊ฐ ํฌ๊ธฐ k ์ด์์ธ independent set์ ํฌํจํ๋๊ฐ?
Certificate : ์ด๋ ํ ์งํฉ S (S $\subset$ V)
Certifier : |S| ๊ฐ k ์ด์์ธ์ง ํ์ธ ํ, S์ ์ํ ์์์ ๋ vertex๊ฐ ์๋ก adjacent ํ์ง ์์์ง๋ฅผ ํ์ธํ๋ค.
์ฌ๊ธฐ์ instance๋ ์ด๋ค ๊ทธ๋ํ์ธ G์, k๊ฐ ๋ฉ๋๋ค.
๐ง Certifiers ์์ - Vertex Cover
Problem : ์ด๋ค ๊ทธ๋ํ G = (V, E) ๊ฐ ํฌ๊ธฐ k ์ดํ์ธ vertex cover์ ํฌํจํ๋๊ฐ?
Certificate : ์ด๋ ํ ์งํฉ S (S $\subset$ V)
Certifier : |S| ๊ฐ k ์ดํ์ธ์ง ํ์ธ ํ, G์ ๋ชจ๋ edge๋ค์ด S์ ์ํ vertex๋ค ์ค ์ ์ด๋ ํ๋๋ฅผ ํฌํจํ๋์ง ํ์ธํ๋ค.
๐ง Certifiers ์์ - 3-SAT
Problem : ์ด๋ค 3-CNF formula F๋ satisfiable ํ๊ฐ?
Certificate : F์ ๊ฐ๊ฐ์ variable์ 0 ๋๋ 1์ assign ํ ๊ฒ
Certifier : ํด๋น assignment์ ๋ํด F๊ฐ true์ธ์ง ํ๋ณํ๋ค. (F์ ๋ชจ๋ clause๊ฐ true์ด๋ฉด YES)
๐ง Nondeterministic Polynomial Time (NP)
Nondeterministic Polynomial Time(NP)๋ efficient certifier๋ฅผ ๊ฐ์ง ๋ชจ๋ problem๋ค์ ์งํฉ์ ๋๋ค.
์์ ์ดํด๋ณธ Independent Set, Vertex Cover, 3-SAT์ ๋ชจ๋ NP์ ์ํฉ๋๋ค.
(์ด๋ค์ certifier๊ฐ ๋ชจ๋ efficient certifier๊ฐ ๋จ์ ์ฝ๊ฒ ์ฆ๋ช ํ ์ ์์ต๋๋ค.)
์กฐ๊ธ ๋ formalํ ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ค problem X๊ฐ NP์ ์ํ๋ค๋ฉด, ๋ชจ๋ string s์ ๋ํด ๋ค์์ ๋ง์กฑํ๋ polynomial p์ q ๋ฐ Certifier C๊ฐ ์กด์ฌํฉ๋๋ค.
1. s๊ฐ YES Instance๋ผ๋ฉด, ์ฆ s $\in$ X ์ธ ๊ฒฝ์ฐ, | t | = p(| s |) ์ด๋ฉด์, C(s, t) = YES๋ฅผ ๋ง์กฑํ๋ certificate t๊ฐ ์กด์ฌํฉ๋๋ค.
2. s๊ฐ NO Instance๋ผ๋ฉด, ์ฆ s $\notin$ X, ๋ชจ๋ string t์ ๋ํด C(s, t) = NO ๋ผ ๋ตํ๋ค.
3. C(s, t) ๋ q(|s| + |t|) = poly(|s|) ์๊ฐ ์์ ๋์ํ๋ค.
๐ง Independent Set์ด NP์ธ ์ด์
Independent Set Problem์ ์ด๋ค instance s(์ฆ G์ k)์ ๋ํ์ฌ,
์ด๋ค certificate t์, certifier C(s, t)๋ฅผ ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ฒ ์ต๋๋ค.
Certificate : ์ด๋ ํ YES Instance ์งํฉ S (S $\subset$ V) (์ฆ ์ ๋ต ์งํฉ)
Certifier : |S| ๊ฐ k ์ด์์ธ์ง ํ์ธ ํ, S์ ์ํ ์์์ ๋ vertex๊ฐ ์๋ก adjacent ํ์ง ์์์ง๋ฅผ ํ์ธํ๋ค.
๊ทธ๋ฌ๋ฉด certificate๋ |s| ๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ |s| ์ ๋ํ polynomial๋ก ํํ๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
s๊ฐ YES instance์ธ ๊ฒฝ์ฐ, C(s, t) = YES์ธ certificate t๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ๋ฌธ์ ์ ์ ์์ ์ํ์ฌ ์๋ช ํฉ๋๋ค.
(s๊ฐ NO instance๋ผ๋ฉด, ๋ชจ๋ string t'์ ๋ํ์ฌ C(s, t')์ NO๋ฅผ returnํฉ๋๋ค.)
๋ง์ง๋ง์ผ๋ก C(s, t)๋ t์ ์ํ ์ ์ ๋ค์ ๊ฐ pair(u, v)์ ๋ํ์ฌ, u, v,๊ฐ adjacentํ์ง O(1) ์๊ฐ์ ๊ฒ์ฆ ๊ฐ๋ฅํ๋ฏ๋ก, ์ด O(| $t^2$ |) ์๊ฐ์ด ์๋ชจ๋ฉ๋๋ค. ๋ฐ๋ผ์ C(s, t)๋ efficient certifier์ ๋๋ค.
๋ฐ๋ผ์ Independent Set์ efficient certifier๋ฅผ ๊ฐ์ง๋ฏ๋ก ์ ์์ ์ํ์ฌ NP์ ์ํฉ๋๋ค.
๐ง NP์ ์ ์์ ๊ด๋ จ๋ ์ฃผ์์ฌํญ
NP์ ์ ์๋ ์ค๋ก์ง YES instance ๋ง์ด ํฌ๊ธฐ๊ฐ ์์ proof/certificate๋ฅผ ๊ฐ์ง๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ NO instance์ ๊ฒฝ์ฐ์ ๋ํด์๋ ์ ์ฉ๋์ง ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ธฐ ์ํด co-NP ๋ผ๋ problem class๊ฐ ๋ฐ๋ก ์กด์ฌํฉ๋๋ค.
๐ง P $\subseteq$ NP ์ฆ๋ช
P์ ์ํ ์ด๋ค problem X์,
X๋ฅผ ํด๊ฒฐํ๋ polynomial time algorithm A๊ฐ ์๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
์ด์ ํด๋น X๊ฐ efficient certifier๋ฅผ ๊ฐ์ง๊ณ ์์์ ์ฆ๋ช ํ๋ฉด P $\subseteq$ NP์์ ์ฆ๋ช ํ ์ ์์ต๋๋ค.
์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ algorithm ์ด ์์ผ๋ฉด (ํด๋น algorithm ์ด certifier ์ ์ญํ ์ ํ ์ ์์ผ๋ฏ๋ก) certifier ๋ฅผ ์ฝ๊ฒ ๋์์ธ ํ ์ ์์ต๋๋ค.
Certifier C(s, t)๋ฅผ A(s)๋ฅผ ์คํํ ํ ๋์ค๋ ๋๋ต์ด๋ผ๊ณ ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ์ ์์ ์ํ์ฌ A๋ polynomial time์ ๋์ํ๋ฏ๋ก C ์ญ์ polynomial time์ ๋์ํฉ๋๋ค.
certifier๊ฐ ๋๊ธฐ ์ํด์๋ ๋ค์์ ๋ง์กฑํด์ผ ํฉ๋๋ค.
1) s $\in$ X ์ด๋ฉด C(s, t) = YES๋ฅผ ๋ง์กฑ์ํค๋ string t๊ฐ ์กด์ฌํ๊ณ ,
2) ๋ฐ๋๋ก ์ด๋ค s์ t์ ๋ํ์ฌ, C(s, t) = YES ์ด๋ฉด s $\in$ X์ด๋ค.
Case 1: s $\in$ X์ธ ๊ฒฝ์ฐ : ๋ชจ๋ t์ ๋ํด์ YES๋ฅผ ์ถ๋ ฅํ๋ฏ๋ก, t๊ฐ ๋ฐ๋์ ์กด์ฌํฉ๋๋ค.
Case 2: s $\notin $ X ์ธ ๊ฒฝ์ฐ : ๋ชจ๋ t์ ๋ํด์ NO๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์ ์์ ์ํด C๋ efficient certifier์ด๋ฏ๋ก, P๋ NP์ ์ํฉ๋๋ค.
๐ง EXP (Exponential Time)
EXP(Exponential Time)์ input s์ ๋ํ์ฌ, O($2^{poly(|s|)}$) ์๊ฐ ์์ ํด๊ฒฐ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฌธ์ ๋ค์ ์งํฉ์ ๋๋ค.
์๋ฅผ ๋ค์ด O($2^n$), O($3^n$) ๋ฑ์ด ์์ต๋๋ค.
๐ง NP $\subseteq$ EXP ์ฆ๋ช
NP์ ์ํ ์ด๋ค problem X๋ฅผ ํด๊ฒฐํ๋ ๋ค์๊ณผ ๊ฐ์ exponential algorithm์ ๋์์ธํ๋ฉด ๋ฉ๋๋ค.
Algorithm: t = O( p(|s|) )๋ฅผ ๋ง์กฑํ๋ ๋ชจ๋ t์ ๋ํ์ฌ, C(s, t)๋ฅผ ์ํํ ํ, ์ด ์ค ํ ๋ฒ ์ด์ certifier C๊ฐ YES๋ฅผ returnํ ๊ฒฝ์ฐ, YES๋ฅผ returnํฉ๋๋ค.
'๐ฅ Computer Science > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] NP-Complete์ NP-Hard (0) | 2022.12.06 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] Reduction (0) | 2022.12.05 |
[์๊ณ ๋ฆฌ์ฆ] Counting Sort (๊ณ์ ์ ๋ ฌ) (0) | 2022.12.05 |
[์๊ณ ๋ฆฌ์ฆ] Adversary Argument (2) | 2022.12.05 |
[์๊ณ ๋ฆฌ์ฆ] DP(4) - ํ๋ก์ด๋ ์์ฌ(Floyd Warshall) ์๊ณ ๋ฆฌ์ฆ (0) | 2022.11.13 |