我們有一些以某些關鍵值爲特徵的元素。考慮到大致相同的元素
我們認爲元素按鍵值的降序排列。因此,如果我們有十個具有關鍵值4,5,7,10,2,8,9,10,8.5和9的元素,我們按照它們的關鍵值對元素進行排序,並將具有相同關鍵值的元素放在一起。
同樣,具有相同鍵值的元素,例如, 10將一起考慮,其次是關鍵值爲9的元素,等等。當考慮一個元素,並且它傳遞了某個適應度函數時,它將從列表中移除並且不再被考慮。
現在我們放鬆一些有相同關鍵值的約束條件,並考慮具有大致相等關鍵值的元素。所以,當我們以排序順序說第二個元素在第一個元素的10%以內時,他們應該一起考慮。
因此,現在將具有關鍵值10,10,9,9的元素一起考慮。並且提供了一個鍵值爲9的元素不會在這裏被移除,它將不得不再次被8.5考慮。
我能想到實施上述方案的唯一方法是這樣的,
- 按降序鍵值的順序的元素。
- 對於訂單中的第一個元素,找到10%作爲允許偏差。查找屬於此偏差窗口內的元素。所以,我們在這裏考慮10,10,9,9。
- 如果任何元素通過了適應度函數,則將其從列表中移除。
- 形成下一個窗口並重復循環。
這是我的想法得到驚嚇的地方。我如何從下一個窗口開始形成開始?如果在第一個窗口中已經考慮了排序值10,10,9,9,8.5,8 ...和10,10,9,9,則下一個窗口應該以9開始並且由9,8組成5。
啓動下一個窗口是否是前一個窗口的最後一個值總是足夠的?我嘗試了一些反例,他們都沒有使我的猜想失效。但是,如果兩個9都通過適應度函數並從列表中移除,那麼哪個值開始下一個窗口呢?下一個可用在排序列表中?
所以,我的問題是,
- 是關於與上一個窗口的最後的值(如果它被刪除下一個可用的)正確的開始下一窗口的猜想?
- 整個過程是否有更好的算法?
爲什麼下一個窗口以9開頭?爲什麼不是第二個10? – 2013-05-04 04:24:42
這取決於你的真實問題。現在它看起來像XY問題http://www.perlmonks.org/?node_id=542341 – MBo 2013-05-04 04:27:05
你想寫一個聚類算法嗎?例如http://en.wikipedia.org/wiki/K-means_clustering – 2013-05-04 05:09:12