可能重複:
Seat guests based on prioritized parameters實現在表分發客人的算法座位
我一直在掙扎了一段時間,現在這個問題。我無法把頭圍住它。如果有人更聰明,或者有更多的算法和/或數學知識,可以向我解釋我應該如何着手,我會非常感激。
客戶端被安排坐在活動,從餐館到大型場館不同。我客戶的軟件的目標是向客人提供一封短信/電子郵件/紙質票據,表明客人在抵達活動時應該坐在哪裏。 (這應該客人坐在那裏)座椅必須手動控制,一些表是「VIP」等我工作的一種算法,可以讓他確定了一些參數,比如哪些公司做客屬於並幫助用戶客人可以說什麼語言。今天,座位過程是在大型白板上手工製作的(如果活動是1k +客人,則一次一個)。
我的工作就是自動執行此一點,不完全,但「足夠好」。我已經構建了一個可以直觀呈現桌子,椅子(座椅)和客人的應用程序。但是,最重要的功能仍然缺失;以便能夠根據用戶選擇的參數將客人分配到現有的桌子和座位。
參數是每個客人的任意數量的數據,例如:「39歲,男性,Redwine Corp,首席技術官,英語&意大利語」。用戶需要這些(所有客人都有相同的數據字段)並按重要性排序。每個參數也必須設置爲「接近」或「分開」。因此,例如,用戶可以控制所講同一種語言的客人應該彼此相鄰坐,但那些在同一家公司工作應該彼此分開就座。
鑑於此,我即將實現的函數定義如下所示:function getGuestSeatings(tables, seats, guests, parameters)
並返回一個陣列,其中的嘉賓應該坐在哪個席位上。參數tables
,seats
和guests
包含您的信息的選擇,但最重要的可能是X,椅子Y的。這與椅子連接的桌子上的信息相結合,應該足以計算出「足夠好」的客人坐姿配置。當然,parameters
變量包含有關參數優先級的信息,以及該參數是「座位接近」還是「座位分開」參數。
我在問的問題是:什麼算法可以用來提供解決方案,以及如何實現它?數學答案可能沒有用,所以爲了安全起見,我建議使用代碼(JS/C/C#)或僞代碼。
我給你一些更多的信息,可能會或可能不會填補空缺的解決方案(我將與您的評論的反饋在這裏補充):
- 該表可以是橢圓形或長方形
- 如果沒有與標準(優先參數)相匹配的座位配置,那麼我仍然需要一個「足夠好」的解決方案,儘管它不會是最好的。我知道調查所有可能性可能會耗費內存
- 或許懶惰loade d某種基於點的樹系統可以滿足要求嗎?只是調查前景看好的路徑,忽略其他路徑......?
這裏是一個小樣,讓你的軟件背後的想法:
是不是從http://stackoverflow.com/questions/5461227/seat-guests-based-on-prioritized-parameters複製? – Bytemain 2011-05-02 13:47:27
請編輯原文以添加新的細節,而不是張貼副本。 – 2011-05-02 14:07:57