好吧...所以我有點棘手(至少對我來說)。尋找最大有效組合數的算法?
我有簡單的對象列表,我需要弄清楚如何找到一個組合,使得使用的最大數量。這些對象的每個類都有一個名稱屬性(字符串),一個屬性(List)用於他們想要綁定的其他元素名稱,還有一個屬性(List)用於其他元素的名稱不喜歡結合。
如果一個元素被添加到集合,其中該特定元素「喜歡」已經在其它元件的集合中的一個(或多個),則添加的元素集合中返回一個得分的1對每個項目,它喜歡。同樣,對於添加元素不喜歡的集合中的每個其他元素,都會返回-1的分數。將所有的元素,最終收集之後,比分爲每個必須> = 0
我怎麼會去尋找元素的組合(S)我可以使用,將返回最大的集?如果多個組合返回相同數量的元素,則應返回所有可能的組合。
我希望是有道理的......另外,我使用C#(.NET 4.0),但可以使用任何編程語言,我只需要弄清楚一個道理。
由於提前,
桑尼
是否有對象的有限集合,或者你正在尋找對象的具體範圍是多少?一個對象可以在一個集合中重複嗎? – jball
此外,是否爲每件商品預先確定並固定了「喜歡」和「不喜歡」列表,並且它們對於所有商品的長度是否相同?如果長度不同,您可以嘗試按照流行度對項目進行排序,然後再添加它們。 –
關係是對稱的嗎?我的意思是如果A喜歡B,是否意味着B喜歡A,如果A不喜歡B,是否意味着B不喜歡A? –