(a)给出启发式搜索的 3 种定义。
(b)给出将启发式信息添加到搜索中的 3 种方式。
启发式搜索方法与盲目搜索方法的区别在于启发式搜索利用问题的特定信息(启发式信息)来指导搜索过程,以更高效地找到解决方案。而盲目搜索则是不考虑问题的特定信息,按照事先定义好的搜索策略进行搜索。
(a) 启发式搜索的三种定义:
(b) 将启发式信息添加到搜索中的三种方式:
启发式搜索方法通过利用启发式信息来引导搜索过程,可以在某些情况下更快地找到解决方案,相比盲目搜索方法更具效率和准确性。
爬山法可以归类为贪心算法,因为它在每一步选择中都采取局部最优的决策,而不考虑全局最优解。
具体来说,爬山法是一种启发式搜索算法,它从当前的状态开始,通过选择能够使目标函数值最大化的邻近状态来进行搜索。它不考虑全局的搜索空间,只关注当前状态下的最优选择。
爬山法的基本思想是不断地向目标函数值增大的方向移动,直到达到一个局部最优解。然而,由于爬山法只关注当前状态的邻近状态,它容易陷入局部最优解而无法达到全局最优解。
贪心算法的特点是每一步都选择当前状态下的最优解,而不考虑之后的决策会不会导致最终结果变差。爬山法也是如此,它只关注当前状态下的最优选择,而不考虑之后的决策会不会导致更好的结果。
因此,爬山法可以被视为贪心算法的一种特例,它在每一步都采取局部最优的决策,但可能无法达到全局最优解。
最陡爬山法是一种简单而直观的启发式搜索算法,它通过选择能够使目标函数值最大化的邻近状态来进行搜索。然而,最陡爬山法并不能保证找到全局最优解,因为它容易陷入局部最优解。
有几种方法可以尝试提高最陡爬山法的性能以接近最优解:
最佳优先搜索(Best-First Search)相比于爬山法在某些情况下更有效,主要有以下几个原因:
最佳优先搜索也有一些限制,例如搜索空间过大时可能会面临指数级的搜索时间,或者可能陷入循环或无限循环。
束搜索(Beam Search)是一种启发式搜索算法,用于在搜索空间中找到最优解或接近最优解的解。它的工作原理如下:
束搜索并不能保证找到全局最优解,因为它在每一步只保留了一部分候选解,可能会陷入局部最优解。为了提高束搜索的性能,可以调整束宽的大小,使用更合适的评估函数或启发式函数,并结合其他技术如剪枝、回溯等进行优化。
(a)可接受性与单调性有什么关系?
(b)可以只有单调性,而不需要可接受性吗?解释原因。
(a) 在启发式搜索中,可接受性(admissibility)是指启发式函数对于每个状态的估计值都不会高估该状态到目标状态的代价。换句话说,如果一个启发式函数是可接受的,那么它不会给出比实际代价更大的估计值。
单调性(monotonicity)是指对于任意两个相邻的状态,如果从一个状态到另一个状态的代价为正(非负),那么启发式函数对于第一个状态的估计值不会小于第二个状态的估计值加上从第一个状态到第二个状态的代价。换句话说,如果一个启发式函数是单调的,那么它对于每个状态的估计值都不会低于从该状态到目标状态的实际代价。
可接受性和单调性在启发式搜索中是相关的。如果一个启发式函数既是可接受的又是单调的,那么它被称为一种一致启发式函数(consistent heuristic)。一致启发式函数在启发式搜索中具有一些重要的性质,例如能够保证找到最优解,且不会浪费时间在已经探索过的状态上。
(b) 在启发式搜索中,单调性是一个更为重要的性质,而可接受性并不是必需的。单调性保证了搜索算法的有效性和正确性,即能够找到最优解。可接受性则是一个更弱的条件,它只要求启发式函数不高估代价,但并不保证搜索算法能够找到最优解。
可以只有单调性而不需要可接受性的原因是,单调性是保证搜索算法正确性的关键要素,而可接受性只是一个更为宽松的限制。单调性确保搜索算法在每一步都朝着更有希望的方向前进,不会陷入错误的路径或浪费时间在已经探索过的状态上。而可接受性只要求启发式函数不高估代价,但并不要求一定要朝着最优解的方向前进。
一致启发式函数(既可接受又单调)在启发式搜索中通常更受青睐,因为它能够提供更好的性能保证和更高的搜索效率。
相对于另一种启发式方法,一种启发式方法能够提供更多的关于问题的信息。这种启发式方法可能具有更准确、更全面的问题领域知识,或者能够更好地指导搜索算法朝着最优解的方向前进。
具有更多信息的启发式方法通常能够更好地估计问题的状态或代价,并且能够更准确地指导搜索算法进行决策。它们可能基于更丰富的领域知识、更复杂的模型或更多的先验信息等,从而提供更准确的启发式函数。相对而言,另一种启发式方法可能提供的信息较少或不够准确,导致搜索算法可能需要更多的步骤或更多的探索来找到最优解。
分支定界法(Branch and Bound)是一种用于解决优化问题的算法思想。其基本思想是通过将问题划分为更小的子问题,并通过剪枝策略排除一些不可能达到最优解的子问题,从而减小搜索空间,提高求解效率。
分支定界法的主要思想如下:
分支定界法在处理优化问题时能够有效地减少不必要的搜索,提高求解效率。它可以应用于多种优化问题,如旅行商问题、背包问题等。
低估可能会得到更好的解的原因是因为在搜索算法中,一个低估的启发式函数可以引导算法朝着更接近最优解的方向前进。 启发式函数用于估计问题的状态到目标状态的代价或距离。如果一个启发式函数低估了实际代价或距离,那么在搜索过程中,算法可能会更倾向于探索那些看起来更有希望的状态,即更接近最优解的状态。 通过低估启发式函数,搜索算法很可能会在较早的阶段就找到一个较好的解,因为它会优先探索那些启发式函数估计为较优的状态。这样可以避免搜索算法陷入一些代价较高的状态,节省了搜索的时间和资源。
(a)动态规划的概念是什么?
(b)描述最优性原理。
----
(a) 动态规划是一种用于解决具有重叠子问题和最优子结构性质的问题的算法设计方法。它通过将问题划分为更小的子问题,并使用递归或迭代的方式求解子问题,最终得到原问题的解。
动态规划的基本思想是将原问题分解为若干个重叠的子问题,并通过解决子问题来构建原问题的解。在求解子问题时,动态规划会保存子问题的解,避免重复计算,从而提高求解效率。
动态规划通常包含以下几个步骤:
(b) 最优性原理是动态规划的一个重要概念。它指出,一个问题的最优解包含了其子问题的最优解。
A*算法相比使用低估估计启发值的分支定界法或使用动态规划的分支定界法更好的原因有以下几点:
约束满足搜索(Constraint Satisfaction Search)是一种问题求解方法,其基本思想是通过搜索空间中满足一组约束条件的解,找到问题的解。
约束满足搜索的核心思想是将问题的解空间表示为一个变量的取值组合,然后通过搜索算法在这个解空间中进行搜索,找到满足所有约束条件的解。 在约束满足搜索中,问题通常由一组变量和一组约束条件组成。变量表示问题的待求解部分,约束条件表示变量之间的限制关系。搜索算法的目标是找到满足所有约束条件的变量取值组合,即问题的解。
“驴滑块”拼图问题是一个经典的约束满足问题。该问题的目标是将一个由多个滑块组成的拼图按照指定的形状和顺序进行排列,使得滑块之间的约束条件得到满足。
在“驴滑块”拼图问题中,每个滑块都有一个固定的形状和邻接关系。滑块之间的约束条件要求它们的邻接边上的图案或颜色必须匹配。问题的解是将所有滑块按照指定的形状和顺序进行排列,使得所有滑块之间的约束条件得到满足。
为了解决“驴滑块”拼图问题,可以使用约束满足搜索方法。搜索算法会在滑块的取值空间中进行搜索,每次选择一个滑块进行放置,并检查放置后是否满足约束条件。如果满足约束条件,则继续选择下一个滑块进行放置;如果不满足约束条件,则回溯到上一个状态,选择其他的放置方式。
通过不断地搜索和回溯,约束满足搜索算法会逐步构建出满足所有约束条件的滑块排列,从而找到问题的解。约束满足搜索方法在解决“驴滑块”拼图问题中能够有效地遵循约束条件,从而找到满足条件的解。它利用约束条件对搜索空间进行剪枝,减少了搜索的时间和空间复杂度,提高了求解效率。
具体而言,与节点表示问题中的约束条件,它们需要同时满足才能继续向下搜索。如果与节点的所有子节点都满足约束条件,那么与节点被认为是满足的。如果与节点的某个子节点不满足约束条件,那么与节点被认为是不满足的,搜索将回溯到上一个与节点。
或节点表示问题的解,它们是问题的可能解的集合。或节点的子节点代表了不同的解选项。在搜索过程中,可以选择其中一个子节点作为当前的解,并继续向下搜索。如果某个或节点的所有子节点都被排除或搜索完毕,那么该或节点被认为是不可行的,搜索将回溯到上一个或节点。
与或树只是一种表示和划分搜索问题的方法,它并不涉及具体的搜索算法。在实际应用中,可以根据问题的特点和求解需求,选择合适的搜索算法来在与或树上进行搜索。常见的搜索算法包括深度优先搜索、广度优先搜索、A*算法等。
(a)它与本章中讨论的其他技术有什么不同?
(b)描述边界问题和导弹隐喻的含义。
(c)什么是波形规整算法?
双向搜索(Bidirectional Search)是一种在图或树结构中同时从起点和终点进行搜索的算法。它的工作原理是通过从起点和终点同时进行扩展,直到两个搜索方向相遇或找到问题的解。 具体而言,双向搜索从起点和终点分别开始,分别构建两个搜索队列(或搜索树),并分别进行扩展。在每一步中,从两个队列中各取一个节点进行扩展,并检查两个节点是否相遇或找到问题的解。如果相遇或找到解,则搜索结束;如果没有相遇,则继续进行下一步扩展。
双向搜索相比单向搜索的优势在于它可以同时从起点和终点进行搜索,从而减少搜索空间和搜索时间。通过同时进行正向和反向搜索,双向搜索可以在最短路径问题等情况下更快地找到解,并减少搜索的复杂度。
波形规整算法的基本思想是通过波动的方式从起点开始,将波纹逐步向外传播,直到到达目标或搜索完整个图。在每一步中,将波纹从当前位置扩展到相邻的位置,并标记已经访问过的位置。通过不断扩展波纹,可以逐步覆盖整个图,并找到起点到目标的最短路径。
波形规整算法的优势在于它可以在不知道目标位置的情况下进行搜索,并找到最短路径。它适用于静态环境下的路径规划问题,但在动态环境下可能需要进行改进。