悄然无声的 Blog
不是我不明白,这世界变化快!

随笔分类 -  数据结构与算法

静态数组、基本排序、栈和队列、链表、递归、高级排序
“拼木头”算法挑战赛:禁忌搜索算法,用Javascript 跑
摘要:这里要讨论一下,拼木头问题和百钱买百鸡问题是很不一样的。百钱买百鸡问题,每种鸡的数目没有限定,所以你可以用穷举法。拼木头问题,每一种木头的数目一开始已经给出来了,这样,选用哪些种类的木头,最后会相互影响,如果你一开始总是选择最方便的数据来组合,很有可能陷入局部最优。 阅读全文
posted @ 2011-06-22 22:08 左洸 阅读(2116) 评论(2) 推荐(1) 编辑
模拟退火算法应用于最优排列问题和最优组合问题 之 排列篇
摘要:一般学习模拟退火算法的时候,都是用全排列问题作为例子讲解,所谓全排列问题,就是说解的长度(或者步骤)是确定的,只不过排列顺序不同罢了,其中任何一种排列顺序都是问题的一个解,我们通过不断尝试不同的排列顺序,找到其中最优的一个。象TSP旅行商问题就是典型的全排列问题,所有的城市都是两两互联的,每个城市都要去一次(且只能去一次),先去那个后去那个,顺序不同只不过花费的代价不一样,但都是问题的一个解决方案。注意:任何一种排列都是问题的一个解。这是一种很好的特性,这种情况下,可以直接应用典型的模拟退火算法。模拟退火算法的核心就是对解的取舍。第一步:首先生成一个初始解。生成初始解的时候,你可以随机生成,也 阅读全文
posted @ 2011-05-17 23:03 左洸 阅读(3225) 评论(4) 推荐(3) 编辑
大话搜索 之 最难的搜索问题
摘要:“人生就是不断的做出选择”,在影视作品中,每当主角面对重大抉择或者感慨人生的时候,我们经常可以听到这句台词。园子里的很多朋友、特别是已过而立之年的朋友们,回首过往,一定也感慨甚多吧。有的人花费了巨大的努力、执着的坚持,兜了一大圈,却最终又回到原地,所获甚少;有的人抓住机会,正确选择,只需几步,就获得了他人难以企及的成就。 阅读全文
posted @ 2010-12-07 10:45 左洸 阅读(2280) 评论(6) 推荐(2) 编辑
Python的Base64编码图片(转载)
摘要:很多年以前,曾经保存过一个页面,但发现图片并没有以文件的形式保存下来,打开页面时图片却有显示,开始以为是js玩的花招(因为里面一大堆js跳来跳去),链接到了其它地方,调查后发现源代码里有一大段看不懂的编码,虽然估计这段代码就是图片,受限于当时的视野,百思不得其解~现在终于明白了!测试例子,把文字转成base64编码>>> import base64>>> ls_... 阅读全文
posted @ 2010-10-04 10:21 左洸 阅读(5968) 评论(1) 推荐(0) 编辑
“十滴水”游戏——求解算法挑战赛:模拟退火,用Javascript跑
摘要:过节了,大家都出去玩,也没人写文章了,我来发个刺激的:在浏览器里用 Javascript 跑“十滴水”游戏的求解计算。够刺激吧?进来试试~~ 前面有人用过启发式搜索、遗传算法等,我尝试了一下模拟退火算法,性能还真是不错。只要你让机器一直跑下去,总能找到全局最优。这里为了节省时间,我设定了一个上限,达到上限后就退出,返回当前得到的最优解,大部分情况下都能得到全局最优解。 阅读全文
posted @ 2010-10-01 15:39 左洸 阅读(5599) 评论(6) 推荐(8) 编辑
人工智能乱弹:贾君鹏事件与自组织现象的概率论角度分析(原创)
摘要:我们都知道生命和智能是一种耗散结构和一种自组织现象,贾君鹏事件也是一种自组织现象,从概率角度对这种现象进行分析,有助于我们用机器模拟这种现象。 阅读全文
posted @ 2010-06-12 19:35 左洸 阅读(787) 评论(1) 推荐(0) 编辑
求一组序列的全排列
摘要:如果我们知道选 3 个元素的排列,嵌套 3 层循即可;但是如果我们暂时不知道选几个元素,嵌套层数是一个变量怎么办? 阅读全文
posted @ 2009-07-29 00:34 左洸 阅读(1037) 评论(2) 推荐(0) 编辑
不能滥用穷举暴力:关于几种不同图搜索算法的详细分析与思考
摘要:昨天,在女人火把过桥问题中,对图的搜索并不完美,是典型的穷举算法思想,希望能生成一棵以起点为根的“全分支树”,结果这棵树只能在理论上是存在,因为我的机器在宇宙毁灭之前生成不了他!不得已,我只好限制了树的深度,路线是找到了,但是并没有达到我想要的目标:找到所有路线(不包括环路的)。在图中该怎样搜索才能找到所有路线呢?下面是我关于几种不同图搜索算法的详细分析与思考。 阅读全文
posted @ 2009-07-26 17:38 左洸 阅读(3078) 评论(7) 推荐(2) 编辑
女人火把过桥:基于状态空间的带权图搜索算法(修改后详细分析版)
摘要:2条最短路径,30个状态节点,节点两两之间有112条通路,5层搜索树的情况下可以找到 37 条路线。将问题抽象成 abcd 四个人,R 或 L 代表火把位置, - 代表桥,基本思想是:先找状态节点,再找两两之间通路。然后将起始节点作为 root ,根据邻居一层一层生成树,最后对树搜索,只要搜索范围够大,就可以找到所有的最优路线和一部分可能路线。另外,这种方法具有通用性,可以查找任意两个节点之间的路线。 阅读全文
posted @ 2009-07-25 05:53 左洸 阅读(2182) 评论(6) 推荐(1) 编辑
一万个“无序”数查找两个重复数,在O(N)的基础上再快一点
摘要:那个重复的数字,最终要访问他自己的位置第二次,当他访问时,发现位置已经被上一个自己访问过了,他就知道自己不是唯一的了。这种算法平均情况下循环次数是 N/2,虽说数量级上仍然是 O(N)级别的,但是平均来说仍然比求和法快了一倍 阅读全文
posted @ 2009-07-22 11:01 左洸 阅读(3891) 评论(38) 推荐(2) 编辑
一万个有序数查找两个重复数,快速二分查找法 O(logN)
摘要:(10001个数字的和)- (10000个数字的和)= 重复数字,这种算法思路简单,但是时间复杂度是最高的,如果我们考虑到这是一个有序数列,而且只有两个重复数,时间复杂度 O(logN)的二分折半查找法就一跃而出了。 阅读全文
posted @ 2009-07-21 21:43 左洸 阅读(4204) 评论(40) 推荐(1) 编辑
数据结构入门(二)固定容量数组
摘要:注:本文仅供菜鸟和初级入门者参考,欢迎高手指导,切勿拍砖,兄弟身子骨单薄,承受不起。博客园原创文章,转载请注明作者和出处! 下面的代码包装了一个静态数组,它实现了上一节中 IList 接口的全部功能;为了具有排序功能,同时实现了 ISortable 接口。关于 IList 接口和 ISortable 接口请参见上一部分 数据结构入门(一)基本接口的设计。类名起为 FixedList 表明数组的大小... 阅读全文
posted @ 2006-01-21 07:19 左洸 阅读(915) 评论(0) 推荐(0) 编辑
数据结构入门(一)基本接口的设计
摘要:注:本文仅供菜鸟和初级入门者参考,欢迎高手指导,切勿拍砖,兄弟身子骨单薄,承受不起。博客园原创文章,转载请注明作者和出处! 第一部分,我们模仿类库,先抽象出容器(集合)类数据结构中所需要的最基本的一些接口,但是暂不实现他们。这些接口所代表的功能十分有限,只是作为数据结构的入门和理解使用,以后也可以在此基础上自行继续扩充。 在给出代码前先大体说明一下思路: 1、首先定义一个 My 命名空间,目的是为... 阅读全文
posted @ 2005-09-06 20:15 左洸 阅读(1388) 评论(1) 推荐(0) 编辑