赤字補填ゲーム

 投稿者:GAI  投稿日:2013年 1月11日(金)18時16分9秒
  正5角形の各頂点に整数(負の数も含む)が割り当てられている。
これをラベルと呼ぶことにする。
各ラベルの和sは正の値とする。
今、ある頂点にあるラベルが負の値のとき、ここを符号を反転させて正の値に切り替える。
このとき全体の和sの値が変わらないように、両隣のラベルから、反転させた値を引くようにしておく。
どのラベルをひっくり返すかにかかわらず、この操作を有限回繰り返すと、すべてのラベルの値が非負になって必ず止まることが起こるという。


<このモデルは各支社の売り上げが黒字(プラスのラベル)や赤字(マイナスのラベル)であるとき(ただし総計での売り上げは黒字。)各支社は赤字を隠すために両隣の支社から、赤字補填の操作をしてもらうことを繰り返し行っていくと、遂には各支社赤字が出なかった帳簿を作り上げるよくニュースで聞くモデルを見せてくれそうです。>

例として5角形の頂点にあるラベルを
(1,-2,0,-1,3)を初期状態として(s=1)推移の様子を記述してみると
(-1,2,-2,-1,3)
(-1,0,2,-3,3)
(-1,0,-1,3,0)
(1,-1,-1,3,-1)
(0,1,-2,3,-1)
(0,-1,2,1,-1)
(-1,1,1,1,-1)
(1,0,1,1,-2)
(-1,0,1,-1,2)
(-1,0,0,1,1)
(1,-1,0,1,0)
(0,1,-1,1,0)
(0,0,1,0,0)
と13回目でストップする。

これは一般にn角形の頂点やさらに任意の連結グラフにまで一般化できるという。
そこでこのモデルがどの様に動くのかを、5角形や6角形、・・・
の支社を持つ会社として見てみたい。

分かり難い説明で申し訳ありませんが、趣旨を読み取ってそのモデルを作って頂きたい。



 

Re: 赤字補填ゲーム

 投稿者:山中和義  投稿日:2013年 1月12日(土)11時14分30秒
  > No.2953[元記事へ]

GAIさんへのお返事です。

> 例として5角形の頂点にあるラベルを
> (1,-2,0,-1,3)を初期状態として(s=1)推移の様子を記述してみると
> (-1,2,-2,-1,3)
> (-1,0,2,-3,3)
> (-1,0,-1,3,0)
> (1,-1,-1,3,-1)
> (0,1,-2,3,-1)
> (0,-1,2,1,-1)
> (-1,1,1,1,-1)
> (1,0,1,1,-2)
> (-1,0,1,-1,2)
> (-1,0,0,1,1)
> (1,-1,0,1,0)
> (0,1,-1,1,0)
> (0,0,1,0,0)
> と13回目でストップする。


!赤字補填ゲーム

DATA 5 !個数
DATA 1,-2,0,-1,3 !値

READ N
DIM B(0 TO N-1)
MAT READ B
MAT PRINT B; !debug

LET S=0
FOR i=0 TO N-1
   LET S=S+B(i)
NEXT i
PRINT "総和=";S


LET C=0 !回数
DO
   FOR i=0 TO N-1 !最初に見つかったもの
      IF B(i)<0 THEN EXIT FOR
   NEXT i
   IF i>N-1 THEN EXIT DO !すべてが非負なら、終了!

   LET T=-B(i) !反転
   LET B(i)=T
   LET B(MOD(i-1,N))=B(MOD(i-1,N))-T !両隣から反転させた値を引く
   LET B(MOD(i+1,N))=B(MOD(i+1,N))-T

   MAT PRINT B; !状態を表示する

   LET C=C+1
LOOP

PRINT C;"回"

END


実行結果

1 -2  0 -1  3

総和= 1
-1  2 -2 -1  3

1  1 -2 -1  2

1 -1  2 -3  2

0  1  1 -3  2

0  1 -2  3 -1

0 -1  2  1 -1

-1  1  1  1 -1

1  0  1  1 -2

-1  0  1 -1  2

1 -1  1 -1  1

0  1  0 -1  1

0  1 -1  1  0

0  0  1  0  0

13 回




 

Re: 赤字補填ゲーム

 投稿者:山中和義  投稿日:2013年 1月13日(日)11時08分35秒
  > No.2954[元記事へ]

> (0,0,1,0,0)
> と13回目でストップする。

操作の順番によらず結果と回数は同じになるようです。
 

戻る