这周好像啥都干了,却又啥都没干。题目也刷了(虽然不是很会... ...),Java也学了,但是感觉好像没有收获什么?
刷题截图
没错。。。我没刷完。。。还是最后补上来的题目。
这周我都学到了些什么
第一个就是剪枝。
这个东西用起来很熟悉,在没有学之前自己也在用,没有想到这个东西叫剪枝。剪枝的不同种类我还没有了解清楚,基本的应该会用了。剪枝可以降低搜索消耗,提高效率。不过好像我刷过的题目 对于dfs的剪枝效果好得多。对于分支较多的搜索,答案较深的搜索,只要求“能否”而不要求“最佳”的搜索,用dfs搭配剪枝效果会比bfs高得多。
如果把bfs和dfs形象一点地描述,bfs就像从根部一层一层地遍历树干、树冠,越往上,即越深地搜索,每次遍历的同层情况就会很多,搜索的情况是很庞大的,如果答案位于比较深的地方,那么耗时将是很长的,即便用上了剪枝,剪掉的也只是最外圈那一层“树冠”。dfs则是找准一根从根部到叶子的线路搜索,然后返回搜索分支,对于较深的答案搜索到后,剪枝可能就是“劈掉了半棵树”甚至更多,在一些情况下效率更高。
第二个就是A-Star算法。
A*用于处理多数码问题,对于九宫格一种情况该如何还原到其他情况的处理。(但是我题目没有做对,我也没找到哪里错了,我也用了自己做的游戏进行测试,没有任何问题,可能只是没找到错误的例子吧,所以我也不能说我把A*完全搞懂了,起码还有细节没有明白)
其他的,好像除了几个三维搜索以外都没什么新东西了。
下周目标
我看其他人的Java进度挺快的,这周我得抓紧一下了。
然后题目。。。得赶紧做完了!
我估计这周做题目应该会遇到更多的新算法内容,到时候就是面向CSDN+OIWIKI做题了。