3 回答

TA貢獻2003條經驗 獲得超2個贊
你這個問題,本質上是個兩集合求距離關系的問題。因為評分數據相對是比較固定的。首先要解決的是任意兩個不同集合中元素之間距離的問題。 哈。
一種簡單的方法是查表法。例如20km * 20km的區域,按照50m x 50m為網格,則有400x400的網格點(物理空間),不同網格點之間的路徑距離做表待查詢。實際上有些網格點可以優先剔除。
以上說的是,當明確A集合的一個元素位置和B集合的一個元素位置,求兩者之間距離的問題。
余下是確實誰與誰的關系。哈。說人話就是,究竟基于用戶計算出最優司機的列表還是基于司機計算出最可服務的用戶列表。
這個原則上哪個集合元素少,就用哪個集合作為主對象,例如用戶遠比司機上,則基于用戶,計算出針對每個用戶的最優司機列表。但實際設計需要根據數據和其他方面的問題綜合考慮。
不失一般性的給出一個算法思路。
以更大區域相對(50x50),構成一個司機子集。這些子集之間原則上是可以存在重復元素的(子集覆蓋的物理空間存在重疊)。然后以新用戶為主對象,在其落于子集中再做分析計算,確定基于用戶的最優司機列表。
上述設計,主要考慮,司機的信息相對已知,容易實現基于空間做預分類。哈。

TA貢獻1779條經驗 獲得超6個贊
這個問題好像聽說過,比如滴滴打車,用的是haskell?好像是這門語言。
它的后臺算法是把全國的地圖分成無數個六邊形,里面包含了精度、緯度等等很多信息,然后根據算法即時提取范圍內的司機。。。。。。然后。。。。。

TA貢獻1831條經驗 獲得超10個贊
有兩個關鍵指標,距離和評分,要實現匹配算法,你需要指定這兩個參數的權重,寫出一個公式根據這兩個參數得出一個匹配分數??梢院笈_實時的計算匹配數,你開始匹配的時候只管排序獲取就行了。也可以在分配的時候全部計算一遍,但這樣耗時太大,建議距離和評分變化之后立即計算評分。
- 3 回答
- 0 關注
- 705 瀏覽
添加回答
舉報