
GetACoder.com: Solve P Vs NP  - olalonde
http://www.getacoder.com/projects/solve%20p%20vs%20np_132036.html
======
jlouis
It is funny that the author chose the SUBSET-SUM problem. You may be amazed
but this is a special-case of the KNAPSACK problem for which we have:

Fully polynomial approximation schemes.

Pseudo-polynomial time algorithms.

In other words, you may find that for all practical purposes this problem can
be solved so fast that it doesn't really warrant the NP-badge in some sense.
You can say that the problem is an NP problem which disguises itself as a P
problem. It would be really fun to use David Pisingers knapsack algorithm
codes, <http://www.diku.dk/hjemmesider/ansatte/pisinger/codes.html> and then
bait the bidder into finding a set for which the algorithm is NOT fast (hint:
That is also pretty hard :)

~~~
eru
Yes. There's even a conjecture that says that for basically all NP problems
all reasonable [1] instances will be solvable in expected polynomial time.
Even if P != NP.

[1] Add some hand-waving about probability distributions here.

~~~
voidpointer
Does that include factoring large prime numbers? If a good approximation would
exist for that, wouldn't that make public-key encryption pretty useless?

~~~
jerf
Included in that handwave about probability distributions was a caveat about
not being handed pathological instances of problems. Encryption harnesses
pathological instances and wouldn't be covered by such a handwave.

(Is there ever any other reason to generate multi-hundred digit numbers and
try to factor them? Honest question, if anybody's got a fun answer, though I
am asking about something actually useful that you know about, not something
hypothetical.)

~~~
eru
Actually, it's quite hard to come up with good primes for RSA. They need to
avoid lots of properties, because researches have found efficient attacks on
numbers with those properties.

------
DrJokepu
Old joke, but still funny. There was a similar "job" posted on the same site a
couple of years ago, only that that one asked for solving the halting problem:
[http://docs.google.com/viewer?a=v&q=cache:WVkySfVPHCoJ:b...](http://docs.google.com/viewer?a=v&q=cache:WVkySfVPHCoJ:blog.willbenton.com/wp-
content/uploads//2008/11/bug-
finder.pdf+Bug+Finder+\(Programming,+Testing+/+Quality+Assurance\)&hl=en&gl=uk&pid=bl&srcid=ADGEESjr9w7nQz3arnvojy7fWhPeSUkhIL8lLN75a7kSXFSQO5r1FFauaFiuixcjCfVu98g5mKgIAMRbpMHUbGFYMhuLTgi7-U1ag04UZ4rPDEbISuo1Td9EqQ2OH7_75QNCaRXgdluF&sig=AHIEtbRhluRofrV9At9fcqzSlkD-f3SOww)

~~~
samratjp
Haha and it's posted by AlanT!

~~~
rikthevik
The posts by KurtG and georgecantor are good too.

------
adamt
As an extensive (and generally happy) user of elance and similar sites, this
really made me laugh! This is fantastic example of the pitfalls of such sites.

Whatever the project, you get a bunch of replies (the majority from Indian)
who either just say 'yes we can do that' or come back with boilerplate drivel
without understanding the requirement.

The Indian guy who responded with a $300 bid and said: "I can do this for you
in php or javascript. If you want this work in one language, I can charge
less."

~~~
ultrobast
He could've done it in phpjs and killed two birds with one stone.

My bid was rejected and my account suspended for completing the work before my
bid was accepted. I just hope those Clay guys see it so i can earn my $300.

------
scotty79
Hey. It's business not accademia. When giving a task you have to be prepared
that not all of your requirements will be met.

------
DEinspanjer
Hrm.. you know, there could be something here. If people kept posting
variations of NP problems as jobs on sites like GetACoder as a honeypot, you
could easily devise a blacklist from all the bids as people you'd never want
to hire for a real project.

~~~
moron4hire
That's actually kind of brilliant. I'm looking at this reply that reads
"Hello, Easy job for me,please send me a PM ." and thinking, "you stay away
from me." This one is also golden, "Read your requirement and everything has
been understood. We have already delivered a couple of similar projects and
given our strong capabilities. I am confident we can deliver a powerful end-
result to you as well."

------
obiterdictum
I think most of them just skim the description and bid on a lot of projects
without really reading them and hope to get some of them awarded. Being non-
native English speakers compounds the problem.

Or am I being too gentle? It's hard to miss the title if you know what it
means.

~~~
kranner
You've got it right. Derek Sivers recommends doing this for any serious
rentacoder/vworker/getacoder projects you post:

""" At the end of your post, write something like, “VERY IMPORTANT: To
separate you from the spammers, please write I AM REAL as the first line of
your bid. We will delete all bids that do not start with this phrase, since
most bidders never read the requirements. Thank you for being one who does.”
"""

~~~
meroliph
This doesn't really work all the time, as some of them are skimming through
the description for this sort of stuff.

~~~
kranner
Of course it's not a sufficient criterion by itself; Sivers' point was that a
lot of them won't even do this, so you can at least save yourself the trouble
of evaluating them.

------
Locke1689
This is why everyone who calls themselves a programmer or developer _needs_ a
strong computer science background -- university provided or not. Without it
you can't accurately assess the difficulty of a problem, even seemingly simple
ones like this.

~~~
edanm
"Without it you can't accurately assess the difficulty of a problem, even
seemingly simple ones like this."

And with a background, you'd recognize hard problems?

Sure, very well-known NP-complete problems you'll recognize, but there are
plenty of other problems that are equivalent to them, which you might stumble
upon without even realizing it (I recently wrote a post about one such
problem: [http://www.loopycode.com/a-surprisingly-hard-problem-post-
co...](http://www.loopycode.com/a-surprisingly-hard-problem-post-
correspondence/)).

~~~
Locke1689
Even with one you may miss it, but you're _definitely_ going to miss it
without one.

------
billpg
"PS: The program should run in polynomial time. "

Is that optional?

(Maybe I've been reading too specs that reference RFC2119.)

~~~
snom370
Sure seems optional to me, he should have used must. :)

~~~
eru
And he did not say polynomial in what.

I can make the program run polynomial in the size of sum of the input numbers.
(I.e. pseudo-polynomial in the input.)

------
dLuna
"Hello, Easy job for me". This thing is hilarious.

~~~
olalonde
To be fair, the algorithm for solving this problem is trivial (but it doesn't
run in polynomial time). Still hilarious :D

~~~
suppressingfire
Since the post only specified polynomial _time_ and placed no constraint on
space, this is actually solvable (e.g., it's not too hard to come up with an
polynomial implementation that uses a number of VMs that grows exponentially
with the size of the set).

~~~
nitfol
In the real world, taking exponential space implies taking exponential time.
The fastest you can transmit information is the speed of light, so it will
take exponential time to communicate with the furthest pieces of your
exponentially large system.

~~~
suppressingfire
Depends on the problem and how you distribute data.

e.g., each node can generate its own subset to check, so you only need to
distribute the program and input. That can be done using a multicast tree of
some kind which brings distribution costs back down by a log.

~~~
dhume
But if you only have a finite amount of hardware available (which is probably
the case), each node's data set grows exponentially with input size.

If your node population increases exponentially with input size, you're still
running into the speed-of-light delay problem mentioned above (cube root of
exponential is still exponential). If your solution is polynomial time with
polynomially many nodes, your space cost is also polynomial.

------
gacba
You know, if that guy from Mumbai could actually solve P = NP for a cool
million, that's bargain. That is, if you get the rights to the solution. :D

------
olalonde
VinayDeolalikar: I think I have done this. <http://i.imgur.com/Oedd0.png>

------
moron4hire
Love the reply by one "PierreDeFermat"

~~~
reeses
I greatly appreciate that style of response over the "this is a joke, you
idiots!" style or the twee exaggerated response that accomplishes the same
end.

------
mattm
I can't remember much of the P/NP stuff from my comp sci university days.

Wouldn't this work? O(n * k)?

    
    
      <?php
    
      $input = array(-2, -3, 15, 14, 7, -10);
    
      $sums = array();
    
      foreach ($input as $val) {
    
        $i = 0;
        $count = count($sums);
        foreach ($sums as $sum => $bool) {
          if ($i >= ($count / 2)) {
            break;
          }
    
          $sums[$sum + $val] = true;
        }
    	
        $sums[$val] = true;
        if (array_key_exists(0, $sums)) {
          print "yes\n";
          break;
        }
      }

------
run4yourlives
This one pays better: <http://www.claymath.org/millennium/P_vs_NP/>

------
waqf
This is awesome. I will send him the program which runs every Turing machine
simultaneously on his problem instance, and checks the output of each to see
if it is a correct solution.

If he manages to prove that my submission doesn't solve his problem in
polynomial time, I'll refund his money, but I'll also send his proof on to the
Clay Institute.

~~~
swolchok
There are infinitely many Turing machines.

~~~
waqf
But there are only countably many Turing machines, and you only have to
evaluate countably many steps of each, so all you need is a counting of NxN.

~~~
swolchok
When do you accept? When do you reject? This is bogus, and can't even solve
problems in P in polynomial time.

~~~
waqf
You accept when you find a Turing machine that outputs something which turns
out to be the polynomial-time verifiable certificate for the NP problem.

You never reject, because the requirement was only to accept in polynomial
time. (If you prefer, you could reject in exponential time by exhaustive
search, of course.)

For another description see here:

[http://en.wikipedia.org/wiki/P%3DNP#Polynomial-
time_algorith...](http://en.wikipedia.org/wiki/P%3DNP#Polynomial-
time_algorithms)

------
QuantumDoja
What am I missing? I can see the solution for those 6 numbers {−2, −3, 15, 14,
7, −10} or is that the point, the more numbers you add, the longer it takes to
solve and p=np is that it should get all the answers instantly?

Confuzzled!

~~~
kd0amg
_I can see the solution for those 6 numbers {−2, −3, 15, 14, 7, −10}_

The program should be able to work on any set given by the user.

 _the more numbers you add, the longer it takes to solve and p=np is that it
should get all the answers instantly?_

The more numbers there are, the longer it takes. If and only if P=NP, there is
a solution which always finds the answer in polynomial time.

------
aw3c2
To be fair, the description is bad and misleading. The submitter probably knew
that the responses would miss that the input might be very (infinitely?) long.

------
cool-RR
Don't miss the bid by "VinayDeolalikar" below.

~~~
cstuder
Or the one by some dude called Fermat. Too bad he run out of space...

------
zv
Too bad I don't have user there. As requirements does not mention
computational time, the simple brute force approach would work.

