【发布时间】:2016-09-27 17:35:52
【问题描述】:
今天遇到一个我无法解决的问题。
一位经常旅行的人收集了他所有的旅行票。 一张票只有 2 个属性,Start Journey Location name 和 Destination Name。从德里到纽约的例子。 在年底,旅行者将所有的票放在一起,并尝试绘制他全年的旅程图。以可读的格式打印他可能的旅行路线。他不记得他的起始位置。他可以多次访问一个位置,也可以多次往返于一个地方。
最初我认为它可以通过制作一个图(票证-A 到 B 表示有向边 A->B)并使用从入度为 0(??)的节点的简单深度优先遍历来简单地解决。但后来我意识到这不是获得解决方案的正确方法,因为它可以打印随机未连接的路线。
请提出正确的方法。
【问题讨论】:
-
搜索“欧拉路径”
-
如果我们假设所有旅行都有一张相关的机票(即他没有飞到芝加哥,然后开车到纽约并飞到波士顿),那么如果他从 A 飞到 B,下一个旅程必须从 B 开始。保持该限制将阻止您创建随机的、未连接的路径。
-
@JimMischel 假设我们目前在城市 B 并且有很多票涉及 B 作为目的地(a1-b,a2-b,a3-b...)以及来源(b- c1,b-c2,b-a1,...) 现在如何判断,在城市 B 上,先走哪条路径将导致一条连接的路线(连接意味着终点和起点应该始终保持不变)。
-
@DeepankarSingh:我只是告诉你如何避免随机的、未连接的路由。对我来说,剩下的工作听起来像是一个动态编程问题。
标签: algorithm data-structures graph-algorithm