2012-04-17 14 views
3

私はPythonを使用して、不確実性のない2人のボードゲーム(チェスなど)のさまざまなダイナミックプログラミングアプローチを評価したいと考えています。正確でヒューリスティックなソリューションに興味があります。私の「評価」は、それぞれのアプローチを試し、私が生成するテストケースでどのようにうまくいくかを観察することから成ります。ボードゲーム用のダイナミックプログラミングソリューションの迅速な開発のためのライブラリ

私は非常に柔軟なライブラリや、さまざまなアプローチをできるだけ迅速かつ容易にコード化、評価(およびデバッグ)するのに役立つフレームワークを探しています。

私は漸近的なパフォーマンス(例えば、O(n log n)O(n^2)など)のみを気にします。だから私は効率的なデータ構造が必要ですが、私は定数因子のパフォーマンスヒットは気にしません。

ライブラリを習得するために時間を費やしていれば大丈夫です。

私はフロントエンドを必要としません。私はコマンドラインインターフェイスを使用します。

私は並列/分散プログラミングのサポートは必要ありません(ただし、使用可能であれば、私は拒否しません)。

私は、Python 3をサポートするためにライブラリを必要としています。

このようなサポートを提供するライブラリはありますか?

+1

「推奨事項」はかなり自由であり、ポーリングや意見を求めるので、「不可能」な理由を選択するのが嫌です。また、Python 3を必要とするようにストレッチしています。 – agf

+0

私の質問の要点を失うことなく、それを建設的にする方法はありますか?私はそれを弱い試みを試みた(質問の更新された最後を参照)。 – max

+0

私はそうは思わない。スタックオーバーフローの問題ではありません。あなたは良い質問をたくさんしています。だから私は考えていなかったことを考え出す機会を与えたいと思っていました。しかし、この質問は勧告のためのただ一つの要求であるように思われるので、私は投票に近づくつもりです。 – agf

答えて

2

私は動的プログラミングに特有のライブラリについて認識していません。しかし、動的プログラミングは基本的にメモ機能を使用して計算機能を高速化しており、Python 3.2以降ではlru_cache()と呼ばれる滑らかな関数memoizationデコレータが利用できます。

これはfunctoolsにあります。これは、面白いものがいっぱいであるため、間違いなく勉強する必要があります。

http://docs.python.org/dev/library/functools.html

@functools.lru_cache(maxsize=100, typed=False)

あなたは、Pythonのいくつかの以前のバージョンでこれを必要な場合は、ウェブ上で利用可能なさまざまなメモ化のレシピがあります。

+0

ありがとう!私はPython 3.3を使用していますので、これは完璧です!残念ながら、私はこれ以上のものが必要です:(私はまた、状態空間を表す暗黙的なグラフをさまざまな方法で定義してトラバースするサポートを必要とし、トラバーサルを導くさまざまなスコア関数を使用します。少なくとも '@ lru_cache'を使用してください。 – max

関連する問題