易處理/可解問題(tractable problem)
可解(tractable)是複雜度理論用來描述「我們真的能在大規模下解決」的問題的詞,相對於那些隨輸入成長而解法溜出掌握的問題。直覺來自日常生活:若把工作加倍只需多花有合理界限的力氣、而非力氣爆炸,這件雜務就是可解的。依長久以來的慣例,我們把可解精確化為「屬於 P」:若一個問題有多項式時間演算法,它就是可解的。
為什麼挑 P 當官方意義?因為它把線恰好畫在成長率階梯的峽谷處,介於多項式與指數之間。多項式時間演算法對更大的輸入與更快的硬體都從容回應,而指數的則被兩者擊敗。把可解等同於 P,也讓這個詞享有 P 所擁有的同等穩健性:因為所有合理的確定型模型彼此以多項式額外開銷互相模擬,可解性是問題的性質,而非程式語言或特定電腦的性質。所以排序、最短路徑、配對與質數判定是可解的;SAT 或旅行推銷員巡迴的暴力版本則不是(而且可能本質上難解,儘管這未經證明)。
這個等同是一個有用的理想化,而非聖經,值得明白說出。樂觀的一面:一個問題在最壞情況下可能「難解」,卻因啟發式方法或因實際輸入容易,而在實務上被例行解決。悲觀的一面:一個問題可能「可解」(屬於 P),卻有一個慢得讓沒人能跑的演算法,指數像 n^100 或帶著怪物般的常數。可解等於多項式時間是正確的預設、也是正確的教學說法,只要你記得它是可行性的替身,而非可行性的保證。
最大匹配(在已知誰與誰相容下,盡可能多地配對人們)是可解的:它有多項式時間演算法,所以即使數千人也能快速得到精確答案。在同一群人上找最短的旅行推銷員巡迴則不知是否可解;顯而易見的方法要試 n! 種排列,在 n = 20 左右就卡住。
匹配是可解的(屬於 P);旅行推銷員巡迴則不知是否可解。
「可解 = 屬於 P」是一個理想化:一個最壞情況難解的問題在實務上可能很容易,而 n^100 演算法雖屬於 P 卻無法使用;把這個等同當作標準慣例,而非字面上的保證。