algorithm
文章平均质量分 85
Ron_Tang
这个作者很懒,什么都没留下…
展开
-
迪克斯特拉算法的正确性
迪克斯特拉算法的正确性对于第k+1次迭代,s为起点,v是不属于S集合的某一点,x是不属于S集合的任意一点不包括v,y是属于S集合的任意一点w(s,v)是通过S集合中某些顶点到v的最短路径,w(s,x)是通过S集合中某些顶点到x的最短路径若有w(s,v)w(s,x)+w(x,v),这也是迪克斯特拉算法为什么不适用于权值为负的原因。S集合加入v点之后,s到v的最短路径即w(s,v)原创 2013-04-16 13:44:11 · 1257 阅读 · 0 评论 -
美国末日AI之状态机(The Last Of Us AI)
好久没有写博客了,这半年在游戏公司工作,过得比较充实,每天不是add feature就是debug,所以忽视了写博客。今天发一篇关于AI博客。最近看了一些关于"The Last Of Us"的AI设计文档,并结合一些实际项目的心得,分享一些这方面的经验。关于游戏方面的AI,行为树和状态机,模糊逻辑,机器学习,导航网格,博弈一般是重点话题。本文主要谈的是状态机,并不会涉及其他的高深的东西。原创 2016-01-18 16:09:57 · 1378 阅读 · 0 评论 -
连续子数组最大和问题(扫描法改进)
问题描述输入一个整形数组,求数组中连续的子数组使其和最大。比如,数组x 应该返回 x[2..6]的和187.Kadane算法简介对于连续子数组求取最大和问题有很多种方法,时间复杂度和空间复杂度都很优秀的当属Kadane算法,该算法又被称为扫描法,该算法用到了一个启发式规则:如果前面一段连续子数组的和小于0,那么就丢弃它。我发现该算法无法正确的应用到全负数的数组中,并且只是单单的返回了连续子原创 2016-02-29 18:26:32 · 699 阅读 · 0 评论 -
游戏中的人工智能之流场寻路
本文介绍一种近几年开始流行了一种寻路技术,美其名曰流场寻路,有人说它的出现颠覆了RTS寻路技术。它与传统的A*寻路不同,希望通过本文可以让更多的朋友了解该技术。原创 2016-04-20 15:36:31 · 4749 阅读 · 0 评论 -
A Painless Q-learning Tutorial (一个 Q-learning 算法的简明教程)
本文是对 http://mnemstudio.org/path-finding-q-learning-tutorial.htm 的翻译,共分两部分,第一部分为中文翻译,第二部分为英文原文。翻译时为方便读者理解,有些地方采用了意译的方式,此外,原文中有几处笔误,在翻译时已进行了更正。这篇教程通俗易懂,是一份很不错的学习理解 Q-learning 算法工作原理的材料。转载 2016-10-09 16:02:54 · 2895 阅读 · 1 评论 -
浅谈增强学习
这篇文章就是浅谈一下机器学习领域下的增强学习。为什么博文的题目为浅谈,因为笔者对机器学习的认知比较浅。我分享一个Q算法的C++代码,该例子体现了如何用Q 算法学习迷宫寻路。读者可参考我上一篇转载博文给出的例子进行学习。原创 2016-10-21 10:41:41 · 13862 阅读 · 0 评论 -
[Unity] A* pathfinding project integrated with influence map
最近一阶段重温了一些关于游戏人工智能方面的书籍。 加强了对influence map的认知。想要亲自动手实现一下。正如文章标题所示,这篇文章讲的是:如何将influence map的机制融入到当前交火的unity寻路插件A* pathfinding project里。原创 2017-06-21 18:58:36 · 1208 阅读 · 0 评论 -
增强学习训练AI玩游戏
1.先睹为快左为高速学习模式,右为正常玩模式2.游戏简介符号A为 AI Agent。符号@为金币,AI Agent需要尽可能的接取。符号* 为炸弹,AI Agent需要尽可能的躲避。游戏下方一组数字含义如下:Bomb hit: 代表目前AI Agent所接取的炸弹数。Coin hit: 代表目前AI Agent所接取的金币数。Iteration:代表游戏...原创 2017-02-13 09:58:04 · 6307 阅读 · 4 评论 -
找出数列中个数大于总数一半的元素
找出数列中个数大于总数一半的元素原创 2017-11-24 19:10:49 · 592 阅读 · 0 评论 -
松散四叉树实战
本文介绍了四叉树,松散四叉树概念,并进一步给出相关的参考资料和代码。通过阅读这篇文章可以让你了解并实现自己四叉树~~~原创 2018-02-22 20:24:24 · 2607 阅读 · 0 评论 -
AI,如何实现NPC的听觉
本文浅谈一下AI的听觉感知模型,并给出了三个实现方案。原创 2015-09-11 14:18:24 · 1621 阅读 · 0 评论 -
人机博弈-吃子棋游戏(三)走法生成
人机博弈-吃子棋游戏(三)走法生成,介绍吃子棋的走法生成算法原创 2014-10-17 13:41:22 · 1386 阅读 · 0 评论 -
让游戏支持复杂手势识别
给游戏加入复杂手势识别的功能无疑可以大大增加游戏的趣味性,对于像ios、andriod这样的全触控操作系统尤其如此。这篇文章不是讲解手势识别的论证推倒过程(那些公式看着就头疼,毕竟咱是写程序的不是写论文的,这些东东是怎么来的咱不管,能用就好),也不是讲解ios上面UIGestureRecognizer类的应用(这个暂时只能识别轻触滑动等简单的手势,虽然对于普通应用来说已经足够了,但是对于游戏来说还转载 2013-12-02 16:50:08 · 894 阅读 · 0 评论 -
双调查找
如果一个数组中的所有元素师先递增后递减的,则称这个数组为双调的。编写一个程序,给定一个含有N个不同int值的双调数组,判断它是否含有给定的整数。(增长极为对数级)解决方案:解决这个问题,需要利用二分查找的思想。不过双调数组不能直接利用二分查找。那么如何解决?对任一一个双调数组,从中间切开,必有一侧是单调数组,另一侧仍为双调数组,特殊情况下,也为单调数组。那么,对于单调数组,我们原创 2014-04-16 15:32:53 · 1922 阅读 · 1 评论 -
求取二项分布
1.利用递归函数求取二项分布概率值,源码如下。public static double binomial(int N, int k, double p) { if (N == 0 && k == 0) return 1.0; if (N < 0 || k < 0) return 0.0; return (1 - p) * binomial(N - 1, k, p)原创 2014-04-07 14:59:42 · 1307 阅读 · 0 评论 -
Uva 307木棍、387谜题、10160服务站总结
Uva 307木棍、387谜题、10160服务站总结,代码加解释原创 2014-04-23 13:47:47 · 1329 阅读 · 0 评论 -
随机队列,随机背包,Josephus问题
随机队列:import java.util.Iterator;import java.util.Random;public class RandomQueue implements Iterable { private Item[] a; private int N; public RandomQueue() { a = (Item[]) new Object[1];原创 2014-04-11 10:27:10 · 1669 阅读 · 0 评论 -
2-eggs-100-floors-puzzle(扔两个鸡蛋问题)
本文浅谈了俩个鸡蛋问题原创 2014-04-13 17:27:23 · 1544 阅读 · 0 评论 -
动态规划求取连续数组最大和
动态规划求取连续数组最大和,非优化版,适合新同学理解学习。原创 2014-08-04 13:52:50 · 1756 阅读 · 0 评论 -
基于二分查找法的数值区间查找
本文给出基于二分查找法的区间查找的定义,并辅以C++源码,并介绍一下二分查找法的区间查找的应用。原创 2014-08-18 14:54:44 · 5285 阅读 · 0 评论 -
一道某高大上互联网公司的笔试题分享
对于一道笔试题的讨论,题目如下:给定一个二维数组,里面随机的填写0和1,求取把上下左右连续(斜线不算相连)的1周边0的个数。在这里可以把由1构成数据看成一个岛屿,求岛屿海岸线的长度,即周边0的个数。原创 2014-10-24 13:03:03 · 1248 阅读 · 0 评论 -
Shuffle Bags让你的随机不那么随机
前言当我最初写游戏时,我经常使用标准Random()函数,然后写一堆if和else条件来我获得预期结果。如果结果不太好,我会写更多的条件进行过滤或者筛选,直到我觉得游戏变得有趣。最近我发现有更好的方法。内置的Random类并没有问题,问题是使用内置的Random类很难达到我们的预期效果。现实生活中,以抛硬币为例,时而会抛出连续多次花或者字。那么如果在游戏中,可能表现为多次连续的暴击或是硬直,尽管有...原创 2018-04-20 15:47:29 · 515 阅读 · 0 评论