1. 内容
状态空间的搜索问题
搜索方式:
- 盲目搜索:深度优先搜索;宽度优先搜索
- 启发式搜索:A*算法
2. 深度优先搜索
皇后问题:
PS:本处选用4*4网格,放置4个皇后,使每个皇后横、竖、斜都不在一条直线。采用深度
操作步骤:
()——((1,1));
((1,1))——((1,1)(2,3));
((1,1)(2,3))——((1,1));
((1,1))——((1,1)(2,4));
((1,1)(2,4))——((1,1)(2,4)(3,2));
((1,1)(2,4)(3,2))——((1,1)(2,4));
((1,1)(2,4))——((1,1));
((1,1))——();
()——((1,2));
((1,2))——((1,2)(2,4));
((1,2)(2,4))——((1,2)(2,4)(3,1));
((1,2)(2,4)(3,1))——((1,2)(2,4)(3,1)(4,3));
以上基于递归和回溯
伪代码:
DEPTH - FIRST - SEARCH(DATA)
1. IF TERM(DATA) RETURN NIL;
2. IF DEADEND(DATA) RETURN FAIL;
3. RULEFS := APPRULES(DATA)
4. LOOP: IF NULL(RULETURN) FAIL
5. R := FIRST(RULES)
6. RULES := TAIL(RULES);
7. RDATA := GEN(R, DATA);
8. PATH := Depth-First-Search(RDATA);
9. IF PATH = FAIL GO LOOP;
10. RETURN CONS(R, PATH);