问题标签 [iterative-deepening]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
artificial-intelligence - 深度受限搜索 - 逻辑 - 我们如何停止回溯?
寻找一些逻辑建议。我正在运行深度受限搜索,以便从开始状态到结束状态。我正在扩展深度 > 0 包括源节点的每个节点的所有可能移动(这就是问题所在)。
我尝试存储以前的状态并将其作为不扩展的条件。但是,这也否定了其他扩展分支通过这种状态的能力。
从逻辑的角度来看,我怎样才能避免这个问题,同时避免倒卖?
@acelent 评论(这里)给了我一个想法来创建一个 configDepth 类,它存储每个访问状态及其相应的深度。然后在下一个递归中 -
您对此解决方案有何看法?我走上了许多死胡同,需要新的意见和想法。
谢谢你。
java - 迭代深化搜索Java实现
我一直在尝试在 Java 中实现迭代深化搜索。但是,由于某种原因,并不是每个节点的所有子节点都被访问,导致结果不正确。到目前为止,这是我的代码:
c++ - 实现迭代深化深度优先搜索
我正在使用维基百科页面中的以下伪代码来实现对图形的迭代加深深度优先搜索
这是我的代码:
我正在使用下图进行测试:
它是从以下文件构建的:
调用IDDLS(graphe, "J", 4)
输出如下:
就这样。
调用DLS(graphe, "A", "J", 4)
输出以下内容(已删除换行符):
据我了解,DLS 函数实际上应该遵循以下路径:
graph - 迭代深化搜索的复杂性
我看到一个关于“迭代深化深度优先搜索”的问题,我无法回答。如果它存在,我很抱歉。
问题:当使用图而不是树时,IDS 的复杂性如何变化?
谢谢!
graph - 如何存储从迭代深化深度优先搜索中找到的路径
我正在尝试使用数组来存储从迭代深化深度优先搜索算法中找到的路径。
我有 N 个顶点,我想通过数组 pathTo[N] 存储从顶点 X 到顶点 Y 的路径,其中 pathTo[W] = V 意味着将从节点 V 访问节点 W,即 V 是 dfs 树中 W 的父节点. (因此,通过从 N 追溯父母,我们可以找到通向 N 的路径。)
谁能帮我用伪代码实现它?我会尝试从中学习。
我已经尝试阅读有关此问题的其他帖子,但我仍然无法理解。
clips - CLIPS LHS 绑定变量
我正在尝试编写一个使用迭代深化算法来解决规划问题的 CLIPS 程序。出于同样的原因,我想保持较低的分支因子。
在下面的代码?s
中是代表树级别的变量;我想使用一个规则来进行不同的检查。这就是我试图做的:
显然它不起作用。我想使用and
LHS 中单个 's 的布尔值将一些事实断言到规则的 RHS 中。
我怎样才能做到这一点?有任何想法吗?
time-complexity - 如何在给定时间和深度的情况下找到分支以进行迭代深化?
我的教授提出了以下问题,我真的不知道如何开始解决这个问题。任何帮助都非常受欢迎。
让树的空间是一棵具有统一分支 b 的树(每个节点正好有 b 个子节点)。我们正在通过迭代深化探索空间,从树的根开始。程序在 0.2 秒内找到深度为 3 的第一个解,并在 10 秒内找到深度为 5 的下一个解。我们知道第三个解决方案在深度 9。估计我们可以预期程序需要多少时间才能找到第三个解决方案。
algorithm - 人工智能:IDA* 搜索的时间复杂度
我正在研究知情搜索算法,对于迭代深化 A* 搜索,我知道空间复杂度为 O(d),其中 d 是最浅目标节点的深度。我试图找出它的时间复杂度是多少,但我无法在在线资源上找到任何关于它的确切信息。IDA* Search 的确切时间复杂度是否未知?任何见解都值得赞赏。
artificial-intelligence - 如何在游戏中使用转置表提高性能?
我已经在我的游戏中使用 alpha-beta 修剪实现了迭代深化,我还添加了一个转置表来存储已经评估过的棋盘。
现在,我正在执行以下操作:
- 运行迭代深化时,在 depth = 0 时,它会评估所有位置并将其分数存储在 TT 中。
- 现在,当它以深度 = 1 重新运行时。如果它存在于 TT 中,我只需返回板的值。这会在深度 = 0 处停止算法,因为深度 = 0 板的所有值都已经在 TT 中。
如果我在达到深度限制时从 TT 返回值,例如。depth = MAX_DEPTH 那么大的子树将永远不会被切割。
所以,我不明白我应该如何重新使用存储在 TT 中的值来让我的游戏更快?