微博:
@TankyWoo基
新博客:
TankyWoo

2011年1月19日

摘要: 接上一篇:最短路径算法—Bellman-Ford(贝尔曼-福特)算法分析与实现(C/C++) Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。   Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含 阅读全文
posted @ 2011-01-19 13:06 Tanky Woo 阅读(65620) 评论(7) 推荐(4) 编辑

2011年1月17日

摘要: 相关文章:1.Dijkstra算法:http://www.wutianqi.com/?p=18902.Floyd算法:http://www.wutianqi.com/?p=1903Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(Richard Bellman, 动态规划的提出者)和小莱斯特•福特(Lester Ford)发明。Bellman-Ford算法的 阅读全文
posted @ 2011-01-17 20:49 Tanky Woo 阅读(29539) 评论(1) 推荐(9) 编辑

2010年12月15日

摘要: 已出连载: 1.《随机化算法(1) — 随机数》 2.《随机化算法(2) — 数值概率算法》 3.《随机化算法(3) — 舍伍德(Sherwood)算法》 4.《随机化算法(4) — 拉斯维加斯(Las Vegas)算法》 正文: 蒙特卡罗法(Monte Carlo method)是以概率和统计的理论、方法为基础的一种计算方法,将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解,故又称统计模拟法或统计试验法。 蒙特卡罗算法在一般情况下可以保证对问题的所有实例都以高概率给出正确解,但是通常无法判定一个具体解是否正确。 设p是一个实数,且1/2 p 阅读全文
posted @ 2010-12-15 14:27 Tanky Woo 阅读(6159) 评论(1) 推荐(1) 编辑

2010年12月13日

摘要: 关于编程的学习,大家肯定都知道,也是大家都说来说去的,就几句话:1.多看书。2.多看代码。3.多敲代码。这些我不想多说,也觉得没有多说的必要。经常在CSDN上看到有人问“我学习C++一段时间了,该如何进阶?”,然后接着就是一大堆的人,重复这上面的三句话或者更多,我不是说这些方法是错的,我只是认为,这样没有点到本质,初学者喜欢依赖于书籍,他们看书了,他们也照着书敲了代码,但是他们就是感觉一直在基础的层面上打转,这是为何呢?在C++里定义复制构造函数时,大家知道,一般对于类中含有指针的,要进行深复制,而不是浅复制。而我在这里也要讲一个类似的方法,那就是关于编程的浅学习与深学习的问题。大家在这里可以 阅读全文
posted @ 2010-12-13 16:10 Tanky Woo 阅读(5206) 评论(20) 推荐(8) 编辑
摘要: 已出连载:1.《随机化算法(1) — 随机数》2.《随机化算法(2) — 数值概率算法》3.《随机化算法(3) — 舍伍德(Sherwood)算法》正文:悟性不够,这一章看代码看了快一个上午,才理解。上一章讲过《概率算法(3) — 舍伍德(Sherwood)算法》,但是他的有点是计算时间复杂性对所有实例而言相对均匀,而其平均时间复杂性没有改变。而拉斯维加斯算法怎么显著改进了算法的有效性。拉斯维加斯算法的一个显著特征是它所作的随机性决策有可能导致算法找不到所需的解。因此通常用一个bool型函数表示拉斯维加斯算法。[代码]考虑用拉斯维加斯算法解决N皇后问题:对于n后问题的任何一个解而言,每一个皇后 阅读全文
posted @ 2010-12-13 10:08 Tanky Woo 阅读(18451) 评论(2) 推荐(4) 编辑

2010年12月12日

摘要: 已出连载:1.《随机化算法(1) — 随机数》2.《随机化算法(2) — 数值概率算法》正文:这一章怎么说呢,我个人感觉不好理解,在网上查了一些资料,没发现有具体对舍伍德算法的介绍。迄今为止看的最全面的就是王晓东的《计算机算法设计与分析》里讲的了。在网上查的一些资料也基本全和这本书上讲的一样,至于是这本书先写的,还是其他位置先写的,我就不做评论了。(有时间我把那本书上讲舍伍德的一段给拍下来放到文章里) 书上对舍伍德讲的比较详细,但是不太好理解,一定要多看几遍。我这里只说下他的基本思想:在一般输入数据的程序里,输入多多少少会影响到算法的计算复杂度。这时可用舍伍德算法消除算法所需计算时间与输入实例 阅读全文
posted @ 2010-12-12 11:55 Tanky Woo 阅读(12879) 评论(5) 推荐(3) 编辑

2010年12月11日

摘要: 接着上一篇:随机化算法(1) — 随机数在这章开篇推荐下chinazhangjie总结的随机算法,因为咱两看的是同一本书,所以大家也可以去参考下他的,总结的很不错。http://www.cnblogs.com/chinazhangjie/archive/2010/11/11/1874924.html(顺便再PS一下,小杰也是我论坛的C/C++问题求助板块的版主,C/C++小牛)这一章我就把书中的一个例子举出来了,感觉虽然很简单,但是很有意思。用随机投点法计算Pi值设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点 阅读全文
posted @ 2010-12-11 12:58 Tanky Woo 阅读(6477) 评论(8) 推荐(3) 编辑

2010年12月10日

摘要: 最近在看王晓东的《计算机算法设计与分析(第3版) 》,感觉讲的挺不错的。这里先推荐下。接下来的几章(包括本章),我准备以连载的方式讲出来,主要用到的资料是上面推荐的那本书以及《算法导论》和网上的资源,内容是概率分析与随机算法。文章内大部分内容出自书中,我仅以汇总形式以及个人理解加以补充。如有纰漏,欢迎指出。概率算法的一个基本特征是对所求解问题的同一实例用同一概率算法求解两次可能得到完全不同的效果。... 阅读全文
posted @ 2010-12-10 08:00 Tanky Woo 阅读(17123) 评论(20) 推荐(5) 编辑

2010年12月8日

摘要: 虽然这个问题已经在网上被讨论遍了,但是最近从新拾起算法,感觉有必要夯实一下基础。棋盘覆盖问题:首先大致描述一下题目:在一个2^k×2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘.下图–图(1)中的特殊棋盘是当k=2时16个特殊棋盘中的一个:图(1)题目要求在棋盘覆盖问题中,要用下图—图(2)所示的4种不同形态的L型骨牌覆盖一个给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖.图(2)思路分析:当k0时,将2^k×2^k棋盘分 阅读全文
posted @ 2010-12-08 10:23 Tanky Woo 阅读(3343) 评论(4) 推荐(1) 编辑

2010年12月3日

摘要: 话说已经三个月没碰过算法了,真的很无奈,恐怕学到的一点知识全忘光了。昨天,萝莉神给我一道题目:TitleRoowe(没见过这么BT的,拿自己名字去编题目)很喜欢研究数学,现在他就遇到一个有趣的问题,比如,直角三角形的周长是120的话,那么它的三条边可以是20,48,52,或者24,45,51,还有30,40, 50,有三种不同的解,现在他想知道一个区间[a,b]中哪个数的解数最多(1<= a... 阅读全文
posted @ 2010-12-03 11:19 Tanky Woo 阅读(5596) 评论(2) 推荐(1) 编辑

导航