首页 > 其他分享 >【笔记】博弈论

【笔记】博弈论

时间:2023-11-06 22:35:32浏览次数:36  
标签:必败 text 博弈论 笔记 必胜 2.2 SG

【笔记】博弈论

0 基本概念 & 性质

0.1 博弈论


1 SG 函数

ps. 通过 SG 函数来理解三个基本模型,也是不错的选择。

1.2 定义

\(\text{SG}(x)=\text{mex}\{\text{SG}(y_i)\}\)(其中 \(y_i\) 为 \(x\) 的后继状态)

1.3 SG 定理

由 \(n\) 个博弈图组成的游戏,设起点(即每个连通分量内入读为 0 的点)分别为 \(s_{1}, s_{2}, \dots, s_{n}\)。

当 \(\text{SG}(s_{1})\oplus\text{SG}(s_{2})\oplus\cdots\oplus\text{SG}(s_{n})\neq 0\) 时,先手必胜;反之,先手必败。

1.3.1 证明


2 三个基本模型

2.2 布什博弈

2.2.1 概述

2.2.2 结论

若 \(m+1\nmid n\),先手必胜;反之,先手必败。

2.2.3 证明

构建决策树


3 例题

博弈论1

博弈论2


3. 取石子

Key:

本质上是求 SG 值,但是由于最终不许要用 SG 定理,于是 SG 值可以就为 0/1 表示是否先手必胜

令 \(sum=\sum a_i\)

先单独考虑操作 1:若 sum 为奇,必胜;为偶,必败。

可以发现操作 2 其实相当于某人跳过了一次操作,而不改变。

性质 1: 操作 2 就是用来浪费时间的,所以如果可以做就尽量做 。

后继状态:(当前为 \((x,y)\) 表示:全是 1 的堆数 | 其余最多操作次数 = 大于 1 的堆的总和 + 堆数 - 1,特别地,空集 = 0)

  1. 取走 1 个

    1. 取 x:\((x-1,y)\)

    2. 取 y:\((x,y-1)\)

      ps. y 中不到最后只剩一堆的时候,不会出现堆的个数变为 1 的(性质 1),所以可以直接减。

  2. 合并

    1. 合两个 x:\((x-2,y+2+[y\neq 0])\)

      ps. 特判 y 原先为空集。

    2. 合两个 y:\((x,y-1)\)

    3. 合一个 x 和 一个 y:\((x-1,y+1)\)

注意判断,从 y 转为 x 的情况。


3. 小约翰的游戏

反 Nim 问题。

讨论:

  1. 全为 1:n 为偶,必胜;为奇,必败。

  2. 有一个不为 1:必胜。(本质上可以归类为 3)

    先手一定可以通过一次操作,将状态转化为偶数个 1。

  3. 有多个不为 1:转化为了普通 Nim 问题

    先手想要把情况变为 2,即要把不为 1 的堆拿成只剩一堆,然后让自己处理,于是就转化为了普通 Nim 问题。


4 Trick

  1. 有种奇怪的感觉:最后只剩 1 的时候都比较关键。

标签:必败,text,博弈论,笔记,必胜,2.2,SG
From: https://www.cnblogs.com/cqbz-dxm/p/17813917.html

相关文章

  • 多线程学习笔记
    **Process与Thread**说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。通常在一个进程中可以包含若干个**线程**,当然一个进程中至少有一个线程,不......
  • 学习笔记9
    一、学习任务自学教材第6章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“......
  • 单调队列学习笔记
    Menu单调队列(MonotonicQueue)简介代码模板例题单调栈(MonotonicStack)简介代码模板例题......
  • 2023_11_06_Java_EE_DAY_01_笔记
    2023_11_06_Java_EE_DAY_01_笔记知识点回顾:JavaseMysqlHtml+css+javascriptVue扩展:ElementPlus作业讲解与分析:知识点讲解:1. 主要核心内容(服务器端开发)a) Javaee/Spring+springMVC+MyBatis/MyBatisPlus/SpringBoot等b) 全栈工程师2. 工具:a) Idea+Mavenb) 等3. ......
  • [学习笔记]虚树
    虚树虚树可以应用于树形\(DP\)的加速。当题目规定查询点集的大小和\(\le10^5\)时可以用虚树解决。虚树的原理是在原树上重新建一棵树,使得树上只包含要询问的点和它们的\(lca\)。普通树形\(DP\)的时间复杂度为\(O(n^2)\)。最坏形成一棵二叉树,点集大小为\(n\),总点数为......
  • 【Redis使用手册】一年多来redis使用markdow笔记总结,第(2)篇:Redis命令操作详解
    Redis是一个高性能的key-value数据库。本文会让你知道:什么是nosql、Redis的特点、如何修改常用Redis配置、写出Redis中string类型数据的增删改查操作命令、写出Redis中hash类型数据的增删改查相关命令、说出Redis中list保存的数据类型、使用StrictRedis对象对string类型数据......
  • ArSSR笔记
    20231105文章连接:https://arxiv.org/abs/2110.144761.提出背景首先是MRI成像上,会因为多种情况导致最后的成像效果不好,想要质量高的图像多徐时间又很长,现在采用超分的图像后处理方法来对图像进行处理以实现短时间获得高质量图像的效果。但是现在的图像超分方法中的SISR方法实现......
  • 算法--笔记--单调栈
    单调栈是为了解决两层foru循环O(n^2)变为O(n)的问题思路是:维持一个单调栈.依次进入单调栈,并淘汰对后续没有帮助的对象当一个对象从栈里弹出的时候,结算当前对象参与的答案。如何判断单调栈是大压小还是小压大呢?左侧的要小的,就是大压小左侧的要大的,就是小压大......
  • openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述
    openGauss学习笔记-116openGauss数据库管理-设置数据库审计-审计概述116.1背景信息数据库安全对数据库系统来说至关重要。openGauss将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内......
  • 代码整洁之道笔记1
    一.整洁代码整洁代码的一些特征代码逻辑应该直接了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来;整洁的代码只做好一件事;有单元测试和验收测试;有意义的命名;尽量“少”;两条重要原......