- 博客(15)
- 资源 (3)
- 收藏
- 关注
原创 基于博弈树的开源五子棋AI教程及源码分享[开篇]
五子棋是一个老少咸宜,复杂度相对较低游戏,本篇教程便是使用传统的博弈树的知识和一些棋类AI的经典算法来实现一个有一定算力AI。AI可以使用QT编写,在6核的家用笔记本在分支因子(搜索窗口的宽度)为10的情况下,6层深度可以在1s内搜索完成,8层深度可以在4s内完成。这里优先给出一个其中使用到的关键技术,
2023-12-20 22:10:15 1733 2
原创 八数码问题-A*(AStar)算法实现
八数码问题可以说得上是搜索问题中比较经典的,可以有很多种搜索策略,比如说有最常见的BFS,DFS,此外,A*也是一个比较普遍的搜索算法。在八数码问题A*往往可以得到最优的求解路径。
2018-03-28 19:18:13 55743 27
原创 基于博弈树的开源五子棋AI教程[7 多线程搜索]
多线程加快搜索速度这一认知是经受住实践考验的。博弈树搜索的并行搜索方式有很多种,例如叶子并行,根并行,树分裂等算法。笔者给出一种实现起来比较简单的根并行算法。在是实现时需要注意两点,第一,怎么安全的剪枝;第二,如何进行线程间的通信。对于AB剪枝有三点发现可以指导我们设计多线程的并行算法:
2024-01-14 08:31:20 741
原创 基于博弈树的开源五子棋AI教程[6 置换表]
置换表是记忆化搜索技术的应用,置换表保存了某一盘面的搜索结果。当博弈树搜索遇到相同的局面时可以调用这些信息来减少重复搜索。那么如何设计一个置换表的节点就显得比较重要,本文在经典的置换表节点增加一个显示当前玩家的字段,这一字段补足了zobrist hash单向函数的缺点,如果节点需要使用更浅深度的信息,可以通过迭代的方式来求解,丰富了置换表的信息。
2024-01-14 08:30:13 822
原创 基于博弈树的开源五子棋AI教程[3 极大极小搜索]
极大极小搜索是博弈树搜索中最常用的算法,广泛应用于各类零和游戏中,例如象棋,围棋等棋类游戏。算法思想也是合乎人类的思考逻辑的:博弈双方轮流决策,并且认为双方都是理性的,都希望自己的利益最大化或者对手利益最小化。
2024-01-12 23:13:48 2091
原创 基于博弈树的开源五子棋AI教程[4 静态棋盘评估]
静态棋盘的评估是棋力的一个很重要的体现,一个优秀的基于博弈树搜索的AI往往有上千行工作量,本文没有做深入讨论,仅仅写了个引子用来抛砖引玉。评估一般从两个角度入手,一个是子力,另一个是局势。
2023-12-22 11:51:06 1496
原创 基于博弈树的开源五子棋AI教程及源码分享[2 Zobrist散列]
Zobrist Hashing由阿尔伯特·Zobrist于1970年提出,是一种用于棋类游戏的哈希技术。它通过为棋盘上的每一个可能状态分配一个唯一的哈希值,来有效地识别和储存不同的游戏状态。
2023-12-20 23:23:30 839
原创 基于博弈树的开源五子棋AI教程[1 位棋盘]
一般而言一组二维数组就可以充分的表示棋盘信息,但是在后续棋盘静态评估的需求中发现,本文需要对棋盘的四个方向上评估出基础棋型。因而从不同角度冗余的描述棋盘信息就是必要的。
2023-12-20 22:51:51 1588
原创 交通标志的检测与标定
限速标志的基本特征(外边框为红色且为圆形),本文利用颜色空间的方法,先提取出红色区域,在通过图像的开闭运算,膨胀腐蚀操作进行预处理,最后在利用不同区域是目标的可能性进行逐一筛选。这里要指出目标的可能性这一说法,是指该区域类圆的概率以及该区域的面积的加权和。最后,针对一些红的目标可能重叠的情况,进行最后的加工。紧接着提取标志中的数字,通过对给定的图像进行统计,可以发现如果是限速标志,其直方图通常是双峰,一个峰为目标区域,另一个则为背景。这样就可以分理处数字了。
2018-12-06 00:56:53 7625 9
原创 Linux版 Wine/QQ(2018年版)安装
Linux版Wine/QQ安装前言最近几日在Github发现了一个可以吹爆一年的东西,Linux版的QQ和Tim,这一版直接内置了Wine,而且速度更流畅,安装便捷,对于中度使用Linux系统人简直是福音。下载与安装项目已经开源到Github[askme765cs],,下载完成只需两步就可以轻松搞定。修改权限进入Tim安装包目录cd "安装包目录"chmod 755 *直接运...
2018-11-17 12:08:50 3502 1
原创 二叉树的基本操作与树形目录形式打印(C++ 模板类)
本例实现了基本二叉树的先序创建,前序遍历,层次遍历,以及目录结构式的打印。这篇文章竟然沉了,不是很甘心,上回说到目录形式打印,这次再丰富一下(挣扎下)。博主从网上观察了一下,虽然有横向打印树的,但总不是很完美,这次更新着眼点就在这边。
2018-09-08 08:55:17 2514
原创 基于UDP的dos多人聊天室
前言聊天室优点与可拓展功能优点:可拓展功能实测登陆界面注册聊天群聊私聊退出(左边为sender退出,右边为receiver退出)编译环境后记下载入口前言\qquad这学期正好有门TCP/IP 编程,乘机写了个dos下的聊天室,去年这个时候用Java写了个带GUI的多人聊天室,不过整体来看这次在对网络编程有了一定的理论基础后,这次用c+...
2018-03-27 12:45:12 3397
原创 c/c++ 环境(MinGW + vs code )搭建与使用指南
前言环境搭建MinGW下载VS Code配置说明对比与心得前言\qquad这次又是一次工具分享篇,上次写了一篇GCC/G++ + sublime text3 + powershell在windows使用指南的分享,这次又带了一个新的生产工具——vs code(此次仅针对windows,其实linux配置也是相近的,而且会更简单),至于vs code,sub...
2018-03-25 14:32:08 17852 1
原创 Java paint与paintComponent的区别与联系
在上学期,做了一些简单Java程序,做了一个GUI矩阵运算器,还有像什么基于C/S模式的销售管理系统, 聊天室这种东西,都是些组件做的。但这次准备入手做一些用Graphics绘图做的东西。刚入手就发现了这个问题,Java中paint与paintComponent在使用还是存在很多差异的。先把本文讨论主干问题列上:1)联系 2)区别 3)在程序中表现出的异同 4)本次test中发现的有趣的问题与
2017-09-25 21:43:38 8725 3
交通标志的检测与标定
2018-12-06
基于udp的多功能聊天室
2018-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人