不知情的搜索策略:问题决定了图和目标,但没有决定从边界中选择哪条路径。这是搜索策略的工作。搜索策略指定从边界中选择哪些路径。通过修改边界路径选择的实施方式可以获得不同的策略。 • 无信息搜索策略 – 亦称“盲目搜索”,无信息搜索策略不使用关于目标节点的可能“方向”的信息 – 无信息搜索方法:广度优先、深度优先、深度限制、均匀成本、深度优先迭代深化、双向 • 信息搜索策略 – 亦称“启发式搜索”,信息搜索策略使用关于领域的信息(尝试)(通常)朝着目标节点的大致方向前进 – 信息搜索方法:爬山法、最佳优先、贪婪搜索、束搜索、A、A* 评估搜索策略 完整性 保证只要存在解决方案就能找到解决方案 时间复杂度 找到解决方案需要多长时间(最坏或平均情况)?通常以扩展的节点数来衡量 空间复杂度 算法使用了多少空间?通常以搜索期间“节点”列表的最大大小来衡量 最优性/可接受性 如果找到解决方案,是否保证它是最优的?也就是说,它是不是成本最小的那个? 深度优先搜索 第一个策略是深度优先搜索。在深度优先搜索中,边界就像一个后进先出的堆栈。元素一次一个地添加到堆栈中。任何时候选择并从边界上移除的元素都是最后添加的元素。 算法: 如果初始状态是目标状态,则退出并返回成功 否则,执行以下操作,直到发出成功或失败的信号: 生成初始状态的后继 E。 如果没有后继,则发出失败信号。 调用深度优先搜索,以 E 作为初始状态。 返回成功,表示成功。否则继续此循环。 DFS 的属性 如果已知解决方案路径很长,DFS 就不会花时间在图中搜索大量的“浅”状态。但是,DFS 可能会在图的深处“迷失”,错过通往目标的短路径,甚至陷入无限循环。 DFS 的优点:DFS 需要的内存较少,因为只存储当前路径上的节点。偶然情况下,DFS 可能根本不需要检查太多的搜索空间就能找到解决方案。广度优先搜索在广度优先搜索中,边界被实现为 FIFO(先进先出)队列。因此,从边界选择的路径是最早添加的路径。这种方法意味着从起始节点开始的路径是按照路径中弧数的顺序生成的。在每个阶段选择一条弧数最少的路径。广度优先搜索在以下情况下很有用 空间不是问题; 你想找到包含最少弧的解决方案;
主要关键词