過去の日記

2014-01-24 [長年日記]

PyCharmでローカル変数への型ヒントの書き方 [Python]

おおきく3通りの書き方で4つのバリエーション。
1.

a = foo()
""":type : int"""
a.


2.1.

b = foo()
if isinstance(b, int):
    b.


2.2.(ただしPEP-8で非推奨の記法)

c = foo()
if isinstance(c, int): pass
c.


3.

d = foo()
assert isinstance(d, int)
d.

いずれも、. を打ったところでintに対するサジェストがなされるはず。


ローカル変数じゃなくて、フィールドに対して有効なのは、一番上の方法だけらしい。

a.foo = foo()
""":type : int"""
a.foo.


via

Type Hinting in PyCharm


2014-01-20 [長年日記]

書物紗幕 [novel]

この終わり方で全然終わった気がしないのはシャーロック・ホームズのせいだろう。

書物紗幕 (講談社ノベルス)

  • 作者: 赤城 毅
  • 出版社/メーカー: 講談社
  • 発売: 2014-01-08
  • ASIN: 4062990067
  • メディア: 新書
  • amazon.co.jp詳細へ

押し入れの少年 1 [comic]

すごくしっかりした絵だなぁ、と思ったら地獄堂霊界通信の人だった。とても実力がある人なんだなぁ。
読み切り版、最初のページと最後のページが実に高橋先生らしくて妙なおかしさがあった。読み切り版のネームを切ったのは高橋先生なんだろうか。

押入れの少年(1) (プリンセス・コミックス) (プリンセスコミックス)

  • 作者: 高橋葉介,みもり
  • 出版社/メーカー: 秋田書店
  • 発売: 2014-01-16
  • ASIN: 4253270042
  • メディア: コミック
  • amazon.co.jp詳細へ

2014-01-17 [長年日記]

オートマトンをめぐるファンタジー [book]

これすごいなぁ。
もっとファンタジー小説に徹してもいいんじゃないかって思うほど、ちゃんと小説として成立してる。

白と黒のとびら: オートマトンと形式言語をめぐる冒険

  • 作者: 川添 愛
  • 出版社/メーカー: 東京大学出版会
  • 発売: 2013-04-18
  • ASIN: 4130633570
  • メディア: 単行本
  • amazon.co.jp詳細へ

オートマトンだけじゃなくて構文解析まで踏み込むとは思ってなかった。


2014-01-13 [長年日記]

3囚人問題の話 続き [etc]

モンティ・ホール問題の話

の続きで、

Aの質問、Bの質問 - Log of ROYGB

の数式化。

さらにBが看守に同じ質問をしたら、またもやCという答えが返ってきたときに条件付き確率はどう変化するか? という問題。


求めたいものは、\(P(Aが釈放~∣~Aが尋ねて看守がCと答える~\cap~Bが尋ねて看守がCと答える)\) であろう。
直感からこれは1/2だろうと思われるが、それが正しいことをベイズ定理から確認したい。


ベイズ定理より、
\(\displaystyle~P(Aが釈放~|~Aが尋ねてC~\cap~Bが尋ねてC)~=~\frac{P(Aが釈放)~\cdot~P(Aが尋ねてC~\cap~Bが尋ねてC~|~Aが釈放)}{P(Aが尋ねてC~\cap~Bが尋ねてC)}\)
となる(文がさすがに長いので略して書いた)。

\(P(Aが尋ねてC~\cap~Bが尋ねてC~|~Aが釈放)\) は、Aが釈放の時にBが質問すると必ずCと答えることから、\(P(Aが尋ねてC~|~Aが釈放)\) と等しくなり、
\(\displaystyle~P(Aが尋ねてC~\cap~Bが尋ねてC~|~Aが釈放)~=~P(Aが尋ねてC~|~Aが釈放)~=~\frac{1}{2}\)
となる。


\(P(Aが尋ねてC~\cap~Bが尋ねてC)\)
は、
\(\displaystyle~\sum_{i}~P(iが釈放)\cdot~P(Aが尋ねてC~\cap~Bが尋ねてC)|iが釈放)\)
に等しくなる。
\(\displaystyle~P(Aが釈放)\cdot~P(Aが尋ねてC~\cap~Bが尋ねてC)|Aが釈放)~=~\frac{1}{3}\cdot~\frac{1}{2}~=~\frac{1}{6}\)

\(\displaystyle~P(Bが釈放)\cdot~P(Aが尋ねてC~\cap~Bが尋ねてC)|Bが釈放)~=~\frac{1}{3}\cdot~\frac{1}{2}~=~\frac{1}{6}\)

\(\displaystyle~P(Cが釈放)\cdot~P(Aが尋ねてC~\cap~Bが尋ねてC)|Cが釈放)~=~\frac{1}{3}\cdot~0\)
なので、
\(\displaystyle~P(Aが尋ねてC~\cap~Bが尋ねてC)~=~\frac{1}{6}~+~\frac{1}{6}~+~0~=~\frac{1}{3}\)
となる。


よって、
\(\displaystyle~P(Aが釈放~|~Aが尋ねてC~\cap~Bが尋ねてC)~=~\frac{P(Aが釈放)~\cdot~P(Aが尋ねてC~\cap~Bが尋ねてC~|~Aが釈放)}{P(Aが尋ねてC~\cap~Bが尋ねてC)}~=~\frac{\frac{1}{3}~\cdot~\frac{1}{2}}{\frac{1}{3}}~=~\frac{1}{2}\)
で、直感と等しいことが確認できた。


2014-01-09 [長年日記]

モンティ・ホール問題、あるいは3囚人問題の話 [etc]

モンティ・ホール問題、その祖先と子孫

の続き。

問題再掲。
「数学セミナー」連載の「確率パズルの迷宮」、2012年7月号掲載記事「逆確率の罠」から引用で、一般的な3囚人問題に対して曖昧さを無くした形で書かれたもの。

A,B,Cの3人の死刑囚が独房に入れられている.ときの為政者のはからいにより,3人のうち1人は(等確率で無作為に選ばれて)釈放されることになり,残り2人は処刑されることになった.囚人たちもこのことを知らされているが,誰が釈放されるかまでは知らされていない.
処刑の数日前,Aは独房を見回りに来た看守に対して,誰が釈放されるか教えてほしいと頼んだが,拒否された.しかし諦めず,
「だったら,BとCのうち処刑される者の名前を1人だけ教えてくれ.3人のうち2人が処刑されるから,BとCのうち少なくとも1人が処刑されるのは確実だ.それなら,そのうちの1人の名前を聞いたところで俺が処刑されるかどうかとは無関係だから,教えてくれてもいいじゃないか.なぁ,こうしよう.Bが釈放されるならCだといってくれ.Cが釈放されるならBだといってくれ.俺が釈放されるなら,BというかCというかはコインを投げて決めてくれればいい.もちろん,いまコインを投げたら俺が釈放だとわかってしまうから,答えは明日教えてくれればいい.お願いだ.頼む.」
といってまんまと看守を説得した.生真面目な看守は翌日,Aのいった通りのやり方で答えを決め,Cが処刑されることをAに教えてくれた.
看守の誤算だったのは,実はAとBの間では密かに情報を伝達しあう方法ができあがっていて,Aは,上で述べた看守とのやりとりの一部始終をBに教えてしまったことであった.
さて,Cが処刑されるという情報を得て,AもBも,自分が釈放される確率が1/3から1/2に上がったと喜んだ.釈放される確率に関するAとBの結論は正しいであろうか.


求めたいものは \(P(Aが釈放|看守がCと答える)\) と \(P(Bが釈放|看守がCと答える)\) 。

とりあえず前者を考えよう。

ベイズの定理から \(\displaystyle~P(Aが釈放|看守がCと答える)~=~\frac{P(Aが釈放)~\cdot~P(看守がCと答える|Aが釈放)}{P(看守がCと答える)}\) となる。

問題から、\(\displaystyle~P(看守がCと答える|Aが釈放)=\frac{1}{2}\) となる(このへんは曖昧さを無くした形なので明確である)。

また、\(\displaystyle~P(看守がCと答える)=\frac{1}{2}\) である(直感でわかるけど自明じゃない。ちゃんと計算しているけど式は省略)。

\(\displaystyle~P(Aが釈放)\) は当然 \(\displaystyle~\frac{1}{3}\) 。

\(\displaystyle~P(Aが釈放|看守がCと答える)~=~\frac{P(Aが釈放)~\cdot~P(看守がCと答える|Aが釈放)}{P(看守がCと答える)}~=~\frac{\frac{1}{3}~\cdot~\frac{1}{2}}{\frac{1}{2}}~=~\frac{1}{3}\)

同じように、

\(\displaystyle~P(Bが釈放|看守がCと答える)~=~\frac{P(Bが釈放)~\cdot~P(看守がCと答える|Bが釈放)}{P(看守がCと答える)}~=~\frac{\frac{1}{3}~\cdot~1}{\frac{1}{2}}~=~\frac{2}{3}\)


今日雑談で話題に出たもので。