这就是问题:
我有 n 个点 (p1, p2, p3, .. pn),每个点都可以以确定的成本 x 连接到任何其他点。
每个点都属于一组点类型中的一个(例如“A”“B”“C”“D”......)。
该方法的输入是我要遵循的路径,例如“ABCADB”。
输出是连接我在输入中给出的类型的点的最短路径,例如“p1-p4-p32-p83-p43-p12”,其中 p1 是 A 型,p4 是 B 型,p32 是 C-型,p83 为 A 型,p43 为 D 型,p12 为 B 型。
“简单”的解决方案包括计算所有可能的路径,但计算成本非常高!
有人能找到更好的算法吗?
正如我在标题中所说,我不知道它是否存在!
更新:
阻止我使用 Dijkstra 和其他类似算法的关键是我必须根据类型链接这些点。
作为输入,我有一个类型数组,我必须按该顺序链接。
这是 Kent Fredric 的图片(非常感谢),它描述了初始情况(红色允许链接)!
一个真实的例子:
一个人早上想去教堂,下午去餐馆,最后去博物馆。
地图上有 6 座教堂、30 间餐厅和 4 座博物馆。
他希望教堂-休息-博物馆的距离尽可能小。