算法
文章平均质量分 77
oyd
这个作者很懒,什么都没留下…
展开
-
快速URL排重的方法(二)
接上篇,起初我为了输入输出方便,是用perl去实现的,后来发现perl中求模速度太慢,就改用C了 常量定义:SPACE指你要分配多大的内存空间,我这里是为5000万数据的每一条分配4字节const int SPACE = 50000000 * 4;const int MAXNUM = SPACE * 8;#define LINE_MAX 2048int bits[] = {0x1, 0原创 2007-07-20 11:02:00 · 2141 阅读 · 3 评论 -
分享一个带权随机函数
/** * 带权重的随机数 * * 权值越小,概率越偏向min,反之偏向max * @param min * @param max * @param weight 取值范围 [-1, 1] * @return */ publi原创 2013-08-05 14:18:15 · 13243 阅读 · 0 评论 -
围棋AI之路(三)UCT,进来之后才发现是地狱
照例还是先公布代码 http://download.csdn.net/source/913373以及编译好的可执行程序,下载地址:http://download.csdn.net/source/913515前面介绍的UCT算法听起来很诱人,但是只有你真正去实验一下你才知道原来有这么多问题。理论上,UCT是一个一致的算法,它可以随着模拟次数的增加而自然提高棋力,而且理论上,它原创 2008-12-27 00:11:00 · 12984 阅读 · 2 评论 -
围棋AI之路(二)棋盘的实现
代码先公布:http://download.csdn.net/source/891878到现在为止,我只实现了一个棋盘,确切的说是在棋盘上随机走棋的速度测试程序,我借鉴了lib-ego,在上面做了一些改进,现在这个棋盘可以使用围棋规则或者五子棋规则。我的目标是让我的AI程序用同样的算法来对待围棋、五子棋甚至小时候玩过的黑白棋,它不需要任何棋类知识,你只要告诉它下棋的规则。我们的脑细胞可曾了解究竟什原创 2008-12-20 23:37:00 · 14973 阅读 · 10 评论 -
围棋AI之路(五)自然选择过程
上次一个网友建议我用遗传算法,不过当时我没有找到合适的遗传因子,其实根本原因是我那时候正在手工测试程序的棋力,我自己和程序下,发现问题,然后看看怎么改进。这个过程中其实带有太强的主观色彩了,直到一周前我正式摒弃了UCG的想法,我才终于决定用自然选择的方式来测试程序的棋力。摒弃UCG前面的文章中提到过UCG的思想,也就是认为博弈树实际上应该看做是一个图,因为下棋时的每一个局面,都可以用不止一种顺序走原创 2009-01-10 23:41:00 · 15709 阅读 · 7 评论 -
围棋AI之路(一)理论
注:本文其实只介绍mogo程序所采用的MC+UCT算法。记得以前还曾为深蓝击败顶尖人类棋手而暗喜,庆幸自己选择了围棋这一体现人类智慧优越感的游戏。因为人机博弈的设计不外乎两个方面:估值和搜索,而这两者在国际象棋上表现非常好,深蓝仅仅靠的暴力搜索下出的妙手让大师也手足无措,你要不信,去问问卡斯帕罗夫和深蓝对局时什么感受。然后估值和搜索用在围棋上似乎失灵了,一来无值可估,计算机如何看待局部的好手成了全原创 2008-11-14 19:06:00 · 26665 阅读 · 31 评论 -
字符串匹配算法(四)可以滑动多远
记得在穷举法中,每一趟比较后,无论成与不成,都将模式向右滑动一个位置,然后继续比较。有没有办法能利用之前的比较结果,使得模式滑动的更远一点呢?在介绍经典的KMP算法前,我先介绍几个简单的滑动类算法。Not So Naive同名字一样,这个算法的确有点幼稚,它根据模式的前两个字符是否相同来滑动比穷举法稍长一点的距离:如果前两个字符相同,那么文本中与第二个字符不同则必然也与第一个不同;如果前两个字符原创 2008-11-09 16:41:00 · 3946 阅读 · 4 评论 -
围棋AI之路(四):来自UCG的改进
UCT的实现前文只顾抱怨,忘记讲述UCT的实现部分了,这里补上。UCT算法本身在第一篇已经详细阐述过了,具体实现上唯一的一个要点就是使用内存池来为Tree分配节点。树的结构如下所示:templateclass Node { static Pool m_pool;public: Vertex v; int win; uint cou原创 2008-12-29 14:07:00 · 5582 阅读 · 3 评论 -
字符串匹配算法(三)位运算的魔法——KR与SO
位运算经常能做出一些不可思议的事情来,例如不用临时变量要交换两个数该怎么做呢?一个没接触过这类问题的人打死他也想不出来。如果拿围棋来做比喻,那么位运算可以喻为编程中的“手筋”。按位的存储方式能提供最大的存储空间利用率,而随着空间被压缩的同时,由于CPU硬件的直接支持,速度竟然神奇般的提升了。举个例子,普通的数组要实现移位操作,那是O(n)的时间复杂度,而如果用位运算中的移位,就是一个指令搞定了。K原创 2008-10-31 18:53:00 · 3028 阅读 · 2 评论 -
字符串匹配算法(二)穷举与自动机
穷举法又叫暴力法。大多数程序员眼里,它是幼稚的,但大师们不这么认为。Rob Pike, 最伟大的C 语言大师之一, 在《Notes on C Programming》中阐述了一个原则:花哨的算法比简单算法更容易出bug、更难实现,尽量使用简单的算法配合简单的数据结构。而Ken Thompson——Unix 最初版本的设计者和实现者,禅宗偈语般地对Pike 的这一原则作了强调: 拿不准就穷举(Whe原创 2008-10-30 13:45:00 · 4536 阅读 · 0 评论 -
字符串匹配算法(一)简介
注:本文大致翻译自EXACT STRING MATCHING ALGORITHMS,去掉一些废话,增加一些解释。文本信息可以说是迄今为止最主要的一种信息交换手段,而作为文本处理中的一个重要领域——字符串匹配,就是我们今天要说的话题。(原文还特意提及文本数据数量每18个月翻一番,以此论证算法必须要是高效的。不过我注意到摩尔定律也是18个月翻番,这正说明数据的增长是紧紧跟随处理速度的,因此越是使用高效原创 2008-10-29 15:22:00 · 6795 阅读 · 6 评论 -
直面经典:重温KMP(不着一图,尽得精髓)
KMP算法,每一个初学者都曾被它搞迷糊,在数据结构教材上,这个算法出现的如此之早,你怎能指望一个还没搞懂二叉树遍历的人来理解KMP呢,记得越快,忘得越快。直到多年以后回过头来看看,这才发现KMP算法如神谕般震撼了我。实在无法想象当初Knuth、Pratt、Morris三人竟然同时发现了它。 我们假设一个场景,你手上拿着一串红蓝两种颜色的珠子,墙上挂着一串更长的珠子,同样是红蓝两色的,你的任务就是找原创 2008-10-20 14:45:00 · 3469 阅读 · 8 评论 -
Twofish加密算法详解
.p9 {font-size:9pt;text-decoration:none;}a:link {color:#000099;text-decoration:none;}a:visited {color:#000099;text-decoration:none;}a:hover {color:#FF3333;text-decorati转载 2008-03-28 10:53:00 · 7155 阅读 · 1 评论 -
php的字符串截取
这个功能在php输出页面的时候很常用 ,就是把一个字符串截取为不大于某个长度的字符串。本身是很简单的事情,但是附加了一些需求:1,字符串中含有中文,也就是单字节双字节混着的。2,字符串中含有html代码。对于中文截取,网上有现成的代码可以拿来用,就像这样: function trunk($str,$most,$append="...") {原创 2007-11-26 11:33:00 · 1712 阅读 · 1 评论 -
网页内容抗排重的几种方式
本来呢,这个应该是不传之秘的,不信到google/baidu去搜搜看,"内容/页面/网页 抗排重"看有没有结果。不过我基于一个信念,那就是但凡你想得到的,google都能搜得到,如果搜不到呢,那我就把它加上,让google可以搜到。什么叫做抗排重呢,我们知道,许多网页的内容都是重复的,搜索引擎如果搜到的大篇大篇都是重复内容,自然没人去用了。所以在业界,剔除这些重复内容,通常我们叫做排重,也原创 2007-08-08 14:08:00 · 1787 阅读 · 0 评论 -
快速URL排重的方法(一)
我这里介绍一个极适合大量URL快速排重的方法 ,这个算法被称为Bloom filter,基本上,它也只适合这样的场合。这里的大量是指有5000万至1亿的URL,更大的数据量可能也不合适了。一开始我使用了一个最复杂的做法,是有一个单独的daemon程序负责排重,数据和排重结果通过socket传输。后来发现不行,仅仅几百万数据要做好几个小时,5000万不把人都急疯了?至于daemon中具体用什原创 2007-07-19 18:12:00 · 5354 阅读 · 5 评论 -
一段PHP版本的lambda实现
还有些缺陷,但能实现Church的自然数的lambda定义class lambda{ private $f; private $args; private $count; public function __construct($f, $args = []) { if ($f instanceof lambda) {原创 2014-11-05 11:27:40 · 10188 阅读 · 0 评论