02 2013 档案

吴昊品工程级别软件项目 Round 3 —— 一个简易的字符识别系统(OCR技术+VB实现)
摘要:如图,是一个简易的OCR系统。我在大二下学期的时候参加过华科的信息安全竞 赛,准备做一个简易的舆情监控系统。当然,最终还是没有实现的,但是,在这个过程中尝试过一些东西,比如图像识别技术(OCR)就是一种尝试。这款软件是 一位高中的学生做出的,他的名字叫——陨落雕(ThirdApple),识别率说还可以,当然,这个还是很不行的。而且,不存在机器学习的功能,只能识别 一些给定的文本(0--9以及所有的英文字母),这是这款软件的缺陷。 关于Visual Basic 6.0SP6(很多人之所以不使用最新的VS2010系列而使用老式的6.0,也是因为它的经典性以及便携性,比如我的迅雷5.0,一直都不愿意 阅读全文

posted @ 2013-02-28 17:31 吴昊系列 阅读(983) 评论(0) 推荐(0)

吴昊品工程级别项目 Round 3(追加) —— 一个基于android的手机防盗软件的实现
摘要:在吴昊系列的吴昊品工程项目的Round 3中,我介绍过一款以前的“异世界”团队(我和几个人做爱立信的比赛时候完成)的软件,叫Mobile Safe,其实,这样的软件已经有不少,而且其中的很多都是非商业的。主要是因为目前的手机防盗已经出现一些直接植入到手机(硬件)内的嵌入式产品了,这 样即使你的手机丢失,别人将你的SIM卡更换或者操作系统重刷之后,你仍然可以找到你原来的手机。不过,这里,我想介绍一款叫做LostPrevent的 软件,它是附着在操作系统上的,别人刷机你木有办法,但是,作为历史性的手机防盗软件,至少可以纳为经典的行列吧! LostPrevent的功能: 手机防盗远程控制软件,包括. 阅读全文

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

吴昊品工程级别软件项目 Round 3 —— Mobile Safe(for android)
摘要:以下这一款软件是我在大二的时候 由我,尹达奇,肖晓和曾蔚同学给出的,当时我还不负责编码,只是做一些简单的设计以及软件说明书以及软件文档的写作。如图所示,这是一个和你的手机随时” 互通有无“的终端,在你手机丢失的时候可以清除你的手机私人信息,甚至可以销毁手机内部芯片(此项功能在本款软件中还没有予以实现,在以后会考虑),还可 以通过相关定位软件找寻你手机的位置,真可谓是你的手机信息的贴身保镖。综上所述,我们的产品“手机安全外置客户端”主要实现以下两个功能(1)在手机丢失的时候及时删除该手机上的私人信息(2)通过相关的定位软件寻找到遗失手机的具体位置。 这款软件谈不上... 阅读全文

posted @ 2013-02-28 17:26 吴昊系列 阅读(535) 评论(0) 推荐(0)

吴昊品工程级别软件项目 Round 2(附加)之(一个标准的DBMS系统的需求分析+数据库设计)(PS:感谢王露珠妹纸)
摘要:1. 需求分析1.1. 引言1.1.1. 编写目的由于近几年来由于我国高等 院校的扩招,导致教学管理,学生管理方面受到很大的冲击。管理的困难主要在于数据量大,涉及的人员多,数据及时更新困难等。如果依靠人工管理则需要投入的 精力多,不便维护,且容易出现错误。因此我们考虑使用计算机进行管理。计算机管理相比人工管理而言拥有无与伦比的优势,能大大减少人力物力的投入,减少出 错,提高效率,实现对学生信息管理的规范化,信息化,自动化。 为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。 本文档供项目经理、设计人员、开发人员参考。1.1.2. 项目背景待开发的系统名称:学生信息管理系统.. 阅读全文

posted @ 2013-02-28 17:24 吴昊系列 阅读(330) 评论(0) 推荐(0)

吴昊品工程级别软件项目 Round 2 —— 餐饮管理系统(C#)
摘要:此为一个标准的应用类的DBMS系统(数据库管理系统),正 如达芬奇的老师所说:不同的鸡蛋就有不同的画法,DBMS系统也是一样的,其应用在不同的场景,就会有不同的实现方式,有些甚至不仅仅是功能和UI的变 换,而是整个数据结构的变换,比如,考虑到数据之间的伸缩性的松紧程度的不同,其实现中可以采用由一些数组组成的结构体,或者是链表来实现,后者的伸缩性 更强(数据结构之间也不是完全对立的,比如,也可以使用游标数组来实现链表的功能)。 一. 背景 机器人炒菜是全自动的,但是,即使是所有的事情都由机器人来处理,还是需要人来负责收银以及处理机器的一切异常(处理器可能会因为湿度,温度等原因发生一... 阅读全文

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

吴昊品工程级别软件项目 Round 1 —— 吴昊教你玩字幕
摘要:以上,是我大二的时候用MenuBuilder做的界面,基本上是所见即所得吧,在图形化界面的制作中,也就是为每个按钮加上相应的监听再调用光盘中相应 的文件就可以了,这一点不难,但是,除了UI之外,我想借此聊下字幕制作的技术,虽然也只是相应软件的调用,但是,想做出比较炫的ASS特效的话,还是需 要自己来写一些代码或者运用一些小插件的。碟子做出之后,我总结过字幕组的全套技术,当然,这只是我自己的(绝大部分还借鉴了会声会影的很多功能),正统 的字幕制作技术有一套详细的流程,比如著名的人人字幕组(组长为中山大学新闻系的一个本科生,很牛,他将自己的技术配合学校的一些团队进行了软件化,并... 阅读全文

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

吴昊品游戏核心算法 Round 14 —— (转载)推箱子游戏的NP难证明(关卡设计)
摘要:何谓NP难 NP困难(NP-hard,non-deterministic polynomial-time hard)问题是计算复杂性理论中最重要的复杂性类之一。某个问题被称作NP困难,当且仅当存在一个NP完全问题可以在多项式时间图灵归约到这个问题。 因为NP困难问题未必可以在多项式的时间内验证一个解的正确性(即不一定是NP问题),因此即使NP完全问题有多项式时间内的解,NP困难问题依然可能没有多项式时间内的解。因此NP困难问题“至少与NPC问题一样难”。 PSPACE完全 推箱子的其中一个很重要的魅力来源于推箱子求解问题在计算复杂性理论里是一个 PSPACE 完全问题。在... 阅读全文

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

吴昊品游戏核心算法 Round 14 —— (转载)著名的益智游戏大集结
摘要:著名的益智游戏集合(神采飞扬光谷店) 推箱子 推箱子的规则 KDE内建的推箱子游戏KSokoban第一个《推箱子》的游戏规则,则是扮演工人的玩家,以“推”的方式,推动箱子。可以在没有阻碍物(如墙壁等的阻碍物)的情况下,向左、右、上、下的地方移动。将箱子移动到指定点,达到指定数量,即可过关。 但玩家移动箱子,有下列条件要注意: 推到墙壁的箱子,玩家就不可以背对墙壁,把箱子推回到空处。即箱子只能以“被推”的方式被移动,不是以“被拉”的方式被移动。但如果玩家推至墙壁后,垂直墙壁的两侧没有阻碍物,则玩家可以朝这两个不同的方向推移箱子。 一旦箱子被移动到... 阅读全文

posted @ 2013-02-28 15:12 吴昊系列 阅读(867) 评论(1) 推荐(0)

吴昊品游戏核心算法 Round 14 —— 推箱子的一种变式(三个箱子)
摘要:在更多的情况下,除了很多路障(墙壁)以外,我们会发现眼前的箱子绝对不止一个,只有一个箱子的可玩性绝对是不高的。但是,这里却又有一个显著的问题,就是如果箱子增加的话,问题的(至少是)空间复杂度会呈现指数级别地增加。 这里面考虑的因素就要复杂许多,但是,总思路还是不变的。我们这里采用分模块的方法来解决,源程序的模块性应该说是蛮好的。 1注明头文件23#include<iostream>4//queue容器(这一次不用优先队列,而直接用队列了)5#include<queue>6usingnamespacestd;78各种数据结构各种调910//这里定义一个点(x,y)11.. 阅读全文

posted @ 2013-02-28 15:08 吴昊系列 阅读(721) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 14 —— 吴昊教你推箱子(priority_queue容器+BFS)(HDOJ 1254)
摘要:在吴昊品游戏核心算法Round 1中,我有介绍一个“企鹅推箱子”的游戏,我们来回顾一下一个经典游戏是如何经过包装,最后成为一个崭新的游戏的。首先是美工,通过3D的画面,给人一种 震撼力,在UI方面,考虑到智能手机的触屏特性,制造出很多的“动态效果”。在算法方面,通过搜索算法的引入,给游戏制造了一种附加功能,就是,你可以通 过搜索让自己告诉你应该如何进行下一步的方向控制(这一点有点像连连看中的放大镜提示)。在这样的经典游戏中,往往就这么一个小插件就会给整个游戏增色不 少。 关于推箱子问题的解法的时间复杂度,最终被证明是NP难的,而且后来又被证明是PSPACE完全的,其具体的证明步骤... 阅读全文

posted @ 2013-02-28 15:00 吴昊系列 阅读(921) 评论(0) 推荐(0)

吴昊品游戏核心算法(第二季首映式)Round 11 —— 吴昊教你玩Tic-Tac-Toe
摘要:作为首映式,首先,纠正一下以前的错误吧,在吴昊系列的 “称硬币游戏AI”中,我说的时间复杂度是O(n),实际上有问题,首先,确实将所有的硬币都遍历了一遍,但是,每遍历一个硬币的时候,strchr函数 将遍历一个天平上的所有硬币,这样是O(n/2),还没有完,因为称的次数与硬币的数目是正相关的,那么,至少是O(n^2)以上,一篇论文中用信息熵来 解决这个问题!,得到如果N个硬币有一个(可能没有)为假币,至少要称量K=log(2N+1)/log3次,那么,可以得到时间复杂度的上限为 O(n^2log3n)。 以上的图为比尔盖茨八年级的时候,他在向他的同班同学SHOW自己开发的AI作品,... 阅读全文

posted @ 2013-02-28 14:57 吴昊系列 阅读(225) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 13(特别篇)—— 另一种迷宫游戏AI(queue容器+BFS)
摘要:另外一种迷宫游戏来自(HDOJ的1072)。刚才那个应该还不能说是游戏吧!因为只是一些迷宫类游戏的关键技术,还不具备有游戏性(所谓游戏性,可以参 考任天堂公司给出的定义)。这里,Ignatius给出了游戏的规则——五个数字标注了五种不同的图标(这里考虑五种位图,数字0代表墙,数字1代表可以 通过的路线,数字2代表起始的地方,数字3代表Ignatius的目标位置,而数字4代表了一种很新颖的道具,这个道具我们接了之后,可以将时间重置为6 分钟)这里考虑一点,最开始的时间为6分钟,每走一步要减少一分钟,我们必须要在规定的时间之内走到终点(当然,这里有RESET的装备),不然的话,炸 ... 阅读全文

posted @ 2013-02-28 14:54 吴昊系列 阅读(215) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 13(附加版)—— 迷宫小球(android实现)
摘要:好啦,最后来说说那个最经典的游戏吧!我是想说,本来,我准备将其放在吴昊系列的《吴昊品工程级别软件项目》的,但是我想了一下,如果那样做的话,会阻碍 整个Round的连续性,所以,我最后决定将其放在这里。一款经典的游戏,也许,它最终会老去,就像神马坦克大战啊,俄罗斯方块,射击游戏那样,但是,相 信通过人们对其原理的了解的逐步增加,会逐渐推出一些UI,美工更精美,互动更强,或者说可玩性更高的新品种。记得魂斗罗那种在任天堂的FC上的游戏改版 到PS2上之后,是不是也推陈出新了呢?(这里的迷宫小球和经典的小球游戏还不太一样,设置了一个胜利小球和两个失败小球,碰到失败小球,游戏告负,而碰 到胜利小球,.. 阅读全文

posted @ 2013-02-28 14:53 吴昊系列 阅读(248) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 13 —— 吴昊教你走迷宫(BFS)
摘要:如图所示,这是一个手机游戏,走迷宫游戏发展到现在,已经存在不少变式了,比如现在利用android/ios系统的重力感应器功能做成的——《迷宫小 球》就是现在比较成功的一款(关于《迷宫小球》这款经典游戏,我会在《吴昊品工程级别项目源代码》中详细阐述)。我们这里只是抽出游戏的核心算法作为探 讨,其实,这也是我的一个想法,因为UI,美工以及架构等等,在设计的时候不会太难(当然,这里纠正一个误区,就是顶尖的设计师的难度高于顶尖的算法工程 师,但是一般的设计不会追求那种纯粹艺术级别吧!我想)。 BFS的奥义: BFS是一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果... 阅读全文

posted @ 2013-02-28 14:39 吴昊系列 阅读(342) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 12(特别篇) —— 吴昊教你玩筷子游戏(计算几何)
摘要:筷子在古代叫箸或筯(箸者,助也,意思是帮助吃饭的工具。另:在闽南语地区、广东省和平县还有温州地区的当地人仍称筷子为箸,在闽南语地区念tî、广东省和平县拼音为chī,温州市区念dzei),又叫梜。清朝赵翼曾引用明朝陆容的《菽园杂记》说:“起于吴中。凡舟行讳住讳翻,故呼箸为快子”(住和箸同音)。人类使用筷子的历史可以追溯到三千年以前,《礼记·曲礼上》就有“饭黍母以箸”和“羹之有菜者用梜”的记载。由考古学提供的证据而言,筷子的出现晚于匙羹,同样原因,由于人们想做某种工具以方便取得烫热的熟食,所以筷子的发明跟原始农业和陶器的运用和发展有着直接关系。 筷子是何人发明,何时诞生,历代虽 阅读全文

posted @ 2013-02-28 14:35 吴昊系列 阅读(238) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 12(特别篇) —— 吴昊教你玩Block 3D(模拟)
摘要:砖块游戏有很多种,比如“拼砖块”,“打砖块”,“推 砖块”等等,我们这里要做的是“叠砖块”。游戏的条件应该已经很明了了,如果再不明了的话,我还附上一张图(如下图所示),我们这里用一个简单的示例来模 拟这个游戏。我们假设一共有六种砖块,即1*1到6*6,而每一种砖块的数量是有限个的。我们的输入每一行只有六个数字,分别表示从1*1到6*6的这六 种砖块的个数。 由于如果不是同时放置,而是具有先后顺序的放置的话,我们需要考虑到一种策略的问题,这里的AI就有实现地聪明与愚蠢之分了,我们这里考虑一个更为简单的 AI,也就是说,所有的砖块是可以由玩家自己来考虑放置的先后顺序的,这样做的话,也... 阅读全文

posted @ 2013-02-28 14:31 吴昊系列 阅读(268) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 11 (插曲) —— (转载)比尔盖茨:从恶魔到天使
摘要:我在Round 11中的那个截图就是盖茨在八年级(初二)时候的AI作品,其源码我找不到,不过,我给出一些其他的实现方式吧,无论是直接的给出具体逻辑,搜索还是极大极小值博弈树,都是比较经典的AI算法,这里,顺便给出我截图的那篇文章,介绍盖茨的叛逆一生。 美国科技博客网站Business Insider撰稿人朱莉波特(Julie Bort)近期发表文章,对微软联合创始人比尔盖茨(Bill Gates)的一生进行了总结。波特认为,盖茨的一生一直伴随着敬仰、憎恶、斥责、羞辱和奉承。他对计算机和软件的理念,改变了整个世界,这不仅为其个 人,也为整个软件开发者提供了巨大的财富。以下为盖茨简介: ... 阅读全文

posted @ 2013-02-28 14:27 吴昊系列 阅读(406) 评论(6) 推荐(0)

吴昊品游戏核心算法 Round 12 —— 火柴游戏AI(大整数加减)
摘要:如图所示,这个游戏是基于android操作系统的,名字叫《火柴棍数学》。如图所示,你移动一个火柴,就可以发现火柴上指示的公式由错误变为了正确。这是一个非常有趣的游戏,也可以锻炼自己的逻辑思维。 我们这里考虑一个相对简单的情况,也就是游戏必须满足如下三个条件: (A)只能改变数字,不能改变符号。 (B)数字和符号的组成方式必须严格的和图示的一样(减号由一根火柴组成)。 (C)新等式必须形如a+b=c或a-b=c,其中a、b、c都是不含前导0的非负整数。 最后,等式还是需要成立的。 这是一个模拟,主要用到了大数加减的模板,解决起来还是相当棘手的,不过,分成几个模块... 阅读全文

posted @ 2013-02-28 13:42 吴昊系列 阅读(419) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 11 (增刊) —— 捡花生游戏AI(毫无理性的贪心)(POJ 2950)
摘要:这个游戏非常简单,但非常有趣,所以,我在这里不作为Round 12,而将其独立出来,作为一个增刊来放送。这是一款比较老式的游戏了,我曾经在某次过年的时候,在NOKIA的手机上玩过,当时是塞班的系统,画质不怎么样,但是非常有趣。 玩法简介: 一个直观的想法: 将整个花生地作为一个二维的整型数组,没有花生的地方标注0而有花生的地方标注花生的数目。一个比较直观的想法就是自变量为时间t和这个二维数组,因变量 为最多可以获得花生数目的函数,当然,这个做法直观,而且可以确定这个函数是存在的(因为满足一一对应的关系),但问题是你建立地出来咩? 放弃直观的想法,我们开始推理: 有一种贪心... 阅读全文

posted @ 2013-02-28 13:25 吴昊系列 阅读(234) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 11 —— 吴昊教你玩Tic-Tac-Toe(模拟) (HDOJ 3075)
摘要:井字棋是神马? 井字棋,大陆、台湾又称为井字游戏、圈圈叉叉;另外也有打井游戏、OX棋的称呼,香港多称井字过三关、过三关,是种纸笔游戏。 怎么玩? 两个玩家,一个打圈(O),一个打叉(X),轮流在3乘3的格上打自己的符号,最先以横、直、斜连成一线则为胜。 如果双方都下得正确无误,将得和局。 这种游戏实际上是由第一位玩家所控制,第一位玩家是攻,第二位玩家是守。 第一位玩家在角位行第一子的话赢面最大(见图一),第二位玩家若是在边,角位下子,第一位玩家就可以以两粒连线牵制着第二位玩家,然后制造“两头蛇”。(我这里不知道所谓的“两头蛇”是什么,不过,我觉得还是在中间走棋可以得到... 阅读全文

posted @ 2013-02-28 13:16 吴昊系列 阅读(452) 评论(0) 推荐(0)

吴昊品游戏核心算法 Round 11 —— Tic-Tac-Toe AI (极大极小博弈树)(POJ 1568)
摘要:吴昊继续,其实在吴昊系列Round 9中,也就是正统黑白棋(Othello)的AI中,我就有介绍过一种叫极大极小博弈树的算法,双方互相刷自己的博弈值,直到最后将整盘棋OVER。这里,我们使用相同的方法,来解决Tic-Tac-Toe的AI。 如图所示,我们没有必要非得拘泥于3*3的棋盘,4*4,甚至是6*6都是可以的,但是,哪一种棋盘最具有可玩性,这需要建立一个模型来分析一下。 Tic-Tac-Toe与人工智能 这种游戏的变化简单,常成为博弈论和游戏树搜寻的教学例子。这个游戏只有765个可能局面,26830个棋局。如果将对称的棋局视作不同,则有255168个棋局。 由于这种游... 阅读全文

posted @ 2013-02-28 13:13 吴昊系列 阅读(1111) 评论(0) 推荐(0)

吴昊品命令行解释程序核心算法 Round 13 —— UNIX的ls命令
摘要:UNIX 如图的那只大企鹅就是UNIX/LINUX的logo,关于开源的UNIX操作系统,就不多说了。说说有趣的事情吧,也就是UNIX与企鹅的来历。UNIX操作系统,是美国AT&T公司于1971年在PDP-11上运行的操作系统。具有多用户、多任务的特点,支持多种处理器架构,最早由肯·汤普逊(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie)和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织(The Open Group)所拥有。 Unix/L 阅读全文

posted @ 2013-02-28 13:08 吴昊系列 阅读(495) 评论(0) 推荐(0)

吴昊品命令行解释程序核心算法(首映式) Round 1 —— miniSQL解释器(map容器映射+vector容器存储)(POJ 3699)
摘要:2012年上学期,华科大的Dian团队让我第一次感受到了工业级别代码 的独特魅力,尽管我离这些仍然比较遥远,但是已经颇为感慨(这里提下华科的一个妹纸,虽然知道我非常非常地水,不过,一直告诉我“学长加油学长加油”,直 到最后知道我其实是一个酱油,不过,真的很感谢她)。种子杯一向是偏研究,偏底层的计算机课题,当时我也准备过一些经典的DBMS系统,并认为不会超过这 个范围,没有想到初赛题目居然是一个小型的SQL解释器,复赛居然是一个小型的C语言编译器,震精了。不过,我也愿意写文章来总结那一次的活动,以及自己 的一些感悟与体会——关于SQL解释器更多的内容,我会在《吴昊品工业级别软件项目》中详细叙.. 阅读全文

posted @ 2013-02-28 13:05 吴昊系列 阅读(1728) 评论(25) 推荐(0)

吴昊品命令行解释程序 Round 2 —— 一个带括号的四则运算表达式的解释器(逆波兰式RPN)
摘要:如图所示,此为两个基于android的计算器。简易的计算器是不带括号的,你在输入的时候要考虑到运算的优先级,而稍微复杂一些的计算器是带括号的,在 优先级上面的考虑更为细致。两者的理论皆为逆波兰式,我们先说简易版的计算器,然后再升华为附带括号的优先级考虑更细致的四则计算器。 逆波兰式是神马 逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后,当然,也存在前缀表达式和中缀表达式) 逆波兰式的作用 对于实现逆波兰式算法,难度并不大,但为什么要将看似简单的中序表达式转换为复杂的逆波兰式?原因就在于这个简单是相对... 阅读全文

posted @ 2013-02-28 13:00 吴昊系列 阅读(414) 评论(0) 推荐(0)

和吴昊一起玩推理(第二季首映式)Round 11 —— 从无有到无穷
摘要:邹恒明(原来华科大的校友)在美国的密歇根大学读博士的时期出国三本书, 以上是他的第一本《算法之道》(现在已经出了第二版了),我大三的时候将他的三本书都基本上看完了,开篇有一段很犀利的文字,他认为上帝为什么选择第六天 造人呢?因为6=1+2+3,是最小的完全数,而这个世界上已知的完全数不甚了了,而算法,他认为乃是解析这个宇宙的绝对工具。 无何以变为有? 庄 子在《齐物论》里面曰:“一生二,二生三,三生万物”,也就是说,世界上不存在“无”,所有的物质都是由“一”而生。记得在高中的时候,我读过一丁点唯心 主义哲学家黑格尔的《逻辑学》,从无到有的变化为从“无”演变到“自为之有”再... 阅读全文

posted @ 2013-02-28 12:58 吴昊系列 阅读(298) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 13 —— 各种大数各种调
摘要:“各种调”是什么意思呢?这里有必要提一个妹纸。这张图出自我大三的一次数模校赛,是用EVIEWS拟合生成的。我们利用VAR向量自回归模型来拟合房价 与人们的年平均收入的关系。这里有很多性质量,比如表上的F-特征值啊,均方根啊等等。那么,什么叫“各种调”呢?因为数学建模的国赛和美赛评定标准是不 一样的,美赛是你必须写出你自己的东西,不能有哪怕是一行的抄袭,强调一种独创性,而国赛则是强调一种内容的“丰富性”,至于你怎么抄,无所谓啦!所以, 离比赛前一天晚上,那位妹纸告诉我“模型的数据已经各种调了,但是,还是存在诸多的问题”。 (妹纸的照片略去,否则她会杀了我) 这 里,我以“各种大数... 阅读全文

posted @ 2013-02-28 12:54 吴昊系列 阅读(213) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 13 —— (转载)20世纪最著名的十大算法&&各种奇葩的排序
摘要:算法一词的来源 Algos 是希腊字,意思是“疼”,A1gor是拉丁字,意思是“冷却”。这两个字都不是Algorithm(算法)一词的词 根,a1gorithm一词却与9世纪的阿拉伯学者al-Khwarizmi有关,他写的书《al-jabr w’al muqabalah》(代数学)演变成为现在中学的代数教科书。Ad-Khwarizmi强调求解问题的有条理的步骤。如果他能活到今天的话,他一定会被 以他的名字而得名的方法的进展所感动。 20世纪10最好的算法 20世纪最好的算法,计算机时代的挑选标准是对科学和工程的研究和实践影响最大。下面就是按年代次序排列的20世纪最好的10个算... 阅读全文

posted @ 2013-02-28 12:46 吴昊系列 阅读(474) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 12(特别篇)—— 13天规则与我的推理
摘要:我们这里将13天规则不妨假设为规则A: 如图所示,在笔记写入一个人的名字之后,如果在13日内若不再写另一个人的名字,继续杀人的话,就会死。 在规则A之前,我们不要忘记规则B: 控制一个人地死亡时间在23天之内,这个是规则B,Near最终用这条规则来判定SPK核心成员之一的杰邦尼是否被死神所控制。 13天规则的优点与缺陷: 夜 神月在制定这个规则的时候,想法是,如果存在这种规则的话(这里13这个数字是非常值得肯定的),那么拘禁了五十多天还是没有死亡,就只能说明笔记的所有 者不是月了。L在拘禁月又将其放出之后,对夜神月有两种猜测——(1)夜神月利用自己的意识将笔记的力量给了另外... 阅读全文

posted @ 2013-02-28 12:43 吴昊系列 阅读(292) 评论(0) 推荐(0)

(转载)和吴昊一起玩推理 Round 12 —— 费马的房间内上演的推理对决
摘要:《费马的房间》是一部推理电影,看后有一种惊心动魄的感觉,房间会逐渐缩小,直到将在场的人都碾压成粉末。为了防止这种情形的出现,我们需要解开一个个谜题,并最终让房间随时间的萎缩停止。 Turn A —— 运筹学推理(状态--过程调度) 牧羊人的谜语:一个牧羊人想过河,他带着一只羊、一只狼和卷心菜,一次只能有两个先过河(比如:牧羊人和羊或者牧羊人和卷心菜),不能让羊吃了卷心菜,也不能让狼吃了羊,请问,他要怎样过河? 第一次是牧羊人和羊 - 把羊放到对岸,自己一个人划回来。 第二次是牧羊人和狼 - 把狼放对岸,自己带着羊再划回来。 第三次把羊放下船,带着卷心菜到对岸,自己一个人划... 阅读全文

posted @ 2013-02-28 12:42 吴昊系列 阅读(370) 评论(0) 推荐(0)

和吴昊一起玩推理 Round 11(增刊) —— 最大子段和的五重境界
摘要:如 图,为庐山的一角,又诗曰——“横看成岭侧成峰,远近高低各不同”,风流苏轼写的诗,木有错,至少说明了一个道理,解决一个问题可以有不同的途径,而不同 的途径,风景是不一样的,可以理解为时间效率和空间效率不一样,也可以理解为思想不同(比如在排序中有许多平均时间复杂度为O(nlogn)的算法,但是 由于其实现思想不同而导致了风景不一样) Problem: 给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大。或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4](这里必须指明子区... 阅读全文

posted @ 2013-02-28 12:40 吴昊系列 阅读(190) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— 在你打麻将快要胡牌却不知道胡哪个字的时候可以用这个AI插件(模拟)
摘要:图片选自著名的日本动画片——《天才麻将少女》 全 国各地有不同的麻将,相同的麻将在不同的地域有着不同的规则,这不,今年过年,我就体会到了这一点。我爸爸的老家在湖南的长沙,而我妈的老家在湖南的邵 阳,虽然这两个城市都在湖南,但是由于地域的差异,长沙麻将中的“将”只能取为二,五,八,而邵阳麻将则可以乱来,什么都可以作为将(这个貌似也随着时间 的变化而变化,毕竟,时代在进步,规则也会随着改变)。我在《吴昊教你打麻将》中已经抽取CSDN的Source并补上了“七小队”和“十三幺”的胡牌办 法,这个插件,可以让你在拥有13张牌并且无限接近于胡牌(这个的术语我搞忘叫什么了,貌似长沙话好像是nu... 阅读全文

posted @ 2013-02-28 12:34 吴昊系列 阅读(679) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)——另类取石子游戏(斐波那契博弈)
摘要:吴昊继续,我再也不想搬一堆石头放在这里了,取而代之的是《编程之美》中的关于游戏章节的一个插图,这本书中也有对《取石子游戏》的较为完备的讨论。 这次的游戏是神马? 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win". Fibonacci博弈 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win& 阅读全文

posted @ 2013-02-28 12:29 吴昊系列 阅读(442) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— 吴昊教你玩小鸟跳跳(DP)
摘要:如图所示,这是一款android的跳格子游戏(名字叫小鸟跳跳,图中的游戏为第二版)——红色的格子只能跳一次,黄色的格子可以跳2次,控制小鸟从起点跳到终点。 我 们的目的是使小鸟可以到达终点,注意,这里的到达也许表述地并不是很清晰,应该说,是到达且恰好到达终点,这应该说是有一定的难度的,毕竟是多一步或者少 一步也是不行的(想当年我玩飞行棋的时候也在这个方面吃过不少的亏,明明飞机就要进入终点了,但是就因为哪怕是一步,就一直徘徊在那里,真心郁闷啊!) 模型的简化 一 个人力无法预测的原因,我无法传图片了,郁闷中,我就只能说明一下图片的来源了(Source:HDOJ 1208),... 阅读全文

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

吴昊品游戏核心算法(新年特别篇)—— 吴昊教你玩扫雷(模拟)(POJ 2612)
摘要:扫雷历史: 1985年,“方块”被改写成了游戏"Relentless Logic"[2](简称为“Rlogic”)。在“Rlogic”里,玩家的任务是作为美国海军陆战队队员,为指挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,汤姆·安德森(Tom Anderson)在“Rlogic”的基础上又编写出了游戏“XMines”[3](地雷),由此奠定了现代扫雷游戏的雏形。 在此基础上,1989年开始受雇于微软公司的两位工程师罗伯特·杜尔(Robert Donner)和卡特·约翰逊(Curt Johnson)开发出了扫雷游戏。微软于 阅读全文

posted @ 2013-02-28 12:22 吴昊系列 阅读(815) 评论(1) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— 扑克牌游戏中的巴什博弈
摘要:Problem: 1、总共n张牌; 2、双方轮流抓牌; 3、每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…) 4、抓完牌,胜负结果也出来了:最后抓完牌的人为胜者; 假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢? 用Bash博弈的思想来Thinking: 如果你是先手,考虑你的必胜态。注意,因为任何正整数都能写成若干个2的整数次方幂之和。由于规定只能取2的某个整数次方幂,只要你留给对手的牌数为3的倍数时,那么你就必赢,因为留下3的倍数时,对手有两种情况: 1:如果轮到对方抓牌时只剩3张... 阅读全文

posted @ 2013-02-28 12:18 吴昊系列 阅读(515) 评论(2) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— 称硬币游戏AI(朴素枚举)(POJ 2692)
摘要:吴昊继续,首先还是来一段人生感悟吧——在我很小的时候,大约是初中的时候,我知道要让自己的人生混得好就应该思考许多问题,所以我喜欢思考;十几年过去 了,我领悟到要让自己的人生混得好就应该不思考许多问题,但是,我仍然喜爱思考,无论是对是错,总之,我思考过,并有自己的感悟,我觉得这乃是一件很好的 事情,所以,我接着思考,并决定在寒假之前完成自己的《吴昊品历史人物》第一季(Round 1--Round 10) 在我年轻时,我所做的事,十中有九都是失败的,为了不甘于失败,我便十倍努力于工作。——萧伯纳 如图所示,此为一个普通的天平,但是没有标度,也就是说,我们根据其只能判断出是轻了,重... 阅读全文

posted @ 2013-02-28 12:17 吴昊系列 阅读(349) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— (转载自Github)(后篇)扫雷AI(概率预测+坦克算法+JAVA实现)
摘要:吴昊这里接前篇,继续娓娓道来。 为什么有时候连计算机也不知道该挖哪个雷? 如 图所示,这两个没有标注的方块,我们知道肯定存在一个雷,而且两个位置的概率都是50%(我的意思是说考虑局部,也就是说事件只是这两个方块哪个方块有 雷),这样的话,就是连机器也木有办法了!觉得我大二的时候成功混入过点团队一个星期,Dian团队有一个组叫做量子组,在量子组里面我知道了有一种技术 叫做“量子通信”,尼玛NB啊!根据量子自旋的两种不同状态来标注密码,传递信息,这样,即使是敌方截获了密码,也只能得到——“我连续抛掷了N次硬币, 出现了a次正面(N>a)和(N-a)次方面”这样的几乎等同于无效... 阅读全文

posted @ 2013-02-28 12:08 吴昊系列 阅读(338) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— (转载自Github)(前篇)扫雷AI(概率预测+坦克算法+JAVA实现)
摘要:经典游戏有经典游戏的魅力啊!不要说扫雷是20多年以前的游戏或者扫雷已经过时,经典的游戏之所以经典,是因为当时的游戏相当少,所以每做出一款游戏出来 都需要颇为精心的构思。正如中国60年代拍摄的一些抗日电影,例如《地道战》和《地雷战》,虽然剧情比较单调,将日本的军队模拟成SB,但是,还是有许多 人愿意看这些老电影,至少,他们做得很认真。如图所示,这是经过一番修改之后的扫雷游戏,左边这一款是在IOS上运行的扫雷游戏,而那个Nuclear Bomb则是《扫雷行动》。 在Github上有个人无私地奉献了自己的作品——扫雷AI,并且给出了策略,原著为英文版的,某位网友将其翻译为中文版之... 阅读全文

posted @ 2013-02-28 12:04 吴昊系列 阅读(848) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇)—— (转载)各种博弈各种博
摘要:(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的 法则:如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k 个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。 这个游戏还可以有一种变相的... 阅读全文

posted @ 2013-02-28 11:48 吴昊系列 阅读(326) 评论(0) 推荐(0)

吴昊品游戏核心算法(新年特别篇) —— 跳格子游戏(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)

导航