深度优先搜索算法 Procedure DFS(G:带顶点y,,yn的连通图) T:=只包含顶点y1的树; visit(v); Procedure visit(:G的J顶点) forv每个邻居w{ ifw不在T中then{ 加入顶点w和边{yw}到T; visit(w); }
深度优先搜索算法 Procedure DFS(G: 带顶点v1 ,…,vn的连通图) T:=只包含顶点v1的树; visit(v1 ); Procedure visit(v: G的顶点) for v每个邻居w { if w不在T中then { 加入顶点w和边{v,w}到T; visit(w); } }
回溯(八皇后) 在n×n格的棋盘上放置彼此不受攻击的n个皇后。 a b c d e f g h 从空棋盘开始 8 尝试第1列,第1行,n行; 曾 6 曾 尝试第2列,第1行,n行; 4 4 3 3 鬯 c3 尝试第k+1列,第1行,…n行; 警 1 d e
回溯(八皇后) 在n×n格的棋盘上放置彼此不受攻击的n个皇后。 从空棋盘开始 尝试第1列,第1行,…n行; 尝试第2列,第1行,…n行; …. 尝试第k+1列,第1行,…n行; …
回溯(子集和) 给定一组正整数x1,,Xn,和为M的一个子集? 从空子集开始 尝试添加一项, 和等于M,结束; 和不超过M,子集包含它; 没有合适添加项,去掉最后一项
回溯(子集和) 给定一组正整数x1 , …, xn,和为M的一个子集? 从空子集开始 尝试添加一项, 和等于M,结束; 和不超过M,子集包含它; 没有合适添加项,去掉最后一项
回溯(子集和) 举例:{31,27,15,11,7,5},和为39的子集? 31 {27乃 31,7} {31,5}{27,11} {27,7} 27,7,5}
回溯(子集和) 举例:{31, 27, 15, 11, 7, 5}, 和为39的子集? {31} {27} {27, 7} {27, 11} {31, 5} {31, 7} {27, 7, 5}
构造生成树:广度优先搜索 b b a d a e e d
构造生成树:广度优先搜索 a b e d c f a c b e d f