这周老师讲了搜索算法,哇,真的感觉有点难,看了看题,毫无头绪。 搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。 相比于单纯的枚举算法有了一定的方向性和目标性。算法是在解的空间里,从一个状态转移(按照要求拓展)到其他状态,这样进行下去,将解的空间中的状态遍历,找到答案(目标的状态)。 搜索算法分为 广度优先搜索(BFS) 和 深度优先搜索(DFS) 广度有限搜索 广度优先搜索就是从初始状态出发,根据规则,在下一层生成所有可能的状态,检查在该层是否出现目标,如果没有出现,那就按照顺序对该层的所有状态利用规则,再生成下一层所有可能的状态。逐个查找,以此类推,直到出现目标。主要用于路径寻找等问题。 深度有限搜索 深度有限搜索就是一条路走到底,不撞南墙不回头,就是从初始状态出发,利用规则,搜索下一层任一节点,如果没有发现目标,那就再生成下一层任一节点,直到不能再生成新节点为止。若仍未发现目标,那就该回头了,返回上一层,取另外的分支继续搜索,以此类推,知道找到目标。 广度优先搜索是先进先出,可以用队列来完成任务。而深度有限搜索先进后出,可以用栈来完成。 我的理解差不多就是那么多。