我创建了一个由旅行商问题衍生而来的谜题,我称之为 Trace Perfect。
它本质上是一个带加权边的无向图。目标是使用最小权重在任何方向上至少遍历每条边一次(与目标是使用最小权重访问每个顶点的经典 TSP 不同)。
作为最后的扭曲,一条边被分配了两个权重,一个用于每个遍历方向。
我每天都会创建一个新的拼图实例并通过 JSON 接口发布它。
现在我知道 TSP 是 NP 难的。但我的拼图通常只有少量的边和顶点。毕竟,它们需要是人类可以解决的。因此,具有基本优化的蛮力可能就足够了。
我想开发一些(Javascript?)代码,从服务器检索谜题,并在合理的时间内用算法解决。此外,它甚至可以将解决方案发布到服务器以在排行榜中注册。
我已经在服务器上使用我的后端 Java 模型在 Java 中为它编写了一个基本的蛮力求解器,但是代码太胖并且如预期的那样很快耗尽了堆空间。
Javascript求解器是否可行且可行?
JSON API 很简单。您可以在以下网址找到它:http ://service.traceperfect.com/api/stov?pdate= 20110218 其中 pdate 是 yyyyMMdd 格式的拼图日期。
基本上一个谜题有很多行。每条线有两个顶点(A 和 B)。每条线有两个权重(当遍历 A -> B 时为 timeA,当遍历 B -> A 时为 timeB)。这应该是构建图形数据结构所需的全部内容。JSON 对象中的所有其他属性都用于视觉目的。
如果您想熟悉这个谜题,可以通过http://www.TracePerfect.com/上的 Flash 客户端播放它
如果有人对自己实现求解器感兴趣,那么我将发布有关将解决方案提交到服务器的 API 的详细信息,这也很简单。
感谢您阅读这篇冗长的帖子。我期待听到您对此的看法。