自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

九日王朝

君子以独立不惧,遯世无闷

  • 博客(270)
  • 资源 (8)
  • 收藏
  • 关注

原创 人工智障学习笔记——机器学习(3)决策树

一.概念决策树(Decision Tree)是一种十分常用的分类方法。也是监督学习的一种,是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测

2017-11-03 14:24:37 2542

原创 人工智障学习笔记——机器学习(2)线性模型

一.概念线性模型:就是线性的模型。其实我在网上搜了很久,想用一句话能够简单易懂的表达出这个概念,但是确实不知道该怎么组织语言。不过相信有一些数学基础的同学应该是能明白的。我们可以这样认为,世界上所有的问题都可以用公式表达,如果任何问题都是可以用线性模型来描述的,那么我们人人都可以预测未来,因为其模型非常的简单。但是很遗憾,大多数问题都是非线性的。二.线性回归线性

2017-11-02 15:48:54 1812 1

原创 人工智障学习笔记——机器学习(1)特征工程

一.概念学习过Machine Learning的一定听过这句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。所谓特征工程,做的就是【最大限度地从原始数据中提取特征点以供算法和模型使用】这么一件事。二.模块特征工程大体可以分为以下几大模块1.特征采集:主要基于业务理解,找出满足需求的数据,设计如何获取及存储特征点,并且评估其准确率、覆盖率、采集难度等

2017-10-31 19:34:07 1910

原创 C++ 遗传学SFLA混合蛙跳算法

蛙跳算法(Shuffled Frog Leading Algorithm)是一种启发式算法,通过启发式函数进行启发式搜索,从而找到组合最优问题的解。他结合了以遗传为基础的memetic算法和以社会行为为基础的粒子群优化算法的优点。也可以说SFLA=SCE+PSO一、问题概念:蛙跳算法的思想是:在一片湿地中生活着一群青蛙。湿地内离散的分布着许多石头,青蛙通过寻找不同的石头进行跳跃去找到食

2017-10-20 16:51:53 4142 1

原创 node.js——麻将算法(七)简易版麻将出牌AI2.0

*文本为上一篇博客http://blog.csdn.net/sm9sun/article/details/77898734的部分追加优化上一篇博客已经实现了基本的出牌逻辑,大部分情况能够给出正确的策略选择,但经过了一些测试,仍发现了几个严重的问题:问题一:当手牌无闲牌时,偶尔会将完整的一组牌拆开打出。例如:二万、四万、七万、八万、三筒、五筒、一条、二条、三条、九条、九条可能会打

2017-09-25 14:27:07 8282 5

原创 node.js——麻将算法(六)简易版麻将出牌AI1.0

普通麻将的出牌AI如果不是要求特别高的话,其实蛮容易实现的,毕竟大多数人打牌都只是看自己的手牌。所以作为简易版的AI,出牌的策略只要奔着胡牌去就可以了。我们能想到的就是把相邻或相同的牌凑到一起,把单独的牌打出去。以这个思路打牌,就会慢慢接近听牌至最终的胡牌。我们简单举个例子,我们有1万2万,那么我们认为其打出去的优先级要高于单独的牌,因为其只需要1个三万就可以凑成一组了。这种思路实际很

2017-09-08 21:22:42 9135 5

原创 lua——alien库实现lua调用C动态链接库(dll、so)

我们知道,lua通过lua_State堆栈可以很方便的与C语言进行交互http://blog.csdn.net/sm9sun/article/details/68946343也可以调用专门为lua调用而封装的C库。具体步骤:1.原C文件中引入lua相关头文件#include "lua.h"#include "lualib.h"#include "lauxlib.h"2.声明

2017-09-07 17:02:05 6398

原创 node.js——麻将算法(五)胡牌算法的一些优化处理方案(有赖子版)

以前有赖子判胡算法http://blog.csdn.net/sm9sun/article/details/65632646以前的帖子说明了处理赖子的两种方案:枚举代替及插空补缺,并最终选择了枚举遍历方案,因为当初考虑的是通过GetAppointList方法已经会剔除大多数无关联的牌了,且后期大家通过吃碰杠等也会减少手牌,姑且认为n的值为10,因为大多数麻将四个赖子直接胡。所以三

2017-09-01 18:11:41 7716 3

原创 node.js——麻将算法(四)胡牌算法的一些优化处理方案(无赖子版)

回想三月份刚接触棋牌时写过一些麻将的算法,转眼间半年过去了,回顾下曾经的代码,写的还真是蛮low的http://blog.csdn.net/sm9sun/article/details/65448140  以前无赖子判胡算法针对于半年前写的算法,CanHuPai_norm函数第一步就是剔除对子(即将牌),由于是将全部牌数组整体考虑,所以每个大于等

2017-09-01 16:03:31 5484 1

原创 python——适用于py3的pillow图像处理模块&plist组图分割

首先说明一下PIL库,PIL(Python Imaging Library)是Python一个强大方便的图像处理库,之前的博客也有用到过PIL模块的demohttp://blog.csdn.net/sm9sun/article/details/53538579不过可惜的是PIL库只支持到Python 2.7。python3以后,我们可以用pillow模块来代替PIL,pillow是PI

2017-08-30 11:39:46 5564 2

原创 全排列及相关扩展算法(七)——组合数的字典序(另含全章代码整理)

1.引入概念:要列出一个集合{1,2,3,4}的所有子集是很容易的,我们可以按照二进制数的顺序,0000,0001,0010,0011,0100,0101,0110,0111......来表示我们要取的元素,其中0表示不取,1表示取,这样就获得了一个顺序。而组合也包含在这个顺序当中。我们看从{1,2,3,4}中选取两个元素的所有组合:0000 0001 0010 0011 0100 010

2017-08-18 18:24:15 1855

原创 全排列及相关扩展算法(六)——全排列最蛋疼的算法:邻位对换法

1.引入原因:在此之前我们实现全排列本质上都是采用单向交换的思路,当交换到末端便要回溯至上一层面,如果我们采用双向的交换,便可以不断地交换下去,于是产生了邻位对换法。邻位对换法在找下一个排列的方法上在很多情况下要比字典序算法要快上许多,因为每次的下一个排列只是交换两个相邻的元素,当然缺点就是到左端或者右端时要进行找最大可移动数的计算,故最终整体效率也没什么提升,所以称之为最蛋疼的全排列算法。

2017-08-18 18:07:43 2756

原创 全排列及相关扩展算法(五)——递增(递减)进位制数求原排列算法

1.引入原因:通过上一章我们意识到通过原始中介数求原排列并不是那么的方便,于是我们延伸出几种新的中介数算法来方便计算原排列。2.递增进位制数法:递增进位制是指数字的进制随着数字位置的不同递增,一般的,最右位的进制为2,向左依次增1。用递增进位制数法改造的中介数即:我们不按照从左到右的顺序排,而是按照数字的大小来排。以上一章{ 7,6,8,3,4,5,1,2 }为例,其原始中介数为{6,5,5,

2017-08-17 20:59:52 3754

原创 全排列及相关扩展算法(四)——原始中介数通过逆推求原排列算法

1.中介数逆推原排列:上一章我们讲到了中介数,通过一个排列可以很方便地求数它的中介数,通过中介数也可以很方便地求出排位序号。但是通过中介数逆推原排列就不是那么容易了。因为我们每求一位数,都需要对比其前面所有的数来获取他的定位,以上一章{ 3,4,5,6,7,2,1 }为例,得到的{2,2,2,2,2,1}中介数,第一位我们可以直接得出3,第二位本应也是3,但是考虑前面已经有3了,所以第二位就只能是4,以此类推……即:如果之前存在某排位i小于等于当前排位,那么当前排位所对应的数需要再加上1

2017-08-17 10:29:47 1982

原创 全排列及相关扩展算法(三)——利用中介数求排列在字典序排位算法

1.中介数的定义及作用:很多时候,我们要通过一个排列得出它的字典序中的位置(序号),比如1234567应该排在第0位(开始位),1234576应该排在第1位,7654321排在第7!-1=5039位。当然,我们可以通过计算Next_Permutation函数的迭代次数来得到这个数据,但这样时间复杂度最差为O(n!),是非常不划算的,因为我们仅仅要求一个数的位置。所以我们要先从数学的角度去计算这个问

2017-08-16 20:46:24 3654

原创 全排列及相关扩展算法(二)——求字典序下一组排列及全排列算法

1.字典序排列的定义:为了便于理解,以数字为例,对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后。按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是 54321。2.字典序排列解决思路:参考上文中(1,2,3,4)全排列的输出截图最后输

2017-08-16 16:33:14 1308

原创 全排列及相关扩展算法(一)——基础的回溯递归实现全排列算法

1.全排列的定义和公式: 从n个数中选取m(m2.时间复杂度: n个数(字符、对象)的全排列一共有n!种,所以全排列算法至少时O(n!)的。如果要对全排列进行输出,那么输出的时间要O(n*n!),因为每一个排列都有n个数据。所以实际上,全排列算法对大型的数据是无法处理的,而一般情况下也不会要求我们去遍历一个大型数据的全排列。3.全排列算法解决思路:假设现有1 2 3 三个数,我们构造全

2017-08-16 14:28:22 2799

原创 c#.net——c#.net异步实现网页信息爬取

之前研究各种语言异步的时候就想做一个C#版本的异步,但是毕竟好久不做了(也就是在大学期间用asp.net做了几个管理系统)语法类库什么的完全蒙蔽了,研究了好几天,也参考了网上许多资料,终于写出了几行low逼代码实现内容:异步并发爬取网页信息首先异步的语法和其他语言都大同小异,async、await,定义异步方法的话要加async修饰符,如果你想在await调用,

2017-07-29 21:50:55 5070 2

转载 洛谷OJ上的A+B花(zhuang)式(bi)解法

转眼间快到了8月,一想自己都毕业好久了,很怀念曾经在各大OJ上刷题的时光,今天无意在一个算法群里看到最近有个叫洛谷的oj网站貌似蛮火的,于是注册了一个下进去看一看,顺手打开了A+B problem,然后……作者: Treeloveswater 更新时间: 2017-03-26 15:06 举报终于可以写一份A+B这么难的题的题解了。咦?竟然没有人写LCT的题解?

2017-07-28 16:26:40 2817

原创 C++ concurrency::task实现异步编程(Windows)

最近一直在看js、python、lua等脚本语言的异步编程,今天脑子一热突然想看看C++能否也有支持异步的相关类库,上网一搜还真的有microsoft官方文档https://msdn.microsoft.com/library/windows/apps/Hh780559.aspx主要使用task class 及其相关类型和函数,它们都包含在 concurrency 命名空间中且在

2017-07-22 15:35:22 8265 2

原创 python——asyncio模块实现协程、异步编程(三)

【八】协程停止future对象有几个状态:PendingRunningDoneCancelled创建future的时候,task为pending,事件循环调用执行的时候当然就是running,调用完毕自然就是done,如果需要停止事件循环,就需要先把task取消。可以使用asyncio.Task获取事件循环的task例如:import asyncioimpor

2017-07-19 20:50:36 5733

原创 python——asyncio模块实现协程、异步编程(二)

【六】协程并发定义tasks时可以设置多个ensure,也可以像多线程那样用append方法实现tasks = [ asyncio.ensure_future(coroutine1), asyncio.ensure_future(coroutine2), a

2017-07-19 20:21:44 2545

原创 python——asyncio模块实现协程、异步编程(一)

我们都知道,现在的服务器开发对于IO调度的优先级控制权已经不再依靠系统,都希望采用协程的方式实现高效的并发任务,如js、lua等在异步协程方面都做的很强大。python在3.4版本也加入了协程的概念,并在3.5确定了基本完善的语法和实现方式。同时3.6也对其进行了如解除了await和yield在同一个函数体限制等相关的优化。event_loop 事件循环:程序开启一个无限的循环,程序员会把

2017-07-19 18:28:10 3797

原创 python——VS2017开发python与python3.6更新特性

VS2017详情   http://blog.csdn.net/sm9sun/article/details/68924321作为50G吊炸天IDE,VS2017对于python的支持也是很给力。新建项目中可以选择python工程在工具→选项→文本编辑器里可以选择显示行号等常用开发选项解决方案里可以选择相应的版本环境

2017-07-18 17:33:32 18872 1

原创 redis——通过redis实现服务器崩溃等数据恢复

由于redis存储在内存中且提供一般编程语言常用的数据结构存储类型,所以经常被用于做服务器崩溃宕机的数据恢复处理。服务器可以在某些指定过程中将需要保存的数据以json对象等方式存储到redis中,也就是我们常说的快照,当服务器运行时读取redis来判断是否有待需要恢复数据继续处理的业务。当一次业务处理结束后再删除redis的数据即可。redis提供两种将内存数据导出到硬盘实现数据备份的方法:RDB...

2017-07-06 17:39:53 11114

原创 redis——redis简介及基本交互方法

Redis是一个速度非常快的非关系数据库(non-relational database),它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片1来扩展写性能,接下来的几节将分别介绍Redis的这几个特性。其重点是在内存中存储,所以相比普通数据库,其IO效率会快很多。在使用类...

2017-07-06 16:26:10 2015

原创 Tesseract-ocr实现图像文本识别

Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文)。 Tesseract最初由HP公司开发,后来由Google接盘填坑。

2017-06-20 16:33:04 4854

原创 node.js——麻将算法(三)胡牌相关明牌

最近在做一款叫做“卡五星”的三人麻将,来自湖北,麻将里只有筒和条(没有万)以及中发白这些牌。其他的特殊功能暂且不提,其中有一个需求是玩家听牌后需要将与胡牌有关系的牌显示出来给其他玩家看。举个例子,比如说我的手牌是1234677筒,此时我胡5筒(4,6),那么就要讲4筒,6筒显示出来。又比如7888筒(胡6,7,9筒),就要讲7888都显示出来。放组样例图:开始接到这

2017-06-11 12:03:59 2097 1

原创 lua——牛牛牌型处理相关算法(下)——牌型比较

牛牛的比牌规则为:单牌比较: k>q>j>10>9>8>7>6>5>4>3>2>a。花色比较:黑桃>红桃>梅花>方块。牌型比较:无牛无牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。有牛牌型比较:比牛数;牛数相同庄吃闲。牛牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。银牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比

2017-05-24 15:58:00 7570 1

原创 lua——牛牛牌型处理相关算法(中)——牌型判定

牛牛的牌型按从小到大的顺序分为:无牛算牛的方式为:先选出三张牌,若能组成十的整数倍 即为有牛,然后再看剩余两张牌除以十的余数。余几就是牛几,若正好也能整除十,即为牛牛。若无法选出三张组成十的整数倍的牌即为无牛。银牛:1张10 加4张大于10的牌金牛:5张大于10的牌炸弹:存在四张相同的牌五小牛:五张牌总数值相加小于等于10首先定义牌型,因为客户端不同数的牛显

2017-05-24 15:45:20 9012 1

原创 lua——牛牛牌型处理相关算法(上)——牌值数据

这几天又做了牛牛游戏,在这里把相关算法写一下,与前几天写的赢三张的基本类似,所以大家也可以参考前几篇博客。牛牛是一种简单却又非常有意思的棋牌游戏,主要是采用一副扑克牌其中的52张(除去大小王);第一局的庄家是随机产生,而后每局的庄家是上一轮游戏中的赢家,每局游戏系统自动洗牌后将5张牌均匀分给给各位玩家。玩家拿到牌后根据一定的游戏规则进行排列组合,庄家和闲家依次进行大小比较从而决定胜负。

2017-05-24 15:28:12 11481 5

原创 lua——赢三张牌型处理相关算法(下)——牌型比较

上文中我们已经实现了赢三张牌型的判定方法,同时我们也给出了一个枚举结构CardType。不难理解,若两组牌不是同一牌型的话,直接根据枚举的值进行比对就可以了。若是相同牌型还需要进行进一步的判断。所以我们暂且将比牌函数分为两个分支--@比牌接口函数--@ my_Cards, 本家牌,--@ pre_Cards,下家牌,--@ ret true/falsefunction cardTool

2017-05-18 14:28:19 1752

原创 lua——赢三张牌型处理相关算法(中)——牌型判定

赢三张的牌型大题分为6种:单牌CardType ={ UNDEFINE=0, --单牌 DUI_ZI =1, --对子 SHUN_ZI =2, --顺子 TONG_HUA=3, --同花 TONG_HUA_SHUN = 4, --同花顺 BAO_ZI = 5, --豹子}

2017-05-18 14:05:02 1475

原创 lua——赢三张牌型处理相关算法(上)——牌值数据

赢三张,我们东北管这个叫拖拉机。其他的几个名称是违规的。。是一个简单粗暴的扑克牌(dubo)游戏。玩家每人三张牌,通过特定的牌型规则进行比大小。(押注什么的就不说了,具体详细规则请参考百度)最近一直深陷在各种扑克玩法的牌型逻辑处理中,对比了一下,觉得赢三张应该算是比较简单的了,于是在这里写出一些牌型逻辑处理的算法。有些也适用于其他的扑克牌玩法。注:语言为lua

2017-05-18 11:39:28 3948 4

原创 斗地主AI算法——第十七章の总结整理

2.0版本的斗地主AI算法在这里就算告一段落了。**********************完结撒花**********************不过后续应该还会开发更智能的版本,毕竟当前版本还有很多策略没有加入。比如说角色位置(地主上家下家打法)、比如说记牌算牌、又比如对于一些残局的分析等等。斗地主规则看似简单,实际变幻莫测,也包含一些心理上的博弈。而我想做的AI,不一定要做到最牛

2017-04-27 20:50:26 10367 7

原创 斗地主AI算法——第十六章の样例分析

上一章,我们已经完成了测试模块的开发。至此我们已经可以进行整体测试了。本章主要内容就是随机生成了一些样例并进行分析。实际上整个开发过程绝大部分时间都是用在样例分析上,通过样例给出的返回操作分析自己设计的策略是否合理,然后不断的调整策略,调整权值等等。这个过程持续了蛮久的,而且很多地方都反复的修改,感觉git都快要被我玩坏了。下面具体拿出一组测试数据进行简单的分析发牌

2017-04-27 20:12:31 6029

原创 斗地主AI算法——第十五章の测试模块

前面已经完成了整个工程大部分模块,接下来进入整合联调以及模拟测试模块。测试模块主要任务就是代替服务器给出我们需要的数据。因为我们本来的计划是封装成类库通过服务器调用获取,其调用的接口无非就是叫分、被动出牌、主动出牌。被动出牌和主动出牌我们已经完成,叫分我们已经实现了权值的获取,只需要在外面加一个区间划分即可:/*获取叫分函数*/int LandScore(GameSituati

2017-04-27 17:48:18 5507 5

原创 斗地主AI算法——第十四章の主动出牌(3)

上一章已经排除了飞机、三带等牌型,那么除去炸弹王炸以外,我们只剩下单牌、对牌、三牌以及单顺、双顺、三顺了。首先说单牌、对牌、三牌。其逻辑基本一样,只是出牌的个数有差别,即:如果该i牌数量满足这种牌型要求,即先打出,计算其剩余价值。 //出单牌 if (clsHandCardData.value_aHandCardList[i] > 0) { clsHandC

2017-04-27 16:42:49 6048 7

原创 斗地主AI算法——第十三章の主动出牌(2)

上一章我们已经搭好了出牌算法的基本框架,本章主要实现优先处理的三带、飞机等牌型。首先定义一些基本变量: //暂存最佳的价值 HandCardValue BestHandCardValue; BestHandCardValue.NeedRound = 20; BestHandCardValue.SumValue = MinCardsValue; //我们认为不出牌的话会让对手一个轮次

2017-04-27 16:26:26 5823

原创 斗地主AI算法——第十二章の主动出牌(1)

本章开始,我们介绍主动出牌的算法,和被动出牌类似,我们第一步把主要架子搭起来。首先清空出牌序列clsHandCardData.ClearPutCardList();主动出牌的策略按照优先级大体可以分为三类:【一】能直接一手牌出去,优先出。【二】两手牌出去且有绝对大牌,先出绝对大牌。【三】出一手牌使得接下来自己手牌价值最大化。首先说【一】:一手牌的

2017-04-27 16:04:15 8790 6

plist组图分割demo

基于pyhton3.6开发的plist组图分割demo 配套博客地址: http://blog.csdn.net/sm9sun/article/details/77703551

2017-08-30

protobuf完整工程包

有关Visual Studio开发protobuf的完整工程,内含protobuf-3.0.0-alpha-3源码(有vs工程可编译) 以及编译好的第三方lib库及头文件 另附VS2017版protobuf完整测试样例 配套博客http://blog.csdn.net/sm9sun/article/details/70049375

2017-04-11

protobuf完整工程

protobuf完整工程

2017-04-11

BrainFuck语言解释器及一些demo

一个很小巧的BrainFuck语言解释器,内置很多小demo

2016-12-26

python后台web开发网址生成二维码

python实现web开发,网址生成二维码demo

2016-12-09

奥义前端源码

奥义前端源码

2016-12-06

VS2010工程python结合c++开发demo

VS2010工程python结合c++开发demo

2016-11-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除