Longest Path, Subset Sum
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) λλμ§ νλμ© μ΄ν΄λ³΄κ² λ€.