haskell-ja > Archives > 2010/01/08

2010/01/08 00:58:11 UTCcut-sea
#
mini-MaxみたいのをHaskellだとどうやるんだろうと思って検索したら。。。
#
http://www.sampou.org/haskell/ipsj/v46n12/TicTacToe.hs
#
IPSJの記事にあったのね。
#
あ、勘違い。
#
知りたかったのはα-β法のほうだ
#
minimax' :: ITree -> Int
minimax' = bmx (-max_sval) max_sval
  where
    max_sval = 2^31 - 1		-- as Infinity

bmx :: Int -> Int -> ITree -> Int
bmx a b (Node x []) = (a `max` x) `min` b
bmx a b (Node x ts) = cmx a b ts

cmx :: Int -> Int -> [ITree] -> Int
cmx a b []     = a
cmx a b (t:ts) = if a' == b then a' else cmx a' b ts
		   where a' = - bmx (-b) (-a) t
#
これか
#
まんまだった
2010/01/08 02:50:04 UTC[1..100]>>=pen
#
「なぜ関数プログラミングは重要か」の最後の方に出てくるのα-β法でしたっけ。
2010/01/08 02:56:54 UTCcut-sea
#
あ、そうかも。三目並べやってますね。
#
omit,minleqあたりが枝刈りしてるっぽい
#
つか、概要に書いてあった
#
概要

ソフトウェアがどんどん複雑になるにつれ、それを上手く構造化することがま すます重要になっている。上手く構造化したソフトウェアは書きやすく、デバッ グしやすく、かつ、将来のプログラミングコストを引き下げるために再利用可 能な部品群を提供するものである。従来の言語では問題を部分化する方法につ いて概念的な限界がいくつかある。関数型言語はこれらの限界を押し広げるも のである。この論文では、とくに関数型言語の二つの特徴、モジュール化に大 きく貢献する高階関数と遅延評価を披露する。例のように、リストとツリーを 操作し、いくつかの数値計算アルゴリズムをプログラムし、また、α-β発見 法(ゲームをするプログラム中でもちられる人工知能由来のアルゴリズムのひと つ)の実装をおこなう。モジュール性はプログラミング成功の鍵であるから、関 数型言語は実世界にとって極めて重要である。
#
ぐは
#
「(前略)また、α-β発見 法(ゲームをするプログラム中でもちられる人工知能由来のアルゴリズムのひと つ)の実装をおこなう。(後略)」
#
なんとなく思ったんだけどさ、nwnさんが翻訳したモナドチュートリアルの話を踏まえて考えると、α-β法で接木するモナドが作れそうじゃない?
2010/01/08 07:35:54 UTCcut-sea
#
nobsunいます?
#
オライリーからカレンダーもらいました?
2010/01/08 07:45:07 UTCnobsun
#
もらってない。
2010/01/08 08:25:44 UTCcut-sea
#
http://paina.kahua.org/party?code=RWH201001
#
へい!やるよ
2010/01/08 09:35:20 UTCnwn
#
kazu さんから新しくもらった指摘をマージしたら α-βモナド書いてみよう
2010/01/08 21:44:09 UTCikegami
#
Typeclassopedia 的には、α-βは Applicative でいいんじゃねって直感がわいたけど、ソースで示せって話ですね、すみません