人工智能(第三版)—【第三章】讨论题

1.启发式搜索方法与第 2 章讨论的搜索方法有什么区别?

(a)给出启发式搜索的 3 种定义。
(b)给出将启发式信息添加到搜索中的 3 种方式。

启发式搜索方法与盲目搜索方法的区别在于启发式搜索利用问题的特定信息(启发式信息)来指导搜索过程,以更高效地找到解决方案。而盲目搜索则是不考虑问题的特定信息,按照事先定义好的搜索策略进行搜索。

(a) 启发式搜索的三种定义:

  1. 启发函数(Heuristic Function):启发函数是一种评估函数,用于估计当前搜索状态到目标状态的距离或代价。它提供了一种启发性的指导,帮助搜索算法决定下一步应该选择哪个节点进行扩展。
  2. 启发式信息(Heuristic Information):启发式信息是指用于指导搜索的问题特定的信息。它可以是启发函数、问题的特征、领域知识等,通过提供对问题结构的了解,帮助搜索算法更好地选择下一步操作。
  3. 启发式搜索(Heuristic Search):启发式搜索是一种基于启发式信息的搜索方法。它利用启发函数提供的信息来指导搜索过程,以期望更快地找到解决方案。启发式搜索算法通常会根据启发函数的评估值来选择下一步要扩展的节点。

(b) 将启发式信息添加到搜索中的三种方式:

  1. 启发函数作为评估函数:将启发函数作为评估函数,用于评估当前搜索状态到目标状态的距离或代价。搜索算法根据评估值来选择下一步要扩展的节点,以期望更接近目标状态。
  2. 启发函数作为排序准则:将启发函数用作节点扩展的排序准则。搜索算法根据启发函数的评估值对候选节点进行排序,优先扩展评估值较小的节点,以期望更快地接近目标状态。
  3. 启发函数作为剪枝准则:将启发函数用作剪枝准则,用于剪除一些明显不可能达到目标状态的节点。搜索算法根据启发函数的评估值来判断是否继续扩展某个节点,以减少搜索空间和提高搜索效率。

启发式搜索方法通过利用启发式信息来引导搜索过程,可以在某些情况下更快地找到解决方案,相比盲目搜索方法更具效率和准确性。


2.为什么爬山法可以归类为贪心算法?

爬山法可以归类为贪心算法,因为它在每一步选择中都采取局部最优的决策,而不考虑全局最优解。

具体来说,爬山法是一种启发式搜索算法,它从当前的状态开始,通过选择能够使目标函数值最大化的邻近状态来进行搜索。它不考虑全局的搜索空间,只关注当前状态下的最优选择。
爬山法的基本思想是不断地向目标函数值增大的方向移动,直到达到一个局部最优解。然而,由于爬山法只关注当前状态的邻近状态,它容易陷入局部最优解而无法达到全局最优解。
贪心算法的特点是每一步都选择当前状态下的最优解,而不考虑之后的决策会不会导致最终结果变差。爬山法也是如此,它只关注当前状态下的最优选择,而不考虑之后的决策会不会导致更好的结果。

因此,爬山法可以被视为贪心算法的一种特例,它在每一步都采取局部最优的决策,但可能无法达到全局最优解。

3.最陡爬山法如何提供最优解?

最陡爬山法是一种简单而直观的启发式搜索算法,它通过选择能够使目标函数值最大化的邻近状态来进行搜索。然而,最陡爬山法并不能保证找到全局最优解,因为它容易陷入局部最优解。
有几种方法可以尝试提高最陡爬山法的性能以接近最优解:

  1. 多次运行:运行最陡爬山法多次,每次从不同的随机初始状态开始,然后选择最好的结果作为最终解。这样可以增加搜索空间的覆盖程度,提高找到全局最优解的概率。
  2. 随机重启:在搜索过程中,如果陷入局部最优解,可以选择随机地重新开始搜索,从一个新的随机初始状态开始。通过多次随机重启,可以增加搜索空间的探索,有机会找到更好的解。
  3. 模拟退火:模拟退火算法是一种基于概率的全局优化算法,可以用于改进最陡爬山法。它通过允许一定概率接受比当前解差的邻近解,以避免陷入局部最优解。模拟退火算法可以在搜索过程中逐渐减小接受差解的概率,从而朝着全局最优解的方向搜索。

4.为什么最佳优先搜索比爬山法更有效?

最佳优先搜索(Best-First Search)相比于爬山法在某些情况下更有效,主要有以下几个原因:

  1. 全局性搜索:最佳优先搜索考虑了全局的搜索空间,而不仅仅是局部邻近状态。它使用一个评估函数来评估每个节点的优先级,选择优先级最高的节点进行扩展。这使得最佳优先搜索能够更全面地搜索整个问题空间,有机会找到全局最优解。
  2. 启发式信息的灵活使用:最佳优先搜索可以灵活地使用启发式信息来指导搜索过程。通过选择适当的启发式函数,可以在搜索过程中引导搜索算法朝着更有希望的方向前进,从而更快地接近最优解。而爬山法只使用启发式信息来选择邻近状态,容易陷入局部最优解。
  3. 回溯能力:最佳优先搜索具有回溯的能力,即在搜索过程中可以回退到之前的状态,重新选择其他路径进行搜索。这使得最佳优先搜索能够在遇到局部最优解时,通过回溯到之前的状态,尝试其他路径,以期望找到更好的解。而爬山法在陷入局部最优解后很难回溯,往往只能接受当前的解。
  4. 更好的解的保证:最佳优先搜索通常能够提供更好的解的保证。通过使用适当的评估函数和启发式信息,最佳优先搜索可以在搜索过程中逐渐提高解的质量,并在找到解时停止搜索。而爬山法只关注局部最优解,无法提供全局最优解的保证。

最佳优先搜索也有一些限制,例如搜索空间过大时可能会面临指数级的搜索时间,或者可能陷入循环或无限循环。

5.解释集束搜索的工作原理。

束搜索(Beam Search)是一种启发式搜索算法,用于在搜索空间中找到最优解或接近最优解的解。它的工作原理如下:

  1. 初始化:选择一个束宽(beam width),即每一步保留的候选解的数量。同时,选择一个初始解作为搜索的起点。
  2. 生成候选解:从初始解开始,根据定义的扩展规则,生成若干个候选解。这些候选解可能是通过改变当前解的某个部分、添加新的元素等方式得到的。
  3. 评估候选解:对每个候选解进行评估,根据定义的评估函数或启发式函数计算其得分或优先级。得分高的候选解更有可能是最优解或接近最优解。
  4. 选择候选解:根据束宽选择得分最高的一部分候选解作为下一步要扩展的解集。通常,只保留得分最高的几个候选解,其余的候选解被舍弃。
  5. 终止条件:重复步骤2-4,直到满足终止条件。终止条件可以是找到了满足特定要求的解,达到了最大搜索步数,或者达到了一定的搜索时间。
  6. 输出解:根据终止时的候选解,选择得分最高的解作为最终的输出解。
    束搜索的特点是在搜索过程中保持一定数量的候选解,这样可以在一定程度上平衡搜索的广度和深度。相比于传统的深度优先搜索或宽度优先搜索,束搜索能够更快地找到质量较高的解,但也可能会错过某些更优的解。

束搜索并不能保证找到全局最优解,因为它在每一步只保留了一部分候选解,可能会陷入局部最优解。为了提高束搜索的性能,可以调整束宽的大小,使用更合适的评估函数或启发式函数,并结合其他技术如剪枝、回溯等进行优化。

6.启发式方法的可接受性(admissible)是什么意思?

(a)可接受性与单调性有什么关系?
(b)可以只有单调性,而不需要可接受性吗?解释原因。

(a) 在启发式搜索中,可接受性(admissibility)是指启发式函数对于每个状态的估计值都不会高估该状态到目标状态的代价。换句话说,如果一个启发式函数是可接受的,那么它不会给出比实际代价更大的估计值。

单调性(monotonicity)是指对于任意两个相邻的状态,如果从一个状态到另一个状态的代价为正(非负),那么启发式函数对于第一个状态的估计值不会小于第二个状态的估计值加上从第一个状态到第二个状态的代价。换句话说,如果一个启发式函数是单调的,那么它对于每个状态的估计值都不会低于从该状态到目标状态的实际代价。

可接受性和单调性在启发式搜索中是相关的。如果一个启发式函数既是可接受的又是单调的,那么它被称为一种一致启发式函数(consistent heuristic)。一致启发式函数在启发式搜索中具有一些重要的性质,例如能够保证找到最优解,且不会浪费时间在已经探索过的状态上。

(b) 在启发式搜索中,单调性是一个更为重要的性质,而可接受性并不是必需的。单调性保证了搜索算法的有效性和正确性,即能够找到最优解。可接受性则是一个更弱的条件,它只要求启发式函数不高估代价,但并不保证搜索算法能够找到最优解。
可以只有单调性而不需要可接受性的原因是,单调性是保证搜索算法正确性的关键要素,而可接受性只是一个更为宽松的限制。单调性确保搜索算法在每一步都朝着更有希望的方向前进,不会陷入错误的路径或浪费时间在已经探索过的状态上。而可接受性只要求启发式函数不高估代价,但并不要求一定要朝着最优解的方向前进。

一致启发式函数(既可接受又单调)在启发式搜索中通常更受青睐,因为它能够提供更好的性能保证和更高的搜索效率。

7.一种启发式方法比另一种启发式方法具有更多的信息,这句话的意思是什么?

相对于另一种启发式方法,一种启发式方法能够提供更多的关于问题的信息。这种启发式方法可能具有更准确、更全面的问题领域知识,或者能够更好地指导搜索算法朝着最优解的方向前进。
具有更多信息的启发式方法通常能够更好地估计问题的状态或代价,并且能够更准确地指导搜索算法进行决策。它们可能基于更丰富的领域知识、更复杂的模型或更多的先验信息等,从而提供更准确的启发式函数。相对而言,另一种启发式方法可能提供的信息较少或不够准确,导致搜索算法可能需要更多的步骤或更多的探索来找到最优解。

8.分支定界法背后的思想是什么?

分支定界法(Branch and Bound)是一种用于解决优化问题的算法思想。其基本思想是通过将问题划分为更小的子问题,并通过剪枝策略排除一些不可能达到最优解的子问题,从而减小搜索空间,提高求解效率。

分支定界法的主要思想如下:

  1. 初始化:选择一个初始解作为当前最优解,并设定一个上界(初始上界可以是无穷大)。
  2. 分支:将当前问题划分为若干个子问题,每个子问题对应一个分支。通过某种方式(如选择一个变量进行分支)生成子问题,并计算子问题的下界(最优解的下界)。
  3. 更新上界:如果某个子问题的上界比当前最优解的上界更低,则更新当前最优解的上界。
  4. 剪枝:对于某个子问题,如果其下界比当前最优解的上界更高,则可以将该子问题从搜索空间中剪枝,不再继续搜索该分支。
  5. 选择下一个子问题:从剩余的未剪枝子问题中选择一个进行分支,可以根据某种策略(如选择下界最低的子问题)进行选择。
  6. 终止条件:当搜索空间为空或无法找到更优解时,终止搜索。
    通过不断划分子问题并进行剪枝,分支定界法能够逐渐减小搜索空间,直到找到最优解或确定无解。剪枝操作通过排除一些不可能达到最优解的子问题,避免了对这些子问题的进一步搜索,从而提高了求解效率。

分支定界法在处理优化问题时能够有效地减少不必要的搜索,提高求解效率。它可以应用于多种优化问题,如旅行商问题、背包问题等。

9.请解释低估可能会得到更好的解的原因。

低估可能会得到更好的解的原因是因为在搜索算法中,一个低估的启发式函数可以引导算法朝着更接近最优解的方向前进。 启发式函数用于估计问题的状态到目标状态的代价或距离。如果一个启发式函数低估了实际代价或距离,那么在搜索过程中,算法可能会更倾向于探索那些看起来更有希望的状态,即更接近最优解的状态。 通过低估启发式函数,搜索算法很可能会在较早的阶段就找到一个较好的解,因为它会优先探索那些启发式函数估计为较优的状态。这样可以避免搜索算法陷入一些代价较高的状态,节省了搜索的时间和资源。

10.关于动态规划:

(a)动态规划的概念是什么?
(b)描述最优性原理。

----

(a) 动态规划是一种用于解决具有重叠子问题和最优子结构性质的问题的算法设计方法。它通过将问题划分为更小的子问题,并使用递归或迭代的方式求解子问题,最终得到原问题的解。
动态规划的基本思想是将原问题分解为若干个重叠的子问题,并通过解决子问题来构建原问题的解。在求解子问题时,动态规划会保存子问题的解,避免重复计算,从而提高求解效率。
动态规划通常包含以下几个步骤:

  1. 定义问题的状态:确定问题的状态,将原问题划分为若干个子问题,并定义子问题的状态。
  2. 确定状态转移方程:推导出子问题与原问题之间的关系,即确定子问题之间的状态转移方程。
  3. 初始化:设置初始状态的值,即确定最简单的子问题的解。
  4. 递推求解:使用状态转移方程,通过求解子问题的解来递推求解原问题的解。
  5. 提取最优解:根据问题的要求,从求解过程中得到的各个子问题的解中提取出最优解。

(b) 最优性原理是动态规划的一个重要概念。它指出,一个问题的最优解包含了其子问题的最优解。

  1. 最优性原理可以形式化地描述为:如果问题的最优解中包含了某个子问题的最优解,那么该子问题的解一定是最优的。
  2. 最优性原理的存在使得动态规划算法能够通过求解子问题的最优解来构建原问题的最优解。在动态规划的求解过程中,通过利用子问题的最优解,可以避免对相同的子问题进行重复计算,从而提高算法的效率。
  3. 通过最优性原理,动态规划算法能够以自底向上的方式逐步求解子问题,并最终得到原问题的最优解。

11.为什么 A*算法比使用低估计启发值的分支定界法或使用动态规划的分支定界法更好?

A*算法相比使用低估估计启发值的分支定界法或使用动态规划的分支定界法更好的原因有以下几点:

  1. 更高的搜索效率:A算法结合了启发式函数和代价函数,能够在搜索过程中更加智能地选择下一个节点进行扩展,从而更快地找到解。它通过综合考虑当前节点的实际代价和启发式函数的估计值,选择具有最小总代价的节点进行扩展。这种策略使得A算法能够更快地找到最优解。
  2. 更好的解质量:A算法在搜索过程中能够维护一个优先级队列,根据节点的总代价进行排序。这使得A算法能够优先扩展那些总代价较小的节点,从而更有可能找到较优的解。相比之下,使用低估估计启发值的分支定界法或使用动态规划的分支定界法可能无法保证找到最优解,因为它们可能会在搜索过程中错过一些代价较低但被剪枝的节点。
  3. 更灵活的问题求解:A*算法可以应用于各种类型的问题,包括图搜索、路径规划、机器人导航等。它不依赖于问题的具体特征,而是通过合理的启发式函数和代价函数来指导搜索过程。相比之下,使用低估估计启发值的分支定界法或使用动态规划的分支定界法可能更适用于特定类型的问题,对于其他类型的问题可能需要重新设计启发式函数或代价函数。

12.解释约束满足搜索背后的思想,以及它是如何应用于“驴滑块”拼图问题的。

约束满足搜索(Constraint Satisfaction Search)是一种问题求解方法,其基本思想是通过搜索空间中满足一组约束条件的解,找到问题的解。

约束满足搜索的核心思想是将问题的解空间表示为一个变量的取值组合,然后通过搜索算法在这个解空间中进行搜索,找到满足所有约束条件的解。 在约束满足搜索中,问题通常由一组变量和一组约束条件组成。变量表示问题的待求解部分,约束条件表示变量之间的限制关系。搜索算法的目标是找到满足所有约束条件的变量取值组合,即问题的解。

“驴滑块”拼图问题是一个经典的约束满足问题。该问题的目标是将一个由多个滑块组成的拼图按照指定的形状和顺序进行排列,使得滑块之间的约束条件得到满足。

在“驴滑块”拼图问题中,每个滑块都有一个固定的形状和邻接关系。滑块之间的约束条件要求它们的邻接边上的图案或颜色必须匹配。问题的解是将所有滑块按照指定的形状和顺序进行排列,使得所有滑块之间的约束条件得到满足。

为了解决“驴滑块”拼图问题,可以使用约束满足搜索方法。搜索算法会在滑块的取值空间中进行搜索,每次选择一个滑块进行放置,并检查放置后是否满足约束条件。如果满足约束条件,则继续选择下一个滑块进行放置;如果不满足约束条件,则回溯到上一个状态,选择其他的放置方式。

通过不断地搜索和回溯,约束满足搜索算法会逐步构建出满足所有约束条件的滑块排列,从而找到问题的解。约束满足搜索方法在解决“驴滑块”拼图问题中能够有效地遵循约束条件,从而找到满足条件的解。它利用约束条件对搜索空间进行剪枝,减少了搜索的时间和空间复杂度,提高了求解效率。

13.解释如何用与或树来划分搜索问题。

  • 与或树(And-Or Tree)是一种用于表示和划分搜索问题的树结构。它将问题的解空间划分为与节点和或节点,并通过与和或的关系来表示问题的约束条件和可能的解。
    在与或树中,与节点表示问题的约束条件,或节点表示问题的解。与节点和或节点之间通过边连接,形成一个树状结构。

具体而言,与节点表示问题中的约束条件,它们需要同时满足才能继续向下搜索。如果与节点的所有子节点都满足约束条件,那么与节点被认为是满足的。如果与节点的某个子节点不满足约束条件,那么与节点被认为是不满足的,搜索将回溯到上一个与节点。
或节点表示问题的解,它们是问题的可能解的集合。或节点的子节点代表了不同的解选项。在搜索过程中,可以选择其中一个子节点作为当前的解,并继续向下搜索。如果某个或节点的所有子节点都被排除或搜索完毕,那么该或节点被认为是不可行的,搜索将回溯到上一个或节点。

  • 通过与或树的划分,可以将问题的解空间逐步缩小,并在搜索过程中遵循约束条件,从而找到满足约束条件的解。

与或树只是一种表示和划分搜索问题的方法,它并不涉及具体的搜索算法。在实际应用中,可以根据问题的特点和求解需求,选择合适的搜索算法来在与或树上进行搜索。常见的搜索算法包括深度优先搜索、广度优先搜索、A*算法等。

14.描述双向搜索的工作原理。

(a)它与本章中讨论的其他技术有什么不同?
(b)描述边界问题和导弹隐喻的含义。
(c)什么是波形规整算法?

双向搜索(Bidirectional Search)是一种在图或树结构中同时从起点和终点进行搜索的算法。它的工作原理是通过从起点和终点同时进行扩展,直到两个搜索方向相遇或找到问题的解。 具体而言,双向搜索从起点和终点分别开始,分别构建两个搜索队列(或搜索树),并分别进行扩展。在每一步中,从两个队列中各取一个节点进行扩展,并检查两个节点是否相遇或找到问题的解。如果相遇或找到解,则搜索结束;如果没有相遇,则继续进行下一步扩展。

双向搜索相比单向搜索的优势在于它可以同时从起点和终点进行搜索,从而减少搜索空间和搜索时间。通过同时进行正向和反向搜索,双向搜索可以在最短路径问题等情况下更快地找到解,并减少搜索的复杂度。

  • (a) 双向搜索与本章中讨论的其他技术的不同之处在于它从两个方向同时进行搜索。相比之下,单向搜索只从一个方向进行搜索,而启发式搜索、A*算法等是单向搜索的特例,它们通过启发式函数来指导搜索方向。
  • (b) 边界问题和导弹隐喻是描述双向搜索的两个概念。
    边界问题是指在双向搜索中,两个搜索方向的边界如何定义和处理的问题。边界问题通常包括起点和终点的交叉、边界节点的扩展等情况。为了解决边界问题,可以采用一些策略,如在相遇时停止搜索、在相遇时检查路径是否连通等。
    导弹隐喻是用来解释双向搜索的概念。它比喻双向搜索为两枚导弹从起点和终点同时发射,直到它们相遇或找到目标。导弹隐喻用生动的方式描述了双向搜索的工作原理和特点。
  • © 波形规整算法(Wavefront Propagation Algorithm)是一种用于路径规划和图搜索的算法。它通过波动的方式从起点开始,逐步向外扩展,直到到达目标或搜索完整个图。波形规整算法可以用于解决迷宫问题、机器人路径规划等。

波形规整算法的基本思想是通过波动的方式从起点开始,将波纹逐步向外传播,直到到达目标或搜索完整个图。在每一步中,将波纹从当前位置扩展到相邻的位置,并标记已经访问过的位置。通过不断扩展波纹,可以逐步覆盖整个图,并找到起点到目标的最短路径。

波形规整算法的优势在于它可以在不知道目标位置的情况下进行搜索,并找到最短路径。它适用于静态环境下的路径规划问题,但在动态环境下可能需要进行改进。

你可能感兴趣的:(人工智能,算法)