摘要:这是《算法导论》中的一个例题(22.2-7),题目描述如下:树T=(V,E)的直径(diameter)定义为max(u,v),亦即,树的直径是树中所有最短路径长度中的最大值。试写出计算树的直径的有效算法,并分析算法的运行时间。算法:1》 从任意一点u开始,做BFS(广度优先搜索),找到最远点d(1).2》 从d(1)开始做BFS,所找到的最远路径(d(1)~~d(2))即为树的直径解释:第一步找到的d(1)为直径的一个端点,从d(1)开始做BFS得到的自然是直径,问题的关键在于为什么d(1)为直径的一个端点!下面对此加以说明:首先,若u为直径上一点,那么d(1)为直径的一个端点 证明(反证法.
阅读全文
摘要:最长单调递增子序列--时间复杂度为O(n*n)以及O(nlgn)
阅读全文
摘要:假设有一个有n个数据记录组成的数组要排序,且每个记录的关键字的值为0或1。排序这样一组记录的一个算法应具备如下三个特性中的一部分。1)算法的运行时间为O(n)。2)算法是稳定的。3)算法是原地排序的,它可以使用除输入数组以外的固定量的存储空间。a)给出一个满足上述条件1和条件2的算法。b)给出一个满足上述条件1和条件3的算法。c)给出一个满足上述条件2和条件3的算法。d)在a)~c)中给出的算法能否用来在O(bn)时间内排序,对有b位关键字的n个记录进行基数排序?如果行,说明如何做;如果不行,说明原因。e)假设一个n个记录中每个的关键字都介于1到k之间。说明如何修改计数排序,使得可以在O(n+
阅读全文
摘要:算法导论-4-2 找出所缺的整数、算法导论-4-6 VLSI芯片测试
阅读全文
摘要:课上讨论了很多问题,诸如算法设计与分析是一门关注于性能的课程,现在有很多东西比性能重要,比如:安全、成本、可扩展性、稳定性、用户友好、模块化、功能性、特性。那么,为什么算法依然重要呢? 首先,算法具有创造性,可以实现从无到有的过程。 其次,算法就如同显示生活中“货币”一样。相对于钱币,我们更需要水和食物,但是水和食物需要用钱来交换。性能和其他的关系也是如此,比如,我们会牺牲两(虚指)倍的性能去交换安全,用户友好等等其他的。 一个非常优秀的思路:忽略机器相关的常数变量以及更加关注与成本增长趋势。 这句话的深层含义还没有理解透彻,只是有种模糊的认识,先这样吧,把这个问题放进背包里面,继...
阅读全文
摘要:前一阵子,实验室老师个了个小命题,就是如何提取一段AVI视频中的图片,或者说视频帧的提取。虽然是第一次接触OPENCV,可是做起来也是不难的,自己的代码就不拿出来了,写的很乱,网上的这个代码比较不错,为了说明我们的主题,姑且拿这段代码做个试验。#include #include #include #include #include #define NUM_FRAME 5591 //只处理前300帧,根据视频帧数可修改int frameH;int frameW; int fps;int numFrames;void Video_to_image(char* filename){ printf(&
阅读全文
摘要:原文链接 : http://hi.baidu.com/jsj09/item/db6d7a0ee4de31db72e6767d在Windows7下安装Visual C++ 6.0后,遇到一个致命的问题打开文件的时候出现异常而导致VC6崩溃,如下图所示:微软针对这个问题发布了一个补丁,原补丁是未编译的VC6工程,见附件filetool_未编译.zip,大家可以手动编译一下。为了方便使用,我在附件里还提供了一个已编译的版本FileTool.dll_已编译.zip 本站提供下载:filetool.rar大家不管是自行编译也好,还是下载提供的已编译的FileTool.dll,使用方法都一样:1.把Fi.
阅读全文
摘要:由于实验室需要,今天重新安装了一下VC6,结果在安装VC6LineNumberAddin是出现了一些问题。安装这个插件的目的是可以在编写代码时候,自动显示行号。。。。。唉,用习惯了VS2010,对自动显示行号早就习以为常了。。。。。最让人讨厌的就是Unable to register this add-in because its DllRegisterServer returns an error。然后百般搜索,我得到了下面这个解决方案,我是通过 设置 MSDEV.exe文件,右键-->"属性"-->"兼容性"-->"以管理
阅读全文