题目:四皇后问题
解空间:四维向量x1,x2,x3,x4
四叉树:定义 每一个节点向下分叉 有四个 就是四叉树
第一个皇后 | 第二个皇后 | 第三个皇后 | 第四个皇后 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 |
3 | 3 | 3 | 3 |
4 | 4 | 4 | 4 |
第一个皇后 | 第二个皇后 | 第三个皇后 | 第四个皇后 | 可行? |
---|---|---|---|---|
1 | 3 | 2 | 4 | x 2 3 反斜线 |
1 | 3 | 4 | 2 | x 3 4 斜线 |
1 | 4 | 2 | 3 | x 不满住 |
2 | 4 | 1 | 3 | √ 可行 |
如何找到解 以及解空间
通过深度优先搜索来完成这棵树
0-1背包问题
问题示例
x:代表几种物品
y:代表背包当前所能包含的最大价值
F(x-1,y-value(x))+value(x):代表选择了第x个物品
F(x-1,y) :代表没有选择第x个物品价值最大
F(x,y) = max{F(x-1,y-value(x))+value(x),F(x-1,y)}
解空间
为一个n为的向量
<x1,x2,…xn>
xi = 1代表i选入背包
就是一个树 有n层 第i层代表第i个物品取0还是 1 每一层都分为俩个
0-1取值的二叉树为子集树
算法设计
满足约束:就是背包体积不能超过
搜索空间
货郎问题
20
/ \
10 40
/ \
5 12
问题分析
中间遍历的时候进行约束条件的判定
深度优先
广度优先
回溯算法会用到这两个搜索方法
存储当前路径