4、搜索空间表示方法:向量空间表示、图结构表示、树结构表示、概率图模型表示
搜索空间怎么表示,这是个基础问题。说白了,就是你要把「问题」翻译成「计算机能理解的结构」。我做了这么多年策略优化,见过太多人一上来就调算法,结果连搜索空间都没定义清楚——那基本是白费功夫。
今天咱们聊聊四种主流表示方法。每种都有它的脾气,选对了事半功倍,选错了...嗯,我踩过坑,后面会讲。
4.1 向量空间表示
这是最直观的一种。把每个决策变量当成一个维度,所有可能的取值组合构成一个高维空间。
核心思想:每个解对应一个向量,搜索就是在这个向量空间里找最优的那个点。
举个例子。假设你要优化一个推荐系统的三个参数:学习率 α、正则化系数 λ、批次大小 b。那搜索空间就是三维向量空间:
解 = [α, λ, b]
α ∈ [0.001, 0.1]
λ ∈ [1e-6, 1e-3]
b ∈ [32, 128, 512]
我个人习惯用向量空间表示连续参数问题。比如超参数调优、资源分配、路径规划中的坐标点。它的好处是数学性质好,梯度下降、遗传算法都能直接用。
避坑指南:我曾经把一个离散问题硬套成向量空间,结果搜索效率极低。后来发现,离散变量用向量表示会引入大量无效区域——你想想看,两个离散值之间的「中间值」根本不存在,但算法还是会去探索。
向量空间表示适合:连续变量、数值优化、可微目标函数。不适合:离散组合、结构可变的问题。
4.2 图结构表示
图结构表示,说白了就是用节点和边来描述搜索空间。节点代表状态,边代表状态之间的转移。
我记得有一次做物流路径优化,每个仓库是节点,路线是边,搜索空间就是一张巨大的图。这时候用向量表示就傻了——你没法用连续向量描述「从A到B再到C」这种拓扑关系。
节点:城市 A, B, C, D
边:A→B (距离10), A→C (距离15), B→D (距离12), C→D (距离8)
搜索目标:找到从A到D的最短路径
图结构表示的核心优势是能表达关系。路径规划、网络路由、社交网络分析,这些天然就是图结构。搜索算法比如A*、Dijkstra、蚁群算法,都是基于图结构设计的。
注意:图结构表示容易遇到「状态爆炸」问题。节点一多,边数可能呈指数增长。我曾经处理过一个1000节点的图,全连接的话边数接近50万——搜索起来那叫一个酸爽。
图结构表示适合:路径问题、网络问题、关系型问题。不适合:高维连续优化、参数调优。
4.3 树结构表示
树结构是图结构的一种特例——没有环。它天然适合表示层次化决策过程。
你想想看,下棋的时候,每一步都有多个选择,每个选择又引出更多选择。这就是一棵决策树。搜索空间就是这棵树的所有叶子节点。
根节点:初始状态
├── 动作A
│ ├── 状态A1
│ │ ├── 动作A1a → 叶子
│ │ └── 动作A1b → 叶子
│ └── 状态A2
│ └── 动作A2a → 叶子
└── 动作B
└── 状态B1
└── 动作B1a → 叶子
树结构表示的好处是搜索过程清晰,可以用深度优先、广度优先、蒙特卡洛树搜索等。我在做游戏AI时,就用树结构表示博弈树,配合剪枝策略,效果不错。
个人经验:树结构表示容易忽略「重复状态」。比如在迷宫搜索中,同一个格子可能从不同路径到达,但树结构会把它当成不同节点。这时候用图结构更合适。我曾经因为这个原因,把树结构改成图结构,搜索效率提升了3倍。
树结构表示适合:决策问题、博弈问题、层次化搜索。不适合:有环问题、状态重复问题。
4.4 概率图模型表示
这个稍微复杂点。概率图模型把搜索空间表示成一个概率分布,节点是随机变量,边是变量之间的依赖关系。
说白了,你不是在搜索「确定的最优解」,而是在搜索「最可能的解」。这在不确定性环境下特别有用。
变量:天气(W)、交通(T)、迟到(L)
依赖关系:
W → T (天气影响交通)
W → L (天气影响迟到)
T → L (交通影响迟到)
联合概率:P(W, T, L) = P(W) * P(T|W) * P(L|W,T)
我记得在做一个供应链优化项目时,需求、库存、运输时间都有不确定性。用概率图模型表示搜索空间,可以找到「在概率意义上最优」的策略,而不是「确定最优」的策略。
核心优势:概率图模型能处理不确定性、缺失数据、多模态分布。搜索算法比如置信传播、变分推断、MCMC采样,都是基于概率图模型设计的。
概率图模型表示适合:不确定性推理、概率规划、贝叶斯优化。不适合:确定性优化、实时性要求高的场景。
4.5 四种表示方法的对比
| 表示方法 | 核心思想 | 适合场景 | 不适合场景 |
|---|---|---|---|
| 向量空间 | 连续/离散变量构成向量 | 超参数调优、数值优化 | 离散组合、结构可变问题 |
| 图结构 | 节点+边表示状态和转移 | 路径规划、网络路由 | 高维连续优化 |
| 树结构 | 层次化决策树 | 博弈、决策问题 | 有环、状态重复问题 |
| 概率图模型 | 概率分布+依赖关系 | 不确定性推理、贝叶斯优化 | 确定性优化、实时场景 |
4.6 如何选择?
没有银弹。我一般按这个思路选:
- 先看问题性质:连续还是离散?确定还是不确定?
- 再看搜索算法:你打算用梯度下降?那向量空间。用A*?那图结构。
- 最后看规模:状态空间太大?考虑概率图模型做近似。
我曾经犯过的错:在一个组合优化问题上,我一开始选了向量空间表示,结果搜索空间全是无效解。后来改成树结构表示,配合分支定界,问题迎刃而解。所以,选表示方法之前,先花时间理解问题的结构——这个时间省不得。
4.7 本章知识体系
下面这张图总结了四种表示方法的核心逻辑和适用场景:
嗯,四种表示方法讲完了。每种都有它的用武之地,关键是要理解问题的本质。我建议你遇到新问题时,先画个草图,看看它天然适合哪种结构——这个习惯帮我省了不少时间。