3

There is something I don't understand.

In the Subset Sum problem, in the Dynamic Programming solution, because of binary representation of the sum T, we say it is pseudo-polynomial in run time; we must sum in the worst case from 1 to T.

So I don't understand why the Addition algorithm is not pseudo-polynomial, when we can add great numbers too.

FrankW
  • 6,589
  • 4
  • 26
  • 42
Pedro
  • 397
  • 4
  • 13
  • 1
    All your questions can be answered by understanding the (formal) definition of "runtime". I suggest you revisit it. – Raphael May 08 '14 at 15:30

2 Answers2

8

The reason is that the runtime of addition is proportional to the number of digits, not the value of the numbers, as it is for subset sum. Remember that the number of digits is the size of the input.

FrankW
  • 6,589
  • 4
  • 26
  • 42
5

The subset sum algorithm runs in time $\tilde{O}(S)$, where $S$ is the sum we're looking for. The input length is $n = \log S$, since it takes this many bits to encode $S$ in binary. Overall, the algorithm takes time $\tilde{O}(2^n)$, which is exponential.

In contrast, you can add two $n$-bit numbers in $\tilde{O}(n)$, which is polynomial time.

(The notation $\tilde{O}(f(n))$ usually means "up to logarithmic factors", but here I use it to mean "roughly".)

Yuval Filmus
  • 276,994
  • 27
  • 311
  • 503