I agree we are disagreeing where the core of the issues are.
Sure it explodes pretty heavily. But if we are using constant cities then we could tailor about pattern and knowledge about the composite paths, we would essentially know them.
It is a different task to multiply two numbers together rathetr than to calculate 1234*5678. In order for the solution to the second question to be a valid solution to the first problem it needs to be insensitive to the specific numbers used. Timothy Johnsons main answer was about that no matter how hard the problem is is the scope of the instances to be covered is 1 then the answer will/can consist of the just the value without any actual computation being involved. For an interesting answer the computation aids on how the variations of the cases to be covered can be handled, how the digits of the numbers provided affects what calculations needed to be done to compute the product. But that has the character of scaling.
It might be useful to specify some of the effects that are specific. For instance:
Driving between a set of cities might be more Euclidean than the Traveling Salesman problem (which is more general).
In theory, it could be more difficult if driving costs are asymmetric. Perhaps in practice this would take the form of 1 or 2 roads which are closed for construction, which, by shaping the solution might make computation to find an optimal path faster.
Ditch the quest for the optimal path, say 3 times it in length is acceptable, and the problem gets easier.
If you’re talking about how in practice, the running time is a lot better than theory(’s worst case), then say that.
Note: I already responded to him directly about his reply to me.
The fact that the specific and general differ is unimportant to my point. You don’t have the answer to start with, and so you have to calculate it. The calculation is what computation is. You can’t just assume that you already know the answer, and claim that makes computing it trivial.
The cities being constant changes nothing in this discussion, since you still had to compute it before putting the answer in the lookup table, and knowing which cities it was is only a precondition, not an answer. Memoization (the technical term for keeping track of the intermediate results of your computation) is useful, but not a panacea.
If I am a programmer and I can do the calculation on the behalf of my program beforehand at compile time and avoid any runtime computation that is still significant. We can’t have the compute time include everything about understanding the question otherwise we need to include kindergarden time about learning what the word “city” means. Thus while “global compute” is inescapable we are proper to just focus on time spent after the algorithm has been designed and frozen in place.
Calculating at compile time is still obviously computation! Obviously, if you can, it is better to do so most of the time, but it is also irrelevant to the point. This isn’t something that simply takes a long time to calculate, but if you run it for a few hours or days when creating the program it can be recorded. You cannot, in fact, calculate this beforehand because it is computationally infeasible. (In some cases, where the heuristics mentioned earlier work well enough, it can be computed, but that relies on the structure of the problem, and still requires a lot of computation.)
Obviously, we are just talking past each other, so I’ll stop responding here.
I agree we are disagreeing where the core of the issues are.
Sure it explodes pretty heavily. But if we are using constant cities then we could tailor about pattern and knowledge about the composite paths, we would essentially know them.
It is a different task to multiply two numbers together rathetr than to calculate 1234*5678. In order for the solution to the second question to be a valid solution to the first problem it needs to be insensitive to the specific numbers used. Timothy Johnsons main answer was about that no matter how hard the problem is is the scope of the instances to be covered is 1 then the answer will/can consist of the just the value without any actual computation being involved. For an interesting answer the computation aids on how the variations of the cases to be covered can be handled, how the digits of the numbers provided affects what calculations needed to be done to compute the product. But that has the character of scaling.
It might be useful to specify some of the effects that are specific. For instance:
Driving between a set of cities might be more Euclidean than the Traveling Salesman problem (which is more general).
In theory, it could be more difficult if driving costs are asymmetric. Perhaps in practice this would take the form of 1 or 2 roads which are closed for construction, which, by shaping the solution might make computation to find an optimal path faster.
Ditch the quest for the optimal path, say 3 times it in length is acceptable, and the problem gets easier.
If you’re talking about how in practice, the running time is a lot better than theory(’s worst case), then say that.
Note: I already responded to him directly about his reply to me.
The fact that the specific and general differ is unimportant to my point. You don’t have the answer to start with, and so you have to calculate it. The calculation is what computation is. You can’t just assume that you already know the answer, and claim that makes computing it trivial.
The cities being constant changes nothing in this discussion, since you still had to compute it before putting the answer in the lookup table, and knowing which cities it was is only a precondition, not an answer. Memoization (the technical term for keeping track of the intermediate results of your computation) is useful, but not a panacea.
If I am a programmer and I can do the calculation on the behalf of my program beforehand at compile time and avoid any runtime computation that is still significant. We can’t have the compute time include everything about understanding the question otherwise we need to include kindergarden time about learning what the word “city” means. Thus while “global compute” is inescapable we are proper to just focus on time spent after the algorithm has been designed and frozen in place.
Calculating at compile time is still obviously computation! Obviously, if you can, it is better to do so most of the time, but it is also irrelevant to the point. This isn’t something that simply takes a long time to calculate, but if you run it for a few hours or days when creating the program it can be recorded. You cannot, in fact, calculate this beforehand because it is computationally infeasible. (In some cases, where the heuristics mentioned earlier work well enough, it can be computed, but that relies on the structure of the problem, and still requires a lot of computation.)
Obviously, we are just talking past each other, so I’ll stop responding here.