[英]Iterative deepening search using my DFS
我有一个DFS搜索,现在我正在尝试使用此DFS实现迭代加深搜索,但我真的不明白该怎么办。 我尝试了很多方法,但最终我发现这是错误的! 您是否有建议我应该做什么更改?
public void dfs()
{
Stack s=new Stack();
s.push(this.rootNode);
rootNode.visited=true;
printNode(rootNode);
while(!s.isEmpty())
{
Node n=(Node)s.peek();
Node child=getUnvisitedChildNode(n);
if(child!=null)
{
child.visited=true;
printNode(child);
s.push(child);
}
else
{
s.pop();
}
}
clearNodes();
}
好吧,让我们尝试一下。
您需要更改功能以限制搜索的深度。 为了防止较低级别的节点多次打印,我将仅以最大深度打印节点。
这给出:
public void ids(int limit)
{
for (int n = 1; n <= limit; ++n)
{
dfs(n);
}
}
public void dfs(int limit)
{
Stack s=new Stack();
s.push(this.rootNode);
rootNode.visited=true;
while(!s.isEmpty())
{
Node n=(Node)s.peek();
if (stack.size() == limit)
{
printNode(n);
s.pop();
} else {
Node child=getUnvisitedChildNode(n);
if(child!=null)
{
child.visited=true;
s.push(child);
}
else
{
s.pop();
}
}
}
clearNodes();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.