我们从2000年前古巴比伦犹太法典《塔木德》(Talmud) 中描述的一个案例为出发点, 介绍一种资源分配的策略. 从合作博弈论的角度来理解, 这种分配策略是Nucleolus分配. 值得一提的是, 我们已经在供应链相关的多个业务场景中使用该资源分配方案.
注意: 本文绝大部分内容参考了Robert J. Aumann和Michael Maschler 1.

1. 争大衣问题

《塔木德》2源于公元前2世纪至公元5世纪间,记录了犹太教的律法, 条例和传统. 其内容分三部分, 分别是密西拿(Mishnah) – 口传律法, 革马拉(Gemara) – 口传律法注释, 米德拉什(Midrash) – 圣经注释.

密西拿中描述了如下的案例:

争大衣(The Contested Garment)
两个人共同拥有一件大衣. 第一个人说大衣完全属于他; 第二个人说大衣的一半属于自己.
那么应该给第一个人3/4, 另一个人1/4.

如果按比例分配, 应该给第一个人2/3, 另一个人1/3. 那么争大衣问题背后的分配逻辑是什么? 为方面描述, 我们引入如下的记号:

  • EEE – 总资产
  • did_idi​ – 第iii个人声明的资产, i=1,2i=1, 2i=1,2
  • xix_ixi​ – 给第iii个人实际分配的资产, i=1,2i=1, 2i=1,2

它的分配思想是: 没有争议的给对方, 有争议的部分平均分.

记θ+=max⁡(θ,0)\theta_+ = \max(\theta, 0)θ+​=max(θ,0). 注意到(E−d1)+(E-d_1)_+(E−d1​)+​是第一个人对第二个人无争议的部分; (E−d2)+(E-d_2)_+(E−d2​)+​是第二个人对第一个人无争议的部分. 因此, 双方有争议的部分为
E−(E−d1)+−(E−d2)+.E - (E-d_1)_+ - (E-d_2)_+.E−(E−d1​)+​−(E−d2​)+​.

我们有

CG原则(Contested Garment Principle)
x1=E−(E−d1)+−(E−d2)+2+(E−d2)+x2=E−(E−d1)+−(E−d2)+2+(E−d1)+\begin{aligned} & x_1 = \frac{E-(E-d_1)_+ - (E-d_2)_+}{2} + (E-d_2)_+\\ & x_2 = \frac{E-(E-d_1)_+ - (E-d_2)_+}{2} + (E-d_1)_+\\ \end{aligned}​x1​=2E−(E−d1​)+​−(E−d2​)+​​+(E−d2​)+​x2​=2E−(E−d1​)+​−(E−d2​)+​​+(E−d1​)+​​

2. 破产问题

如何把争大衣的分配策略扩展到任意多个人的情形?

破产问题(The Bankruptcy Problem)
我们用二元组⟨E,d⟩\langle E, d\rangle⟨E,d⟩来描述一个破产问题的实例. EEE代表某个破产银行的总资产, d=(d1,d2,…,dn)d=(d_1, d_2,\ldots, d_n)d=(d1​,d2​,…,dn​)代表银行对nnn个机构(或个人)的欠款. 设d1≤d2≤…≤dnd_1\leq d_2\leq \ldots \leq d_nd1​≤d2​≤…≤dn​且0≤E≤∑i=1ndi0\leq E\leq \sum_{i=1}^n d_i0≤E≤∑i=1n​di​. 应该如何把资产EEE"公平地"分配给nnn个机构?

我们注意到, 在该问题中:

  1. 总资产一定不能满足所有人的需求. 换句话说, 总资产可能不够分.
  2. 分配时应该尽量保证"公平性", 不同应用场景下公平性的定义应该是不同的.
  3. 按比例分配背后的逻辑是权重越大的人分到的资产越多, 反之则越少. 在某些应用场景下, 按比例分配也许是公平的, 但它绝对不是唯一的分配方式.
  4. CG原则从另外的角度给出了一种公平性分配, 它的公平性在损失和收益两个方面同时得到了体现(参考下文).

考虑3个人d1=100d_1=100d1​=100, d2=200d_2=200d2​=200, d3=300d_3=300d3​=300. EEE分别为100, 200, 300时, "密西拿“”规定的分配如下表所示:

E x1x_1x1​ (d1=100d_1=100d1​=100) x2x_2x2​ (d2=200d_2=200d2​=200) x3x_3x3​ (d3=300d_3=300d3​=300)
100 33 + 1/3 33 + 1/3 33 + 1/3
200 50 75 75
300 50 100 150

通过观察, 我们发现:

  1. E=100E=100E=100时是平均分配.
  2. E=200E=200E=200时看起来挺神秘的 …
  3. E=300E=300E=300时是按比例分配.

问题 如何把CG原则扩展到nnn人情形(如何解释上面的分配策略)?

3. 一致性分配(Consistency Allocation)

给定分配x=(x1,x2,…,xn)x=(x_1, x_2, \ldots, x_n)x=(x1​,x2​,…,xn​). 对任意两个机构iii, jjj (i≠ji\neq ji​=j), 如果按照CG原则对iii和jjj分配总资产(xi+xj)(x_i+x_j)(xi​+xj​), 它们得到的资产仍然为xix_ixi​和xjx_jxj​, 那么我们称xxx是一致的(Consistent).

容易验证上面例子的分配符合一致性.

下面我们介绍一致性分配的性质(证明忽略).

  1. 破产问题的一致性分配是唯一的.
  2. 破产问题的一致性分配是自洽的(self-consistent). 即, 考虑破产问题的任意子问题, 它的机构集合为S⊆{1,2,…,n}S\subseteq \{1,2,\ldots,n\}S⊆{1,2,…,n}, 总资产为∑i∈Sxi\sum_{i\in S}x_i∑i∈S​xi​. 那么重新按照一致性分配, SSS中的机构分配到的资产仍然为xix_ixi​, 其中i∈Si\in Si∈S.
  3. 破产问题存在唯一的**自对偶的(self-dual)**一致性分配. 为描述简单起见, 我们忽略自对偶的定义(详细定义请参考1), 仅解释其意义. 令D=∑i=1ndiD=\sum_{i=1}^n d_iD=∑i=1n​di​为破产银行对所有机构的总欠款. 所以我们可以把这个问题从两个方面理解:
    i. 如何把总资产EEE公平地分配给nnn个机构?
    ii. 如何把总损失D−ED-ED−E公平地分配给nnn个机构?
    如果分配策略是自对偶, 那么按照上述两种情况分配最终得到的资产是相同的.
  4. 对任意的集合S⊆N={1,2,…,n}S\subseteq N = \{1, 2, \ldots, n\}S⊆N={1,2,…,n}, 定义效用函数
    v(S)=(E−∑i∈N\Sdi)+.v(S) = \left(E-\sum_{i\in N\backslash S}d_i\right)_+.v(S)=⎝⎛​E−i∈N\S∑​di​⎠⎞​+​.
    该问题可以被描述成合作博弈(Cooperative Game). 那么自对偶的一致性分配是Nucleolus3 (或参考《博弈论在零售业务中的应用》).

如何计算自对偶的一致性分配?

4. 计算

我们先介绍一个简单的分配策略.

CEA(Constraint Equal Award): 考虑破产问题⟨E,d⟩\langle E, d\rangle⟨E,d⟩. 设d1≤d2≤…≤dnd_1\leq d_2\leq \ldots\leq d_nd1​≤d2​≤…≤dn​. 首先给第一个机构分配, 原则是在不超过d1d_1d1​的前提下对当前的总资产平均分, 即x1=min⁡(E/n,d1)x_1= \min(E/n, d_1)x1​=min(E/n,d1​). 之后机构1离开, 剩下总资产E−x1E-x_1E−x1​, 总机构数为n−1n-1n−1. 依此类推, 我们可以完成对所有机构的分配, 最终得到x1,x2,…,xnx_1,x_2,\ldots, x_nx1​,x2​,…,xn​作为nnn个机构分配到的资产. 为方便描述, 我们用CEA(E,d)=(x1,x2,…,xn)\text{CEA}(E,d) = (x_1, x_2, \ldots, x_n)CEA(E,d)=(x1​,x2​,…,xn​)表示分配结果.

令D=∑i=1ndiD=\sum_{i=1}^n d_iD=∑i=1n​di​. 用xxx表示计算结果.下面我们描述其计算方式:

  1. 如果E≤D/2E\leq D/2E≤D/2, 那么x=CEA(E,d/2)x=\text{CEA}(E, d/2)x=CEA(E,d/2).
  2. 如果E>D/2E>D/2E>D/2, 先计算y=CEA(D−E,d/2)y=\text{CEA}(D-E, d/2)y=CEA(D−E,d/2)(先分配损失), 然后令x=d−yx=d-yx=d−y.

容易验证上一节例子中的分配结果就是按照本节中的计算方式得到的. 算法实现可以参考 Bankrupt on Github.

5. 总结

破产问题本质上是一个资源分配问题, 而CG分配原则考虑了某种意义上的公平性. 可以证明, 按照上一节描述的方式计算的结果不仅是唯一的一致性分配, 而且是自对偶的. 即, 它分配资产和分配损失的策略是相同的. 此外, 与按比例分配相比, CG分配更多地照顾到了低权重的个体. 在实际中, 我们应该根据具体的业务场景选择合适的分配策略.

写在最后: 古人的智慧不可小觑~

参考文献


  1. R.J. Aumann and M. Maschler. Game Theoretic Analysis of a Bankruptcy Problem form the Talmud. Journal of Economic Theory. 36, 195-213, 1985. ↩︎ ↩︎

  2. Wikipedia/塔木德. ↩︎

  3. Wikipedia/Cooperative game theory/The nucleolus ↩︎

破产问题 (The Bankruptcy Problem)相关推荐

  1. 英语二 - 常用词根六

    一 "pet" :追求 1.compete v.竞争,比赛 2.competition n.竞争,比赛,竞赛 3.compertitor n.竞争者,对手 4.competitiv ...

  2. Gambler's Ruin(赌徒破产问题 概率论)

    赌徒破产问题,做tc时遇到,顺便拿来好好研究下 英文原版地址为:Gambler's Ruin 问题如下: 一个赌徒有h枚金币,每次有概率a获得一枚金币或者概率(1-a)丢掉一枚金币,直到其所有的金币总 ...

  3. 基于多机器学习模型的破产预测

    基于多机器学习模型的破产预测 在第一种公开数据集上的实现: # -*- coding: utf-8 -*- """ Created on Mon Sep 14 13:17 ...

  4. matlab赌徒输完问题,Gambler's Ruin(赌徒破产问题 概率论)

    赌徒破产问题,做tc时遇到,顺便拿来好好研究下 问题如下: 一个赌徒有h枚金币,每次有概率a获得一枚金币或者概率(1-a)丢掉一枚金币,直到其所有的金币总数达到N或0则游戏结束,求赌徒最终赢得N枚金币 ...

  5. 美国历史最大10宗破产保护

    美国历史最大10宗破产保护 来源:http://www.ruanyifeng.com/blog/2008/09/biggest_chapter_11_cases.html 9月15日,美国最大的投资银 ...

  6. 中小企业一年中破产率_有此问题的企业中有60%在6个月内破产

    中小企业一年中破产率 Knowing and dealing with the threats that challenge your business is essential for your c ...

  7. linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.

    所有的base 都要取消注释 mirrorlist 加上注释 另外所有的enable都要设为零 目录 今天是要yum命令安装EPEL仓库后 yum install epel-release 突然发现y ...

  8. A + B Problem

    1001: A + B Problem Description 计算 A + B. Input 多组测试数据,每组测试数据占一行,包括2个整数. Output 在一行中输出结果. Sample Inp ...

  9. Error:(49, 1) A problem occurred evaluating project ':guideview'. Could not read script 'https://r

    出现问题如下: Error:(49, 1) A problem occurred evaluating project ':guideview'. > Could not read script ...

  10. #418 Div2 Problem B An express train to reveries (构造 || 全排列序列特性)

    题目链接:http://codeforces.com/contest/814/problem/B 题意 : 有一个给出两个含有 n 个数的序列 a 和 b, 这两个序列和(1~n)的其中一个全排列序列 ...

最新文章

  1. chord协议模拟实现_C#.NET和单片机串口通信实现监控单片机数字量输入继电器输出模拟量输入模拟量输出...
  2. yii 验证器类 细说YII验证器
  3. jsp 使用base标签 没有作用_JSP学习篇
  4. Websocket实现Java后台主动推送消息到前台
  5. Spring实战6-利用Spring和JDBC访问数据库
  6. 【2018.3.10】模拟赛之一-ssl2574Closest【深搜】
  7. python中newfile是干嘛用的_Python基础介绍 | File I\O 读写文件
  8. hibernate entity使用sequence方式时,id增量50且与sequence值不一致的问题
  9. 关于CSS与HTML知识点总结(二)
  10. procise 时钟的坑
  11. 联众打码写滑动_自己写了一个答题的软件现在分享一下(在分享一下联众打码源码调用) _ 综合讨论 - 按键精灵论坛...
  12. Computational Social Science计算社会学-《Science》文章翻译
  13. PageOffice在线预览word/excel/ppt/pdf
  14. (STM32CubeMX)超声波模块测距传感器学习笔记
  15. Python的h5py模块
  16. html实心圆点特殊符号,和平精英名称添加圆点符号的方法 和平精英圆点符号代码分享...
  17. 帝国cms发布文章对哪些数据表做了操作
  18. MySQL的触发器原理应用,after和before的区别
  19. Qualcomm 音频学习(Bring up)
  20. 公众号 自动生成海报 python_Python 生成公众号头图 1.0

热门文章

  1. linux中mysql忘记密码
  2. 移动端高保真动态交互元件库+移动端通用元件库+app通用元件库+rpllib元件库+rp源文件+Axure移动端常用组件+数据展示+操作反馈+数据录入+列表页+表单页+通用版布局+业务组件+反馈组件
  3. 交互原型案例Axure50套
  4. JAVA反射--通过反射对pojo进行UT覆盖率测试
  5. Android Content Providers(二)——Contacts Provider
  6. C语言:一种高效、易学的编程语言
  7. 【Qt5】评标专家库随机选5人小软件
  8. 机器学习中的矩阵分析与应用
  9. 【FM】Fama-French 三因子模型
  10. C++ - Sodoku Killer(DFS) - 实现一个数独解算器