Can you summarize the following document?
        
  用動態規劃的方法,能夠以偽多項式時間解決子集合加總問題。我們假定輸入序列為:  我們需要判斷是否存在某個非空子集,使得子集中的數字和為0。我們序列中負數的和為"N",正數的和為"P"。定義函式"Q"("i", "s"),它的涵義為:  子集合加總問題的答案即為"Q"("n", 0)。  顯然,如果"s" < "N"或者"s" > "P",則"Q"("i","s") = false,因此無需記錄這些值。我們把"Q"("i", "s")的值儲存在陣列中,其中"1 ≤ i ≤ n"且"N ≤ s ≤ P"。  接下來使用迴圈來填充陣列。首先,對於"N ≤ s ≤ P",設定  隨後,對於"i" = 2,..., "n"和"N ≤ s ≤ P",設定  演算法執行的總時間為"O"("n"("P" - "N"))。  對演算法加以改動,即可返回和為0的子集。  在計算複雜度理論中,這種解法需要的時間並不算多項式時間,這是因為"P" - "N"同"輸入大小"並不成線性關係。原因在於輸入大小僅僅取決於表達輸入所需要的位元數。演算法的時間複雜度同"N"與"P"的值成線性關係,而它們的值與表達它們所需的位元數成冪關係。
子集和問題(英語:Subset sum problem),又稱子集合加總問題,是計算複雜度理論和密碼學中一個很重要的問題。問題可以描述為:給一個整數集合,問是否存在某個非空子集,使得子集內中的數字和為某個特定數值。例:給定集合{−7, −3, −2, 5, 8},是否存在子集和為0的集合?答案是YES,因為子集{−3, −2, 5}的數字和是0。這個問題是NP完全問題,且或許是最容易描述的NP完全問題。