我终于把大学时那个“最简单棋类 AI”的想法写出来了

AI:人工智能导论合集 来自中国计量大学,为人工智能课程教学所用。用通俗易懂的语言介绍人工智能的应用。绪论部分主要介绍了课程所涉及的各个方面,包括遗传算法、神经网络等。并且介绍了人工智能的基本概念及其特点;人工智能主要研究领域,包括模式识别、智能预测的应用等;自然语言处理的主要方法,包括关键字匹配、句法-语义分析技术等;机器学习的相关概念、马尔可夫模型、HMM(隐马尔可夫模型)等并且举例说明。 人工智能在游戏设计中的应用... 阅读详情

大学的时候,我有过一个非常朴素、甚至有点天真的想法:

能不能不用复杂模型、不用大数据,只靠最基础的算法,写一个“会下棋”的 AI?

那时候我当然写不出来。
但这个想法一直没有消失,只是被丢进了一个“以后有时间再说”的角落。

后来学了更多算法、写了更多工程代码,也见过了 AlphaZero、Stockfish 这种“神级存在”。
反而更清楚一件事:
真正重要的不是它有多强,而是它是怎么思考的。

前段时间终于有空,我把当年那个念头拿出来,真的把它写完了:

👉 https://github.com/unknownparticles/chess

这是一个完全本地、基于最基础搜索算法的棋类 AI 引擎。
不追求强度,追求清晰、通用、可扩展。


我一开始就给自己设了三个限制

在动手之前,我给这个项目设了几个“看起来像是在给自己找麻烦”的限制:

  1. 不用神经网络
  2. 不用复杂启发式
  3. 算法要简单到能给大学时的自己讲明白

听起来像是在开倒车,但正是这些限制,让整个项目变得非常“干净”。

我真正想做的是:
👉 把“棋类 AI 的本质”拆到不能再拆。


下棋这件事,本质上是在干嘛?

如果把下棋这件事抽象到极致,其实只有三步:

  1. 当前局面,我能走哪些步?
  2. 对方会怎么回应?
  3. 哪条路最后对我最有利?

这正是 Minimax 算法在做的事情。

它并不聪明,只是非常认真:

  • 我假设对手永远做对我最不利的选择
  • 那我就提前把这些可能性全算一遍
  • 然后选一条“最坏情况下也还不错”的路

你可以把它理解成一种极度悲观,但绝对理性的思考方式。


为什么我要先做一个“通用引擎”

我不想一上来就写“五子棋 AI”或者“象棋 AI”。

我更感兴趣的是一个问题:

AI 下棋的逻辑,和具体是什么棋,其实关系大吗?

答案是:
关系不大。

于是整个项目的核心不是某一种棋,而是一个抽象层:

class GameEngine {
public:
    virtual std::vector<Move> getPossibleMoves() = 0;
    virtual void makeMove(const Move &move) = 0;
    virtual void undoMove(const Move &move) = 0;
    virtual int evaluate() = 0;
    virtual bool checkWin() = 0;
};

这个接口基本定义了一切“规则棋类”的共性:

  • 当前能怎么走
  • 走了之后局面如何变化
  • 局面对我来说是好是坏
  • 游戏有没有结束

AI 并不关心你是在下五子棋,还是井字棋。
只要你能回答这些问题,它就能开始“思考”。


Minimax,其实一点都不神秘

很多人第一次看到 Minimax,会被名字吓到。

但它的逻辑真的非常直白:

  • 轮到我 → 我希望分数越大越好

  • 轮到对手 → 对手希望分数越小越好

  • 一直往下推,直到:

    • 游戏结束
    • 或者搜索深度用完

核心代码长这样(删掉细节后):

int minimax(GameEngine &engine, int depth, bool maximizing) {
    if (depth == 0 || engine.checkWin()) {
        return engine.evaluate();
    }

    if (maximizing) {
        int best = -INF;
        for (auto &move : engine.getPossibleMoves()) {
            engine.makeMove(move);
            best = max(best, minimax(engine, depth - 1, false));
            engine.undoMove(move);
        }
        return best;
    } else {
        int best = INF;
        for (auto &move : engine.getPossibleMoves()) {
            engine.makeMove(move);
            best = min(best, minimax(engine, depth - 1, true));
            engine.undoMove(move);
        }
        return best;
    }
}

这里没有魔法,只有一件事非常重要:

makeMove 之后,一定要 undoMove

这是整个引擎能否成立的关键。

一旦状态回滚不干净,AI 的“世界观”就会被污染,后面算出来的结果全部不可信。


为什么 Alpha–Beta 剪枝这么重要?

Minimax 最大的问题只有一个:
太慢了。

棋盘稍微大一点,分支数就会爆炸。

Alpha–Beta 剪枝本质上做了一件很“人类”的事:

“这条路已经比我目前最好的选择还差了,后面就不用看了。”

它不改变结果,只是少走弯路。

加上剪枝之后,搜索深度能明显往上提,这也是为什么哪怕是最基础的算法,在五子棋、井字棋这种规则游戏中已经能表现得“像模像样”。


先从最简单的棋开始

目前项目里实现了两个游戏:

  • 井字棋(Tic-Tac-Toe)
  • 五子棋(Gomoku)

井字棋几乎是“算法验收工具”:

  • 状态空间小
  • 最优解明确
  • 非常适合验证 Minimax 是否写对

五子棋则更接近真实对弈:

  • 分支多
  • 评估函数开始变得重要
  • 搜索深度和性能开始成为问题

当 AI 能在五子棋里下出“像人一样的棋”,那种感觉非常奇妙。

你会清楚地意识到:
它并没有理解棋,但它理解了规则。


写完之后,我最大的感受

回头看,这个项目并不复杂,甚至可以说“很基础”。

但它让我确认了一件事:

很多我们今天看到的“智能”,本质上仍然建立在这些最朴素的思想之上。

深度学习很强,但搜索和博弈论并没有过时。
复杂系统的理解,往往要从最简单的版本开始。

对我来说,这是一次把“大学时的一个未完成想法”真正关掉的过程。


如果你也对这个方向感兴趣

这个仓库本身并不“完美”,但它非常适合:

  • 想真正理解棋类 AI 的人
  • 想自己动手实现 Minimax / MCTS 的人
  • 想在一个干净框架里加新算法的人

👉 https://github.com/unknownparticles/chess

如果未来我有时间,我会继续往这个引擎里加更多东西。
但即便停在这里,它也已经完成了自己的使命。

【渝粤教育】广东开放大学 人工智能 形成性考核 (55) 选择题 题目:连接主义认为人工智能的研究方法应采用()方法。 题目:图灵曾协助军方破解()的著名密码系统Enigma。 题目:由《大英百科全书》可知,围棋大约源起于公元前()年左右。 题目:下面属于常用的点角破空手段是()。 题目:人类的学习类型不包括() 题目:人通过算法赋给机器的智能属于()。 题目:非结构化的知识的表示法是()。 题目:()是有关问题环境的一些事物的知识,常以"…是…”的形式出现。 题目:()是有关问题的求解步骤、技巧性的知识。 题目:()不属于陈述式知识表示。 题目:状态空间法三要点 阅读详情

相关推荐

2017败北清单:人工智能在这些游戏中战胜了人类

大数据文摘作品作者:Rich Haridy编译:Niki、笪洁琼、刘涵20世纪90年代后期,IBM深蓝(Deep Blue)研究了一系列的国际象棋算法,期望于打败当时的世界冠军加里•卡斯帕罗夫(Garry Kasparov)。终于,在1997年深蓝成功打败了卡斯帕罗夫,这是历史上计算机第一次在一对一的比赛中打败人类的世界冠军,此事在当时引起了众人极大的恐慌,由此也产生了许多在至今来看也不过时的科幻

大数据文摘 4350

微软说:麻将AI系统终获突破,人工智能商学院来啦!

打麻将比下围棋难? 麻将起源于中国,而今这一蕴含东方哲学和智慧的古老博弈游戏正风靡全世界。与象棋、围棋等棋类相比,麻将在游戏对弈的过程中存在大量隐藏信息,具有高度的不确定性,因此麻将的复杂度远高于其他棋类,对AI技术存在着特殊挑战。 在以“智联世界,无限可能”为主题的2019世界人工智能大会上,由微软亚洲研究院研发的麻将AI系统Suphx在国际知名的专业麻将平台“天凤”荣升十段,创造了目前AI...

科技星象 8754

我为什么不在乎人工智能 / 王垠

目录我为什么不在乎人工智能机器一样的心我的人工智能梦识别系统和语言理解机器对话系统和人类客服纪念我的聊天机器人 helloooo自动编程是不可能的傻机器的价值AlphaGo与人工智能棋类是相对容易的AI问题认知是真正困难的AI问题机器学习是什么AlphaGo并不是人工智能历史性的突破文 / 王垠有人听说我想创业,给我提出了一些“忽悠”的办法。他们说,既然你是程序语言专家,而现在人工智能(AI)又非常热,那你其实可以搞一个“自动编程系统”,号称可以自动生成程序,取代程序员的工作,节省许许多多的人力支出,这样就

AI天才研究院 2万+

人工智能的“能”与“不能”

AI3.0经典分享

weixin_43790276的博客 1364

双轮差动机器人SLAM实战:轮速里程计从建模到精度验证(附Matlab代码)

本文详细介绍了双轮差动机器人SLAM系统中轮速里程计的实现全流程,包括核心原理、建模方法、Matlab代码实现及精度验证。通过轮速仪数据建模和连续积分算法,提升定位精度,并附有完整的误差分析和工程优化技巧,为开发者提供实用参考。

weixin_29050271的博客 224

OpenClaw(小龙虾) 安装部署教程

OpenClaw(原名Clawdbot)是一个开源的、可本地部署的个人AI助理,它能接入飞书、钉钉等即时通讯工具,帮你处理邮件、管理文件,甚至控制电脑。

qq_40668700的博客 1382

这次是麻将!AI“Suphx”在平台“天凤”荣升十段

相应地,当我们衡量非完美信息游戏的难度的时候,也应该依据信息集的数目,而不是游戏状态空间的大小。麻将中每个玩家除了手中的13张牌和已经打出的牌外,其他玩家手中的牌和剩余的底牌都是未知的(最多可以有超过120张未知的牌),由于隐藏信息过多导致游戏树的宽度非常大,树搜索算法基本不可行。另一方面,一旦某一轮的底牌给定,其状态子空间会大幅缩小,所以研究团队让Suphx在推理阶段根据本轮的牌局来动态调整策略,对缩小了的状态子空间进行更有针对性的探索,从而更好地根据本轮牌局的演进做出自适应的决策。会有更多的研究出现。

AI生成曾小健3 1931

超详细网安学习路线(Day1-Day2)

渗透测试(Penetration Testing),就是一种通过模拟恶意攻击者的技术与方法,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响后果安全隐患的一种安全测试与评估方法。简单来说,就是合法去入侵别人的系统,来帮助其找出漏洞,增强防护能力。

aobulaien001的博客 3389

计算机博弈应用想法,浅说计算机博弈

这次AlphaGo取得胜利也是见证着人工智能又前进了一步。首先说一下什么是人工智能,美国斯坦福大学尼尔逊教授给过这样的定义怎样表示知识及怎样获取知识并使用知识的学科。从解释中可以看到人工智能是一口交叉学科,它综合了计算机科学、信息论、控制理论、数学、逻辑学、认知科学、行为科学等诸多学科,具体的发展研究体现在机器学习、模式识别、机器博弈、自然语言处理、自动化程序设计和分布式人工智能等方面。这是从学术...

weixin_39988779的博客 699

AI落地困局与破局者FDE:从技术神话到价值实干的战略转型

AI落地困局与破局者FDE:从技术神话到价值实干的战略转型 当前AI企业级应用面临三大核心挑战:业务场景深度非标化、技术落地"最后一公里"困局、以及市场竞争焦点转向实用价值。前线部署工程师(FDE)作为破局关键,通过技术-业务-产品三维交汇的复合能力,将AI从实验室推向生产环境。FDE不仅是技术架构师,更是业务价值挖掘机和产品进化传感器,通过"碎石路-高速公路"双循环模式,将定制化需求沉淀为可复用的平台能力。这种模式颠覆了传统SaaS的销售逻辑,形成基于价值的J型增长

随笔记录-分享&记忆 3998

从零到一:PrimeTime静态时序分析入门指南

本文详细介绍了PrimeTime静态时序分析(STA)的入门指南,从基础概念到实际应用全面覆盖。内容包括时序路径分类、PrimeTime环境搭建、时序约束设置与验证、时序分析与报告解读等核心内容,帮助工程师快速掌握STA技术,解决数字芯片设计中的时序收敛问题。

weixin_28730131的博客 268

看到“人工智能”的词时,你会想到什么?

  从2017年开始,人工智能这个司就热度不减,一直红到现在的2019年,会红到几时那就要看人工智能在生活或工作中的应用方面了。人工智能已经广泛的渗透到生产和生活的各个领域,很多行业都开启了智能模式,无论是无人物流、无人...

couchen9704的博客 781

EndNote全文检索实战:如何快速配置学校图书馆资源并精准查找文献

本文详细介绍了EndNote全文检索功能的实战配置方法,核心在于通过正确设置OpenURL链接解析器,无缝对接学校图书馆资源,实现一键精准获取文献全文。文章提供了从理解机制、四步配置法到进阶技巧的完整指南,帮助科研人员高效管理海量PDF,构建个人知识体系,大幅提升文献调研与写作效率。

weixin_29228781的博客 279

AI安全警报:前沿大模型被曝“作弊”,人类仅剩一年治理窗口?

结果令人震惊:当AI发现自己难以取胜时,它竟然选择修改记录棋盘位置的系统文件,制造非法移动,让自己取得优势,最终迫使Stockfish“认输”。人工智能与棋类游戏的联系由来已久,从1997年IBM“深蓝”击败国际象棋世界冠军卡斯帕罗夫,到2016年AlphaGo战胜李世石,AI在棋类领域的突破往往预示着技术的一次飞跃。然而,最近的实验结果表明,AI的“进步”可能已经超越了原本的规则。各大AI公司必须在模型训练和部署前,建立更严格的安全审查机制,防止AI利用漏洞。近年来,AI的发展速度远超预期,预计到。

sveewg的博客 6662

【AI赋能】Sora + CapCut 打造爆款短视频:从脚本到发布的自动化工作流

本文详细介绍了如何利用Sora、Grok和CapCut等AI工具构建自动化短视频生产工作流。通过结构化Prompt生成专业脚本,借助Sora将文字转化为高质量视频素材,并利用CapCut进行高效剪辑与合成,实现从创意到发布的十倍效率提升,助力个人及团队打造爆款内容。

g8f9d0s1a2的博客 496

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

qq_40073899的博客 561

当前AI的“瓶颈”​

现在的AI是“纸上谈兵”的书呆子,未来的AI要成为“实践出真知”的实干家,而且世界需要允许和鼓励这些实干家们各有追求、相互合作,才能共同进步繁荣。要突破这个瓶颈,AI需要像。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 976

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

山东大学软件学院人工智能导论期末知识点整理

自然界的四大奥秘:智能的发生、物质的本质、宇宙的起源、生命的本质智能:智能是智力与知识的总和。其中,知识是一切智能行为的基础,而智力是获取知识并应用知识求解问题的能力。感知能力:视觉、听觉、触觉、嗅觉等感觉器官感知外部世界记忆与思维能力:记忆与思维是人脑最重要的功能,记忆是存储由感知器官感知到的外部信息以及由思维所产生的知识;思维用于对记忆的信息进行整理。学习能力行为能力(表达能力)人工智能:用人工的方法在机器(计算机)上实现的智能;或者说人们使机器具有类似于人的智能人工智能学科:一门研究如何枯燥智能机器或

m0_74459097的博客 2534

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

解读人工智能、大数据和云计算的关系,大佬们赌AI竟都输了?

导读:人工智能(Artificial Intelligence,AI)、大数据(Big Data)和云计算(Cloud Computing)是当前最受关注的技术,业内常常...

大数据 1116

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

人工智能(AI)的发展历程

综上所述,人类在创造人工智能这一新物种的过程中,必须从伦理道德、法律监管、技术创新、教育和培训等方面进行应对,以确保人工智能的发展符合人类的利益和价值观,为人类社会的发展带来更多的机遇和福祉。十年后的 1966 年,麻省理工学院的约瑟夫・魏泽鲍姆开发了一款名为 ELIZA 的聊天机器人,这款机器人能够与人类进行简单的对话,为以后突破人类与机器之间的沟通障碍迈出了重要一步。人工智能的发展给人类带来了巨大的机遇和挑战,人类在创造这一新物种的过程中,必须采取积极有效的措施进行应对。

juzhi14plus的博客 3201

全面解读人工智能、大数据和云计算的关系

作者 | 冯雷 姚延栋 高小明 杨瑜 来源 | 《Greenplum:从大数据战略到实现》 导读:人工智能(Artificial Intelligence,AI)、大数据(Big Data)和云计算(Cloud Computing)是当前最受关注的技术,业内常常取这三个技术英文名的首字母将其合称为ABC。 最近10年,资本和媒体对这三种技术的热度按时间排序依次为:云计算、大数据和人工智能。事...

CDA数据分析师 1135

AI也是有局限性!看看机器人组装Ikea家具时的表现

在下棋和诊断疾病上,计算机已经证明了自己强过了人类。而现在,新加坡南洋理工大学的一群人工智能的研究人员又成功教会工业机器人组装出了一把IKEA的椅子。这是艾伦扳手(Allen wrench,也叫内六角扳手)和艾伦·图灵(Alan Mathison Turing)的世界第一次联结起来。既然机器已经掌握了消磨周六下午最奇怪的方式之一,那么离AI 崛起并奴役人类在硅矿里劳作还会远吗? 这项研究也凸显出...

weixin_33979363的博客 173

人工智能(第 3 版)第一章课后题

因此,这里存在思维与智能的混淆的问题。专家系统不仅仅是构建该系统的专家的知识的总和,它包含大量领域相关的知识(可以是有关特定问题领域的知识,如医疗诊断;也可以是 人类努力开拓领域的相关知识,如确保核电站安全操作的控制机制),并且允许领域知识分层,还可以发展成为存储了若干专家知识的知识库。人们眼中的ATM只是通过扫描条形码将产品扫描到收银机,即包含知识总和,并没有发展到与智能机器交互的阶段,没有大量领域的相关知识,也没有相关智能决策。因此,随着科技进步,ai在心理方面的研究很可能取得极大的突破,请拭目以待。

a19335898631_的博客 1320

C语言实现各种人工智能算法,象棋人工智能算法的C++实现(一)

点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事前言:自AlphaGo战胜世界著名九段围棋手李世石之后,我就对棋类人工智能产生了极大的兴趣,并想要自己实现象棋的人工智能。然而那个时候我还在读高二,没有这么深厚的代码基础,所以那个时候也就只能想想了。但是现在不一样了,通过学习编程,已经可以让我在棋类人工智能这个领域向前探索了。推荐下小编的C++学习群;513801371,不...

weixin_42398141的博客 2371

漫画人工智能:人工智能简史

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。 来源:大鱼AI ...

简书博客搬家测试账号 1万+
上一篇: 用 C++“硬解析”JPEG:从分段索引到 EXIF/XMP/ICC
下一篇: ZenFlow AI:一个“无广告、免登录、自由度高”的 Todo + 番茄钟 + 生产力分析工具
可能是阿伦
博客等级 码龄7年 1424粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值