2017-04-25 39 views
1

所以我目前在一個高級數據結構類,並瞭解了一點關於圖。今年夏天,我被要求幫助寫一個算法來匹配室友。現在對於我的數據結構類,我寫了一個城市路徑圖,並執行一些排序和初始化算法,我很奇怪圖表可能是一個開始使用我的室友匹配算法的好地方。室友匹配算法

我在想,我們的數據庫可能只是一個文本文件,沒什麼太花哨。然而,我可以初始化圖中的每個節點作爲學生,每個學生對更多的學生都會有一個無定向的邊緣(對於不想與另一個同室友的學生來說,沒有優勢,聯誼會也不希望重複室友)。現在,我還可以根據特殊興趣改變邊緣權重。

上面列出的一切都很簡單,我不認爲我會遇到任何實施它的問題。但這是我的問題:

_我應該如何更新共同興趣領域?我應該從物理調查開始,然後回到文本文件並手動更新邊緣的重量嗎?還是應該創建一個跟蹤匹配興趣的字段?

順便說一句,一切都將用Java編寫。

回答

0

你試圖設計的是叫做雙方匹配。幸運的是,與其他二分配匹配算法不同,您不需要花哨的圖算法和複雜的實現。這是非常接近的Stable Marriage Problem和令人驚訝的是有非常有效甚至更簡單的算法。

如果您有興趣,我可以分享我的穩定婚姻問題的C++實現。