我在相對較小的2維網格上有多個點,這兩個點在兩個維度中進行包裝。座標只能是整數。我需要把它們分成幾組最多N個相近的點,其中N將是一個很小的截止點,我最多可能有10個點。將2d整數座標聚類爲最多N個點的集合
我正在爲一款遊戲設計一個AI,並且我99%確定在所有遊戲作品中使用minimax會給我一個約1次移動的可用前瞻,如果這樣的話。然而,在我們通過大量動作向前看之前,遙遠的棋子應該無法互相影響,所以我想一次將棋局劃分爲N個子棋子。但是,我需要確保一次選擇合理的N個部分,即相互靠近的部分。
我不在乎離羣值是自己留下還是與最疏遠的羣集混雜在一起。打破大於N的自然簇是不可避免的,只需要合理。因爲這用於響應時間有限的遊戲AI,所以我正在尋找儘可能快的算法,並且願意爲了性能而犧牲準確性。
有沒有人有任何建議算法來看待適應? K-means和親屬似乎並不合適,因爲我不知道我想找到多少個羣集,但是我對我想要的羣集有一定的限制。我已經看到一些證據,通過將點捕捉到網格來近似解決方案可以幫助一些聚類算法,所以我希望整數座標使問題更容易。基於分層距離的聚類將很容易適應環繞座標,因爲我只是插入不同的距離函數,並且相對容易限制聚類的大小。我還有其他想法嗎?
我比庫更感興趣的算法,雖然有良好的文件,他們如何工作的圖書館將受到歡迎。
編輯:我最初在提到Fall 2011 AI Challenge的一個條目時提出這個問題,我很遺憾沒有完成。我鏈接的頁面對遊戲具有合理簡短的合理高級描述。
兩個關鍵點是:
- 每個球員都有一個潛在的大量螞蟻
- 每隻螞蟻給出的訂單動輒,移動1格無論是北,南,東或西;這意味着遊戲的分支因子是O(4 螞蟻)。
在比賽中,每輪轉輪也有嚴格的時間限制。我曾經想過用minimax來接近比賽(這些轉折確實是同時發生的,但作爲一種啓發式,我認爲它會好起來的),但是我擔心如果我考慮整場比賽,就沒有時間展望很多動作了立刻。但是,由於每隻螞蟻每轉一圈只能移動一個方格,所以兩隻螞蟻在最短路線上不能分開N個空格,可能會互相干擾,直到我們向前看N/2個移動。
所以我尋找的解決方案是一個很好的方法來分別選擇較小的螞蟻羣和最小化每個羣。我希望這可以讓我更深入地搜索移動樹,而不會失去太多的準確性。但顯然使用非常昂貴的聚類算法作爲省時的啓發式算法毫無意義!
我對這個問題的答案仍然很感興趣,儘管我從技術中學到的東西比這個特定的比賽還要多,因爲它已經結束了!感謝所有迄今爲止的答案。
電網有多大? 10「關閉」是指所有相鄰或有間隙的例如Go棋盤上的組? – denis
網格變化。我相信它達到了幾百個。靠近我的意思是理想情況下彼此更接近而不是分區中的碎片。如果電路板上只有10個單獨的分區可以覆蓋整個電路板。但是,如果有20個團隊,它必須分成兩組,每組10個;不應該有一個組包括一些叢和一些更遠的碎片。 – Ben
我想你應該發佈關於遊戲規則的更多細節,以及這些作品是如何相互影響的。您首先需要創建這些組的假設可能不正確。 – Fantius