关于广度优先搜索生成的节点数量需要更多信息

我刚开始学习人工智能,正在阅读Peter Norvig的书。我已经查看了这个问题广度优先搜索生成的节点数量是多少?。答案中提到,如果我们在选择节点进行扩展时对每个节点应用目标测试,那么节点数量为1 + b + b^2 + b^3 + … + b^d + (b^(d+1) – b)。但是,如果我的目标状态是最终深度的叶节点,那么在目标之后就没有深度了。那b^(d+1)该如何计算呢?例如,在最大深度为3的树中,如果我的目标位于深度3,那么当没有第4层时,如何计算b^(3+1)呢?请解答我的疑惑,提前感谢!


回答:

请注意,你链接的答案提到的是在最坏情况下生成的节点数量。

生成意味着并非所有这些节点都会被测试以查看它们是否是目标;它们只是被生成并存储,以便在目标尚未找到的情况下最终与目标进行比较。

最坏情况有两个重要的含义。试着想象广度优先搜索从左到右进行,然后向下一层,再从左到右,然后再向下,等等。在最坏情况下,我们假设无论目标位于哪个深度层d,目标都是最右边的节点。这意味着它左边的所有节点都会与目标节点进行比较,并且它们的任何后继/子节点也会被生成。

我知道你说在你的情况下,在深度层d以下没有节点,但说最坏情况的第二个含义是我们假设基本上存在无限多的深度层。

确实,对于你的情况,该方程并不完全正确,但这仅仅是因为你没有遇到最坏情况。在你的情况下,搜索过程确实不需要生成方程中最后的(b^(d+1) – b)个节点。

关于你使用的术语的最后一点说明:你问如果在深度层d = 3以下没有深度层,如何计算b^(d+1)(例如,b^(3+1))。从数学上讲,计算这个术语仍然没有问题。即使在你的情况下没有第4层深度,我们仍然可以数学上计算术语b^(3+1)。在你的情况下这样做没有意义,因为它不正确,但我们仍然可以很好地计算这个术语。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注