【发布时间】:2014-09-04 19:35:12
【问题描述】:
我正在尝试使用图形数据库解决增强的 TSP 问题,但我很挣扎。我对 SQL 很擅长,但对 cypher 完全是个菜鸟。我创建了一个包含城市(节点)和航班(关系)的简单图表。
设置:以最低的总飞行成本前往 8 个不同的城市(每周 1 个城市,无重复)。我正在尝试解决一个最佳路径,以尽量减少每周变化的航班成本。
Here is a file on pastebin 包含我的节点和关系。只需针对 Neo4JShell 运行它即可插入数据。
我开始使用 this article 作为基础,但它不能处理不断变化的距离(或者在我的情况下是飞行成本)
我知道这在语法上很糟糕/不可执行,但这是我到目前为止所做的只获得两个航班;
MATCH (a:CITY)-[F1:FLIGHT{week:1}]->(b:CITY) -[F2:FLIGHT{week:2}]->(c:CITY)
RETURN a,b,c;
但这并没有运行。
接下来,我以为我会尝试从第一周开始查找所有城市和航班,但它也无法正常工作,因为我得到了第 1 周和 =1 的航班
MATCH (n) WHERE (n)-[:FLIGHT { week:1 }]->() RETURN n
有人可以帮忙吗?
PS - 我不喜欢使用图形数据库来解决这个问题,我刚刚读过它们,并认为它很适合尝试它,另外给了我一个与它们合作的理由,但是所以到目前为止,我没有太多(或任何)成功。
【问题讨论】:
-
我已将 David 的回答标记为已接受的解决方案。我希望使用 Neo4J,但听起来我需要研究 IP 求解器。经过更多的研究,Neo4J 可能更擅长建模这种类型的关系问题,但它的计算能力仍然不足以解决 NP 难题,比暴力破解更好。
标签: algorithm neo4j cypher traveling-salesman