タグ

ブックマーク / www.computer-shogi.org (1)

  • コンピュータ将棋協会blog » 遅延評価とアルファベータ枝刈り

    少し前にFPGA将棋プログラムを作ってみるブログにて、たらいまわし関数が採り上げられていました。最近ときどき話題にのぼるたらいまわし関数ですが、激指のY山さんのような並列処理のテストよりも、関数型言語による遅延評価やラムダ式の説明などで見かけることが多そうです。ブログ記事でもLispの話は出てきますけれど。 たらいまわし関数に遅延評価(lazy evaluation)を適用すると、 if ( x <= y ) return y; return tarai(tarai(x-1,y,z), tarai(y-1,z,x), tarai(z-1,x,y)); x <= yのときは、zの値にかかわらず関数の値が決まるので、実はzの計算は省略することができます。このような展開がありうることを見越して、真にその値が必要になるまでzの計算を遅らせることで、できるだけ省いてしまおう、というのが遅延評価の考

  • 1