12A猫で学んだこと-Memoir-

...What are you learning now?

プレースタイルを考えてみると見えてくるものがあるかも? + 自分自身の戯言

人狼に参加して、色々な役職を経験すると 自分に向いているなーと思う役職と 向いていないなーと思う役職がありませんか?

 

村を観戦していたら, 「自分は素村が好き」 「自分は潜伏狼が好き」 「自分は占い騙り狼が好き」 というPlayerの方々を見たことがあります.

 

役職に注目することで、自分のプレースタイルが見えてくることってあると思うんですよね。 今年の夏までの気持ちを思い出して, ...ちょっとだけ自分でも自分のことを振り返ってみました.

 

* 占い/占い騙りについて

狂人や狐/背徳者の占い騙りは好きだけど、狼や狂信者での占い騙り/占い者は嫌いというのが自分の占い/占い騙りだったかなーと思っています. 多分, 狼が誰かを推理する楽しさがあるのが好きなんだろうなー
狂人だったら, 狼位置を予想してそこに○を打つように.
狐だったら, 狼位置を予想してそこに●を打つように.
背徳だったら, 真占い師がゲームから退場するように臨機応変に動きつつ.

 

反面, 狼だと結果を知っている前提で占い文とかを書かなきゃいけないんですよね.
指定役が信じそうな内訳を考えて, 真実を隠し, 狼が勝つために虚構の物語を騙るのが狼占い騙りの役目だと思っています.
そう考えると, 出す結果は狼同士で相談したものになってしまいますね.
ちょっと, 面白くないなーと思っていました.
また, 自分の能力と夜時間の長さを鑑みると, 呪殺対応の処理能力的にもするのは難しい役職だなーと感じていました...

 

占い師も狼騙り同様ちょっと苦手意識がありましたね. 狼っぽい所を狙ったり, 村視点でどこを占ってどんな結果がでればいいかということを考えるのは楽しいのですが, 結果に関しては, 真実を伝えなければなりません...いやー改竄したいじゃないですか, 真実を.

 

結局の所, 多分自分は, 人狼の中で行われる村の中心人物じゃなくて, サブ的なポジションにいたいと思っていたのかな. 参加しつつもどこかで観察者としての視点を持って, 自陣営が有利になると信じてサポートを入れていく. そんな役回りが好きなんだろうなー.

 

そして, 12A猫に参加すると, 狂人占い騙りをやった時に, 真狼で自分を見てくれる人が多かったのは 狂人占い騙りが好きだった理由の1つだったんだろうなー
霊能結果で自分○が出ると, 信じてくれる人が結構いたからなー
逆に(サンプル数が少ないけれど)、18A猫/19Dとかで狼占い騙りをやると、
「狼だったらもっとマシな占い騙りになるはず」という理由で,
○人外に見られていたなー
(意図的にその印象を植え付けるようにしたこともありましたが, 意図しないでも, 大人数村での私の騙りはあまり信用を感じられるものではなかったようです.)

 

* 潜伏狼/狩人について

 

狼/狩人で占われて●/○を出される. これが自分の厳しい所です.
占われ回避をしようと思って発言を調整すると, グレランで票を集めてしまうタイプなので駄目でしたね. 潜伏狼になって, 最終日の2択まで生き残れるのは, 勝敗に関わらず好きなので楽しいのですが, 3日目昼での, 占いの● V.S 占いではなかなか勝負が難しいですね. 3日目の情報だけでは, 濃厚な議論の応酬をするのが厳しかった記憶があります. 

 

...適当に書きなぐった, 推敲も何もない日記でした...

 

GMをやって思ったこと...

○安定してゲームを行うにはやっぱり、(統計的な判断になってしまうと思うのですが, )初心者の方の入村には入念にチェックが必要だと思いました。また, トリップのチェックは初心者の方の為にもきちんとするべきですね。今までそれができていなかったので反省です。
...観戦さんに色々救われたのは良かったなー

あ、後最初の出題ミスはごめんなさいです。

 

○本当は、9月になったら自分が読んだ本の日記を自己満足のためだけに書くためのブログにするつもりでした。本日、GMをやった村でも思ったけれど、自分はあんまり人狼に適していない気がするんですよね....参加するのは楽しいですよ! 参加した時は勝利を目指して頑張りますよ! でも、多分特に今年の夏以降、自分のプレースタイルは...あんまり勝てる気がしないのです. それが, 自分の村人希望が凄く多くなったのも何か関連している気がします 。人狼というゲームを自分自身のプレーが勝敗に関わりにくい所で, 観察しようとしている気がします.....ただ, 「自分の発言やプレーを面白い」と言ってくれる人がいました. それが多分、人狼というゲームから, 自分が離れきれない理由なのでしょう. ゲームが終わった後に評価していただけたのが非常に嬉しかったのです. 

自分が印象に残っている村は, 自陣営が負けた村の方が多いんですよね. 
勝利した村で, 自分が面白くて良いプレーができたなと思う村は, 
12A猫の狂人で4回の占い結果のうち, 3Wを囲い, 村人の1人に●を出したという村と,  
12A猫の狼で3日目の朝にLWになって, 霊能騙りからの勝利というこの2つです. 
でもそれって, 村の中身自体が凄く印象的だった....というより, ただ単に結果だけを眺めた自己満足の面が強いんですよね.
印象に残っている村は, 自陣営が負けた村で, 勝利した陣営の相手から誉めてもらええたり, 苦しい状況の中で, 仲間と凄くいい会話ができた時です.
狂人の占い騙りで, 狼を即囲ったけれど, 真占いさんに見つかってしまい,
その狼が吊られてしまった後に平和が発生. 狩人がCOして, 霊能平和が露呈. 

霊能者を「狂人」で主張して, そして, グレー位置の狼と, 対抗の占い2Wを主張という
非常に厳しい内訳を主張した村がありました. その村は村陣営の勝利でしたが, 
その時に, 真占いさんから, 誉めていただいたことがすごく嬉しかったです. 
「良いプレーだった. うまいプレイヤーですね!」と言ってもらえた. それが思い出に残っています...狼を見つけただけではなく, その時の村の, 真占い師さんの占い文は, すごく視野が広かった. 視点グレーのPLに対する考察を, 簡潔にまとめ, 占い文に付記するという, 自分が理想とする最高の占い文を書いてきた人でした.  
試合中, 『勝てない...この人の偽をどうやって主張したらいいんだ?』と心から思った時でした. そんな方から, 「良かったね!」と誉めてもらえたら嬉しいですよ!
他には, (StudentSのアカウントを使う前だから......かなり前の話だけれど, )11Aで2Wで, 初日に相方が見つかってしまって相方は占いCCO, そして出した結果は, 真占いに○.
かなり厳しい勝負でしたが, 相方は自分が吊られること覚悟で, 自分を生かそうと必死になってくれました. 夜会話での相方のその想いは今でも残っているんですよね. 自分の思い出として. 


もちろん, 先生の下で一緒に育った方には, 1つの村とかでは語りきれない関係がありますよね...同時期に先生の下でお世話になった方には特に...

 

...色々な主義主張があると思いますが, 自分にとって人狼はたかがゲームです. 
控えめで, 社交性が高くない自分にとって, ネットゲームをここまで長期間継続してやることになるとは思いませんでした. 人狼に参加して,参加者の方を見ることによって, 色々な刺激を受けました. 特に, 12A猫で動画を作成されている方を見て, 自分も遊んでばかりではなくて, 何か価値のあるものを生み出せるようになりたいと思いました. その方はみんなを楽しませるという方向で自身の才能を発揮されました. 
自分にそういう才能はないですが, 自分も自分なりにできることをやっていきたいと思いました.  彼との会話と彼の作品を拝見させていただいたことは間違いなく現実世界の自分にとってもプラスに働きました.... 自分の無理の無い形で, 自分が挑戦しようと思ったことに挑戦できました.
顔も知らない. 相手がどんな人間かも分からない. でも, そういった人間達が集まって小一時間, ゲームをして, 楽しめるということは凄いことだと思うんです. 勝敗なんかよりそっちのほうが重要だと思う. というのは自分の哲学としてあります. 

 

人狼はゲームです. そして, お金を賭けている訳でもありません. 負けて失うのは何でしょうか? プライドと自尊心ぐらいでしょう. 相当な才能と運に恵まれた人でない限り, 現実世界でその2つを失うことを恐れては何も行動できないです. プライドと自尊心を失うことを厭う人間には成長がないと思いますよ.(無力な自分を直視することを嫌と思う自分に対して, 自戒の念も少しこめつつ)
 

負けたっていいじゃないですか. ボロボロに打ちのめされていいじゃないですか. 所詮人狼のプレーを勝利することに最適化された, まさに人狼の神々のようなプレイヤーが人狼やったら, 高度なじゃんけんになるだけのゲームなんですよ! そんなゲームで1戦勝った負けたを気にするより, 大切なことは, そこから何を学べるかじゃないんでしょうか? 人狼はゲームです. じゃんけんゲームです. ゲーム自体の結果は全然重要じゃないです. でも, 人狼というゲームは現実世界に活用できる何かが学べると思っています.  (短期的とはいえ)「信用する/信用してもらう」ために必要な要素は何かを考えたり , 他人の嘘や策略を見抜くためには, どういう挙動に着目すればいいかを考えたり, 論理パズルとして出来る限り有利な行動を考えたり....人狼をプレーする時と同じ視点で日常生活を見直してみると, 自分の周りの環境がちょっと違って見えてきました. 色々な視点を持って, 物事を捉えられるようになることが凄く面白いし, 大切だと思うんですよね. 

 

徒然のないままに, とりとめのないことを書きなぐったけれど, 
これは幼さ....若さなのかな? 精神年齢がもう少し高くなれば, もう少し落ち着いた考え方を持つようになるのかな? 慣れないお酒を飲みながら書いたこの文章を, ずっと後に自分がどんな気持ちで読み返すのかちょっと怖くもありながら, 

12A猫なんてどうでもいい. だけど, 12A猫で会った人に感謝をしつつ. 12A猫で学んだことが活きることを信じて. 
自分と, 自分の関わった人は幸せな方がいいよね!

 

占い確定狩人生存ゲームでの村勝率の解析計算-1-

何も知らない僕の, たったひとつの冴えたやりかた-全てはダイスの女神様のお気に召すまま- - 12A猫で学んだこと-Memoir-

 

で, 指示役がいてもいなくても, AグレーBWなら, 狼を吊ることができる可能性を B/Aにすることができることが分かりました. この結果を使うと, ゲームの勝率解析が進みます.

 

"駆け引き"の発生する場面では, 均衡解を考えなければならないので難しいのですが, その駆け引きの要素を除外すると, 漸化式によって勝率の解析解を求めることができます. 
一番単純な例は以下でしょうか. 

 

n人生存, m匹狼生存, s人村人確定の場合の村勝率 - 12A猫で学んだこと-Memoir-

 

の例以外にもいくつか試してみたいと思います.
占い生存, 

<ゲームのルール>
占い1の真が確定している。 初日, 占い以外の生存人数はn人, 狼はその中でm匹. 狩人1人の生存が確定している. (狂人 - 霊能などはいない.)
 

占い師は, 毎晩, 占っていない人間から1人ランダムに占う. 狩人 - 占い - 村人を占う確率は同じ確率. 昼間は, 占い師が●を出したプレイヤーを吊る. それがいない時は, ○を出されていない狼候補からランダムに1人を吊る.
"ただし狩人はCOできない. また, 狩人は占いしか護衛できない."
狼は夜に2つの戦略を選ぶ. 占い師を噛むか, ○を出されている人間を噛むかの2択.
占い師を噛むことができる確率は, (最後に平和が出たときからの狩人候補の死亡数)/(最後に平和が出たときの狩人候補)の数とする. ○を出されている人間は, 確実に噛むことができる.


このケースでの, 村陣営の勝率を求めましょう. 

 

簡単の為に, まずは狼数が1の場合から考えましょう.
f(n,m,s)を 占い非生存の時に, 朝の地点で生存人数n, 残り狼数がm, 村確定人数sの時の村勝率とします.
g(n, m, s, h, H)を次の条件を満たすときの村勝率とします.
占い生存の時に, 朝にn人生存している.最後に平和が出た(= 占い師の生存が確定している)時の狩人候補者の人数がH人, H人から狩人候補がh人死んでいる.
朝の地点(占い師が結果をはる前の地点)でn人のうち, 村人確定はs人.
n人のうち, 狼の生存数はm. 

w(n, m, s, h, H)を次の条件を満たす時の村勝率とします. 
占い生存の時に, 夜にn人生存している. 最後に平和がでた(= 占い師の生存が確定している)時の狩人候補者の人数がH人, H人から狩人候補がh人死んでいる. 狼の生存数はm, 
s人が村人確定. 

 

<朝の段階での村人の行動> 

占いが狼を見つける確率

f:id:StudentS:20151108145736p:plain


占いは村に○だし, その後に狼が釣れる確率

f:id:StudentS:20151108150249p:plain

占いは村に○出し, その後に村人(狩人候補)が釣れる確率

 

f:id:StudentS:20151108150559p:plain

 

以上を用いて, 

f:id:StudentS:20151108150915p:plain

 

と記述できる. 
ただし, 

f:id:StudentS:20151108151327p:plain

 

<狼の戦略について>

w(n, m, s, h, H)について考える.

狼は以下の戦略のうち, 村勝率が低い方を採用する. 

<占い噛みチャレンジ> 

* 占いが噛める場合, 村勝率 f(n,m,s) 

* 平和がでた場合, 村勝率g(n, m, s, 0, n-m). 

平和が出る確率は, h/H.

 

<○噛みで勝機を伺う> 村勝率 g(n-1, m, s-1, h+1, H) 

以上をまとめると, 

 

f:id:StudentS:20151108151626p:plain

 

終端条件に気をつけて, これを再帰的に求めていけば, 村勝率を計算することができる. 

 

計算するプログラムをpythonで作成しました.   numpyが実行には必要です. 

 

占い確定狩人生存ゲームでの村勝率の解析計算-1-(ソースコード) - 12A猫で学んだこと-Memoir-

ミスがあったらごめんね. 再帰 + メモ化で単純に作っています.多項式時間で計算可能とはいえ, 大体nの五乗のオーダーなので, 数が大きくなると結構空間計算量も時間計算量も必要になりますね. 

 

この解析解の前提の, "狩人がCOできない"というルールは 

狼有利に働いています.  

g(4,1,0,0,3)の値にそれが出ています. 
狩人がCOできる"という前提では, これは確定村勝ちのゲームです. 
しかし, プログラムの結果では, 0.916667と算出されています. 
これは, 狩人がCOできないというルール上, 
占い師が村人に○を出し, 1/3で狩人が釣れて, 狼の占いチャレンジが成功し, 
最終日2択という道筋があるからです. 
狼勝率の確率は, 村人に○が出る確率 2/4 * 狩人が釣れる確率1/3 * (占いチャレンジ) * (最終日2択)1/2
この計算結果は, 1/12です. 狩人がCOできないことによって, 狼有利の結果となっています. 

 

幾つかの場合の計算結果を記載します. 
g(20, 4, 0, 0, 20 -4)村勝率0.389

g(16, 3, 0, 0, 16 - 3)村勝率0.555

g(10, 2, 0, 0, 10 -2)村勝率0.717

 

みたいな感じですね. 少人数村の方が, 狼視点厳しくなっていく感じでしょうか. 

 

『狩人がCOできる前提ではどうなの? 』と考えると, 

『狩人がCOするかどうか?』という行動と『狼が狩人生存と予想するか?』ということに駆け引きが発生する i.e. (均衡解を考えなければならなくなる)ので, 厳密性を持った証明は難しくなります.  狩人COが無い時に, 狼が占いを噛める可能性を (最後に平和が出たときからの狩人候補の死亡数)/(最後に平和が出たときの狩人候補)の数になるという仮定をおいてしまえば, その問題は解決できるので, 気が向いたら, このケースだけは試してみようかなーと思っています. 今回の場合とどれだけ違うのかは少し気になります. 

 


『こんなこと計算して何になるの?』と言われたら全くおっしゃる通りで, 現在の人狼での勝率を高めたいと思っている人にはほとんど役に立たない情報です.
ただ...実際の村で, 占いを噛むタイミングをいつにするか? という戦略を決める為の1つの指針を狼陣営に与える結果にはなっていると思います. 

 

個人的には, そんな実際のことよりも, 神々のプレイヤー達が人狼を継続続けた場合, 
どの程度の確率になるかを予測する方に価値をおいています. 
そして, 貴方が『人狼の勝率を高めること』を目標にしている人の場合、
算出された結果以上の勝率を出すことは, 貴方の努力だけでは不可能です. 

 

 

 

 

 

 

 

 

 

 

占い確定狩人生存ゲームでの村勝率の解析計算-1-(ソースコード)


import numpy as np

maxN = 50;
maxM = 15;
maxS = maxN;
undefined = -1;
baseRate = np.zeros((maxN, maxM, maxS)) - np.ones((maxN, maxM, maxS)) ;
def output(n, m, s):
    print( "people:"+ str(n), "wolves:"+str(m), "assured:" +str(s), "prob:"+ str(baseRate[n][m][s]));

def allOutput():
    for n in range(maxN):
        for m in range(maxM):
            for s in range(maxS):
                output(n,m,s);
def baseRateCalc(n, m, s):
    if baseRate[n][m][s] != undefined:
        answer = baseRate[n][m][s];
        return answer;
    elif n < m + s:
        answer = 0.0; # Actually, its value is meaningless due to invalid setting.  
    elif s >= n and n !=0:
        answer = 1.0;
    elif m == 0:
        answer = 1.0;
    elif m >= float(n)/2:
        answer = 0.0;
    else:
        sDec = max(s-1,0);
        answer = float(m)/(n-s) * baseRateCalc(n - 2, m -1, sDec) +  float(n - s -  m)/(n - s) * baseRateCalc(n- 2, m, sDec);

    baseRate[n][m][s] = answer;
    return answer;

for n in range(maxN):
    for m in range(maxM):
        for s in range(maxS):
            baseRateCalc(n, m, s);

allOutput()


maxH = maxN;
gMatrix =  np.zeros((maxN, maxM, maxS, maxN, maxN)) - np.ones((maxN, maxM, maxS, maxN, maxN)) ; 
wMatrix =  np.zeros((maxN, maxM, maxS, maxN, maxN)) - np.ones((maxN, maxM, maxS, maxN, maxN)) ; 

def debugGMatrix(n, m, s, h, H):
    print(str(m)+"W", " in"+ str(n),  "s:"+ str(s)  
          ,"h:"+ str(h),  "H:" + str(H));  

def calcwMatrix(n, m, s, h, H):
    if wMatrix[n][m][s][h][H] != undefined:
        answer = wMatrix[n][m][s][h][H];
        return answer;
    if m == 0:
        return 1.0;
    answer = 0;
    hInc = min(h+1,H);
    wolfWait = calcgMatrix(n-1, m,s-1, hInc, H);
    wolfChallenge = float(h)/ H * baseRate[n][m][s] + float(H-h)/float(H) * calcgMatrix(n,m,s, 0, n-m) 
    debugGMatrix(n,m,s,h,H);
    print("Challenge:"+str(wolfChallenge))
    print("Waiting:"+str(wolfWait))
    if wolfChallenge > wolfWait:
        print("Waiting is preferred.");
        answer = wolfWait;
    else:
        print("Challenging is preferred.")
        answer = wolfChallenge;
    wMatrix[n][m][s][h][H]=answer;
    return answer;

def calcgMatrix(n, m, s, h, H):
    if gMatrix[n][m][s][h][H] != undefined:
        answer = gMatrix[n][m][s][h][H];
        return answer;
    if m == 0:
        return 1.0;
    if (float(m)/(n+1) >= 0.5):
        return 0.0;
    if s >= n - s: 
        return 1.0;

    Kw1 = float(m)/(n-s);
    Kw2 = float(n-s-m)/(n-s) * float(m)/(n-(s+1));
    Kv  = 1.0 - (Kw1 + Kw2);
    
    answer = 0.0
    answer = answer + Kw1 * calcwMatrix(n-1, m-1,s, h, H);
    answer = answer + Kw2 * calcwMatrix(n-1, m-1,s+1,h,H);
    answer = answer + Kv * calcwMatrix(n-1, m, s+1, min(H, h+1), H); 

    debugGMatrix(n, m, s, h, H);
    print("Answer:", answer)
    gMatrix[n][m][s][h][H]=answer;
    return answer;

surveyN = 4;
surveyM = 1;
surveyS = 0;
surveyh = 0;
surveyH = surveyN - surveyM;

print(calcgMatrix(surveyN, surveyM, surveyS, surveyh, surveyH))

n人生存, m匹狼生存, s人村人確定の場合の村勝率

何も知らない僕の、たったひとつの冴えたやりかた-全てはダイスの女神様のお気に召すまま- - 12A猫で学んだこと-Memoir-

 

の『ダイスの女神様進行』の最適性に基づく, 村勝率計算の単純な拡張. 

f(n, m, s)を朝の段階で, n人生存, m匹狼生存, s人村人確定, 役職非生存,の時の村勝率とします. その漸化式は, 

 

f:id:StudentS:20151105233412p:plain

 

となる. 手元で組んだプログラムが間違っていなければ, 

9人3W,確定村陣営2の村陣営の勝率は, 大体14%....

12A猫, 占い欠けの0-1, 狂人の猫炙りがあったとしても,
絶望的な勝負とまではいえませんね 
この結果は, 初日に狂人が釣れれば, その勝率が14%よりも高くなることを示しています. 

 

内訳予想に基づく, 進行判断の例.

面白い村があったので, 解析してみましょう. 元ネタはこちら

No.319550「初心者GMの12A猫初心者歓迎」村

 

この村から抽出した問題はこちら.
<問題>

7人残り占い候補1, 霊能CO1, 猫CO2, 村人3.
霊能者視点LWとなっている. (つまり人外全露呈)
残りの占い候補は真狼狂, どの可能性もある. 
この時 どのような吊り先の設定が良いかを考える.
(問題を単純にするため以下の仮定をおく.
仮定: 霊能は真とする. 狼視点も村視点も狩人は非生存が確定している. 
猫真狼だった場合, 狼視点占い候補者の真狂判別はついていないため, 占いが残っていたら占いを噛む. 狂人 - 村視点, 猫決め打ちの成功可能性は1/2. ) 

(勝利の利得を1, 引き分けの利得を0, 負けの利得を-1とする.)
<狩人非生存という仮定から, この問題は実際の村とは異なっている. >

 

* 占い候補者が真狂読みの場合の進行候補. <戦略1>
残りの猫又真狼. 猫吊りを行って, 正解したら勝ち, 
外した場合は, 1/3で偽猫 or 占い師候補を道連れ, 道連れに失敗していたら,
最終日は猫又投票. 占い狂人なら半PPで引き分け. 占い真なら村勝ち.占い狼なら負け.

* 占い候補者が狼読みの場合の進行候補.<戦略2>
7人の時、村柱を吊る. 6人の夜, 占いが真狂で占いが噛まれていれば,
もう1度村柱を行う. 占いが噛まれていなければ, 5人の時に占い吊り.
「猫に狼騙りの場合, 占い真狂判別ができないので占いを噛むとする」
占い狼の場合. 村勝ち, 占い真狂の場合. 最終日3人猫ルー.

 

残った占い候補が狂である可能性をa, 狼である可能性をb, 真である確率を1- a - b として, 戦略1, 戦略2の期待利得を計算してみましょう. 

<戦略1>の場合. 

(勝ちの確率) (1 - a- b ) + a * (1/2 + 1/2  * 1/3) + b* (1/2 + 1/2 * 1/3)

(引き分けの確率) a * 1/3 

(負けの確率) b * 1/3 

なので, 期待利得は, 1 - 1/3a - 2/3b

<戦略2>の場合.

(勝ちの確率) (1- b) *3/4  + b

(負けの確率) (1- b) * 1/4  

なので, 期待利得は, 1/2(1 + b)

 

1 - 1/3a -2/3b と 1/2(1 + b)の大きい方の戦略をとるのが良いと考えられる. 
前者が大きいと思えば, 猫吊りを7人で行った方が良いといえ, 
後者が大きいと思えば, 村柱(実際の村では霊能者)を7人で行った方が良いと言える. 
実際の村では, aとbに関してはプレイヤー視点予想するしかないないのでそれは各々の主観確率に基づく...が, 
一例として, 
占い候補狼の確率bに対して, 真確率を (1-b)/2, 狂人の確率を(1-b)/2とおくと, 

b = 2/9...占い師候補が狼である確率を2/9より小さくみるのであれば, 
<戦略1>の進行を. 2/9よりも大きいとみるのであれば, <戦略2>の進行をとるのが, 
村視点よいと考えられる. 

実際の村では, もっと複雑です. 「いい進行」/「悪い進行」を判断する為には, (狩人非生存が確定していたとしても)実際の村の最中に, この程度の考察はできないといけないようです...(自分には無理です...)村の2択を外すことがあるように, 内訳予想は外れることは多いです. (a, bの値を正確に当てることはほぼ不可能), だけど, 進行役は, 自分がどういう内訳を想定しているか, そして、その内訳予測に即して最適の吊りになっているかを意識にしておくことが大切だと思っています. それが出来ている限り, 進行役に間違いなんてないと思いますね. 

本当にこの村の問題を解析しようとすると, 狩人が生存している確率とか, 狼視点の残った占いの真狂の主観確率とか, 偽猫の主観確率とかまでをパラメータにしなくてはいけないのですごーく大変になります. ただ....内訳予想によって最善の進行は異なるということをお伝えできたら幸いです. 

 

この結果を使って, 今回, 実際の村で, 占い狼の可能性を2/9以下でみたら, 
猫吊りの方が良いのだ. という議論は不適切であるというのが私の考えです. 狩人非生存確定仮定もそうですが, 猫又CCOがあったことから, 猫又の決め打ち1/2という仮定自体がそもそも成り立ちません. 霊能者の猫又に指定があってからのゲームと考えてモデルを作らないと, 実際の村の主張に繫げるには弱い議論だと思いますね. 
ただ, そうした場合, 議論はかなり複雑になります. 『選択』しなければならないことが
村陣営にも狼陣営にも多くでてくるので.  そして, 猫候補者と占い候補者予想確率は, ペアで考えないといけませんね. 

<以下, 村を見ての感想>

* 7人の時, 『村が後に出てきた猫をその日に吊らない』『霊能真』という前提で, 占い候補狼の時, 指定された狂人の猫CCOは悪手かなーと思いました. COして吊られたら, (『霊能真前提で』)占い候補は破綻です.

 

* 霊能者と狩人の方が強かったですね。もちろん、狼陣営も!

* 非合理的な行動をしていると敵陣営がしていると判断した時に, 印象論で吊り先を決めるのは, どうなのだろうか?それもプレイヤーのスタイルなのかなぁ...?

 

 

 

 

 

 

 

何も知らない僕の, たったひとつの冴えたやりかた-全てはダイスの女神様のお気に召すまま-

組織票を防ぐ為の凄く単純な作戦が村陣営にはありました. 
そして, それが最善戦略です.

雑多な話とゲームの均衡解の例 - 12A猫で学んだこと-Memoir-

では,  5人2W猫2COの時の村勝率を, 狼が組織票できると仮定して5/24と算出しています. これを1/4に高めることが村陣営の作戦によって可能になります.  

作戦は単純です. 猫2COのうち,

『乱数を生成する。奇数であれば猫候補者Aを、猫候補者Bを吊る。 指示に従わない村陣営は最終日吊る。』 たったこれだけです.
この戦略をとることによって, 村陣営の勝率は1/4になります.
5/24 < 1/4なので, この戦略に従わない村人は村の最善進行をとっていないと見なすことができます. 村に有利な動きをしないのは狼ですね.

ということで, 5人2W猫2COの時の勝率は1/4です.  (狩人生存が確定している場合の計算もざっとやり直しましたが, この場合は狩人COをした方が, やっぱり村の勝率が高まるという結論になりましたね.)

 
この議論は一般的に成り立ちます. ゲームの進行を考える時に, 身内を知っていることによる狼の利得なんて考えなくていいんです. 村陣営と比べて狼は情報を持っている. 情報を活用させない為に, 全てを乱数に任せる戦略をとるのが村陣営の最善進行(の1つ)です.

 

『ダイスの女神さま進行』...乱数によって, 吊り先を乱択に決定する進行は 指示役がいない場合の大きな武器になります.

 

村人がこの進行をとることによって, 村人と狼しかいない時の昼の時n人村, m匹狼生存の時の村勝利値の漸化式を計算することができます. そのf(n, m)を昼nの時n人, m人生存の村勝率とすると, その漸化式は

f:id:StudentS:20151104210443p:plain

となります. (この一般項を求めるのは自分にはできませんでした。 m = 1として、Wolfram|Alphaさんに入れても一般項は出てこなかったし,  ちょっと難しそうです)

縦軸を村人の数, 横軸を狼の数とした時の, 村人の勝率をカラーマップとして表した図は下になります. 

f:id:StudentS:20151104210534p:plain

よく分からないですね. ブログ初心者の私の編集能力の無さが露呈しています...

横軸を村人の数, 縦軸を村勝率が1/2以下となる, 最低の狼数を示した図が下になります. 

f:id:StudentS:20151104210741p:plain

 

帯は広いのは, 偶数進行と奇数進行の場合で値が異なるからですね. 
この1000人プレイヤーがいた時, 狼陣営が16人ぐらいで, 勝率50%なんですね.
村人と狼のゲームとすると, かなり狼有利なゲームなんですね.
(組織票をつぶしたとしてもね. )

 

どうして, 今まで自分は気がつかなかったんだろう. と思いました. 
凄く簡単なことだったのに....
全てをダイスの女神様に委ねることが、情報を持たない村人の最善手です.

 

組織票を使わせないのが, 村陣営の最善進行なので, 人狼ゲームの勝率解析を行う上で, 投票の情報を使わなくてよくなったのは大きな前進です. 村陣営に対する公開情報が同じであれば, その時の吊り先は, 等確率に乱拓して吊る. この議論が使用できると, 考察しなければならないゲームの空間は狭まります.(それでも, 占い先とか, COとか狩人の護衛の場所とか, 色々考えなきゃいけないので, 複雑なゲームの勝率を求めるのは厳しいですが.) 

 

実際の村でこの戦略を使う人は, 大きな反感を買うでしょうね.  ただ, 非常に強いプレイヤーが集う村...まさに神々の人狼では,  この女神様に委ねる戦略は多用されるはずです。(それが村陣営の最善ですから) この戦略を適用しないことは, 「神々のようなプレイヤーが集う村」 という定義に反するので. 

一般に, 情報は非常に大きな武器になります. 確定している情報と, 推測情報には大きな隔たりがある. その情報を敵に活用させない戦略は, 対抗策として非常に有効なのでしょう.

 

(以下、自分の個人的な想いです。)
(ちょっと挑発的な物言いになりますが) 所詮、人狼なんて高度なじゃんけんです。 プレイヤーのレベルが人狼に勝つということに最適化されるほど、この傾向は強まります。 人狼の勝率が高いというのは、ただ単に、人間プレイヤーの弱さを小利口に利用しているだけです。 ...そういうプレイや、プレイヤーに魅力を感じませんね。どれほど勝率の高いプレイヤーでも、 均衡戦略をとられたら、勝率はそこに収着します。 このゲームの最善進行はつまらないです。所詮じゃんけんと同じになるので。
ただ・・・このジャンケンみたいなゲームにストーリーを持たせ、 エンターテイメント性を創造するのは面白いと思いませんか? だから、私は勝率よりも発言や進行をみて、そのプレイヤーを判断してきました。 自分の好きなプレイヤーか、苦手なプレイヤーか、ね。