浅谈算法——博弈论

注:下列游戏都建立在双方都有最优策略的情况下,若未加以说明,则每人每次至少取一个石子。

例1:取石子游戏之一

有两个游戏者:A和B。有n颗石子。
约定:两人轮流取走石子,每次可取1、2或3颗。A先取,取走最后一颗石子的人获胜。
问题:A有没有必胜的策略?

分析:这是小学必备奥数题之一,我们可以很容易的知道,当n为0,4,8,12……时,A必定会输,因为不论A取多少,B只要和A共同取走4即可;当n不为0,4,8,12……时,A只需要将n取成4的倍数,这样就变成了B先取,B一定会输,所以A一定会赢。

经过我们的分析发现,对这个游戏而言,0,4,8,12……这些状态是对于先手的必败状态,而其他状态是对于先手的必胜状态,因此,我们现在介绍一下有关博弈的一些名词和概念

1、平等组合游戏

  • 两人游戏。
  • 两人轮流走步。
  • 有一个状态集,而且通常是有限的。
  • 有一个终止状态,到达终止状态后游戏结束。
  • 游戏可以在有限的步数内结束。
  • 规定好了哪些状态转移是合法的。
  • 所有规定对于两人是一样的。

因此我们的例1提到的游戏即为一个平等组合游戏,但是我们生活中常见的棋类游戏,如象棋、围棋等,均不属于平等组合游戏,因为双方可以移动的棋子不同,不满足最后一个条件;而我们后续提到的游戏,以及博弈中的其他游戏,基本属于平等组合游戏

2、N状态(必胜状态),P状态(必败状态)

像例1的分析一样,0,4,8,12……等状态就是对于先手的P状态(必败状态),其他的则是对于先手的N状态(必胜状态)。

那么我们定义两个状态之间的转换:

  • 所有的终止状态都为P状态
  • 对于任意的N状态,存在至少一条路径可以转移到P状态
  • 对于任意的P状态,只能转移到N状态

证明过于简单,这里不再赘述,我们只需要明白一点,每个人都会选择最策略即可。

当然这里所说的都是最后走步的人获胜的游戏,至于那些走到最后失败的游戏,我们在最后做了一个简单的讲解(Anti Nim)。

例2:取石子游戏之二

将例1的游戏扩展一下,我们定义一个集合S=p1,p2,...,pk(k∈Z∗)S=p1,p2,...,pk(k∈Z∗)S={p1,p2,...,pk}(k∈Z∗)S={p1,p2,...,pk}(k∈Z∗)S={p1,p2,...,pk}(k∈Z∗) S=\{{p_{1},p_{2},...,p_{k}}\}(k \in Z^*)S=p1,p2,...,pk(kZ)S=p1,p2,...,pk(kZ)S={p1,p2,...,pk}(kZ)a=ak,b>bk,那么,取走

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

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

相关文章

linux系统管理学习笔记之八---进程与作业的管理

linux系统管理学习笔记之八---进程与作业的管理 2010-01-05 13:00:42标签:linux 进程    [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。ht…

C++中的srand(time(null))利用时间设置随机种子产生随机数

首先需要声明的是,计算机不会产生绝对随机的随机数,计算机只能产生“伪随机数”。其实绝对随机的随机数只是一种理想的随机数,即使计算机怎样发展,它也不会产生一串绝对随机的随机数。计算机只能生成相对的随机数,即伪…

srand(设置随机数种子)

srand&#xff08;设置随机数种子&#xff09; 相关函数rand&#xff0c;random srandom 表头文件#include<stdlib.h> 定义函数void srand (unsigned int seed); 函数说明srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数&#xff0c;通常可以利用g…

Exchange 2003升级至Exchange 2007

环境: 三台机器:DC Exchange2003 Exchange2007 计算机名:DC MAIL NEWMAIL 前提条件: 1.Exchange组织设置为纯模式。 2.Exchange 2003安装SP2 3.拥有Schema Master角色的DC及所有GC运行在Windows 2003 SP1或更高以上 4.AD域提升到最高 不被Exchange 2007支持的组件有: Nov…

蓝桥杯 标题:纵横火柴旗子

【编程题】这是一个纵横火柴棒游戏。如图[1.jpg]&#xff0c;在一个3x4的方格中&#xff0c;游戏的双方轮流放置火柴棒。其规则是&#xff1a;1. 不能放置在已经放置火柴棒的地方&#xff08;即只能在空格中放置&#xff09;。2. 火柴棒的方向只能是垂直或水平放置。3. 火柴棒不…

易语言源代码毁来者来了!!

2009年12月7号16:34分&#xff0c;恐怖现象在次出现了&#xff01; 在编译易程序时&#xff0c;突然提示&#xff0c;某某模块找不到了&#xff0c;我跑到软件目录下一看&#xff0c;妈啊不得了&#xff0c;目录中一百多个文件能删除的全部都被删除了&#xff0c;只剩余几个残破…

矩阵连乘 动态规划 详解

矩阵连乘问题----动态规划(转载)&#xff1a; 给定n个矩阵&#xff5b;A1,A2,…,An&#xff5d;&#xff0c;其中Ai与Ai1是可乘的&#xff0c;i1&#xff0c;2…&#xff0c;n-1。如何确定计算矩阵连乘积的计算次序&#xff0c;使得依此次序计算矩阵连乘积需要的数乘次数最少。…

网上威客的猫腻

近期在威客网上转了转 在国内的几大威客&#xff08;任务中国 taskcn,项目交易网sxsoft&#xff09;等上看了看 发现那竞标人真是多啊 经过一两次尝试&#xff08;想弄点小零花钱嘛&#xff09; 发现其中还真有不少猫腻 这里重灾区就是项目交易网 www.sxsoft.com 该网站是北京一…

php中mysql_connect与mysql_pconnect的区别

前阵子去面试被问到了mysql_connect跟mysql_pconnect的区别, 很不幸本人只答出一条, 似乎还没被认可~回来翻了下php手册记录之.简单的来说mysql_pconnect是用来在php与mysql间建立一条持续连接, 一般php的执行模式是脚本开始执行时初始化所有资源, 脚本运行结束后释放所有资源.…

软件测试-白盒测试(六种覆盖准则)

白盒测试过程中&#xff1a; 六种覆盖方法中&#xff1a;覆盖强度由弱到强的顺序依次是&#xff1a; 语句覆盖判定逻辑覆盖条件逻辑覆盖‘判断逻辑条件覆盖条件组合覆盖路径覆盖 举例&#xff1a; if(a&&b) {cab; } else {ca-b; }12345678 1.语句覆盖&#xff1a;…

Linux 的mv命令

命令格式:mv a b 总结起来有以下几种情况: a是文件名,b不存在 a改名为b。 a是文件名,b是文件名 a改名为b,原b被覆盖。 a是文件名,b是目录名,b下没有名为a的文件或目录 a移动到b目录下。 a是文件名,b是目录名,b下没有…

白盒测试中的六种覆盖方法及案例分析

语句覆盖是指选择足够的测试用例&#xff0c;使得运行这些测试用例时&#xff0c;被测程序的每一个语句至少执行一次&#xff0c;其覆盖标准无法发现判定中逻辑运算的错误&#xff1b;判定覆盖<又叫分支覆盖率>是指选择足够的测试用例&#xff0c;使得运行这些测试用例时…

回文数的C语言表述

2019独角兽企业重金招聘Python工程师标准>>> 现在的程序针对范围是0开始。直到溢出 #include #includemain(){ int i; /*本人的电脑用long和int一样*/for(i0;i<500;i){ if(svalue(i)) printf("%3d,",i); }getch();} int sv…

别人的爬虫在干啥

古人云博采众长&#xff0c;我们来看看其他人的爬虫是怎么学和用的&#xff1a; 爬虫文章 in 简书程序员专题&#xff1a; like:128 - Python 爬取落网音乐 like:127 - 【图文详解】python爬虫实战——5分钟做个图片自动下载器like:97 - 用Python写一个简单的微博爬虫like:87 …

windowsXP/7下消除快捷键箭头的方法

1.修改注册表。&#xff08;1&#xff09;启动注册表编辑器&#xff1a;点击 开始—运行里面输入“regedit”&#xff08;2&#xff09;然后依次展开如下分支&#xff1a;“HKEY_CLASSES_ROOT\lnkfile”&#xff1b;删除“lnkfile”子项中的“IsShortcut”字符串值项注意&#…

LVM( Logical Volume Manager )配置案例(on RHEL4)

LVM( Logical Volume Manager )配置案例(on RHEL4) 一 LVM配置步骤 1.准备一个分区 fdisk /dev/hda (或/dev/sda) 本案例中创建的分区为/dev/hda15 2.创建PV pvcreate /dev/hda15 如果有多少分区/dev/hda15,/dev/hda16&#xff0c;/dev/hda17,则可以 pvcreae /dev/hda1[5-7] 3.…

网络地址和广播地址

1.总述 IP地址使用32位二进数表示&#xff0c;每一个主机或路由器的接口都有全局唯一的IP地址&#xff08;NAT是个例外&#xff09;&#xff0c;它由网络号(NetID)和主机号(HostID)组成&#xff0c;它可以分为五类&#xff0c;如下&#xff1a; 2.地址划分 1&#xff09;A类地…

数据库 连接池、缓冲池(定义、原理)

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接&#xff0c;当需要建立数据库连接时&#xff0c;只需要从缓冲池中取出一个了&#xff0c;使用完毕后再放回去。我们可以通过设定连接池最大数来防止系统无尽的与数据库连接。更为…

电子商务基础:中小企业建站方案和资源

目前国内的中小企业数量已经有几千万家&#xff0c;但信息化建设却并 不理想&#xff0c;拥有网站的只有不超过两百万家&#xff0c;数以千万计的中小企业存在电子商务需求&#xff0c;却没有自己独立的网站。现在&#xff0c;越来越多的企业意识到通过建立网站开展电子 商务的…

活动安排问题的 动态规划和贪心算法

这篇文章主要用来记录我对《算法导论》 贪心算法一章中的“活动选择问题”的动态规划求解和贪心算法求解 的思路和理解。 主要涉及到以下几个方面的内容&#xff1a; ①什么是活动选择问题—粗略提下&#xff0c;详细请参考《算法导论》 ②活动选择问题的DP(Dynamic program…