微博:
@TankyWoo基
新博客:
TankyWoo

随笔分类 -  算法分析

《算法导论》学习总结 — 21.第16章 贪心算法(1) 基础入门1
摘要:建议先看看前言:http://www.wutianqi.com/?p=2298连载总目录:http://www.wutianqi.com/?p=2403说到贪心算法,避免不了于DP对比,所以前面的DP要了解。贪心算法是使所做的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解。依然和上一章总结DP一样,我先给出一个最容易入门的例子,来看看神马是贪心?(是人就会贪心,这个算法很人性化啊=。=)一个最简单的例子:部分背包问题:有N个物品,第i个物品价值vi,重wi,现在你有一个可以装W 磅的包,你可以选择带走每个物品的全部或一部分,求如何选择可以使背包所装的价值最大?(这个. 阅读全文

posted @ 2011-06-14 13:18 Tanky Woo 阅读(3744) 评论(2) 推荐(2) 编辑

《算法导论》学习总结 — 20.第15章 动态规划(5) 分析几道DP题
摘要:看了下上一篇的日期,是5.16号,已经有20天没写了,郁闷啊,不过最近的考试终于结束了,接下来就是18号的六级和后面的三门考试,这几天可以安心研究算法了,开心啊。建议先看看前言:http://www.wutianqi.com/?p=2298连载总目录:http://www.wutianqi.com/?p=2403这一章,我准备把HDOJ上找几道经典的DP题目给大家分析一下。1.HDOJ 1257 最少拦截系统题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257分析+代码:http://www.wutianqi.com/?p=1841经典的LIS 阅读全文

posted @ 2011-06-12 09:33 Tanky Woo 阅读(2725) 评论(2) 推荐(1) 编辑

谈一下ACM的入门书籍及方法
摘要:首先说一下,ACM的入门方法多种多样,大部分人还是跟着学校一起参加集训,所以我这里主要是想对那些准备ACM入门的业余的朋友谈的。入门书籍:首先推荐一些ACM的书籍:(以下我都会给出在当当网的页面,方便大家直接购买,以下排名不分先后)1.《程序设计导引及在线实践》http://product.dangdang.com/product.aspx?product_id=20051430&ref=search-1-pub这是我的第一本入门书,这本书是配套北大的百炼习题,注意不是POJ,貌似是北大内部测试用的,不过也是对外开放的,去年好像百炼变化过,所以[u]不知道这本书还适不适合那个新的百炼系 阅读全文

posted @ 2011-06-08 20:18 Tanky Woo 阅读(22748) 评论(13) 推荐(9) 编辑

《算法导论》学习总结 — 19.第15章 动态规划(4) 案例之LCS
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这个案例也比较简单,最长公共子序列(LCS),网上的分析非常多,给力啊!按照上一篇总结所说的,找状态转移方程:所以按照所给方程,写代码的工作就非常非常简单轻松了:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869/*Author: Tanky W. 阅读全文

posted @ 2011-05-26 18:55 Tanky Woo 阅读(2424) 评论(1) 推荐(2) 编辑

《算法导论》学习总结 — 18.第15章 动态规划(3) 基础入门2
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一节可以看到《算法导论》学习总结 — 16.第15章 动态规划(1) 基本入门的补充。采用动态规划的最优化问题的两个要素:最优子结构和重叠子问题。先看看最优子结构:在第17篇总结时,装配线调度问题中,已经设计到了最优子结构,证明最优子结构问题可以用书上说的“剪贴技术”,即假设存在更优的解,来反正最优解矛盾。再看看重叠子问题:当一个递归算法不断的调用同一个问题时,我们说该最有问题包含“重叠子问题”。上面这句话不好理解?看看下面这个比较:递归算法:自顶. 阅读全文

posted @ 2011-05-23 12:03 Tanky Woo 阅读(2491) 评论(4) 推荐(2) 编辑

《算法导论》学习总结 — 17.第15章 动态规划(2) 案例之装配线调度
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html原来打算把算法导论在7月份前搞定,现在已经过去一个多月了,才只看到第15章,后面也只零散看了一些,不知道假期前能否看完。。。够呛啊,马上要期末考试了,上学期GPA不到2,被学位警告了,虽说以后不学这个专业了,但起码成绩单上也不能有挂科是吧。。。要是平时一点不看,考前靠春哥,曾哥,关公哥都不行啊。。。这进度,郁闷!尽力吧!顺便还是说两句话:1.有些书上分析的相当好了,我不想做画蛇添足的人,所以有的地方我会适当省略,当然也不是说我总结的地方就是书上讲的不好 阅读全文

posted @ 2011-05-20 12:00 Tanky Woo 阅读(2689) 评论(3) 推荐(2) 编辑

《算法导论》学习总结 — 16.第15章 动态规划(1) 基本入门
摘要:第十四章我想放在后面再看,先搁下。希望大家总结的一些文章也能向我推荐下,大家互相学习。首先,还是建议看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html其次,阿门,感谢老天送给了我们这么一本圣经,看了这一章,再次感受到了《算法导论》分析问题的精辟,强悍的魅力。Orz, Orz,各种Orz。这一章讲的是动态规划,学算法的朋友,尤其是搞ACM的,对这个策略一定非常熟悉,所以这个算法网上的分析讲解教程也是铺天盖地,大家可以多搜几篇学习学习。动态规划(Dynamic Programming,简称DP)是通过组合子问. 阅读全文

posted @ 2011-05-20 07:28 Tanky Woo 阅读(3117) 评论(3) 推荐(1) 编辑

《算法导论》学习总结 — 15. 第13章 红黑树(4)
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一章把前面三篇的代码总结起来,然后推荐一些网上红黑树的优秀讲解资源。代码:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899. 阅读全文

posted @ 2011-05-12 16:35 Tanky Woo 阅读(2634) 评论(2) 推荐(2) 编辑

《算法导论》学习总结 — 14. 第13章 红黑树(3)
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一篇是关于红黑树的结点删除。依然和上一篇的插入一样,先用到了BST的删除结点函数,然后做相应的调整。不过,这里的调整思路颇为新颖。还是来看看略微改变后的删除结点函数:1234567891011121314151617181920212223242526Node* RBTreeDelete(RBTree T, Node *z){ Node *x, *y; // z是要删除的节点,而y是要替换z的节点 if(z->lchild == NULL || 阅读全文

posted @ 2011-05-11 11:56 Tanky Woo 阅读(2104) 评论(2) 推荐(3) 编辑

《算法导论》学习总结 — 13. 第13章 红黑树(2)
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html插入结点用到了上一次BST的插入函数(做了一点添加),并且在此基础上增加了保持红黑性质的调整函数。还是先看看插入函数:123456789101112131415161718192021222324252627282930313233343536void RBTreeInsert(RBTree &T, int k){ //T->parent->color = BLACK; Node *y = NULL; Node *x = T; No 阅读全文

posted @ 2011-05-08 08:27 Tanky Woo 阅读(1844) 评论(2) 推荐(1) 编辑

《算法导论》学习总结 — 12. 第13章 红黑树(1)
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html本章内容颇多,所以我分四篇来写,这一篇是关于一些基本的概念和选择,中间两篇分别是插入和删除,最后一篇是总结。上一章总结过BST(http://www.wutianqi.com/?p=2430),BST在高度较小时,可以获得很好的性能(因为BST的操作的平均时间为O(lgn)),但是在高度较大时,则性能就一般。而红黑树“近似平衡”,于是降低了平均时间,再者,红黑树并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。谈到 阅读全文

posted @ 2011-05-07 09:14 Tanky Woo 阅读(2458) 评论(8) 推荐(3) 编辑

《算法导论》学习总结 — 11. 第12章 二叉查找树
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html推荐在看算法导论的这一章之前先看看严蔚敏老师在《数据结构》上的二叉查找树。整体来说二叉查找树不难,就是插入和删除节点时让人纠结,我就是在删除节点时各种纠结了。二叉树执行基本操作的时间与树的高度成正比。首先说下二叉查找树的性质:设x为二叉查找树中的一个结点。如果y是x的左子树中的一个结点,则key[y]<=key[x];如果y是x的右子树的一个结点,则key[y]>=key[x]。注意这个性质,和堆对比下,还是有区别的,并且这个性质表示二叉查 阅读全文

posted @ 2011-05-03 12:44 Tanky Woo 阅读(2555) 评论(1) 推荐(1) 编辑

《算法导论》学习总结 — 10. 第10章(略) && 第11章 散列表
摘要:建议先看看前言:http://www.wutianqi.com/?p=2298第10章没法说,数据结构还是看严奶奶的比较好,所以《算法导论》上的这一章我随便瞄了几眼就过去了,不过话说回来,数据结构非常重要!!!所以,大家最好把严蔚敏的《数据结构》认认真真的看N遍!!!另外,推荐看看这个:数据结构的源码实现:http://www.cpp leyuan.com/viewthread.php?tid=418(大家把cpp和leyuan中间的空格手动去掉吧,网址被禁止了。)第11章散列表也属于数据结构方面的知识,第10章只是讲了最基本的几个结构。这一章也很简单,其实就是介绍了一些概念及思想,很容易理解 阅读全文

posted @ 2011-04-29 14:15 Tanky Woo 阅读(1822) 评论(2) 推荐(1) 编辑

《算法导论》学习总结 — 9.第九章 中位数和顺序统计学
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一章的内容很简单,基本都是一些概念。第i个顺序统计量:在一个由n个元素组成的集合中,第i个顺序统计量(order statistic)是该集合中第i小的元素。最小值是第1个顺序统计量(i=1)最大值是第n个顺序统计量(i=n)中位数:一个中位数(median)是它所在集合的“中点元素”,当n为奇数时,i=(n+1)/2,当n为偶数是,中位数总是出现在 (下中位数)和 (上中位数)。找最大值/最小值问题,通过比较n-1次可以得出结果。MINIMUM(A 阅读全文

posted @ 2011-04-26 13:08 Tanky Woo 阅读(2156) 评论(5) 推荐(4) 编辑

《算法导论》学习总结 — 7.第八章(1) 决策树
摘要:建议先看看前言 :http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html 第八章将介绍几种非比较排序—计数排序,基数排序,桶排序,这三种排序都在线性时间下运行的。 这一节决策树其实是对前面的堆排序,快排等是最优的比较算法的证明, 首先说下《算法导论》上对决策树的定义:一棵决策树是一棵满二叉树(注意看下面解释),表示某排序算法作用于给定输入所做的所有比较,而控制结构,移动等都被忽略了。 注意:这里个人认为定义是错误的,决策树不是一棵满二叉树,连完全二叉树都不是。(不知道有没有朋友看到这里和我想法一样?) 首先看看只有三个元 阅读全文

posted @ 2011-04-21 13:42 Tanky Woo 阅读(3422) 评论(3) 推荐(3) 编辑

《算法导论》学习总结 — 6.第七章 快速排序
摘要:推荐先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html其实这一篇我老早就写过了,只不过最近在总结《算法导论》,而第七章就是快速排序,我当初总结的快排也是根据算法导论来的,为了方便大家阅读,我在这里把曾经写过的重新再贴一遍。 前几天写过一个堆排序的文章(http://www.wutianqi.com/?p=1820),里面谢了很多讲解和代码注释,个人感觉快速排序不是很难,所以不想写讲解,也不需要写注释,大家如果不明白什么是快速排序,可以去看下文章最后我推荐的几个链接。 我查过网上很多关于快排的文章和代码,但 阅读全文

posted @ 2011-04-19 18:08 Tanky Woo 阅读(3280) 评论(4) 推荐(3) 编辑

《算法导论》学习总结 — 5.第六章(2) 优先级队列
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html 上一章总结是的堆排序算法,这一章同样是利用了堆这种数据结构,实现在是优先级队列。 根据堆分为最大堆,最小堆,所以优先级队列也可以分为最大优先级队列和最小优先级队列。 优先级队列的概念和用途书上已经写的很清楚了,我就不再打一遍了。直接写出具体实现。 在实现前先说几点: 1.上一章说过,堆的length和heapsize要区分清楚,这一章的优先级队列里就用到了。 2.优先级队列用到了上一章的一些函数比如MaxHeapify(),不记得的可以复习下上一章。 阅读全文

posted @ 2011-04-17 15:00 Tanky Woo 阅读(2189) 评论(7) 推荐(1) 编辑

《算法导论》学习总结 --- 4.第六章(1) 堆排序
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html首先介绍几个概念: 卫星数据:一个带排序的的数通常是有一个称为记录的数据集组成的,每一个记录有一个关键字key,记录的其他数据称为卫星数据。 原地排序:在排序输入数组时,只有常数个元素被存放到数组以外的空间中去。 在第二章介绍了两种排序:插入排序和合并排序,接下来两章要介绍的是推排序和快速排序,这四个排序都属于比较排序(comparison sort)。 我以前总结过堆排序,并具体实现了堆排序,代码中给出了详细的注释,所以在这里就不重复发了,大家可以去 阅读全文

posted @ 2011-04-15 12:51 Tanky Woo 阅读(2798) 评论(16) 推荐(4) 编辑

《算法导论》学习总结 — 3.第四章 && 第五章
摘要:建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html因为《算法导论》第一部分1~5章的理论性太强,研究过多容易纠结,所以索性合起来快点讲过去。第四章:这一章讲的是递归式(recurrence),递归式是一组等式或不等式,它所描述的函数是用在更小的输入下该函数的值来定义的。本章讲了三种方法来解递归式,分别是代换法,递归树方法,主方法。1.代换法(Substitution method)(P38~P40)定义:即在归纳假设时,用所猜测的值去代替函数的解。用途:确定一个递归式的上界或下界。缺点:只能用于解的形 阅读全文

posted @ 2011-04-12 12:40 Tanky Woo 阅读(5223) 评论(3) 推荐(2) 编辑

《算法导论》学习总结 — 2.第一章 && 第二章 && 第三章
摘要:上一篇:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html前三章基本没什么内容,所以合在一起总结。第一章:讲了算法(algorithm)的基本概念,以及算法的作用。(这些可以看书)用个人的话来讲,你可以把算法当做一个解决问题的方法,就像数学里的各种公式一样,你也可以把他们认为是一种算法。算法无处不在,而且算法必须存在,否则我们的生活都将变得缓慢,迟钝。举个例子:我们平时出去游玩时,要事先查好路线,这时就可以用百度地图搜索从A地到B地的路线,地图上会给出最快的乘车路线,这些路线是怎么给出来的,就是用了最短路的算法,关于 阅读全文

posted @ 2011-04-10 09:52 Tanky Woo 阅读(5132) 评论(9) 推荐(7) 编辑

导航