首页 文章

完全迭代深化深度优先搜索

提问于
浏览
1

在那一刻,我有一个看起来有点像这样的物体 .

C#
public class Step {
  int id;
  List<Step> nextSteps;
}

我试图将它转换为另一个看起来非常相似的对象,除了它不允许循环这一事实 .

它应该通过不扩展已经出现在更高深度的节点的子节点来处理循环 . 迭代深化解决了这个问题(深度优先搜索实现但是广度优先搜索顺序),但我正在努力使用以下结构的实现 .

我发现的所有实现都依赖于找到某种目标节点,而我需要扩展整个树 .

任何帮助,将不胜感激 . :d

1 回答

  • 1

    添加 Dictionary<Step, int> ,每次展开节点时,添加其深度 .

    void ExpandStep(Step s, int d)
    {
        int prevDepth;
        if (lookup.TryGetValue(s, out prevDepth) && prevDepth <= d)
          return;
        lookup.Add(s, d);
        ... 
    }
    

相关问题