人工智能——问题求解

问题求解由两个部分组成:问题描述+搜索过程

问题求解方法1:状态空间法

  • 描述:状态空间法描述
  • 搜索:盲目搜索、启发式搜索

求解过程:
1.用描述初始状态,操作集合,目标状态
2.通过操作集合的操作生成部分状态空间(不一定非要生成所有状态空间)
3.利用搜索算法找到最佳路径(根据指针信息倒推)

关于步骤2,应该生成的部分状态空间是这样的:对初始状态进行扩展,生成一组子节点,若没出现目标节点,则按照搜索策略从已生成的子节点中选择一个节点来扩展,直到目标状态出现在子节点中或者没有可供扩展的节点为止。

盲目搜索

  • 广度优先搜索

扩展节点时,新扩展的节点放在open表尾部

* 完备策略,有解一定能找到,盲目性大
* 解一定是最短路径
  • 深度优先搜索

扩展节点时,新扩展的节点放在open表头部

  • 有界深度优先搜索

在达到最大深度前,新扩展的节点放在open表头部

  • 代价树广度/深度优先

代价树广度优先在open 表排序时候将所有的节点求代价,取最小代价节点进行扩展

* 完备策略,有解一定能找到

代价树深度优先在open表排序时将扩展的节点求代价,取最小代价节点进行扩展

* 非完备策略,解也不一定是最优解

启发式搜索

用估价函数来排序open 表
A*算法解决传教士过河问题
问题描述:有5个传教士,5个野人在河岸左边,有一条船能坐3人,求解怎样使得传教士和野人都到河岸右边,在河岸或者在船上野人数不能多于传教士人数。
人工智能——问题求解_第1张图片

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