If I have a decision problem A, and wish to show that it is NP-complete. Is it enough to prove that another NP-complete problem polynomially reduces to A, or must I show that another NP-complete problem polynomially transforms to A?
That is, can I show that
procedure solve_SAT
...
call solve_A
call solve_A
call solve_A
...
end
or am I only limited to a single use of solve_A, as shown
procedure solve_SAT
input = ...
result = call solve_A(input)
return result
end
I find some sources say the former while other sources say the latter, and it is a bit confusing to me.
If your procedure for solve_SAT uses only a constant number of calls to solve_A, then a polynomial-time algorithm for A would imply a polynomial time algorithm for SAT. This doesn't meet the exact definition of SAT, but it would imply that no polynomial-time algorithm for A exists unless P = NP.