文章目录
📚 核心逻辑(一句话概括)
无信息搜索的核心问题:如何在没有任何附加信息的情况下,系统地搜索问题的解?
解决方案的逻辑:通过不同的扩展策略(按层、按代价、按深度)和优化技术(双向搜索、图搜索),在完备性、最优性、复杂度之间权衡。
一、核心问题:如何在无信息情况下搜索?
问题的本质
无信息搜索(Uninformed Search)面临的核心挑战:没有任何附加信息,只能通过系统化探索来找到解。就像在一个完全陌生的迷宫中找出口,没有地图、没有指南针,只能一步步探索。
设计搜索算法时必须权衡的四个维度:
- 完备性:能否保证找到解?(如果解存在,算法一定能找到吗?)
- 最优性:能否保证找到最优解?(找到的解是最短路径或代价最小的吗?)
- 效率:需要多少时间和空间?(搜索速度快吗?内存消耗大吗?)
- 重复状态:如何避免重复探索?(会不会多次走到同一个地方?)
二、解决方案:7种搜索策略的核心逻辑
2.1 基础策略:BFS、UCS、DFS
按层扩展策略(BFS,广度优先搜索):像水波扩散一样,一层一层向外扩展,先探索距离起点近的所有位置,再探索更远的位置。这样保证找到最短路径,但需要记住所有已探索的位置,内存消耗大。
按代价扩展策略(UCS,一致代价搜索):不是按距离远近,而是按路径代价(如时间、费用)来选择,优先探索代价小的路径。这是BFS的扩展,当所有路径代价相同时就退化为BFS。
深入回溯策略(DFS,深度优先搜索):像走迷宫一样,一条路走到底,走不通就回头,只记住当前路径。这样内存消耗小,但可能走很远的路也找不到解,或者找到的不是最短路径。
2.2 改进策略:DLS、IDDFS
限制深度策略(DLS,深度有限搜索):在DFS基础上设置一个最大深度限制,超过这个深度就不再深入,避免无限路径问题。但问题是:如何知道合适的深度限制是多少?
迭代深入策略(IDDFS,迭代深入深度优先搜索):先尝试深度1,找不到就尝试深度2,再找不到就尝试深度3,以此类推。虽然会重复搜索浅层节点,但内存需求小,同时能保证找到最短路径,兼顾了BFS和DFS的优点。
2.3 优化技术:双向搜索、图搜索
双向搜索技术:像两个人分别从起点和终点同时挖隧道,在中间相遇。这样只需要搜索一半的深度,大幅减少搜索节点数。但要求必须能够从目标状态向后搜索(知道如何"倒着走")。
图搜索技术:记住已经走过的位置,避免重复探索。就像走迷宫时做标记,走过的路不再重复走。对于含很多重复状态的问题(如网格搜索),图搜索比树搜索有效很多。
三、解决方案的逻辑关系
3.1 问题-解决方案映射
3.2 算法演进逻辑
演进逻辑:从基础策略出发,BFS按层扩展保证最优性但内存消耗大,UCS扩展考虑路径代价,DFS优化节省内存但失去完备性和最优性。为了解决DFS的问题,DLS增加深度限制避免无限路径,IDDFS通过迭代深入融合BFS和DFS的优点。双向搜索和图搜索作为优化技术,可以应用于不同策略,进一步提升效率。
四、核心设计原理总结
4.1 扩展策略的本质
三种基本扩展策略:按层扩展(保证最短路径)、按代价扩展(保证代价最小)、按深度扩展(节省内存)。不同的扩展策略决定了搜索的特性。
4.2 优化技术的本质
两种优化技术:双向搜索(减少搜索节点数)、图搜索(避免重复探索)。这些技术可以应用于不同的基础策略,提升搜索效率。
4.3 设计权衡
核心权衡:完备性、最优性、效率(时间和空间)之间需要权衡。保证完备性和最优性通常需要更高的复杂度(更多时间和内存),但可以通过重复搜索(如IDDFS)换取空间效率。设计搜索算法的核心就是在这些维度之间找到平衡点。
📝 本章总结
核心逻辑
- 核心问题:如何在无信息情况下系统地搜索问题的解?
- 解决方案:7种搜索策略,通过不同的扩展策略和优化技术解决不同问题
- 设计逻辑:在完备性、最优性、复杂度之间权衡
- 演进逻辑:从基础策略(BFS)到改进策略(IDDFS)到优化技术(双向搜索、图搜索)
知识地图
关键洞察
-
扩展策略决定搜索特性:按层扩展保证最优性,按深度扩展节省内存。选择不同的扩展策略,就决定了搜索算法的基本特性。
-
优化技术提升效率:双向搜索减少节点数,图搜索避免重复探索。这些技术可以应用于不同的基础策略,进一步提升效率。
-
设计权衡是核心:在完备性、最优性、效率之间权衡是设计搜索算法的核心。没有完美的算法,只有适合不同场景的算法。

被折叠的 条评论
为什么被折叠?



