我有一羣人。我需要儘可能移動至少有一名同組成員的組。單獨組
實施例:
GroupA - John, Bob, Nick
GroupB - Jack, Nick
GroupC - Brian, Alex, Steve
正如你可以看到組A和組B重疊(它們都包含尼克) 我需要一種算法來設定基作爲GroupA-> GroupC->組B
謝謝
我有一羣人。我需要儘可能移動至少有一名同組成員的組。單獨組
實施例:
GroupA - John, Bob, Nick
GroupB - Jack, Nick
GroupC - Brian, Alex, Steve
正如你可以看到組A和組B重疊(它們都包含尼克) 我需要一種算法來設定基作爲GroupA-> GroupC->組B
謝謝
這取決於您如何完全確定問題 - 具有重疊和成本以及事物。
這可能會降低到Travelling salesman problem - 你可以設置邊權重爲0,如果組i
和j
沒有任何共同之處,以及一些功能f(i,j)
依賴於它們之間的共同項目的數量。然後,你需要一個從一個組到最後一個組的列表,每個組訪問一次,最小化一些重疊功能。
你或許可以(與問候真的取決於你的意思是具體怎麼用的「最遠越好」,競重疊)減少TSP一個版本的這個類似。
不幸的是,這是NP-complete,這意味着你應該開始尋找的東西,是「足夠好」。
此問題不具有唯一的,甚至有意義的解決方案,如果你有任意組。例如,請參閱:
GroupA = {Alice, Bob}
GroupB = {Bob, David}
GroupC = {David, Alice}
同意,但缺乏的解決方案也是一個結果。可能的結果是建議如何改變羣體以獲得解決方案。 – tevch 2010-04-14 21:11:21
謝謝,實際上我可能簡化了任務。 組重複n次。像A組 - 3倍,B族 - 5倍等 ,所以我期待跟蹤組成員這樣就不會去2次連續(至少)。我想我需要考慮通過你的解決方案:) – tevch 2010-04-14 21:52:17
同意,這是哈密爾頓路徑問題。 NP完全問題。 – zsong 2010-04-15 00:38:58