这里写目录标题

  • perfect-information game
    • 从博弈树得到收益表
    • subgame
    • backward induction 反向推导
    • 一个值得思考的例子:
  • 另一个例子
  • umperfect information extensive
  • 混合策略和行为策略(mexed and behavioral strategies)
  • 不完美信息博弈的求解

博弈树用于动态博弈(不是同时决定)。

博弈按照博弈的顺序和信息的情况分为四大类:
   1、完全信息静态博弈(最简单的,表格就行)
   2、完全信息动态博弈(又分为完全且完美信息动态博弈和完全但非完美信息动态博弈两小类)
   3、非完全信息静态博弈
   4、非完全信息动态博弈

perfect-information game

(N,A,H,Z,χ,ρ,σ,u)(N,~A, ~H, ~Z,~\chi, ~\rho, ~\sigma, ~u )(N, A, H, Z, χ, ρ, σ, u)

N:人数
A:每个人的行动集合
Z:叶子节点。
H:博弈树中除了叶子节点的其余节点集合。
χ~\chi χ:行动函数. H->2A2^A2A, 返回可能的行动集合
ρ\rhoρ:玩家函数.H->N, h点是谁行动
σ\sigmaσ: HxA -> H + Z,在h点使用a策略,会得到下一个节点,下一个点可能是非叶子节点或叶子节点。z
u: 效用函数。z->R

例子:

玩家1决定怎么分2块钱,玩家2决定是否接受。

玩家1有3个纯策略:2-0 1-1 0-2
玩家2有8个纯策略:nnn,nny,nyn,nyy,ynn,yny,yyn,yyy.(nny表示玩家2拒绝2-0 1-1的分法,只接受0-2的分法)

怎么数纯策略数量:每个节点的行动集做叉积。
例如上面的例子:{ny}x{ny}x{ny} = {nnn,nny,nyn,nyy,ynn,yny,yyn,yyy}


上面这个例子中,玩家1的策略也是4个:AG, AH, BG, BH(虽然选了A就不可能来到G/H, 即AG AH都是A,但还是算两个)

混合策略 最优应对 纳什均衡等概念都可以类比过来。

从博弈树得到收益表

注意:
变成表后会增加重复数据,表变大z。
从表到树的逆变换不一定可行。事实上这种变换本身就不能进行,比如硬币游戏本来就是双方同时出,如果改成博弈树,就有一个人先出,显然改不了。

定理:每个perfect-information game 都有一个纯策略纳什均衡。

怎么找纳什均衡:直接通过树有一定困难。我们可以通过表,利用前面的知识来求(如果这个格子第第一个数是列里最大的,第二个数是行里最大的)。

subgame

上面得到了3个纳什均衡,但是有的和直觉相违背。比如BH、CE。因为玩家1第二次不可能选H而不选G。

为什么会出现这种情况:玩家1威胁玩家2,如果你选F我就选H,因此玩家2只能选E。但是这个威胁真的有效吗。

定义:
G在点h的子博弈:G在点h的子博弈
G的子博弈集合:在所有点的子博弈的集合。
子博弈完美均衡:对于博弈G的任何子博弈G’,结果s都是G’的纳什均衡,那么s是G的子博弈完美均衡。

因此博弈G可能有很多均衡,但是只有一部分是子博弈完美均衡,这些均衡更加符合常理。


AG CF是一个子博弈完美均衡,因为考虑上面的3个子博弈,得到的结果都是红色的线,而BH、CE不是子博弈完美。

backward induction 反向推导

从子博弈一个一个网上求。

一个用递归来求子博弈完美均衡:

class H:def __init__(self,name,chooseBy,actionList=[],utility=[]) -> None:self.name=nameself.actionList =actionListself.utility=utilityself.chooseBy=chooseBydef backwordInduction(h:H):if len(h.actionList)==0:return h.utilitymaxUtility=[-10000,-10000]maxNode =Nonefor a in h.actionList:temp = backwordInduction(a)if maxUtility[h.chooseBy-1]<temp[h.chooseBy-1]:maxUtility=tempmaxNode=ah.utility=maxUtilitypath.append(maxNode)return maxUtilitynodeG = H("G",2,[],[2,10])
nodeH = H("H",2,[],[1,0])nodeC = H("C",1,[],[3,8])
nodeD = H("D",1,[],[8,3])
nodeE = H("E",1,[],[5,5])
nodeF = H("F",1,[nodeG,nodeH])nodeA = H("A",2,[nodeC,nodeD])
nodeB = H("B",2,[nodeE,nodeF])nodeRoot = H("Root",1,[nodeA,nodeB])path=[]
print(backwordInduction(nodeRoot))
print([i.name for i in path])
print([(i.name,i.utility) for i in path])

输出:

[3, 8]
['C', 'G', 'F', 'A']
[('C', [3, 8]), ('G', [2, 10]), ('F', [2, 10]), ('A', [3, 8])]

这个方法有优化的地方:α−β\alpha-\betaα−β剪枝,可以让一些点不遍历。这里不介绍了。

一个值得思考的例子:


如果用程序来求,可以得到唯一的子博弈完美均衡(1,0),但这一结果是严格劣于其他多个解的。

如果玩家1选A,玩家2选什么?
如果理性分析,应该选D,但是玩家1选了A,下一次是不是还会选A?所以值得思考的是:如果对方没有按套路出牌,我应该仍然理性吗。

另一个例子

玩家1决定怎么分10金币,玩家2决定是否接受。不接受就都得不到。

理论上的纳什解是玩家1分1金币给2,2接受。或者玩家1全给自己,2接受,或者全给自己,2不接受。

但是实际生活中的试验发现,玩家1往往会分4、5个给2,而玩家2也往往表示:如果给我小于4/5,我不会接受。

umperfect information extensive

象棋这种游戏知道对方怎么走,是完美博弈。而扑克比大小这种游戏,不知道对方大不大,只知道他加码了,我应该加码吗?这就是非完美博弈。

和完美信息博弈相比,多了一个III。
I={I1,I2,...In}I=\{I_1,I_2,...I_n\}I={I1​,I2​,...In​} 是所有人的XX集合
Ii={Ii1,Ii2,...Iiki}I_i=\{I_{i1},I_{i2},...I_{iki}\}Ii​={Ii1​,Ii2​,...Iiki​} 是个体i的等价类集合(set of equivalence classes):XX集合
Ii1={ha,hb...}I_{i1}=\{h_a,h_b...\}Ii1​={ha​,hb​...}是equivalence class。包括一个或多个选择点。
同一个equivalence class中的节点h,h’拥有相同的χ~\chi χ和ρ\rhoρ,即这两个点都属于同一个人来决策,而且两个节点做出的决策集合相同。 玩家在这两个点时会分不清自己在那个点。(例如玩家只知道自己在Ii1I_{i1}Ii1​,但是不知道是在ha还是hb(除非里面只有ha一个元素))

混合策略和行为策略(mexed and behavioral strategies)

混合策略:纯策略的混合。例如下图中,(A,G)是1的一个纯策略,(B,H)也是。那么(0.6(A,G),0.4(B,H))就是混合策略。
行为策略:每次决策时都有一个概率。例如这是一个行为策略:0.5A+0.3G。表示第一出0.5选A(0.5B),第二处0.3G(0.7H)

在完美信息博弈中,两者是可以互换的。即混合策略可以化成行为策略,反过来也可以。事实上在不完美信息博弈中也成立,只要玩家具有完美记忆(知道自己访问过的信息集(I),记得自己的行动)

下面是一个不具有完美信息博弈的例子:

纯策略:玩家1:(L,R)两个,玩家2:(U,D)两个
混合策略纳什均衡:
因为对玩家2,D比U好,对玩家1RU比LU好,所以RD是纳什均衡。
行为策略:

不完美信息博弈的求解

个体不知道自己在哪个点。因此不能用递归反推,没有合适的子博弈。求解困难


一个企业竞争的例子。环境决定公司1强(S)还是弱(W),公司1知道自己是S还是W后进行决策进入市场(E)还是不进入(N),公司2不知道公司1是强是弱,当1进入,2要决定自己抵制(F)还是随和(A)

这个博弈只有一个子博弈,就是它本身,因为上面有个虚线连起来了。

因此子博弈完美均衡就是整个博弈的纳什均衡。

纳什均衡:
如果2声称自己总会抵制(F),就会得到纳什均衡(NN,FF)。
如果这个声称不可信,2实际上总会妥协(A),因为这对它有利,而1采取S则E,W则N的策略。这也是一个纳什均衡。
然后还有一些混合纳什均衡。

第二个纳什均衡更加可信

解决这种问题的两个方法:Sequential Equilibrium, Perfect Bayesian Equilibrium

第四章 博弈树game tree相关推荐

  1. 【.NET Core项目实战-统一认证平台】第四章 网关篇-数据库存储配置(2)

    [.NET Core项目实战-统一认证平台]第四章 网关篇-数据库存储配置(2) 原文:[.NET Core项目实战-统一认证平台]第四章 网关篇-数据库存储配置(2) [.NET Core项目实战- ...

  2. 《Go语言圣经》学习笔记 第四章 复合数据类型

    <Go语言圣经>学习笔记 第四章 复合数据类型 目录 数组 Slice Map 结构体 JSON 文本和HTML模板 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. ...

  3. Gradle 1.12用户指南翻译——第五十四章. 构建原生二进制文件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  4. c command语言学例子,语言学第四章

    <语言学第四章>由会员分享,可在线阅读,更多相关<语言学第四章(3页珍藏版)>请在人人文库网上搜索. 1.Chapter 4:SyntaxI. Decide whether e ...

  5. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  6. 【Java数据结构与算法】第十四章 红黑树

    第十四章 红黑树 文章目录 第十四章 红黑树 一.红黑树 1.介绍 2.插入结点 3.删除结点 4.与平衡二叉树的对比 一.红黑树 1.介绍 红黑树(Red Black Tree)是平衡二叉树的其中一 ...

  7. AcWing提高算法课Level-3 第四章 高级数据结构

    AcWing提高算法课Level-3 第四章 高级数据结构 并查集 AcWing 1250. 格子游戏1167人打卡 AcWing 1252. 搭配购买1064人打卡 AcWing 237. 程序自动 ...

  8. 第十一、十二、十三、十四章 网络配置管理、归档和远程复制同步文件、软件包管理、创建访问linux文件系统

    第十一章 网络配置管理 网络地址获取方式: 1)DHCP自动获取 2)手动配置 1.网卡配置文件: /etc/sysconfig/network-scripts/ [root@server0 Desk ...

  9. Elixir元编程-第四章 如何测试宏

    Elixir元编程-第四章 如何测试宏 任何设计良好的程序库背后必定有套完善的测试程序.你已经编写扩充了一些语言特性,也许也编写了一些重要的应用程序.你也见识过了通过宏来编写友好的测试框架.这里还有些 ...

最新文章

  1. strcpy_s与strcpy的比較
  2. springboot+mybatis+shiro——shiro简介
  3. Git的安装和使用(Linux)【转】
  4. hybris安装install.sh提示找不到JAVA_HOME环境变量的问题
  5. Windows xp 如何查看SID?
  6. dts数据库迁移工具_传统数据库迁移上云利器-ADAM
  7. 华为P50渲染图再曝光:居中打孔直屏+徕卡四摄
  8. iOS应用内付费详解
  9. 每日一技|活锁,也许你需要了解一下
  10. android iphone字体,网站中的字体设置--兼容苹果、pc、安卓系统的字体设置
  11. 高等代数——大学高等代数课程创新教材(丘维声)——3.1笔记+习题
  12. java p2p编程_JXTA-JAVA P2P网络编程技术(入门篇)
  13. 计算机怎么改鼠标标志,win10系统电脑的鼠标图标怎么修改
  14. 校园云盘-育网云盘本地部署
  15. 驱动精灵显示服务器去火星了,“用驱动精灵发现不了声卡,设备管理器上面正常”的解决方案...
  16. Spring系列04德鲁伊连接池配置
  17. SAP R/3 财务基本概念及集成性浅释 —— 主数据篇
  18. 【老生谈算法】matlab实现轮盘赌算法-Roulette——轮盘赌算法
  19. C++常见的SML用法 ACM 必备
  20. spring诸如方式_回滚诸如在家工作之类的程序时,请谨慎操作

热门文章

  1. 7-47 打印选课学生名单 (25 分)
  2. c语言动态生成二维数组,C语言 动态创建二维数组
  3. VeloCloud exec:网络中立对SD-WAN影响有限
  4. 实在智能RPA亮相2023全球人工智能技术博览会,“能对话的数字员工”引领智能自动化新篇章
  5. 移动端js实现点击复制到剪贴板,【真正】兼容所有浏览器uc、qq、微信、手机自带等浏览器...
  6. html 设置视频宽100,前端设置宽高时height: 100% 和 100vh 的区别
  7. android开发中,手把手教你root Android系统
  8. 旺季站外引流干货 || 如何做好在YouTube上的KOL营销?
  9. 在线HTTP请求头响应头转JSON工具
  10. Win10连接打印机提示0x00004005错误的解决教程