我只想介绍Lance Helsten的出色答案:
深度限制搜索将搜索特定深度(称为长度L)内的特定节点,并在找到它时停止搜索。如果您在他的答案中查看Wiki链接中的伪代码,您将会理解:
DLS(node, goal, depth) {
if ( depth >= 0 ) {
if ( node == goal )
return node
for each child in expand(node)
DLS(child, goal, depth-1)
}
}
但是,对于您而言,从节点寻找长度为L的所有路径时,您将不会在任何地方停下来。因此,伪代码必须修改为:
DLS(node, depth) {
for each child in expand(node) {
record paths as [node, child]
DLS(child, depth-1)
}
}
在记录了DLS的连续嵌套中的所有单链接路径后,只需乘以它们的乘积即可获得整个路径。这些数量为您提供了从节点开始的所需深度的路径数量。