Skip to content

Instantly share code, notes, and snippets.

@vadimii
Last active August 29, 2015 14:15
Show Gist options
  • Save vadimii/dd6faf8224183f3febf4 to your computer and use it in GitHub Desktop.
Save vadimii/dd6faf8224183f3febf4 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import fractions
def utility(delta):
step = 0
while True:
yield delta ** step
step += 1
def pie(delta, steps):
utilities = utility(delta)
def step(cs):
cu = next(utilities)
if cs == steps:
return cu
pp = step(cs+1)
cp = cu - pp
return cp
return step(1)
if __name__ == '__main__':
loss = fractions.Fraction(2, 3)
result = pie(1-loss, 4)
print(result, 1-result)

Ариэль и Райнхард делят пирог. Дележ пирога происходит в 4 периода. В первом периоде право предлагать дележ принадлежит Райнхарду. Ариэль может согласиться на предложение Райнхарда или не согласиться. Если Ариэль согласится, то пирог будет разделен в предложенной Райнхардом пропорции, если Ариэль не согласится, то во втором периоде настанет его черед предлагать дележ пирога. Если во втором периоде Райнхард отклонит предложение Ариэля, то в третьем периоде дележ снова будет предлагать Райнхард. Если Ариэль отклонит дележ Райнхарда и на этот раз, то в четвертом периоде ему самому опять придется решать, какой дележ предложить. Если дележ пирога все четыре раза окончится неудачей, то придет Константин и съест весь пирог. За один период пирог теряет 2/3 своих вкусовых качеств. Полезность каждого из игроков от пирога в периоде n равна U=((1/3)^(n−1))⋅k, где n — номер периода, k — доля пирога, которую получает игрок, а 1/3 — параметр, показывающий, как меняется удовольствие игрока от одного и того же куска пирога от периода к периоду. Таким образом, полезность игрока от всего пирога в первом периоде равна U=(1/3)^0⋅1=1, во втором периоде — U=(1/3)^1⋅1=1/3, в третьем периоде — U=(1/3)^2⋅1=1/9 и в четвертом периоде — U=(1/3)^3⋅1=1/27. Будем считать, что если игроку все равно, согласиться на предложение другого или не согласиться, то он согласится. Если каждый из игроков максимизирует свою полезность, то какую часть пирога Райнхард предложит Ариэлю в первом периоде?

$ ./pie.py 
20/27 7/27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment