
【Algorithm】
仙道菜
北京航空航天大学研究生;
关注:计算机视觉、机器学习等;
邮箱:cyh@buaa.edu.cn
展开
-
‘聪明的搜索算法’
A*算法 是一种启发式的搜索算法。 了解BFS、DFS或者Dijkstra算法的人应该知道。这些算法都是一种向四周盲目式搜索的方法。 启发式搜索: 启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价是十分重要的。不同的估价可以有不同的原创 2012-09-29 22:58:23 · 2414 阅读 · 0 评论 -
快排到底有多快?元芳,你还看吗?
大师级的文章,总是能够使你更接近于事物的本质。 最近看了pongba的数学之美番外篇:快排为什么那么快。文中提到了Mackay的一篇文章(这里是译文),里面提到了使用信息论来解释快排与堆排的速度差异的本质原因。看罢,内心有种莫名的激动。虽不懂信息论,但Mackay(大师毕竟是大师),最简单的解释,却直接触到了本质。有兴趣的可以看看Mackay的这篇文章。这里,只是我自己的一点感悟。原创 2012-10-28 01:27:28 · 5864 阅读 · 5 评论 -
David MacKay:用信息论解释 '快速排序'、'堆排序' 本质与差异
这篇文章是David MacKay利用信息论,来对快排、堆排的本质差异导致的性能差异进行的比较。信息论是非常强大的,它并不只是一个用来分析理论最优决策的工具。从信息论的角度来分析算法效率是一件很有趣的事,它给我们分析排序算法带来了一种新的思路。运用了信息论的概念,我们很容易理解为什么快排的速度那么快,以及它的缺陷在哪里。 由于个人能力不足,对于本文的理解可能还是有点偏差。而翻译 2012-10-21 00:25:46 · 5208 阅读 · 0 评论 -
STL的红与黑--rb_tree
红黑树,作为一种广泛使用的数据结构,我想大家应该都不会陌生。谈到红黑树的用途,最广为人知的应该就是红黑树在C++ STL中的应用了,在set, multiset, map, multimap等中,都应用了红黑树。但是,rb_tree本身并不开放给外界使用。 今天,我将介绍,STL源码中,红黑树的具体实现(因为篇幅所限,这里不包括删除操作)。因为文章的主要目的是分析STL中的源码,所原创 2012-10-14 03:40:14 · 3547 阅读 · 0 评论 -
KMP及其改进算法
本文主要讲述KMP已经KMP的一种改进方法。若发现不正确的地方,欢迎交流指出,谢谢!KMP算法的基本思想:KMP的算法流程:每当一趟匹配过程中出现字符比较不等时,不需回溯 i 指针,而是利用已经得到的部分匹配的结果将模式向右滑动尽可能远的一段距离后,继续进行比较。设S为目标串,T为模式串,设 i 指针和 j 指针分别指示目标串和模式串中正待比较的字符。开始时原创 2012-11-08 15:51:23 · 4437 阅读 · 2 评论 -
四柱HanoiTower----是甜蜜还是烦恼
我想很多人第一次学习递归的时候,老师或者书本上可能会举汉诺塔的例子。但是今天,我们讨论的重点不是简单的汉诺塔算法,而是三柱汉诺塔的延伸。先来看看经典的三柱汉诺塔。 一、三柱汉诺塔(Hanoi_Three):我想大家对于三柱汉诺塔的理解以及算法的实现应该是很熟练了。我在这里简单的过一遍三柱汉诺塔的算法思想:有A、B、C三根柱子,A柱上有n个盘子,现在需要将A上所有的盘子转移到原创 2012-10-16 09:21:38 · 2910 阅读 · 3 评论