Solving Problem by Searching
Agent
Agent: 代理是指任何可以被视为通过传感器(sensors)感知其环境并通过执行器(actuators)作用于该环境的东西。
Simple Reflex Agents
Reflx Agent: 反射代理,通过状态来映射具体的操作,或者说根据当前的感知情况来选择操作。
Condition-Action rules: If (condition) then (action)
需要通过对路径的规划来达到找到最短路径的方法,去寻找时间最短的路径方法(有一系列的action链接而成的)。
-
Block Manipulation
-
Robot Manipulator
-
The Eight Puzzle
Static:
Observable
Discrete
Deterministic
一般的搜索问题公式并没有做出这些假设,但我们将在讨论搜索算法时做出这些假设。
State-Space Graphs
对于一个小的路径图像来说不涉及存储的问题,我们只需要确认抽闲的目标点以及我们需要到达此点经过的边(edge)。在图像中这些都是抽象的存在。
根节点为相同的节点并且,不会有两条相同的路径存在。
- search tree 中的每个node都是状态空间图中的整个路径(往回寻找)
- 两种graph都是按需求构建并尽可能少的construct
在树搜索中,只要我们找到我们想要到达的最终节点,我们就会找到一条可以回溯的路径,通过不断地向父节点进行倒退查找,我们最终将遭达到root的时候停止继续寻找。这就是strategy
并且对于tree search到达当前节点的代价就是之前的节点的代价和与从此节点与其父节点之间的代价总和。
但是当树中存在循环,树搜索就会陷入无限循环。
之前找寻过的路径以及遍历过的结点就不会在进行考虑了。
- priority queue
- FIFO
- LIFO
搜索算法的属性
Completeness:必须有一条从头节点能完整的到达目标节点的路径。
Optimality:选择最短路径
Time Complexity:最小时间复杂度
Space Complexity:最小的空间复杂度
BFS(FIFO)有memory的问题 /DFS (LIFO) 搜索树
Iterative Deepening
Iterative Deepening结合了深度优先搜索和DLS两个算法,首先设定深度的限制,然后在限制内进行深度优先搜索,如果在此深度下没有结果,就将限制增大直到找到结果位置。
优点是结合了DFS的空间优势,又结合了BFS的时间优势。
Bi-directional Search
- 从初始状态向前运行一个搜索。
- 从目标向后运行另一个搜索。
- 当两个搜索在中间相遇时停止