2020-1ν•™κΈ°, λŒ€ν•™μ—μ„œ β€˜μ•Œκ³ λ¦¬μ¦˜β€™ μˆ˜μ—…μ„ λ“£κ³  κ³΅λΆ€ν•œ λ°”λ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. 지적은 μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ :)

2 minute read

2020-1ν•™κΈ°, λŒ€ν•™μ—μ„œ β€˜μ•Œκ³ λ¦¬μ¦˜β€™ μˆ˜μ—…μ„ λ“£κ³  κ³΅λΆ€ν•œ λ°”λ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. 지적은 μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ :)


Longest Path Problem

<Shortest Path Problem>은 λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ 효율적으둜 ν•΄κ²°ν•  수 μžˆμŒμ„ μ•Œκ³  μžˆλ‹€. κ·Έλ ‡λ‹€λ©΄ <Longest Path Problem>은 μ–΄λ–¨κΉŒ? 당신이 νƒμ‹œ 기사라면, μΆœλ°œμ§€μ—μ„œ λͺ©μ μ§€κΉŒμ§€ μ΅œλŒ€ν•œ κΈ΄ 경둜둜 μš΄μ „ν•΄μ„œ μ΅œλŒ€μ˜ νƒμ‹œλΉ„λ₯Ό 벌고 싢을 것이닀. (단, μ™”λ˜ 길을 λ±…λ±… λ„λŠ” 얕은 μˆ˜λ²•μ„ μ“΄λ‹€λ©΄ λ˜‘λ…ν•œ 승객이 눈치 챌 ν…Œλ‹ˆ, μ™”λ˜ 길은 λ‹€μ‹œ 가지 μ•Šμ•„μ•Ό ν•  것이닀.) κ·Έλž˜μ„œ <Longest Path Problem>을 <Taxicab Rip-off> 문제, 즉 β€˜νƒμ‹œ 바가지’ λ¬Έμ œλΌκ³ λ„ λΆ€λ₯Έλ‹€.

Problem. Longest Path Problem

Given a graph with non-negative edge weights and two vertices $s$ and $t$, along with a goal $g$, find a simple path from $s$ to $t$ with total weight at least $g$.

Subset Sum Problem

<Knapsack Problem>을 κΈ°μ–΅ν•˜λŠ”κ°€? λ°°λ‹Ήμ˜ μš©λŸ‰ $W$와 물건듀 $(w_i, v_i)$κ°€ μžˆμ„ λ•Œ μš©λŸ‰μ„ λ„˜κΈ°μ§€ μ•ŠμœΌλ©΄μ„œ μ΅œλŒ€ν•œμ˜ κ°€μΉ˜λ₯Ό λ‹΄λŠ” λ¬Έμ œμ˜€λ‹€. κ·ΈλŸ¬λ‚˜ μ΄λ²ˆμ—λŠ” μ •ν™•νžˆ μš©λŸ‰ $W$ 만큼 물건을 λ‹΄μ•„μ„œ μ΅œλŒ€ν•œμ˜ κ°€μΉ˜λ₯Ό λ‹΄μœΌλ € ν•œλ‹€λ©΄ μ–΄λ–¨κΉŒ? <Knapsack Problem> 문제의 λ³€ν˜•μΈ 이 λ¬Έμ œλŠ” <Subset Problem>λΌλŠ” μ΄λ¦„μ˜ 문제둜 주어진 μ§‘ν•©μ˜ 뢀뢄집합(subset)을 선택해 μ›ν•˜λŠ” μš©λŸ‰ $W$와 λ™μΌν•œ 값을 갖도둝 ν•˜λŠ” λ¬Έμ œλ‹€.

Problem. Subset Sum Problem

Given a set of integers and a value $W$, find a subset of integers that adds up to exactly $W$.

<Knapsack Problem>이 $O(nW)$의 μ‹œκ°„ λ³΅μž‘λ„λ‘œ 효율적으둜 ν•΄κ²°λ˜λŠ” 반면, <Subset Problem>에 λŒ€ν•΄μ„œλŠ” polynomial algorithm이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©°, κ°€λŠ₯ν•œ subset 쑰합을 일일이 μ°ΎλŠ” 수 밖에 μ—†λ‹€. β€œP and NP” ν¬μŠ€νŠΈμ—μ„œ NP 문제의 μ˜ˆμ‹œλ‘œ λ“€μ—ˆλ˜ β€œμ›μ†Œ 합이 0이 λ˜λŠ” 뢀뢄집합” λ¬Έμ œκ°€ λ°”λ‘œ 이 <Subset Problem>에 μ†ν•œλ‹€!


μ΄κ²ƒμœΌλ‘œ μ •κ·œ μˆ˜μ—…μ—μ„œ μ†Œκ°œν•œ λŒ€ν‘œμ μΈ NP λ¬Έμ œλ“€μ„ κ°€λ³κ²Œ μ‚΄νŽ΄λ³΄μ•˜λ‹€. 이제 NP λ¬Έμ œλ“€μ΄ μ–΄λ–»κ²Œ ν™˜μ›(reduction) λ˜λŠ”μ§€ ν•˜λ‚˜μ”© μ‚΄νŽ΄λ³΄κ² λ‹€.

ν•¨κ»˜λ³΄κΈ°