Mathematical Analysis of 2048, The Game论文分享

0 摘要

游戏 2048 席卷了互联网,产生了无数的盗版。 世界各地的人们倾注了数百万小时试图创造 2048 棋子。 除了令人上瘾的游戏外,该游戏还提供了探索数学的有趣机会。 本文试图通过数学归纳法、数论、模糊论和拓扑学对博弈进行数学分析,在此过程中也试图找到确保胜利的最优策略。
关键词:数学分析,2048,帕斯卡三角 (Pascals Triangle),优化

1 引言

2048 是由Gabriele Cirulli 开发的滑块益智游戏。 这是一个在 4x4 网格上玩的游戏,棋子编号为 2n2^n2n,其中“n”代表自然数。 游戏的目标是将相同编号的棋子组合在一起,最终形成数字 2048。用户可以在四个基本方向上移动,每次移动后,网格中随机生成一个新的棋子,编号为 2 或 4 概率约为 0.10。 如果至少一个棋子可以滑入一个空白点,或者如果棋子可以在所选方向上组合,则移动是合法的。 当用户没有任何合法移动时,游戏结束。 不禁要问一个问题,既然游戏是基于数学的,是否可以通过应用不同的数学概念来优化移动以提高我们的分数。

2 数学归纳法

在游戏开始时,我们会在随机位置获得两块棋子。 棋子可以用前面讨论的概率编号为 2 或 4。 通过观察,可以看出网格只能包含 2n2^n2n 形式的数字。 我们也可以通过使用数学归纳法在数学上证明这一点。
第一步:一开始给出的棋子都是2,2和4,或者都是4。 总共有 2!2! -1 = 3 例。 这里的数字可以用 2n2^n2n 的形式表示。
第二步:假设经过k步后,网格中的数字可以用 2n2^n2n 的形式表示。
第三步:在第(k+1)步,出现以下情况
I. 我们把棋子滑到一个空的地方,没有棋子相互结合
II. 我们将两个或多个现有的棋子相互组合
III. 案例 1 和 2 的组合
在所有这三种情况下,都会随机生成一个新棋子,编号为 2 或 4,默认情况下可以表示为 2 的幂。

在第一种情况下,除了第 k 步的数字之外,我们只有一个新数字,它都可以用 2 的幂表示。在另一种情况下,由于编号为 2r2^r2r 的棋子将组合成编号为 2r+12^{r+1}2r+1 的棋子, 所有的棋子仍然可以用 2 的幂来表示。

所以我们可以说,在任何时候,网格都只有可以用 2n2^n2n 表示的数字。

3 最大棋子

从前面的讨论中,我们知道所有的棋子都是 2n2^n2n 的形式,所以最大的棋子也将是相同的形式。
让我们假设 2r2^r2rr∈Nr \in NrN 的最大棋子。
要创建此棋子,需要 2 个 2r−12^{r-1}2r1 的棋子,要创建2r−12^{r-1}2r1 的图块,需要 2 个 2r−22^{r-2}2r2 的图块,依此类推。
棋子的数量受网格上的空间限制,即 16 个空间,这意味着 r=16r = 16r=16
因此,如果我们最后得到 2,则 216=655362^{16}=65536216=65536 是最大的棋子。
假设我们很幸运,最后得到编号为 4 的棋子; 2r+12^{r+1}2r+1 将是最大的棋子。
所以 217=1310722^{17}=131072217=131072 将是最大的棋子。

4 最大可能总和 (Sn)

所有的棋子都是 2n2^n2n 的形式。 假设最好的情况是没有两个相同编号的棋子,并且我们在网格中拥有最高编号的棋子,可以很容易地看到它们将形成一个几何级数(GP)。 此外,由于我们正在考虑最佳情况,我们可以将最小的数字设为 4 而不是 2。总和 Sn 将由下式给出:
Sn=22+23+24+………+217=2(217−1)/(2−1)−21=262142−2=262140\begin{aligned} \mathrm{S}_{\mathrm{n}} &=2^{2}+2^{3}+2^{4}+\ldots \ldots \ldots+2^{17} \\ &=2\left(2^{17}-1\right) /(2-1)-2^{1} \\ &=262142-2 \\ &=262140 \end{aligned} Sn=22+23+24++217=2(2171)/(21)21=2621422=262140
如果 最后一块是 2 而不是 4,那么总和将是:
Sn′=21+23+24+………+217=2(217−1)/(2−1)−22=262142−4=262138\begin{aligned} \mathrm{S}_{\mathrm{n'}}{ } &=2^{1}+2^{3}+2^{4}+\ldots \ldots \ldots+2^{17} \\ &=2\left(2^{17}-1\right) /(2-1)-2^{2} \\ &=262142-4 \\ &=262138 \end{aligned} Sn=21+23+24++217=2(2171)/(21)22=2621424=262138
或者我们可以做:
Sn′=262140−2=262138\begin{aligned} \mathrm{S}_{\mathrm{n'}} &=262140-2 \\ &=262138 \end{aligned} Sn=2621402=262138

5 最少获胜回合数 (TminT_{min}Tmin)

通过创建 2048 棋子来赢得游戏(尽管可以选择继续玩,直到没有更多的合法移动)。由于棋子是随机生成的; 2 的概率为 0.9 (P2=0.9P_2 = 0.9P2=0.9) 和 4 的概率为 0.1 (P4=0.1P_4 = 0.1P4=0.1); 我们无法给出 TminT_{min}Tmin 的确切数字,但我们可以给出一个范围。

  1. 假设最好的情况是我们得到的所有棋子都是 4 号,并且我们所做的每一步都会导致 2 个棋子合并为 1 个棋子。
    现在,要制作 2048,我们至少需要 512 个棋子(512×4=2048512 \times 4=2048512×4=2048)。 但是我们从 2 个棋子开始,这意味着我们需要 512-2=510 圈才能获得所有需要的棋子。 我们得到的最后一个棋子必须组合成 8,然后将 8s 组合成 16,将 16s 组合成 32,依此类推,直到我们将 1024s 组合成 2048。
    所以我们得到,
    Tmin⁡=512−2+9=519turns \begin{aligned} \mathrm{T}_{\min } &=512-2+9 \\ &=519 \text { turns } \end{aligned} Tmin=5122+9=519 turns 
    得到所有编号为4的棋子的概率是0.1519=10−5190.1^{519}=10^{-519}0.1519=10519

  2. 考虑一个例子,我们得到所有编号为 2 而不是 4 的棋子。如上所述,我们需要 1024 个棋子来生成 2048,然后将我们得到的最后一个棋子与另一个编号为 2 的棋子组合起来,最终得到 2048。
    同理:
    Tmin⁡=1024−2+10=1032turns \begin{aligned} \mathrm{T}_{\min } &=1024-2+10 \\ &=1032 \text { turns } \end{aligned} Tmin=10242+10=1032 turns 
    得到所有 2 个编号的棋子的概率是:0.91032∼6.0×10−480.9^{1032} \sim 6.0 \times 10^{-48}0.910326.0×1048
    因此,假设我们玩一场完美的游戏,赢得游戏所需的最少回合数在 [519, 1032]。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

maven 公共模块依赖_idea 创建多模块依赖Maven项目

本来网上的教程还算多,但是本着自己有的才是自己的原则,还是自己写一份的好,虽然可能自己也不会真的用得着。1. 创建一个新maven项目2.3. 输入groupid和artifactid,后面步骤直接next,最后finish4.创建好后5. 在主项目名…

安卓手机软件开发_无代码手机app软件开发,让人人都是专业开发工程师

点击上方蓝色字关注我们~近期,谷歌发布了自己的无代码在线app开发平台,这款全新工具旨在让任何一个人都可以轻松进行手机app软件开发。这样的动作无疑指引着安卓软件开发的未来。🙊1无代码开发手机app其实由来已久,业内反复讨论了…

Mastering 2048 With Delayed Temporal Coherence Learning, Multistage Weight Promotion论文分享

0 摘要 2048 是一款引人入胜的单人非确定性视频益智游戏,由于简单的规则和难以掌握的游戏玩法,近年来广受欢迎。由于 2048 可以方便地嵌入到离散状态马尔可夫决策过程框架中,我们将其视为评估强化学习中现有和新方法的测试平台。为了开发一个…

python扫描字符串文本时下线_python:SyntaxError:扫描字符串li时的EOL

python:SyntaxError:扫描字符串li时的EOL我在s1"some very long string............"中有上述错误有谁知道我做错了什么?11个解决方案165 votes你没有在行结束前放置"""。如果要执行此操作,请使用"…

AD19 add pins to nets错误_《英雄联盟手游》错误代码问题大全 LOL的错误代码都是什么意思...

英雄联盟手游上线引起广泛的关注,但是有些玩家在进入游戏的时候出现了代码报错的问题,那么针对这些不同的错误代码要如何解决呢?100036 请求超时,网络不好或者加速器速度不够,换个好点的网络或者加速器 10075 100036 账号没有在p…

Linux编程基础 1:初识Linux

0 学分、课时、成绩组成 本课程3学分(包含上机项目) 理论课时24,上机课时24 考核方式介绍及各项所占比重 1 知识准备 计算机网络基础:OSI模型,TCP/IP协议相关知识 C语言与数据结构相关的知识:指针&…

ssh重装ubuntu_Ubuntu环境下SSH的安装及使用详解

SSH是指Secure Shell,是一种安全的传输协议,Ubuntu客户端可以通过SSH访问远程服务器 。SSH的简介和工作机制SSH简介传统的网络服务程序,如:ftp、POP和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据&#xff0…

飞秋本机如何与虚拟机传送文件_某度扩容之虚拟机

本文不推荐大家扩容,这个是一个交流帖子,禁止用于商用本文不适合小白看,需要一定基础5月份之前的虚拟机扩容:需要3个虚拟机:1个保存虚拟机2个删除虚拟机启动顺序:保存虚拟机—>删除虚拟机1——>删除虚…

Linux编程基础 2.1:Linux文件系统与操作

1 文件I/O open() read() write() lseek() close() 1.1 open函数 #include <fcntl.h> int open(const char *pathname, int flags[, mode_t mode);open函数参数说明&#xff1a; pathname&#xff1a;待打开文件的文件路径名&#xff1b;flags&#xff1a;访问模式&a…

64位java_树莓派3B+安装64位ubuntu系统和docker工具

想在树莓派3B上安装一些64位应用(例如64位JDK)&#xff0c;因此首先要安装64位的操作系统&#xff0c;今天咱们就一起来实战&#xff1b;

echars显示折点数据_Echarts 折线图一个点显示多个实时数据tooltip

在项目开发需要中。有个需求就是在折线图的每一个折点上悬浮窗要显示几条不同的数据而且是跟x轴一样每个点不一样。。研究了一下。。有点坑。其实很简单&#xff0c;正常的思路来想 要想在悬浮窗显示数据 一般都会有线 才会有实时数据。。这里提一下series&#xff1a;data这个…

主成分分析法_探索主成分分析法

主成分分析法 (Principal Component Analysis, PCA) 是一种数据压缩法&#xff0c;可以从数据中提取重要的部分并排除不重要的部分&#xff0c;是奇异值分解 (Singular Value Decomposition, SVD) 的重要应用。SVD 是线性代数的一个亮点。 是一个 的列阵&#xff0c;矩阵秩 &am…

android 插入耳机 使用自身mic录音_这样选用麦克风,耳机降噪效果会更好

降噪耳机已经越来越普及&#xff0c;降噪耳机要想实现好的降噪效果面临很多挑战&#xff0c;其中如何正确选用麦克风又是一项具有重要影响的基础工作。本文目的旨在帮助读者正确选用麦克风以实现更好的耳机降噪性能&#xff0c;当然也可以帮助您更好地了解降噪耳机原理与实现方…

Linux编程基础 2.2:文件操作

3 文件操作 stat() access() chmod() truncate() link() 3.1 stat函数 #include <sys/stat.h> int stat(const char *path, struct stat *buf);功能&#xff1a;用于获取文件的属性&#xff1b; 参数说明&#xff1a; path&#xff1a;文件路径&#xff1b;buf&#…

心电图 python_ST段凹面型向上抬高,一定是早期复极?心电图读图第201期

病 历 回 顾一名48岁男性患者&#xff0c;有20年吸烟史。打壁球时出现胸骨后闷痛。他被迫中止并休息。其胸痛仍未缓解&#xff0c;同伴把他送至附近急诊室并做了下列心电图。问题&#xff1a;心电图有何显示&#xff1f;可能的诊断是什么&#xff1f;可能受累的冠脉&#xff1f…

封条格式用word怎么打_标书密封条格式全word.doc

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------(投标人公章) (法人名章)密 封 条年 月 日封(法人名章) (投标人公章)-------------------…

Linux编程基础 3.1:进程控制

1 进程相关概念 1.1 进程和程序 程序&#xff1a;编译好的二进制文件&#xff0c;在磁盘上&#xff0c;不占用系统资源&#xff08;cpu、内存、打开的文件、设备、锁…&#xff09;进程&#xff1a;一个抽象的概念&#xff0c;与操作系统原理联系紧密。进程是活跃的程序&…

nlp mrc的损失是什么_田渊栋从数学上证明ICLR最佳论文“彩票假设”,强化学习和NLP也适用...

新智元报道 来源&#xff1a;Facebook AI作者&#xff1a;Ari Morcos、田渊栋 编辑&#xff1a;肖琴【新智元导读】ICLR 2019最佳论文提出的“彩票假设”能够将神经网络缩小10-100倍&#xff0c;而不损失性能。Facebook田渊栋团队的最新研究发现了第一个确定的证据&#xff0…

Linux编程基础 3.2:exec函数族

2 exec函数族 使用fork()函数创建的子进程&#xff0c;其中包含的程序代码完全相同&#xff0c;只能根据fork()函数的返回值&#xff0c;执行不同的代码分支。 由exec函数族中的函数&#xff0c;则可以根据指定的文件名或路径&#xff0c;找到可执行文件。 fork&#xff1a;子…

corel产品注册样机安装代码_为你的产品创建一个高逼格的宣传片

大家好&#xff0c;我是独立开发者Larry&#xff5e;当我们的产品或功能发布的时候&#xff0c;一定想要一套高大上的宣传图或宣传视频&#xff0c;不幸的是&#xff0c;由于预算限制、时间排期以及技术门槛等一系列原因&#xff0c;我们不得不降低要求…今天就给大家推荐一个在…