[英]Path finding algorithm with condition
我有三个Java模型类: Map
, Room
, Object
。 这些是使用JAXB从以下XML文件映射的:
<map>
<room id="1" name="Stairway" east="2"/>
<room id="2" name="Kitchen" north="4" south="3" west="1">
<object name="Hat"/>
</room>
<room id="3" name="Hallway" east="1" south="4">
<object name="Money"/>
</room>
<room id="4" name="Bathroom" south="2"/>
</map>
一个Map
包含Room
,一个Room
可以包含Object
。 每个Room
都有指示从那里可以到达其他Room
的属性(北/东/西/南)。
例如,从3号房出发的可能指示:
1号房 (东)
4室 (南)
还有一个单独的Object
列表,我们称它们为target 。
目标是“收集”所有目标 ,这意味着通过包含目标的Room
创建一条路径。
您可以将其视为具有节点( Room
)和边缘(通向另一个Room
北/东/西/南方向)的图形( Map
)。
public Route findRoute(Map map, Room startRoom, List<Object> targets) {
// walk through the map, find all targets
// once found them all return the route
}
因此,基本上,我正在寻找一种干净的方法/算法来创建通过该图的路径,其中每个节点都包含目标列表中的一个Object
。
我知道Dijkstra算法,但是我认为它不适合我的用例,因为我有一个必须满足的条件( Room
必须包含一个特定的Object
)。 其他的寻路算法很少,但我无法为我的特定问题找到解决方案。
任何帮助表示赞赏。
编辑:
任何路径都可以(最短路径是一个不错的选择,但不是强制性的),并且收集目标的顺序无关紧要。
这是一种粗略的方法:
据我了解,通过连接所有段形成的路径将满足您的要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.