Algorithm 什么*变体包括附加限制
通常情况下,您希望以最小的成本从A转到B,但是成本旁边的每个链接都有一些您可以购买/收集的项目 不是真正的口袋妖怪玩家,但用这个主题来更好地解释,你想从家里到健身房,沿着最短的路线,在路上捡起至少一件物品 我可以用*解出最短路径。我怎样才能包括传统的限制,或者我应该使用不同的算法 我在考虑使用起始成本,所以当你找到物品时,你会降低成本,当你旅行时,你会增加成本。并尝试接近0 我考虑的另一个选择是尝试找到覆盖所有项目的路径。然后用A*表示该子集。但不确定什么算法可以解决这个问题 我会用一个。通常将节点标记为已访问,以便每个节点只访问一次。但是对于这个问题,您需要跟踪找到的物品和行驶的距离。因此,可以使用不同的项目集多次访问每个节点 使用您的示例,让我们为项目指定标签Algorithm 什么*变体包括附加限制,algorithm,shortest-path,a-star,traveling-salesman,Algorithm,Shortest Path,A Star,Traveling Salesman,通常情况下,您希望以最小的成本从A转到B,但是成本旁边的每个链接都有一些您可以购买/收集的项目 不是真正的口袋妖怪玩家,但用这个主题来更好地解释,你想从家里到健身房,沿着最短的路线,在路上捡起至少一件物品 我可以用*解出最短路径。我怎样才能包括传统的限制,或者我应该使用不同的算法 我在考虑使用起始成本,所以当你找到物品时,你会降低成本,当你旅行时,你会增加成本。并尝试接近0 我考虑的另一个选择是尝试找到覆盖所有项目的路径。然后用A*表示该子集。但不确定什么算法可以解决这个问题 我会用一个。通常
A for 200 poke balls
B for lure module
C for incense
D for egg
和节点
S for the start node
T for the top node
M for the middle node
L for the lowest node
Z for the end node
假设所有路径的成本相等,且成本为1
问题从{S::0}
开始,这意味着节点S没有项目,距离为0。然后将{T:C:1}
,{M:A:1}
和{L:BD:1}
排队
在{T:C:1}
中,您排队{S:C:2}
,{M:BC:2}
和{Z:BCD:2}
当您从队列中拉出{S:C:2}
时,您会注意到节点T已经有了距离为1的项C,因此您不排队{T:C:3}
。但是您将对{M:AC:3}
和{L:BCD:3}
进行排队
最后你会发现{Z:ABCD:n}
,其中n
是一段距离 我会用一个。通常将节点标记为已访问,以便每个节点只访问一次。但是对于这个问题,您需要跟踪找到的物品和行驶的距离。因此,可以使用不同的项目集多次访问每个节点
使用您的示例,让我们为项目指定标签
A for 200 poke balls
B for lure module
C for incense
D for egg
和节点
S for the start node
T for the top node
M for the middle node
L for the lowest node
Z for the end node
假设所有路径的成本相等,且成本为1
问题从{S::0}
开始,这意味着节点S没有项目,距离为0。然后将{T:C:1}
,{M:A:1}
和{L:BD:1}
排队
在{T:C:1}
中,您排队{S:C:2}
,{M:BC:2}
和{Z:BCD:2}
当您从队列中拉出{S:C:2}
时,您会注意到节点T已经有了距离为1的项C,因此您不排队{T:C:3}
。但是您将对{M:AC:3}
和{L:BCD:3}
进行排队
最后你会发现
{Z:ABCD:n}
,其中n
是一段距离 @MooingDuck可以提供一些例子吗?链接或文档都可以。我的想法很傻,它的工作原理是假设你通常在几次尝试后就能找到它们,我认为a*启发法需要低估,所以添加是无效的。忽略我说的话。@MooingDuck是的,除非你能找到一个可接受的启发式方法来正确地确定优先级,否则A*甚至不适用于这个问题。事实上,如果选择了一个不好的启发式,a*就变成了一个非常慢的BFS。慢是因为它使用了优先级队列而不是简单队列,慢是因为它浪费了计算启发式的时间。@MooingDuck可以提供一些例子吗?链接或文档都可以。我的想法很傻,它的工作原理是假设你通常在几次尝试后就能找到它们,我认为a*启发法需要低估,所以添加是无效的。忽略我说的话。@MooingDuck是的,除非你能找到一个可接受的启发式方法来正确地确定优先级,否则A*甚至不适用于这个问题。事实上,如果选择了一个不好的启发式,a*就变成了一个非常慢的BFS。慢是因为它使用优先级队列而不是简单队列,慢是因为它浪费了计算启发式的时间。BFS比*慢得多。BFS比*慢得多。