これまでに質問されたことがある場合は申し訳ありませんが、何を探しているのかよくわかりません。また、質問を正しく組み立てるためのドメイン知識が不足しているため、回答を見つけるのがかなり難しくなります。
とにかく、私はPythonで論文からシミュレーテッドアニーリングアルゴリズムを実装しようとしています(IBM J. Res。Dev。、2001; 45(3/4); 545)。著者は、C ++で実装したアルゴリズムの概要を明確に示していますが、定義の最後に次のように述べています。
「繰り返される潜在的に高価なメモリ割り当てを回避するために、SとS *は、好ましくない突然変異の後に初期状態に戻ることができる単一のオブジェクトとして実装されます。」
(SおよびS *は、最適化されているものの元の状態と段階的に変更された状態を表します)。
以前のより単純なバージョンでは、各状態を保持するために2つのリストを使用しましたが、彼のコメントは、そのようなアプローチはメモリ効率が悪いことを示唆しているようです。したがって、私の質問は次のとおりです。
- 彼のコメントはC++固有であり、Pythonでは引き続きリストを使用でき、心配する必要はありませんか?
- それについて心配する必要がある場合、どのPythonデータ構造を使用する必要がありますか?元の属性と変更された属性、および変更を行うためのメソッドを使用してクラスを定義するだけですか、それとも他に何か足りないものがありますか?
- 私はまだ2つの状態が必要なので、クラスでそれをラップすると、クラス表現をよりコンパクトにするためにメモリが割り当てられる方法が変わりますか?