2013年2月27日

吴昊品游戏核心算法(新年特别篇) —— 跳格子游戏(DFS+DP)(HDOJ 1978)

摘要: “跳格子游戏”应该包括一大类游戏的,现在给出的一种应该算是“实心”的跳格子游戏吧,也就是你可以选择向左走或者向右走,每次走了之后都会触发一系列事 件(这样的游戏有很多,比较简单的一种就是每走到一个格子上面就可以获得一部分积分,在走到终点的时候,需要将获得的积分尽量扩大),你需要选择一种最优 的策略,来让自己获得的利益最大。另外一种属于“空心”的跳格子游戏,类似于“大富翁”,“飞行棋”等等,需要几个人轮流投掷色子,在一个空心的圆环上面 跳格子,地图上的每个格子都会触发一个类似的事件,以此来进行游戏——如图所示的大富翁全地图。我们先看“实心”的跳格子,后面再来看“空心”的跳格子。 (如图所示,此乃 阅读全文

posted @ 2013-02-27 23:01 吴昊系列 阅读(683) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— m堆级别的取石子游戏(尼姆博弈)(HDOJ 2176)

摘要: 好啦,我这里再摆出一堆石子,不过,这次的问题规模由2堆变成了m堆,方法也会换去,但是“必胜点”和“必败点”的思想还是可以保留住的。这里,每次可以在其中一堆取任意数目的石子,就是不能不取。当然,还是本人先走。 尼姆博弈基本思想: 两人从n堆物品中取任意个,先取完者胜。 即将n堆物品的数量异或,得到的值如果为0,则先手败,反之先手胜。 如果要求先手在胜的条件下,到奇异局势的方法数,则判断异或的值与每一堆原值异或后(结果应该表示该堆没有参加异或时的异或值)与原值比较大小, 如果小于,则方法数加一。且对应的方法后,该堆的数目应变为异或的值与每一堆原值异或的值。 尼姆博弈的原理: 定 义P-positi 阅读全文

posted @ 2013-02-27 23:00 吴昊系列 阅读(333) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— 2堆级别的取石子游戏(威佐夫博弈)(HDOJ 1527)

摘要: 如图所示,有一些石子,我们在这里将其分为两堆,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 首先,给出本人先取(先取者,在很多情况下,都有迎来胜利曙光的契机,比如拿破仑,他即使在最后的最后,也是选择首先出击的,这乃是最勇敢的策略,也是最 明智的策略!当然,先走未必都是好的,在以后的例子中可以看到)的条件,输入为两堆石子的数目(这里用int类型是可以装入的). 阅读全文

posted @ 2013-02-27 22:56 吴昊系列 阅读(166) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— 1堆级别的取石子游戏(巴什博弈)

摘要: 吴昊继续,继续摆石子,继续说博弈。之前有说过两种博弈了,这次给出巴什博弈。 巴什博弈是什么? 只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜. 用游戏语言表述如下: 1、本游戏是一个二人游戏; 2、有一堆石子一共有n个; 3、两人轮流进行; 4、每走一步可以取走1…m个石子; 5、最先取光石子的一方为胜; 巴什博弈的奥义 显 然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜.因此我们发现了如何取胜的法 则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物 阅读全文

posted @ 2013-02-27 22:55 吴昊系列 阅读(322) 评论(0) 推荐(0)

吴昊品游戏核心算法(新春特别篇)—— 吴昊教你玩泡泡龙(模拟)(HDOJ 1547)

摘要: 泡泡龙(パズルボブル,Puzzle Bobble,Bust-a-Move),TAITO在1994年首次发布,是一个十分流行的弹珠游戏。从下方中央的弹珠发射台射出彩珠,多于3个同色珠相连则会消失。也支持双人游戏,不过此模式下,两个玩家互相竞争:一个消除大片泡泡会转移到对方阵地。 (Source:HDOJ 1547)这里有如下两个假设,一个假设是关于泡泡的消除的解释,另一个假设有些BT,我们假设所有的残局都在于游戏界面的左上角,也就是说,射击的时候(假设为直线射击,并且包括反弹,是可以击中所有的外表面层的泡泡) 泡泡消除的方式: 主要有爆掉和下坠两种方式,前者是后者的基础。 (a) 泡泡爆掉 当. 阅读全文

posted @ 2013-02-27 22:54 吴昊系列 阅读(1117) 评论(0) 推荐(0)

人工智能(AI)简介

摘要: 人工智能(AI)是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机 器学习,计算机视觉等等,总的说来,人工智能的目的就是让计算机这台机器能够象人一样思考。这可是不是一个容易的事情。如果希望做出一台能够思考的机器, 那就必须知道什么是思考,更进一步讲就是什么是智慧,它的表现是什么,你可以说科学家有智慧,可你决不会说一个路人什么也不会,没有知识,你同样不敢说一 个孩子没有智慧,可对于机器你就不敢说它有智慧了吧,那么智慧是如何分辨的呢?我们说的话,我们做的事情,我们的想法如同泉水一样从大脑中流出,如此自 然,可是机器能够吗 阅读全文

posted @ 2013-02-27 22:48 吴昊系列 阅读(2596) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 10 (第一季完结篇) —— 终极推理 —— L与夜神月的对话

摘要: L夜神月之间有过许多的“对话对决”,不外乎这样的一些逻辑,比如你问路上其中一个机器人——“如果我问另外一个机器人如何通往幸福的道路,它会怎么回 答?”(罗素悖论),这种(+1)*(-1)=(-1)的逻辑问话经常可以问倒很多人,但是,我认为《死亡笔记》中L与夜神月的对决最精彩的一个还是以下 的对话: [ 引自射手网]Dialogue: 0,0:04:24.63,0:04:27.62,*Default,NTP,0000,0000,0000,,{\fad(500,0)}夜神,抱歉又要旧事重提了 Dialogue:0,0:04:28.80,0:04:31.09,*Default,NTP,0000,00 阅读全文

posted @ 2013-02-27 22:46 吴昊系列 阅读(510) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 9 —— 0/0之哲学意义

摘要: 0/0(称之为不定式,可以等于任何数。)在数学上没有定义。在物理上这是有一定的解释的。比如说电阻定义 R=,当电压和电流都为0时R的值不确定。例如,若考虑极限且有f(c)=g(c)=0。若 f(x)等于g(x),极限为一;若f(x)等于g(x)的两倍,则极限为二。更一般地,0/0型的极限可以通过洛必达法则求得。0/0与导数的区别(出自导数的哲学意义)应 该说无穷小量,起源于微积分学。例如,我们研究二次函数y=x^2的变化率。首先,我们考察y=x^2这一法则下 在某一点p(x0,y0)的Δy/Δx。 Δy/Δx=[(x0+△x)^2-x0^2]/△x =[x0^2+2x0△x+△x^2-x0^2 阅读全文

posted @ 2013-02-27 22:45 吴昊系列 阅读(320) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 8 —— 计算几何一系列(C)—— 圆上知道一点求另外两点组成一个周长最长的三角形(HDOJ 1700)

摘要: Source: HDOJ 1700【数学证明】 设R是圆半径,A,B,C是三角形的角,由正弦定理得a/sinA =b/sinB=c/sinC=2R 故a+b+c=2R(sinA+sinB+sinC),当R确定求周长a+b+c最大,归结为求sinA+sinB+sinC的最大. 设Y=sinA+sinB+sinC,先固定角A, Y=sinA+sinB+sinC=sinA+2sin((B+C)/2)cos((B-C)/2) =sinA+2cos(A/2)cos((B-C)/2) 因为A是定值,故只有B=C时,Y才有最大值,同理分别再固定角B,C,则当C=A,A=B时, Y才有最大值,故A=B=C=6 阅读全文

posted @ 2013-02-27 22:43 吴昊系列 阅读(353) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 7 —— 推理逻辑中的传递闭包(HDOJ 1704)

摘要: 如图所示,此为哲学家亚里士多德,以下给出他的三段论——三段论 (syllogism)是传统逻辑中的一类主要推理。又称直言三段论。古希腊哲学家亚里士多德首先提出了关于三段论的系统理论。形式逻辑间接推理的基本形式之一,由大前提和小前提推出结论。如‘凡金属都能导电’(大前提),‘铜是金属’(小前提),‘所以铜能导电’(结论)。这称为三段论法或三段论式。三段论属于一种演绎逻辑,是不同于归纳逻辑的,具有较强的说服力。 当然,三段论的使用是有一定条件的,比如,就两场比赛而言,A赢了B,B赢了C,不能由此得到A赢了C,毕竟,A和C之间还没有比过。但是,在数字之间是可以进行这样的比较的没有错。比如,A比B多3 阅读全文

posted @ 2013-02-27 22:41 吴昊系列 阅读(198) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 8 —— 计算几何一系列(B)(HDOJ 1705)

摘要: (Source:HDOJ 1705)如下,就是一个Grid(方格),有一个封闭的多边形(多边形是规则的),有些点在多边形内,有些在边的表面上,而有些则在多边形的外侧。利用那一个个正方形网格,可以计算出多边形所围住的区域的总面积。 何谓皮克定理? 如果取一个格点做原点O,取通过这个格点的横向和纵向两直线分别做横坐标轴OX和纵坐标轴OY,并取原来方格边长做单位长,建立一个坐标系。这时前面所说的格点,显然就是纵横两坐标都是整数的那些点。如图1中的O、P、Q、M、N都是格点。由于这个缘故,我们又叫格点为整点。 一个多边形的顶点如果全是格点,这多边形就叫做格点多边形。有趣的是,这种格点多边形的面积计算起 阅读全文

posted @ 2013-02-27 22:40 吴昊系列 阅读(263) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 8 —— 计算几何一系列(A)—— 将椭圆切两刀(HDOJ 1724)

摘要: (Source:HDU1724)如图所示,以上,将这个椭圆切成三个部分,左一刀为L,右一刀为R,我们需要计算的是切开的一部分的面积。那么,对于这一块,利用三角换元当然是首选,因为,毕竟与图形有关系,步骤如下: (1)y = b√1-x^2/a^2,这里是每一个x对应的一个y (2)S =∫[l 到 r]{[b√(1-x^2/a^2)]}dx,其实,到了(2)这里还是有些复杂,需要改良一下 (3) 用三角换元:y=b*sinθ,x=a*cosθ (4)x=l 对应θ1,x=r 对应θ2,则变换为: (5)S =∫[θ1 到 θ2]{[bsinθ]}d(a*cosθ) = ∫[θ1 到θ2]{-a 阅读全文

posted @ 2013-02-27 22:39 吴昊系列 阅读(278) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 7 —— 三角形区域内细绳的膨胀(计算几何)(HDOJ 1451)

摘要: (Source:HDOJ 1451) 如图所示,这个三角形里面有一根细绳,假设这根细绳会往外膨胀,直到膨胀到不能再膨胀位置,我们需要计算的,就是细绳膨胀到不能再膨胀的时候,其包围的总面积(这里不考虑细绳会撑破整个三角形)。 那么,我们开始推理吧! 一刻推理:绳子在不断膨胀的过程中,不规则的部分会逐渐变规则,这乃是一个事实。那么,具体是怎么变化的呢?这个比较复杂,而且,缺少必要的条件,但是,我们需要管它吗?管它做甚??! 二刻推理:由 一刻推理的分析,我们可以得知,只需要管细绳的最终状态就可以了,而没有必要在中间过程中过多纠缠。那么,我们可以想象地到,最终的发展趋势具有如下四种 可能:(1)内部 阅读全文

posted @ 2013-02-27 22:34 吴昊系列 阅读(409) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 5 —— 战车问题(蒙特卡洛实战)

摘要: 如图所示,以上是一个N*N的方格,上面布满了堡垒和坦克。其中,堡垒用来防御而坦克用来攻击,这当然只是两种不同的行为而已。这里假设坦克是不能越过堡 垒的,同时假设堡垒过于强大,以至于坦克无法利用炮轰的方式将其炸毁。那么,我们假设战车各自为派(那么,可以想见,在没有任何的堡垒的情况下,方格上最 多有N辆战车),希望我们在初始阶段尽可能地放置更多的互相不受攻击的战车。这也是许多坦克游戏中的初始布局的基本要求,因为,如果一开始你就可以攻击到 对方,这样有失游戏的公平性。 这是一个坦克游戏的残局,在布局阶段,是不允许双方的坦克受到彼此之间的攻击的。 【分析】从第一行开始随机产生一个位置,看战车在该位置. 阅读全文

posted @ 2013-02-27 22:27 吴昊系列 阅读(390) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 3 —— “无论你多有天赋,你一个人也不可能改变世界(By L)”——让吴昊来向你解释为什么人类是高于计算机的存在而存在的存在物

摘要: 以上,我节选自——《L改变世界,最后的23天》,L说的一句话,非常之震撼,当然,这部电影也很精彩,我看过很多遍了,L的谦逊让我尤为感动,也不知道这是不是他与企图用Death Note改变世界的夜神月对决之后(电影版中L是获胜者)的感慨,毕竟,企图改变世界的人,必然要背上改变世界的觉悟! 在数学界,有一个定理虽然没有引发新一轮的数学危机,却着实震撼了全世界,这就是著名的哥德尔定理,这个定理让20世纪狂妄一时的数学变得更为谦虚,谨慎,也让我们真正懂得了一些哲理性质的东西,那就是,知道自己能做到的,是需要勇气的,而知道自己不能做到的,并大胆的接受,这不但是一种智慧,更是一种莫大的勇气! 我读过一本书 阅读全文

posted @ 2013-02-27 22:25 吴昊系列 阅读(230) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 5 —— 我不知道你不知道“哦!”我知道!你也知道了——让吴昊为你揭秘历史上配合最默契的两个人(M和N——源自死亡笔记)

摘要: 华中科技大学有一个著名的团队叫做联创,是培养IT狂人的摇篮,可惜,我到大四上学期方才醒悟,去联创宣讲会,发现,为时已晚,他们不招大一和大二的,悲 剧啊。不过,在笔试的时候有一个推理题我忘不了,应该说很经典吧,罗列如下:我们可以看到,即使是对方说“不知道”的时候,你不要灰心丧气!,当你连续得 知“对方不知道”而你又不知道的时候,你应该窃喜,你离开胜利不远了,你这个时候应该对他/她说“你也不知道”,这样传递的一个信息很有可能会让你成功地 探寻出事物的本源。为了进一步地阐明这一点,我举出两个例子: (图文无关,此为《L改变世界——最后的23天》中的女主角,当她发现L不能直着背的时候她笑了,恩,这一. 阅读全文

posted @ 2013-02-27 22:24 吴昊系列 阅读(392) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 4 —— 随机化乎?蒙特卡洛!

摘要: 这一个Round中,我只想阐述一点,在推理中,有些事情也不能完全确定 地来进行,在有必要的时候,必须引入一些随机的元素,这样虽然只能得到近似解,但是在时间效率上确实比确定解要高出许多。目前,这种思想已经成为了一种新 的方法,来解决一些NP难问题。因为,很多实际的问题是没有必要进行确定解的计算的。所以说,华科的院系领导对华科的老师进行审查的时候,也只会将命题人 员自己命的题目抽样出20%出来,观察其是否是各个参考资料上的原题目。 蒙特卡洛?神马东西?我们首先从地理上来理解,没有错,就是摩纳哥的赌城。这样,我们透过“赌博”这两个字推测到蒙特卡洛应该与随机化有关。那么,我们再 想想,恩,没有错,这就 阅读全文

posted @ 2013-02-27 22:22 吴昊系列 阅读(371) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 2 —— 蚂蚁爬杆问题

摘要: Problem:有一根27厘米长的细木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米,这五个位置上各有一只蚂 蚁,木杆很细,不能同时通过两只蚂蚁,开始时,蚂蚁的头朝向左还是右是任意的,他们只会朝前走或掉头,但不会后退,当两只蚂蚁相遇后,蚂蚁会同时掉头朝反 方向走,假设蚂蚁们每秒钟可以走1厘米的距离。求所有蚂蚁都离开木杆的最小时间和最大时间。 一刻推理:首 先可以想到的一个方法,就是模拟算法,没有错,由于这些蚂蚁都有其相似的地方,故可以归为一个类,而有多少个蚂蚁,就有多少个对象。问题是,这样做,确实 是可以详细描述出这些蚂蚁活动的全过程,但是,问题要去的是,我们只需要求出所有蚂蚁离开木杆的 阅读全文

posted @ 2013-02-27 22:16 吴昊系列 阅读(546) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 1 —— 我自己对推理的一些感悟

摘要: 在做吴昊品游戏核心算法系列的时候,我想到了一个事情,其实,一个复杂的游戏的算法,正如一个充满玄机而又有趣的数学理论证明题一样,其核心目的都是一样的,都是通向人类的思维极限。这让我想到了大学时期看过的一部构思严谨的动画,就是《死亡笔记》。没有错,在第一部中,L确实就差一点点,就可以发现夜神月的破绽了,而在第二部中,夜神月也只差一点点,就可以险些获胜。 在现实世界中,推理的目的性没有那么残酷,并不是你推理没有成功,你就要为此付出生命的代价,因为,如果你的正义感没有L那么强烈的话,如果你的决心,以及耐心没有L那么执着的话,你有可能中途就放弃了。 我想谈谈自己对推理的一些看法吧。和很多人一样,小时候喜 阅读全文

posted @ 2013-02-27 22:15 吴昊系列 阅读(224) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 7(特刊)—— (转载)猜数字系列 第二弹 AI(启发式算法VS直觉算法)

摘要: 小游戏“猜数字”及其拓展一、 题目背景 标准规则通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。 如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B。 接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。ﹰ 猜测次数限制猜数字游戏通常设有猜测次数的上限。根据计 阅读全文

posted @ 2013-02-27 22:07 吴昊系列 阅读(1476) 评论(0) 推荐(0)

(转载)人工智能在围棋程序中的应用——复旦大学附属中学(施遥)

摘要: 人工智能在围棋程序中的应用复旦大学附属中学 施 遥【关键字】 围棋,搜索,模式匹配,博弈树【摘要】 围棋程序的编制被称作人工智能的“试金石”,是人工智能技术的一大难题。 本文介绍了人工智能在围棋程序中的应用与发展,对比了围棋与国际象棋博弈算法的差别和复杂度,从而分析围棋算法的难点,讨论各种博弈算法(气位理论、模式匹配与博弈树)在围棋程序中的融合运用。并给出了围棋死活程序的算法实例(附程序),以供参考【正文】『目录』一、概述二、围棋的复杂性三、博弈(棋类)算法及其在象棋与围棋中的对比四、围棋算法五、围棋棋形识别六、围棋死活的算法与实现七、展望一、概述 1、围棋简介 围棋相传为尧所创,纵横一十九. 阅读全文

posted @ 2013-02-27 21:57 吴昊系列 阅读(943) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 10 —— 吴昊教你下围棋(利用递归来解决吃子的问题)

摘要: 如图所示,此即为日本动漫棋魂中的千年佐为,也就是SAI。众所周知,围棋的规则相比于中国象棋,国际象棋等等都简单许多,真是因为更简单的规则,才诞生 了更复杂的逻辑。目前的围棋AI还很不行,最NB的应该是日本人做出的后又经过众多中国的围棋爱好者改进之后的AI——首谈,其水平号称是国际大师的水 平,其实际水平估计也就是业余一段左右(比我的水平还是要稍微高一点点的样子)。而且,只要在其中下出一些“非主流布局”,比如神马天元+五五啊,宇宙流 之类的,手谈基本上就GAME OVER了。 目前在OJ(Online Judge)上还没有类似的围棋的全面模拟算法,局部的还是有,这是因为围棋的规则如果包括一些不常 阅读全文

posted @ 2013-02-27 21:56 吴昊系列 阅读(1767) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 10 —— 关于先手黑棋贴白棋3又3/4子的数学解释

摘要: 本来是想在围棋模拟之后配上围棋AI的,但是围棋AI实在是太难了太难了太难了太难了,以至于觉得一个Round确实无法说清楚,所以这里我以一个小问题来探讨一下围棋中的一些数学原理。 以下转载自一篇关于贴子的数学初探,很精彩,也很具体。围 棋是中国文化大观园中的一朵奇葩.自她诞生以来,历数千年而为人们所喜爱.期间她的形制不断演变.特别是在以日,韩为主的其它民族中流传后,形成了现在 的格局.与其它人类发明的竞智性游戏相比,围棋的最大特点,是用最简单器具,最完美地演绎战术的精确计算和战略的运筹帷幄.相信总有一天,她会真正成为世 界性的竞智项目.在围棋的演变中,黑棋贴子的演变一直是以棋手们的体验和对胜负结 阅读全文

posted @ 2013-02-27 21:51 吴昊系列 阅读(982) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 10 —— 关于先前发布的围棋算法(模拟)中目数统计函数的全解析(感谢林安泽)

摘要: 经过与华科ACM林安泽交流后得知,作者没有考虑到如下两种情况:(1)在收官阶段,实地如何计算在内(2)在终盘结束的时候,是不可能有没有归属的空格的,所有的空位置是都有归属的,这也是围棋的常识,看来作者貌似不会下围棋哦!^_^ 首先,源码中有一个问题,就是c=qipan[j][i].color应该改为c=qipan[i][j].color,在此基础上,这段代码主要是统计 白子的数目,因为围棋中黑子让白子3又3/4个子,具体为什么这样将在之后的吴昊系列中讲解。那么,我们可以看到,只需要单方面地统计白子的总数目就可以 了。首先将三个数组都置为0,从第一行开始扫描。如果一开始是空白的话,就直接算作空白 阅读全文

posted @ 2013-02-27 21:49 吴昊系列 阅读(651) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 9 (引子)—— 正统黑白棋AI(李开复的Othello)

摘要: 作为吴昊品游戏核心算法Round 9,我想先引自李开复的一篇文章——《算法的力量》。这篇文章中,开复详细阐述了他与算法的因缘隔阂。值得一提的是,我是因为即将说的Othello而想 起李开复的。因为,李开复在自己读博士的时期做过一款Othello的AI,并且用它挑战过当时美国的黑白棋大师。 这里转自李开复的——《算法的力量》全文: 算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门,就产生了一种误解,认为 学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实,大家被这些公司误导了。编程语言虽 阅读全文

posted @ 2013-02-27 21:48 吴昊系列 阅读(1457) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 9 —— 正统黑白棋AI(博弈树)

摘要: 黑白棋程式简史在1980年代,电脑并不普及,在黑白棋界里,最强的仍然是棋手(人类)。到了1990年代初,电脑的速度以几何级数增长,写出来的黑白棋程式虽然仍然有点笨拙,但由于计算深度(电脑的速度快)和尾局的准确性,所以已经很强。1990年代初最有名的程式就是Thor,在那时候是最强的程式(还是DOS模式年代),棋力能比得上世界级棋手,在这个时期的程式都是人工地加入行动力、位置策略、偶数重要性等等,但又因为这些策略是直接编写在程式里,那程式的棋力很依赖程式员本人的棋力,程式下起来比较像人类的下法。而且程式里遗留了人类棋手的弱点、策略的不完整性等等的问题。因为早期Thor的通用性,影响到现在黑白棋界 阅读全文

posted @ 2013-02-27 21:45 吴昊系列 阅读(2638) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 9 —— 黑白棋AI系列之西洋跳棋(第二弹)(双向BFS+STL)(POJ 1198)

摘要: 接上回,如图所示,这是黑白棋的一个变种,Solitaire也是一种在智能手机上普遍存在的一种游戏。和翻转棋(Flip Game)一样,西洋跳棋(Solitaire)也没有正统的黑白棋(奥赛罗,又称Othello)受关注,但毕竟这也属于黑白棋的常见的一个变种,所以 我在这里还是将其收录了。其规则同样很简单,只是比Flip Game多了一条规则,变为了如下的两条(棋子的颜色相同,假设一个8*8的棋盘上一共只有4个棋子)(1) 每个棋子可以自由移动一个单位长度。(2) 任何一个棋子如果相邻位置有棋子而后面一位又没有棋子的话,是可以跳过的。有了以上两个规则,我们看看此问题的AI吧,还是先说明下Sour 阅读全文

posted @ 2013-02-27 21:42 吴昊系列 阅读(884) 评论(0) 推荐(1)

吴昊品游戏核心算法 Round 9 —— 黑白棋AI系列(第一弹)(BFS+位压缩存储)(POJ 1753)

摘要: 在历史上,关于黑白棋(官方名称为奥赛罗),有许多个变种,比如这一弹中,我准备给出其中一种(和我在Round 7中介绍的熄灯问题)比较相似的(甚至可以说是几乎一摸一样)的游戏,其名字叫做翻转棋(Flip Game)。这款游戏的规则非常简单,在一个4*4的界面中,随意翻转一个子,其自身以及相邻的棋子都会跟着翻转并变换其颜色。了 解了规则之后,我们可以给出如下的AI,该AI可以翻转最短的次数,来找到目标位置(可以是全黑(All Black)或者是全白(All White))。在“熄灯问题”中,我们说过一种方法叫做BFS+Enum(也就是广度优先搜索配合枚举),这里注意的一点是,我们不能使用STL里面 阅读全文

posted @ 2013-02-27 21:36 吴昊系列 阅读(585) 评论(1) 推荐(0)

吴昊品游戏核心算法 Round 8(特别篇) —— 吴昊教你打麻将(牌型分析AI)

摘要: 摘要 : 麻将游戏软件的开发 , 就其内核部分 , 大致可以分为自动发牌、自动智能出牌、吃碰杠的处理、听牌判断、胡牌判断、基于不同麻将玩法规则的番数计算等几大部分。其中以自动智能出牌、听牌判断、胡牌判断等处理最为复杂。这里主要介绍胡牌时 , 手中成牌牌型的计算机处理的算法设计思想。关键词 : AI; 成牌牌型 ; VB6.0中图分类号 : TP 311文献标识码 : A文章编号 : 1009- 3044(2007)11- 21292- 011 引言麻将的胡牌 , 一般接触过麻将的人都知道。但牌型复杂时 , 究竟胡哪几张牌 , 可能并不是每一个人短时间内都能作出正确的判断。用计算机来处理 , 也 阅读全文

posted @ 2013-02-27 21:33 吴昊系列 阅读(1871) 评论(1) 推荐(0)

吴昊品游戏核心算法 Round 8(特别篇) —— 吴昊教你打麻将(和牌判定+递归)

摘要: 麻雀、麻将、马将或蔴雀是一种源自中国的策略游戏。游戏参与者以四人居多,但也有二人、三人等变种(在日本、韩国较为常见)。麻将在各地的规则(尤其是计分方法)有很大不同,但基本目标都是通过一系列置换和取舍规则拼出某个特定组合的牌型,并阻止对手达成相同目的。游戏侧重技巧、策略运用和计算,但也涉及相当多的运气成份。比起扑克,麻将的组合方式更为变化多端,需要通过复杂的概率分析才能预测结果。但麻将需要记忆的规则和牌型也比一般扑克牌戏要多得多。在东亚与东南亚地区,特别是华人社区中,麻将常被当做娱乐或赌博手段。 麻将的牌张,各地大同小异,但多与广东麻将相同,或为其子集。广东麻将是迄今仍流传的华人玩法之中,历史. 阅读全文

posted @ 2013-02-27 21:30 吴昊系列 阅读(806) 评论(1) 推荐(0)

吴昊品游戏核心算法 Round 8 —— 吴昊教你下国际象棋(复杂模拟)

摘要: 【历史】据现有史料记载,国际象棋的发展历史已将近2000年。关于它的起源,曾经有过多种不同的说法,诸如起源于中国、印 度、锡兰、波斯、阿拉伯国家等等。目前世界上多数棋史学家认为国际象棋最早出现在印度。 18世纪时,W.琼斯指出:古印度是国际象棋诞生的摇篮。大约公元 2~4世纪时,印度有一种叫作“恰图兰加”(chaturanga)的棋戏,内有车、马、象、兵 4种棋子,象征着印度古代的军制。在当时流传的印度叙事史诗《摩诃婆罗多》中,有"四军将士已安排"的诗句。“四军”就是指军队分为车、象、马、兵 4个兵种。但作为今日国际象棋前身的这种“四方棋”,当时是由掷骰子的方法来进行的。游 阅读全文

posted @ 2013-02-27 21:29 吴昊系列 阅读(866) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 7(特刊)—— 猜数字系列(数字锁问题) 第三弹(模拟)(HDOJ 1195)

摘要: 如图所示,这是一个保险箱,木有错,我们现在假设该密码有四位数,我们也知道密码的存在,我们可以基于以下的规则对这个四位数进行一系列变换,比如: (1)可以将这个四位数的某一位上移或者下移,其中,9再往上移动便是0,而0再往下移动即是9。 (2)两个相邻的数位是可以交换(change)的,但是,有如下规则,最左边的数位不能和最右边的数位发生交换,也就是说,这两个数位,不认为是相邻的。 我们基于(1)和(2)这两个规则,要找出打开锁(也就是找到密码)需要移动的最少的次数——这里的AI,我们采用宽度优先搜索来实现(BFS+STL,可以看到,这已经是重复多遍的老战术了!对于搜索来说,这种策略确实是相当普 阅读全文

posted @ 2013-02-27 21:23 吴昊系列 阅读(233) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 7(特刊)—— 猜数字系列 第二弹(模拟)(HDOJ 1172)

摘要: 如图所示,是用JAVA的Swing图形界面做出的猜数字游戏(还有一款基于android系统和IOS系统的,其界面也给出吧),其专业名字叫Bulls and Cows,历史上可以追溯到20世纪中期,是兴起于英国的益智类小游戏。其规则如下: 标准规则通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数(该规则实际上是可以进行改良的),不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一 阅读全文

posted @ 2013-02-27 21:21 吴昊系列 阅读(532) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 7(特刊)—— 猜数字系列AI第一弹(二分思想)(HDOJ 2178)

摘要: 这 个AI比较地弱智,不过,作为吴昊品游戏核心算法Round 7特刊的一系列,我还是将其加上了,毕竟,这款游戏还是非常经典的!其也分单机版和在线版两款模式,恩,其AI主要是运用了二分的思想。所谓二分,可以上 溯到中国两千年前的时期,思想乃是不断取中,然后在最短的次数的前提下得到最准确的答案。 (单机版) (网络版)如图所示,这两个版本各有千秋吧。关于二分搜索为什么是平均搜索次数最短的,这个可以参考相关的数据结构书籍,这里就不提出来了。Source来自HDU 2178: Problem Description——A有1数m,B来猜.B每猜一次,A就说"太大","太小 阅读全文

posted @ 2013-02-27 21:17 吴昊系列 阅读(357) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 6 (特刊) —— 吴昊教你玩石头剪刀布AI(数据挖掘)

摘要: 我曾经请教过我在华科的同班同学李田同学,我问他 《圣母颂——巴赫第一平均律》是不是很难弹?他说是的,而且,他说了一点,就是,越简单的曲子越难。这个可以类推,比如,围棋的规则最简单,却蕴含着最深 刻的哲理,而石头剪刀布也是类似的,看似非常简单的规则,却考验着人的许多弱点。比如,再客观的人,在机器面前也不可能保持着绝对的客观,所以,他/她的 出拳总是存在一定的规律,而这些数据特性一经过计算机的分析,就很容易破解你的招数了。 在 Android手机上,有一款软件叫做——智能猜拳机器人,根据不完全统计,但总回合数达到50局以上时,智能猜拳机器人的优势会开始体现,胜率基本保持 在60%左右,例如果玩了5 阅读全文

posted @ 2013-02-27 21:09 吴昊系列 阅读(353) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 7 —— 熄灯游戏AI(有人性的Brute Force)(POJ 2811)

摘要: 暴力分为两种,一种属于毫无人性的暴力,一种属于有人性 的暴力。前面一种就不说了,对于后面一种情况,我们可以只对其中的部分问题进行枚举,而通过这些子问题而推导到整个的问题中。我称之为有人性的Brute Force。这次的熄灯问题就采用了这一点,将原本时间复杂度为O(2^30)的问题降为O(2^6),虽然都是属于指数级别的问题,但是,由于巧妙地运 用了数据之间的规律,而将复杂程度大为降低。这样做避免了毫无人性的暴力,让计算机在解决问题的时候也轻松了许多。 如图所示,这是一款在android手机上运行的Lights Off小游戏,我们可以看到,该游戏更换了一些皮肤,界面还是传统型的,游戏的关键在于将 阅读全文

posted @ 2013-02-27 21:09 吴昊系列 阅读(367) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 6 —— 独立钻石跳棋游戏AI(BFS)

摘要: 大约在200多年前,法国的巴士底狱中关押着一名贵族囚犯。此人整日面对铁窗,实在无聊,就在当时欧洲流行的棋盘上,设计出一种能一个人玩的棋,这就是“Solitaire”(独立钻石)。此后,这个游戏便渐渐流行于世界各地。 在棋盘的33个孔中,除了最中心的一孔外,每孔都放下一个棋子。 每个子只能沿着棋盘上的纵横线“隔子跳”(像跳棋一样,跳过一个相邻的棋子),跳到一个空格处,跳完后把被跳过的棋子拿掉。这样,当棋子跳到最后,无子可 动时,游戏就结束了。最后剩下5只棋子─“good(好)”;剩下4只棋子─“better(不错)”;剩下3只棋子─“clever(聪明)”;剩下2 只棋子─“wonderfu.. 阅读全文

posted @ 2013-02-27 21:00 吴昊系列 阅读(1626) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 5 ——(转载)关于无禁手下先手必胜的证明

摘要: 关于五子棋先手必胜的证明,用人工的方式过于复杂,其难度相当于证明四色定理的正确性或者是若儿当定理的正确性。但是,如果采用计算机来解决,则复杂程度 会降低许多。由于很难地毯式地枚举到所有可能的情形,这一款五子棋终结者的算法(最新的应该是1.22版本,网络上流传的2.0和4.0版都是子虚乌有) 几乎可以达到先手必胜了。作者甚至开出了悬赏92万美元的奖励,就是说如果你用他的程序战胜了执黑的他,他就会给你这么多钱作为补偿,但是,到目前为止该 算法还是几乎可以实现先手必胜的! 五子棋终结者算法 任何一种棋类游戏其关键是对当前棋局是否有正确的评分,评分越准确则电脑的AI越高。五子棋游戏也是如此,但在... 阅读全文

posted @ 2013-02-27 20:56 吴昊系列 阅读(1479) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 5 —— 五子棋(无禁手)后台的判胜负AI(bfs+queue容器)(HDOJ 2699)

摘要: 五子棋的历史连子棋类游戏起源很早,在四千年前的两河文明就有古西亚连棋。五子棋则咸信是流传于古中国的传统棋种之一,至今仍在民间广泛流传,规则相当简单。或许因没有形成一套独立完整的棋种理论及文化内涵,更无制定公平完善的规则来解决黑白平衡问题,一直没有得到发展,所以没有像围棋、象棋等传统棋类流传广泛,导致缺少可考古的棋具,也没像直棋、方棋等乡土棋类记载在地方县志、古人笔记等文献。五子棋在传入日本后,被日本人发扬光大,自1899年日本棋士黒岩涙香证明了原始规则的五子棋先下必胜后,五子棋迈入一条不断改良的道路,经过数十年的修改、验证、再修改,最终发展出加入禁手的五子棋,并经过公开征名,称为连珠(RENJ 阅读全文

posted @ 2013-02-27 20:55 吴昊系列 阅读(595) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 5 —— (转载)十四步实现拥有强大AI的五子棋游戏

摘要: 十四步实现拥有强大AI的五子棋游戏博主按:在看到这篇文章的时候有很深刻的体会了,毕竟我的大学第一个C语言作品就是五子棋,时隔十多年我用Java在Android重新设计了手机版五子棋游戏,这篇文章对于五子棋算法的分析有很强的实用性,有点相见恨晚的感觉啊,我要接着改进AI了。想做个好的人机对弈的五子棋,可以说需要考虑的问题还是很多的,我们将制作拥有强大AI五子棋的过程分为十四步,让我来步步介绍。第一步,了解禁手规则做 一个五子棋的程序,自然对五子棋需要有足够的了解,现在默认大家现在和我研究五子棋之前了解是一样多的。以这个为基础,介绍多数人不大熟悉的方 面。五子棋的规则实际上有两种:有禁手和无禁手。 阅读全文

posted @ 2013-02-27 20:52 吴昊系列 阅读(862) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 4 (特别篇) —— 贪吃蛇AI

摘要: 有了模拟算法的基础,在特别篇中,我们可以看下AI了。在GOOGLE公司,每年都有GOOGLE AI CHALLENGE挑战赛,其中就包括国际贪吃蛇AI大赛。但是,由于源码的封闭性,我无法获得了。在网上只有某些70后网友写的“半成品”AI。幸运 地,我联系上了一个北京理工大学的大学生,他做的AI貌似很不错(有单机版和双人模式两种模式可供选择),不过木有源代码,他给出了他自己的QQ以便于 DEBUG。这样子,我正在全力联系那位23岁的大神,目前,只能给出基于“权重”的一种设计思想的AI算法了,虽说是半成品,不过,也是一种思路吧! 文章以及其AI的思想整理如下:本来去年在写了贪吃蛇之后,就有想要写看 阅读全文

posted @ 2013-02-27 20:48 吴昊系列 阅读(960) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 4 —— 贪吃蛇模拟(简易版&&AI会在特别篇给出)(ZOJ 1056)

摘要: [简 介]贪吃蛇又名贪食蛇,是一款经典的小游戏。玩家使用方向键操控一条长长的蛇不断吞下豆子,同时蛇身随着吞下的豆子不断变长,当蛇头撞到蛇身或障壁时游戏 结束。贪吃蛇最初为人们所知的是诺基亚手机附带的一个小游戏,它伴随着诺基亚手机走向世界。现在的贪吃蛇出现了许多衍生版本,并被移植到各种平台上。[历史] 1976年,Gremlin平台推出了一款经典街机游戏Blockade。游戏中,两名玩家分别控制一个角色在屏幕上移动,所经之处砌起围栏。角色只能向左、右方向90度转弯,游戏目标保证让对方先撞上屏幕或围栏。听起来有点复杂,其实就是下面这个样子:基本上就是两条每走一步都会长大的贪吃蛇比谁后完蛋,玩家要做 阅读全文

posted @ 2013-02-27 20:47 吴昊系列 阅读(970) 评论(2) 推荐(0)

吴昊品游戏核心算法 Round 4 —— 连连看AI(用BFS+STL实现)(HDOJ 1175)

摘要: 连连看游戏的历史:游戏“连连看”顾名思义就是找出相关联的东西,这个连连看在网上基本是用在小游戏中,就是找出相同的两样东西,在一定的规则之内可以做为相关联处理。“连连看”的发展经历了从桌面游戏、在线游戏、社交游戏三个过程。游 戏“连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。这其中,顾方编写的“阿达连连看”以其精 良的制作广受好评,这也成为顾方“阿达系列软件”的核心产品。并于2004年,取得了国家版权局的计算机软件著作权登记证书。随着Flash应用的流行,网上出现了多种在线Flash版本“连连看”。如“水晶连连看”、“果蔬连连看”等,流行的 阅读全文

posted @ 2013-02-27 20:45 吴昊系列 阅读(688) 评论(1) 推荐(0)

吴昊品游戏核心算法 Round 3 ——(转载)基于机器学习的三国杀游戏设计(附带一份AI算法)

摘要: 由于本人并不玩三国杀,再加上三国杀游戏的人物之间的设置本来就已经相当复杂,所以这里不想深入研究了。不过,这里给出一篇来自中国人工智能学会 (CAAI)的转载,以及某大学生在暑假无聊的时候写的“SB”级别的控制台式的三国杀AI,有兴趣的人可以欣赏一下他自己做的AI,他本人声明了版权, 所以我也注明一下吧,他的网名叫做6+。本参赛作品基于目前在国内风靡一时的桌面游戏——三国杀。由于官方的三国杀版本有着武将包更新慢、缺乏游戏AI等缺点,广大热心网友自制了不少民间的三国杀, “太阳神上”制作的太阳神三国杀①,便是其中一个优秀的典范。但是游戏AI不强是一个普遍的现状。本参赛队伍由4人组成,4人都可谓都是 阅读全文

posted @ 2013-02-27 20:43 吴昊系列 阅读(2243) 评论(0) 推荐(1)

吴昊品游戏核心算法 Round 3(特别篇)—— 吴昊教你玩三国杀(和Round 2一样AI在附加版中呈现)(HDOJ 3378)

摘要: 在这次Round 3的 特别篇中,我初始地涉及到桌游的算法,和棋牌类的算法不同,桌游往往比较复杂,而且玩家的人数也比棋牌类游戏多,可玩性将会大大增强,模拟起来也越发困 难,尤其是有些玩家的“武将”中除了普通技能之外还会放出一些“必杀技”,在建模和描述的时候更加有挑战性,而三国杀就是这样的一种桌游。《三国杀》是中国传媒大学动画学院04级游戏专业学生设计,并于2009年6月底《三国杀》被移植至网游平台的一款国内最流行的桌上游戏。在《三国杀》游戏中,玩家将扮演一名三国时期的武将,结合本局身份,合纵连横,经过一轮一轮的谋略和动作获得最终的胜利。《三国杀》作为一款原创桌上游戏, 有别于其他桌面游戏的最. 阅读全文

posted @ 2013-02-27 20:40 吴昊系列 阅读(436) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 2 (特别篇附加版)—— 中国象棋AI的某些想法(转载自厦门大学的一篇本科生毕业论文)

摘要: 吴昊的一些想法:棋类的规则的复杂,其AI也随着一起复杂,有些时候,方法还是多样化的,比如,搜索和博弈算法是具有一些客观性的,但是,这些客观性如果 可以和某些主观性(比如,人为地确定的一些规则)结合起来,则可以起到一些更好的效果。目前,中国象棋AI水平最高的是巫师象棋,其在2008年的智运会 上夺得了中国象棋AI的冠军。其最新的引擎据说是目前世界水平第一的中国象棋大师的棋力的两倍左右。相比中国象棋来说,AI目前最难的还是围棋。目前围棋 AI最牛的软件是“手谈”,但是,即使这样,其水平也最多是业余一段左右。我听说日本围棋界的相关报道显示,假设真有一种“每一步棋都是最强的手筋”,也 就是最大效率的话 阅读全文

posted @ 2013-02-27 20:38 吴昊系列 阅读(1773) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 3 —— 速算24点AI(HDOJ 1427)

摘要: 如图所示,这是一款基于android的24点游戏,输入四个整数(1--13)之后,点击计算之后,计算机就可以自动给出所有可能的答案。 24点是把4个整数(一般是正整数)通过加减乘除运算,使最后的计算结果是24的一个数学游戏,可以考验人的智力和数学敏感性。通常是使用扑克牌来进行游 戏的,一副牌中抽去大小王后还剩下52张(如果初练也可只用1~10这40张牌),任意抽取4张牌(称为牌组),用加、减、乘、除 (可加括号)把牌面上的数算成24。每张牌必须且只能用一次,如抽出的牌是3、8、8、9,那么算式为(9—8)×8×3或3×8÷(9—8)或(9— 8÷ 阅读全文

posted @ 2013-02-27 20:33 吴昊系列 阅读(2115) 评论(9) 推荐(1)

吴昊品游戏核心算法 Round 2 (特别篇)—— 吴昊教你玩中国象棋(模拟算法+AI会在特别篇的附加版中予以说明)(HDOJ 1691)

摘要: 所谓模拟算法, 则是用计算机语言将现实世界中可以用自然语言描述出来的东西用计算机的某种语言加以描述出来。我给出的Round 2中的数独游戏也是棋类游戏,但是,由于其规则相比中国象棋比较简单,其AI还是比较好实现的。这里我所讲的中国象棋由于其规则本身的复杂性,其AI的实 现方式本来就是多样的,所在只在特别篇的附加版中给出目前做得最优秀的中国象棋的AI引擎,并不详细阐明其方法或者是源代码。中 国象棋在中国有着悠久的历史,属于二人对抗性游戏的一种。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。是我国正式开展的78个体育项目之一,为 促进该项目在世界范围内的普及和推广,在中国古代,象棋被列为士大 阅读全文

posted @ 2013-02-27 20:24 吴昊系列 阅读(886) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 2 —— 吴昊教你玩数独AI(DFS)(HDOJ 1426)

摘要: Round 2之后,我会给出一些棋类游戏的模拟算法或者是AI算法。以下节选自百度百科(翻阅文史性质的文献资料,我认为维基百科更加靠谱,原因,你懂的,但是,我认为翻阅学术文献资料,百度百科更加靠谱,或者说,描述地更加完备一些)数 独(すうどく,Sudoku)是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一 列、每一个粗线宫内的数字均含1-9,不重复。 每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。这里给出了一点,也就是说,任何一个合格的数独问题 都是有唯一解的,这倒是给 阅读全文

posted @ 2013-02-27 20:21 吴昊系列 阅读(1527) 评论(6) 推荐(0)

吴昊品游戏核心算法 Round1 特别篇——吴昊整理至《电脑报》特刊——斗地主AI(智商比较低,但是方法值得借鉴:类似于词法分析地剥离每一种招数再利用主观性AI见招拆招)

摘要: 本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能。(一)玩法解析:(1)发牌和叫牌:一副扑克54张,先为每个人发17张,剩下的3张作为底牌,玩家视自己手中的牌来确定自己是否叫牌。按顺序叫牌,谁出的分多谁就是地主,一般分数有1分,2分,3分。地主的底牌需要给其他玩家看过后才能拿到手中,最后地主20张牌,农民分别17张牌。(2)出牌:地主先出牌,按照逆时针顺序依次进行,农民利用手中的牌组织地主继续出牌,并和同伴配合(这种配合的默契程度,之后会在算法中体现)尽快出完手中的牌。当一手牌在另外两家打不过的情况下,出牌的 阅读全文

posted @ 2013-02-27 20:20 吴昊系列 阅读(2285) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 1 ——是男人就下一百层AI(POJ 1661)

摘要: 在一些游戏中,通过递归或者回溯的方式,可以实现一些AI,比如我曾经玩过的企鹅推箱子,游戏中的AI可以帮你自动搜索出一条最适合你的路径。这里,是 男人就下一百层的AI,输入和输出我就不给出了,主要从算法的思想层面来分析这个游戏(该AI可以计算出该小人从跳落至到达地面的最短时间,这里乃有,如 果一次跳得很高,可能会被摔死)。 在实际的游戏中,还有类似于滑轮的砖块以及带上锯齿的砖块,分析起来会有一些复杂,而且,如果涉及到的话,本文的思想可能无法体现到那种游戏中,所以,复杂的情况暂时舍弃。 游戏来自POJ,源代码有若干亮点:(1) 小人最开始的时候有可能在第一块板子上,也有可能在空中,分类的话有些.. 阅读全文

posted @ 2013-02-27 20:04 吴昊系列 阅读(819) 评论(3) 推荐(1)

导航