いくつかの重要な値によって特徴付けられるいくつかの要素があります。
キー値の降順で要素を検討します。したがって、キー値が 4、5、7、10、2、8、9、10、8.5、9 の 10 個の要素がある場合、要素をキー値で並べ替え、キー値が等しい要素をまとめて検討します。
そのため、キー値が等しい要素 (10 など) はまとめて考慮され、その後にキー値 9 を持つ要素が続きます。要素が考慮され、特定のフィットネス関数を通過すると、リストから削除され、考慮されなくなります。
ここで、キー値が等しいという制限を少し緩和し、キー値がほぼ等しい要素をまとめて考えます。したがって、ソートされた順序で 2 番目の要素が最初の要素の 10% 以内にあると言うとき、それらは一緒に考慮されます。
そのため、キー値が 10、10、9、9 の要素が一緒に考慮されるようになりました。そして、キー値 9 を持つ 1 つの要素がここで削除されない場合、8.5 で再度検討する必要があります。
上記のシナリオを実装する唯一の方法は、次のようなものです。
- キー値の降順で要素を並べ替えます。
- 順序の最初の要素について、許容偏差として 10% を見つけます。この偏差ウィンドウ内に収まる要素を見つけます。したがって、ここでは、このウィンドウで 10、10、9、9 を検討します。
- いずれかの要素がフィットネス関数を通過する場合は、リストから削除します。
- 次のウィンドウを形成し、サイクルを繰り返します。
ここが私の考えが行き詰まるところです。次のウィンドウの開始から開始を形成するにはどうすればよいですか? ソートされた値が 10、10、9、9、8.5、8 ... であり、10、10、9、9 が最初のウィンドウで考慮された場合、次のウィンドウは 9 で始まり、9、8 で構成される必要があります。 、5。
前のウィンドウの最後の値で次のウィンドウを開始するだけで常に十分ですか? いくつかの反例を試しましたが、どれも私の推測を無効にしませんでした。しかし、両方の 9 がフィットネス関数を通過し、リストから削除された場合、次のウィンドウを開始する値はどれでしょうか? 並べ替えられたリストで次に利用できるものは?
それで、私の質問は、
- 前のウィンドウの最後の値 (および削除された場合は次の値) で次のウィンドウを開始することに関する推測は正しいですか?
- プロセス全体のためのより良いアルゴリズムはありますか?