第一章 搜索问题内容: 状态空间的搜索问题。搜索方式:盲目搜索启发式搜索关键问题: 如何利用知识,尽可能有效地找到问题的解(最佳解)。搜索问题(续2)S0Sg搜索问题(续2)讨论的问题:有哪些常用的搜索算法。问题有解时能否找到解。找到的解是最佳的吗?什么情况下可以找到最佳解?求解的效率如何。1.1 回溯策略例:皇后问题( )Q( )((1,1))QQ( )((1,1))((1,1) (2,3))Q( )((1,1))((1,1) (2,3))QQ( )((1,1))((1,1) (2,3))((1,1) (2,4))QQ( )Q((1,1))((1,1) (2,3))((1,1) (2,4))((1,1) (2,4) (3.2))QQ( )((1,1))((1,1) (2,3))((1,1) (2,4))((1,1) (2,4) (3.2))Q( )((1,1))((1,1) (2,3))((1,1) (2,4))((1,1) (2,4) (3.2))( )((1,1))((1,1) (2,3))((1,1) (2,4))((1,1) (2,4) (3.2))Q( )((1,1))((1,2))((1,1) (2,3))((1,1) (2,4))((1,1) (2,4) (3.2))QQ( )((1,1))((1,2))((1,1) (2,3))((1,1) (2,4))((1,2) (2,4))((1,1) (2,4) (3.2))QQ( )Q((1,1))((1,2))((1,1) (2,3))((1,1) (2,4))((1,2) (2,4))((1,1) (2,4) (3.2))((1,2) (2,4) (3,1))QQ( )Q((1,1))((1,2))Q((1,1) (2,3))((1,1) (2,4))((1,2) (2,4))((1,1) (2,4) (3.2))((1,2) (2,4) (3,1))((1,2) (2,4) (3,1) (4,3))递归的思想当前状态目标状态g回溯搜索算法 BACKTRACK(DATA) DATA:当前状态。 返回值:从当前状态到目标状态的路径 (以规则表的形式表示) 或FAIL。回溯搜索算法递归过程BACKTRACK(DATA)1, IF TERM(DATA) RETURN NIL;2, IF DEADEND(DATA) RETURN FAIL;3, RULES:=APPRULES(DATA);4, LOOP: IF NULL(RULES) RETURN FAIL;5, R:=FIRST(RULES);6, RULES:=TAIL(RULES);7, RDATA:=GEN(R, DATA);8, PATH:=BACKTRACK(RDATA);9, IF PATH=FAIL GO LOOP;10, RETURN CONS(R, PATH);当前状态存在问题及解决办法问题:深度问题死循环问题解决办法:对搜索深度加以限制记录从初始状态到当前状态的路径回溯搜索算法1BACKTRACK1(DATALIST) DATALIST:从初始到当前的状态表(逆向) 返回值:从当前状态到目标状态的路径 (以规则表的形式表示) 或FAIL。回溯搜索算法11, DATA:=FIRST(DATALIST)2, IF MENBER(DATA, TAIL(DATALIST)) RETURN FAIL; 3, IF TERM(DATA) RETURN NIL;4, IF DEADEND(DATA) RETURN FAIL;5, IF LENGTH(DATALIST)BOUND RETURN FAIL;6, RULES:=APPRULES(DATA);7, LOOP: IF NULL(RULES) RETURN FAIL;8, R:=FIRST(RULES);回溯搜索算法1(续)9, RULES:=TAIL(RULES);10, RDATA:=GEN(R, DATA);11, RDATALIST:=CONS(RDATA, DATALIST);12, PATH:=BACKTRCK1(RDATALIST)13, IF PATH=FAIL GO LOOP;14, RETURN CONS(R, PATH);QQ一些深入的问题失败原因分析、多步回溯QQQQ3 2 2 3一些深入问题(续)回溯搜索中知识的利用 基本思想(以皇后问题为例): 尽可能选取划去对角线上位置数最少的。1.2 图搜索策略问题的引出回溯搜索:只保留从初始状态到当前状态的一条路径。图搜索:保留所有已经搜索过的路径。一些基本概念节点深度: 根节点深度=0 其它节点深度=父节点深度+10123一些基本概念(续1)路
原创力文档

文档评论(0)