> I don't claim to have solved P=NP
> nor do I claim to have an algorithm.
But you know someone who claims to be able to solve subset-sum problems quickly. I have a graph to 3-color, I wonder if I should convert it into a subset-sum problem for them to solve. That would take some time, and I'm pretty sure it won't be worth it. I'll have a think. > The word "theoretical" was only used
> to distinguish between problems and
> instances.
OK, noted. > The question is,
> "Solving which instances, in which order,
> would lead to the most positive outcomes?",
> where "positive outcomes" is intentionally
> ill-defined so that the answerer can inject
> their own perspective as well.
Now I'm starting to get some idea of what you're asking. Give me some time (I'm about to go into a string of meetings) and I'll see if I can phrase it differently to see if I really do know what you're asking. > I think the question is also interesting
> because people often talk about how great
> the world would be if P=NP and we could
> easily solve NP problems.
Actually, people mostly talk about how the world would be much better if NP != P. > However, this talk is typically only
> "theoretical" (about problems and not
> instances).
Of course - people are researching how to solve the problems, specific instances are specific instances, whereas the research challenge is algorithms for the problem. > If someone can claim the world would
> be better off with faster solutions,
> they should be able to provide an
> instance whose solution would lead
> to a better world.
Why? Often we don't know the true benefits of an advance in science or technology until well after it's done, dusted, commercialized, and in the hands of ordinary people. Given that there currently are no ways to solve big, hard instances of NPC problems, why should people bother to find specific instances?I know I've seen some arguments stating as such. If you know of a well-founded one, I'd be interested in reading it. Personally, I don't know or have a strong opinion. Seems like either could be viewed as "better" in some way.
>But you know someone who claims to be able to solve subset-sum problems quickly. I have a graph to 3-color, I wonder if I should convert it into a subset-sum problem for them to solve. That would take some time, and I'm pretty sure it won't be worth it. I'll have a think.
Well, I actually wrote up some tests for him and he ran his algorithm against it. I also gave him a ~10MB text file containing a very large list of integers (I forget the range at the moment. I could find it if you'd like, but I'm not sure how meaningful it is.) with a randomly selected target sum. He provided the solution (which I have not verified) in ~6-9 months. He also ran through many thousands of problem instances (subset sum...in JSON arrays) with varying parameters (number of integers; range of integers) over the course over several days. I made a rudimentary plot of the parameters and timings and in my very limited analysis, it did appear that there was a sub-exponential trend (at least for the instances that he provided solutions to [:)]).
I've been searching for the results (all instances, solutions, and timings) that I had collected from the test machine, but I haven't been able to find them yet. However, all of the test code is on GitHub and packaged into Docker containers for easy deployment of the test server and basic visualization of the results. I'd guess he (the person who claims a P=NP proof and sub-exponential-time subset sum solver) would be willing to run his algorithm against the test server again.
>> Actually, people mostly talk about how
>> the world would be much better if NP != P.
> Seems like either could be viewed as
> "better" in some way.
Indeed, it depends on your internal axioms about "better". I don't have strong feelings either way either, and my feelings don't affect what's true and what isn't. The problem is open, remains open, and we deal with what's in front of us. >> But you know someone who claims to be
>> able to solve subset-sum problems quickly.
> ... He also ran through many thousands
> of problem instances ... with varying
> parameters ... it did appear that there
> was a sub-exponential trend ...
Unfortunately that means exactly nothing. The whole point is that for many (perhaps most) problems, the proportion of hard instances gets vanishingly small, and yet those are the ones that we often need to solve. Showing a sub-exponential trend for randomly chosen instances, or worse, instances he's chosen to show you, is no evidence at all. >> I have a graph to 3-color, I wonder if
>> I should convert it into a subset-sum
>> problem for them to solve.
> I'd guess he (the person who claims a
> P=NP proof and sub-exponential-time
> subset sum solver) would be willing
> to run his algorithm ...
Perhaps that would be interesting. I'll look into how easy the conversion might be.I wouldn't say exactly nothing. If no one can present an algorithm than can do at least as good on the same instances...that's interesting.
He did not choose the instances. They were generated using multiple calls to a built-in pseudo-random function. The instances were generated when he requested an instance and the timer started when the instances were transmitted to him. The timer was stopped when a response was received and the response was then verified. He never submitted an incorrect answer.
[Aside: There is a particular web page of a university professor that lists a smallish subset sum problem and claims that the naive algorithm would take some 10^large_number years to find the answer. His algorithm solves that particular instance in some very short period of time (seconds or less I believe). Is that particular instance "hard"? I don't know. Apparently not.
He likes to use that instance as an example of his algorithm solving a "hard" problem. My problem is that I don't know how to verify if an instance is hard (or if such an analysis is even possible/valid). My instincts say that it very much depends on the "density of solutions" in the particular instance. Maybe that instance has lots of solutions and so a random walk will easily find one? On the other hand, maybe there is a limit to the number of solutions that can exist in a well-formed instance?]
While I do not understand his entire proof (and I do believe he has intentionally withheld a portion of the proof [and certainly a key piece of the algorithm (if it exists)]), he does point to some interesting things (such as an apparent fractal pattern in the sum of all sets in the powerset of a set of integers). He claims a function that provides an ordering over the sums of the sets in the powerset, which can apparently be computed on-demand in polynomial time of the original set. A binary search is then applied over the ordering.
In my own theory, it seems like it could be possible; after all, there isn't an exponential number of items, only combinations.
>The whole point
Sorry, the whole point of what? NP-Completeness?
>> Showing a sub-exponential trend for
>> randomly chosen instances ... is no
>> evidence at all.
> If no one can present an algorithm
> than can do at least as good on the
> same instances...that's interesting.
It proves nothing about whether it's a polynomial algorithm, or even a sub-exponential algorithm. > He did not choose the instances. They
> were generated using multiple calls
> to a built-in pseudo-random function.
Even worse - you know nothing about how the instances were created, or whether they are supposed to be hard. Does this magic function claim to produce known hard instances? > ... a particular web page ... that
> lists a smallish subset sum problem
> ... claims that the naive algorithm
> would take some 10^large_number years
> to find the answer. His algorithm
> solves that particular instance in
> some very short period of time ...
> Is that particular instance "hard"?
> I don't know. Apparently not.
Indeed - apparently not.This entire discussion is running in circles. You keep feeding me small pieces of information, one piece at a time, and it's not adding up to anything convincing. At this point I feel the discussion is going nowhere.
> ... I don't know how to verify if an
> instance is hard ...
Largely speaking no one does, which is why we require proofs of worst case running times. Proofs are difficult, and to present a proof requires full disclosure of the entire algorithm.To expend effort on such a proof some evidence is required to make it likely to be worthwhile. To say:
I found this place that gives
me instances, and I solve them
all quickly.
... is unconvincing. > My instincts say that it very much
> depends on the "density of solutions"
> in the particular instance. Maybe
> that instance has lots of solutions
> and so a random walk will easily find
> one?
Or maybe every obvious choice you make is the right one. Hard instances are hard when you have to make choices early, and you only find out much later that the choice you made was wrong. That's what creates the exponential search space. > On the other hand, maybe there is a
> limit to the number of solutions that
> can exist in a well-formed instance?
Number of solutions to an instance is not usually a good measure, unless there are exponentially many. Usually there aren't. > While I do not understand his entire
> proof (and I do believe he has
> intentionally withheld a portion of
> the proof [and certainly a key piece
> of the algorithm (if it exists)]),
Making it impossible to provide an effective evaluation ... > ... he does point to some interesting
> things (such as an apparent fractal
> pattern in the sum of all sets in the
> powerset of a set of integers).
That seems to be a meaningless comment without more information. > He claims a function that provides an
> ordering over the sums of the sets in
> the powerset, which can apparently be
> computed on-demand in polynomial time
> of the original set. A binary search
> is then applied over the ordering.
Again, doesn't seem to mean much. Feels a lot like simple dynamic programming. > In my own theory, it seems like it
> could be possible; after all, there
> isn't an exponential number of items,
> only combinations.
But it's the combinations that need to be searched, not simply the items. There are only a linear number of vertices in graphs, and at most a quadratic number of edges, and yet that's NP-Complete. >>>> But you know someone who claims to be
>>>> able to solve subset-sum problems quickly.
>>> ... He also ran through many thousands
>>> of problem instances ... with varying
>>> parameters ... it did appear that there
>>> was a sub-exponential trend ...
>> Unfortunately that means exactly nothing.
>> The whole point is that for many (perhaps
>> most) problems, the proportion of hard
>> instances gets vanishingly small,
> Sorry, the whole point of what? NP-Completeness?
No, the whole point of my comments to you. Let me summarize:* You know someone who claims to have a sub-exponential solution to the Subset Sum problem.
* The evidence provided is that over a large collection of instances, the solution time seems to be sub-exponential.
* The difficulty is that to be a solution to P=NP you need an algorithm that runs sub-exponentially on all cases.
* Most instances are easy, but you/he need to show that the algorithm runs sub-exponentially on all instances, not just the easy ones.
* The whole point of all my comments is that claiming sub-exponential running time on specific examples/instances is no proof, and poor evidence.
I generally agree with all of that and I don't think I have made a claim that contradicts your summary.
I haven't re-read this entire thread in awhile, but I believe you came into this seeking a clarification to what I was asking on a different thread. The reason it might seem like I am only piecing you pieces of information is that I am just responding to your questions and points as I perceive them to be related to my memory of what that thread was about.
If the search space is finite for problems of a certain length [it is], you may be able to uniformly sample from the instance space of a given problem and attempt to derive a statistical characterization of a given algorithm.
I do not now if iteratively sampling integers from a uniform distribution is the "best" way to search the space, but it seems like it would give you a reasonable/interesting map of a particular area. The only intent of the exercise was to explore.
To a part of your point:
>Most instances are easy, but you/he need to show that the algorithm runs sub-exponentially on all instances, not just the easy ones.
Absolutely, a proof requires showing all instances can be solved by a single [deterministic (non-non-deterministic) [etc....insert your own word here]] algorithm in polynomial time of the length of the instance (Edit: On second read, I might change this to 'problem' [which may need to be distinguished from Problem]).
I have not seen that, so I do not claim or claim to know of any P=NP proof.
>The whole point of all my comments is that claiming sub-exponential running time on specific examples/instances is no proof, and poor evidence.
The point of my question was to get instances (simulated or real) to feed to this person's algorithm to see it could actually solve problems people want solved quicker/much quicker than competing algorithms. Additionally, I am interested in the topic more generally and was looking for speculation on which problems (and instances) might be the most "beneficial" (as defined in our conversation) to solve (ie. give to a hypothesized solver that you trust to solve in a given polynomial time of the length of the problem).
Since it is impractical to search the entire instance space for problems of larger than some smallish length, you may test an algorithm with a specifically [Aside: I believe this may be implied by 'algorithm'...though the halting problem may prevent such arbitrary analysis of running times...] claimed polynomial limit on the running time. Any (hypothesized) P=NP exploiting solver would (speculative) make a polynomial-time running claim that could be tested.
I don't know what running-time limits he has put on his algorithm. It is one of the reasons I am skeptical of his proof.
> If the search space is finite for problems
> of a certain length [it is], you may be able
> to uniformly sample from the instance space
> of a given problem and attempt to derive a
> statistical characterization of a given
> algorithm.
I'm not sure what you're referring to about the search space, but the detail isn't important - what you say here is not the case. When dealing with NPC problems, the instances form a landscape that's not like rolling hills, but like a mesa with wells and flagpoles. Most of the time you wander around, broadly speaking at the same level, and then you might, if you're unbelievably lucky, fall down a well, or find a flagpole to climb. But this becomes implausibly difficult as the sizes get properly big.Sampling the space just doesn't work.
> I do not know if iteratively sampling integers
> from a uniform distribution is the "best" way
> to search the space, but it seems like it would
> give you a reasonable/interesting map of a
> particular area. The only intent of the
> exercise was to explore.
Doesn't work. Our intuition tends to be drawn from our experience in three dimensions, but it just doesn't work in higher dimensions. And with NPC problems we are in huge numbers of dimensions - thousands, tens of thousands.Here's a link: http://www.penzba.co.uk/cgi-bin/PvsNP.py?SpikeySpheres
>> The whole point of all my comments
>> is that claiming sub-exponential
>> running time on specific examples/
>> instances is no proof, and poor
>> evidence.
> The point of my question was to get
> instances (simulated or real) to
> feed to this person's algorithm ...
Yes, I think I finally understand your question. My intention is to blog the question using my working and a hypothetical context. Before I make it public and I can get your comments, but you still haven't given me an email address. If you don't, I'll have to do it here. > Since it is impractical to search
> the entire instance space for problems
> of larger than some smallish length,
> you may test an algorithm with a
> specifically ... claimed polynomial
> limit on the running time. Any
> (hypothesized) P=NP exploiting
> solver would (speculative) make a
> polynomial-time running claim that
> could be tested.
I don't think that makes sense, so obviously I've missed something. I don't understand what you mean by a "P=NP exploiting solver". I don't see how a solver would exploit P=NP - that doesn't make sense to me. > I don't know what running-time limits
> he has put on his algorithm. It is
> one of the reasons I am skeptical of
> his proof.
This doesn't make sense to me either. In a proof one shows that the time taken is always less than some limit, regardless of the input. One doesn't talk about having a running-time limit - that seems irrelevant to the entire question.If you send me an email I'll point you at my post when I write it and before I publish it, so you can comment.
The word "theoretical" was only used to distinguish between problems and instances.
The question is, "Solving which instances, in which order, would lead to the most positive outcomes?", where "positive outcomes" is intentionally ill-defined so that the answerer can inject their own perspective as well.
Imagine you can solve any NP-complete instance of a given size (even with a P-time/space algorithm there would still be limits on the size of problem that could be solved in a given time with a given machine). Sure, maybe you could break most crypto-systems and seize control of very electronic bit of currency (why wait for someone to decide to give it to you?). It's not clear to me that would necessarily be a productive use of the algorithm.
Instead, I'm looking for instances where a solution would directly lead to less suffering. For example, with a given sub-optimal route, drivers must spend X amount of time. With the optimal route, drivers only spend X - Y time.
>Is that what you're asking?
Not exactly. While it would be nice to have a scheme for validating algorithms and I would have some use for it, I'm actually more interested in the instances that need solving.
I think the question is interesting in that it could provide a base of problems for researchers to play/test with. These problems have been developed in the literature, but as far as I know, there is no easy to access repository of them.
I think the question is also interesting because people often talk about how great the world would be if P=NP and we could easily solve NP problems. However, this talk is typically only "theoretical" (about problems and not instances). If someone can claim the world would be better off with faster solutions, they should be able to provide an instance whose solution would lead to a better world.