搜索学习(ing...)
一:深度优先搜索
- 将整个问题空间表示为一个图;
- 从图中某个顶点V出发:
- 访问顶点V;
- 依次从未被V访问的领接点出发,对图进行深度优先遍历,直至图中和V有路径相通的顶点都被访问;
- 若此时图中还有未被访问的顶点,则从一个未被访问过的顶点出发,重新进行深度优先遍历,直至图中所有点都被访问过为止。
框架:
将问题的各状态之间的转移关系描述为一个图,则深度优先搜索遍历整个图的框架为:
Dfs(v){
if(V被访问过)
return;
将V标记为访问过;
对和V相邻的每个点 u: Dfs(u);
}
int main()
{
while(在图中找到未访问的顶点V)
Dfs(V);
}