摘要: 子集问题是指生成一个集合的全部子集(2^n个,包括空集和全集),今年实验室一个去高盛的同学在技术面中被问到了这个问题,另外记得还有一个快排的时间复杂度证明(这个更难,就算了,有时间去看看算法导论怎么证明的)算法1:减一治策略有了减治生成排列的经验,相信对于子集来说,用减治法来思考就更加简单了。如果有了n-1个元素的全部子集项{ 2^(n-1) 项},那么n个元素的全部子集首先包含这已经有的n-1个元素的全部子集,另外还包括把第n个元素加到每一个子集项里面去生成的子集项{ 也是2^(n-1) 项 },所以,正好这就有了2^(n-1) + 2^(n-1) = 2^n项,正是我们要的结果。为什么说它 阅读全文
posted @ 2011-06-17 23:29 jinmengzhe 阅读(2033) 评论(0) 推荐(3) 编辑
摘要: 从这篇文章始,将花连续2篇文章来介绍2个很重要的问题:生成排列和生成子集它们都有减一治策略的算法,但这2篇文章将不仅仅局限于减一治策略来实现,而将介绍更多的实现算法。这篇介绍排列,下篇介绍子集。--------------------------------------------------------------------------------------------------------------------------------------------------介绍3种构造排列的方法:算法1:减一治从底向上构造排列假设n-1个元素的排列已经生成好,那么将第n个元素插入到每一 阅读全文
posted @ 2011-06-17 23:07 jinmengzhe 阅读(3604) 评论(0) 推荐(2) 编辑
摘要: 这篇文章将讨论:1) 减治法的思想和策略2) 几个数据结构里面经典的使用减治策略的算法:插入排序,深度和广度优先查找,拓扑排序(都是减一治的)通过 1) 2)明白减治策略的基本思想和方法,也对经典数据结构做一番新的审视,从减治策略的角度来重新看待这些算法。而在后面,将继续花几篇文章讨论减治策略的其他问题:排列问题,子集问题,减常因子算法,减可变规模算法。-------------------------------------------------------------------------------------------------------------------------- 阅读全文
posted @ 2011-06-17 20:32 jinmengzhe 阅读(9994) 评论(0) 推荐(4) 编辑