特異値を a のキーとしてハッシュできることを知っていますdict
。たとえば5
、 のキーの 1 つとしてハッシュできますdict
。
現在、値の範囲をハッシュする必要があるという問題に直面しています。
基本的に、これを行うにはより高速な方法が必要です。
if 0 <= x <= 0.1:
# f(A)
elif 0.1 <= x <= 0.2:
# f(B)
elif 0.2 <= x <= 0.3:
# f(C)
elif 0.3 <= x <= 0.4:
# f(D)
elif 0.4 <= x <= 0.5:
# f(E)
elif 0.5 <= x <= 0.6:
# f(F)
ここで、x
はfloat
任意精度のパラメータです。
私が考えることができる最速の方法はハッシュですが、ここに問題があります:(0.1, 0.2)
キーとして使用できますが、それでも O(n) ランタイムがかかり、最終的にはelif
s のスルーよりも良くありません (私はキーを反復し、確認するかどうかを確認しますkey[0] <= x <= key[1]
)。
ハッシュテーブルをチェックして取得できるように、値の範囲をハッシュする方法はあり0.15
ます#execute B
か?
そのようなハッシュが不可能な場合、これの実行時間を改善するにはどうすればよいでしょうか? 線形ランタイムが十分に速くないほど大きなデータセットを扱っています。
編集:チーケンの答えに応えて、間隔が規則的であると想定できないことに注意する必要があります。実際のところ、そうではないことはほぼ保証できます。
コメントでのリクエストに応えて、遺伝的アルゴリズムでフィットネスベースの選択を実装しようとしてこれを行っていることを言及する必要があります。アルゴリズム自体は宿題ですが、具体的な実装は実験データを生成するための実行時間を改善することだけです。