4月18日学习日记

前两天学习了搜索,搜索分为广度优先搜索(BFS)和深度优先搜索(DFS)。 
搜索算法是利用计算机的高性能来有目的地穷举
一个问题的部分或所有的可能情况,从而求出问
题的解的一种方法。
相比于单纯的枚举算法有了一定的方向性和目标
性。算法是在解的空间里,从一个状态转移(按
照要求拓展)到其他状态,这样进行下去,将解
的空间中的状态遍历,找到答案(目标的状态)。
状态(state)是对问题在某一时刻进展情况的数学
描述,或者是数学抽象。
每一个状态都会是答案的一个“可能的”解。状态
的转移就是问题从一个状态转移到另一个状态,
这样就可以进行搜索的一步步延伸,最后要

广度优先搜索:基本思想:从初始状态S 开始,利用规则,生成
所有可能的状态。构成的下一层节点,检查是否
出现目标状态G,若未出现,就对该层所有状态
节点,分别顺序利用规则。
生成再下一层的所有状态节点,对这一层的所有
状态节点检查是否出现G,若未出现,继续按上
面思想生成再下一层的所有状态节点,这样一层
一层往下展开。直到出现目标状态为止。
——在路径的寻找问题上用得比较多。

深度优先搜索:基本思想:从初始状态,利用规则生成搜索树下
一层任一个结点,检查是否出现目标状态,若未
出现,以此状态利用规则生成再下一层任一个结
点,再检查,重复过程一直到叶节点(即不能再
生成新状态节点),当它仍不是目标状态时,回
溯到上一层结果,取另一可能扩展搜索的分支。
采用相同办法一直进行下去,直到找到目标状态为止。

对于搜索,基本思想还是理解的,但是不会应用,遇到问题时不知如何使用,不会写判断条件,可能对于搜索没有深刻了解只学了个皮毛。

昨天打比赛,遇到一道题数据是10的1000次方,long long是2的64次方,远远不够,后来想到可以用string定义字符串来表示,然后字符串转数组,在转二进制进行解决,不够当时没打出来,这两天太忙了,等星期六在做一遍,看看能否AC,还是要发散思维,当时做题时就没有想的用字符串来表示,结果一直超时,后来改了一下不超时,但是wa,就是数据输入不了,不能局限于一种思维,要多想几种方法。

你可能感兴趣的:(4月18日学习日记)