News for hackers. Stuff that matters.
Re:Using Hilbert Curves to 100% Zelda by ufo on Saturday July 22, 2017 @09:17PM (#14830404)
> There might also be better approaches than Hilbert Curves. For example, we could view it as an instance of the Traveling Salesman Problem with a couple of hundred points; it should be possible to have a good heuristic solution for that. On the other hand, a TSP solution doesn't necessarily only have short jumps, so it might not be that good?

TSP is actually very amenable to heuristics and state of the art branch-and-bound algorithms can often find optimal solutions even for instances with thousands of points.

Does anyone here know if there is a good open-source solver that we could throw this problem instance at?

Re:Using Hilbert Curves to 100% Zelda by modalduality on Saturday July 22, 2017 @09:34PM (#14830459)
The issue isn't about approximating a TSP instance, but ensuring that points aren't too far apart from each other, even at the cost of increasing total length.

I can't immediately think of a reduction that would factor this in so the best thing may be to just reduce this to the appropriate ILP instance and use a mixed ILP approximator like GLPK (or Gurobi is free for students too).

Incidentally, achieving a polynomially-sized ILP formulation for TSP isn't quite obvious. Wikipedia has a good explanation of how to do this: https://en.wikipedia.org/wiki/Travelling_salesman_problem#In.... I'm not sure if the metric TSP has a simpler formulation.

Edit: Now that I think about it, it may be difficult to express the constraint that edges should be balanced out in a linear way. I happened to write about a similar problem a while ago (https://modalduality.org/posts/optimizing-color-coding/), I ended up giving up on finding a linear formulation and went for sequential least squares instead.

Re:Using Hilbert Curves to 100% Zelda by Retric on Saturday July 22, 2017 @11:53PM (#14830818)
If you want to minimize the long distance walks add an exponential weight for distance then solve. There are many ways to go about this stuff, but the goal is to map your preferences to the weight function.
Re:Using Hilbert Curves to 100% Zelda by modalduality on Sunday July 23, 2017 @12:03AM (#14830849)
Right, but then the problem is no longer linear and approximating is more difficult. I'm not exactly sure what you mean by "exponential weight" in a linear program, do you have an example?
Re:Using Hilbert Curves to 100% Zelda by Retric on Sunday July 23, 2017 @02:33PM (#14833674)
I am not sure what your asking? Your just assigning constants for weights on each trip a>b = K1, a>c = K2.

I am saying you may map K1 as √((x1-x2)^2+(y1-y2)^2) to find least distance, but TSP allows for arbitrary constants. So remove the √ and long trips will be strongly avoided.

PS: As far as I know you can use any arbitrary set of constants then use a linear solver. Or am I forgetting about something?

Re:Using Hilbert Curves to 100% Zelda by Spivak on Sunday July 23, 2017 @12:27AM (#14830894)
So say you have a graph on distance, d, that you want to weight based on a preference, p, from 0-5 going from least preferred to most preferred.

You might make your weight function as w(d, p) = d * (2 ^ p)

Re:Using Hilbert Curves to 100% Zelda by modalduality on Sunday July 23, 2017 @01:52AM (#14831058)
That's fine, but `p` is a variable, not a constant, in the original post's case, right?
Re:Using Hilbert Curves to 100% Zelda by tgb on Sunday July 23, 2017 @05:32AM (#14831538)
That doesn't seem necessary. Picking a value of p just selects how much you prefer short hope to shorter total distance.
Re:Using Hilbert Curves to 100% Zelda by rlanday on Saturday July 22, 2017 @11:22PM (#14830741)
Concorde is open source and I believe holds the record for largest instance of TSP solved optimally (85,900 cities): http://www.math.uwaterloo.ca/tsp/concorde.html

Note that the licensing terms do restrict its free use to "academic research."

Re:Using Hilbert Curves to 100% Zelda by cyphar on Saturday July 22, 2017 @11:46PM (#14830800)
> Note that the licensing terms do restrict its free use to "academic research."

Then it is not "open source" (violates "No Discrimination Against Fields of Endeavor") nor is it free software (violates the freedom to use for any purpose). It's proprietary -- just because the source code is available doesn't make something "open source" nor does it make it free software.

Re:Using Hilbert Curves to 100% Zelda by nullc on Sunday July 23, 2017 @04:47AM (#14831437)
Unfortunately, such terms are ubiquitous in operations research.
Re:Using Hilbert Curves to 100% Zelda by cpitman on Sunday July 23, 2017 @09:37AM (#14832200)
OptaPlanner is an open source constraint satisfaction solver (https://www.optaplanner.org/). Here is an explanation of how it can be used to solve the Vehicle Routing Problem, closely related to TSP: https://www.optaplanner.org/learn/useCases/vehicleRoutingPro...
Re:Using Hilbert Curves to 100% Zelda by srean on Sunday July 23, 2017 @01:56AM (#14831070)
You might get a laugh out of the fact that Hilbert curves are used to approximate Euclidean TSP. If I remember correctly it yields a log n approximation where n is the number of cities.
Re:Using Hilbert Curves to 100% Zelda by Xcelerate on Sunday July 23, 2017 @11:13AM (#14832602)
> TSP is actually very amenable to heuristics and state of the art branch-and-bound algorithms can often find optimal solutions even for instances with thousands of points.

In own research (inverse problems related to signal recovery), I've noticed that a lot of NP-hard problems are actually easily solvable given that the data has some kind of structure to it. I know very little about computational complexity theory, but I've read some papers describing how there is often a phase transition where a high SNR puts the problem in P territory, but a sufficiently low SNR moves the problem moves to NP territory (but it's still solvable). Beyond the phase transition, a solution is information theoretically impossible. I wonder if most of these real world TSP problems actually lie in P, but I don't know how one would go about showing that. (I haven't performed a literature search, but I wouldn't be surprised if someone has already demonstrated this.)

Re:Using Hilbert Curves to 100% Zelda by drostie on Sunday July 23, 2017 @12:44PM (#14833119)
That's very unlikely to be true in general, as the proofs that a problem lives in NP usually have a very high signal-to-noise ratio -- i.e. in order to prove that solving this problem is at least as hard as solving an arbitrary boolean circuit, we need to find a subset of the problem which behaves like wires and boolean gates do, and the resulting "circuits" are very heavily structured.
Re:Using Hilbert Curves to 100% Zelda by cbhl on Saturday July 22, 2017 @11:47PM (#14830801)
If you wanted to guarantee you "only have short jumps", it would probably be good to consider that you can teleport to the top of the towers and hang-glide down from them (at the cost of some loading time) much more easily than climbing up a cliff.
Re:Using Hilbert Curves to 100% Zelda by Merovius on Sunday July 23, 2017 @02:23AM (#14831121)
Given that this wasn't about actually walking the map, but about just finding the locations still missing (and those locations where few and sparse), this really isn't necessary.

It would be, if you'd want to do a speedrun, though.

Re:Using Hilbert Curves to 100% Zelda by CamperBob2 on Saturday July 22, 2017 @10:50PM (#14830662)
TSP is actually very amenable to heuristics and state of the art branch-and-bound algorithms can often find optimal solutions even for instances with thousands of points.

With that many points, how do you prove that your solution is optimal?

Re:Using Hilbert Curves to 100% Zelda by modalduality on Saturday July 22, 2017 @11:04PM (#14830699)
Often in approximations you can prove an upper bound on the optimal solution, even if you don't know the optimal solution itself.

An easy example is by using duality when solving linear programs.

And sometimes your upper bound is close enough to what you already have so you can just say something like "well my solution gets 190 points, I have an upper bound of 190.5 points, and all point rewards are integral so I must have the optimal solution."

Re:Using Hilbert Curves to 100% Zelda by amalcon on Sunday July 23, 2017 @07:56AM (#14831842)
TSP (in the traditional sense of finding an optimal solution) is NP-complete, so (by definition of NP-complete) it's much easier to check a proposed correct answer than to find that answer.
Re:Using Hilbert Curves to 100% Zelda by CamperBob2 on Sunday July 23, 2017 @04:14PM (#14834151)
Hmm. So there's a polynomial-time method for verifying that you've found the shortest path in TSP, but not for finding it in the first place?
Re:Using Hilbert Curves to 100% Zelda by Merovius on Sunday July 23, 2017 @05:13PM (#14834433)
Yes. Crash-course complexity theory:

This is easy to understand with integer factorization: It is very hard to factor large integers. Yet, if I where to give you two numbers, it is very easy to verify that their product is the integer you where looking at. So factorization is easy to verify, but hard to do (side-note: This is an intentional illustrative simplification. Integer factorization is not known to actually be "hard" and it is not known whether "hard" is even a thing. See below).

And that's the definition of an NP problem: It has a polynomial time deterministic algorithm to verify a solution.

An NP-complete problem is a problem that is at least as hard as any NP problem. That is, if you have an algorithm for an NP-complete problem, you can take any NP problem, transform it efficiently into that problem, use your algorithm and transform the solution efficiently back. Thus, if you've solved an NP-complete problem efficiently, you can solve all NP problems efficiently. TSP is NP-complete. Whether or not Integer Factorization is NP-complete is unknown.

Lastly, there is the question of whether there are problems that are in NP (that is, have a polynomial algorithm to verify a solution) but not in P (that is, have a polynomial algorithm to find a solution). That's the famous P vs. NP question, which is currently undecided.