タグ

programmingとmathに関するhatayanorgのブックマーク (2)

  • 病みつきになる「動的計画法」、その深淵に迫る

    数回にわたって動的計画法・メモ化再帰について解説してきましたが、今回は実践編として、ナップサック問題への挑戦を足がかりに、その長所と短所の紹介、理解度チェックシートなどを用意しました。特に、動的計画法について深く掘り下げ、皆さんを動的計画法マスターの道にご案内します。 もしあなたが知ってしまったなら――病みつきになる動的計画法の集中講義 前回の『アルゴリズマーの登竜門、「動的計画法・メモ化再帰」はこんなに簡単だった』で動的計画法とメモ化再帰を説明しましたが、前回の説明ではまだ勘所をつかめていない方がほとんどでしょう。そこで、これらを完全にマスターするため、今回はもう1つ具体例を挙げながら練習したいと思います。 どういった問題を採用するかは悩みましたが、非常に有名な「ナップサック問題」を取り上げて説明します。 ナップサック問題とは以下のような問題です。 幾つかの品物があり、この品物にはそれぞ

    病みつきになる「動的計画法」、その深淵に迫る
  • BeInteractive! [x = x + (d - x) / 2.0 を時間に基づく関数に変換する]

    BetweenAS3 でやっぱり物理的なイージングをサポートしたい。基的には時間に基づくトゥイーンしかサポートしていないんだけど、「時間から現在値を算出する関数」と「目的地に着くまでにかかる時間を算出する関数」が導出できれば、組み込むことができる。というわけで、色々やっていたら、なんとなくできた。 今回は、誰もが一度は書いたことがあるであろう、フレームごとに現在値から目的地まで距離の半分ずつ近づく (ゼノンのパラドックスのみたいな) アレについて考えてみる。元コードはこんなイメージ。 function enterFrameHandler():void { x = x + (d - x) / 2.0; } まあ見覚えあるよね。x が現在値で d が目的地。 まずはじめに、この関数を一般化するところから。開始値を b として、係数 (上のコードでは 2.0 になってる値) を m としたとき

  • 1