比方說,我們有一組S
其中包含幾個子集:生成一組(而不是冪)的所有「獨特的」子集
- [a,b,c]
- [a,b]
- [c]
- [d,e,f]
- [d,f]
- [e]
讓我們也說,S包含六個獨特的元素:a, b, c, d, e
和f
。
我們如何才能找到S
所有可能的子集,其中包含S
的每個唯一元素?
的函數的結果/方法應該是這樣的:
[[a,b,c], [d,e,f]];
[[a,b,c], [d,f], [e]];
[[a,b], [c], [d,e,f]];
[[a,b], [c], [d,f], [e]].
是否有任何的最佳做法或任何標準實現這一目標的方式?
我將不勝感激一個僞代碼,Ruby或Erlang的例子。
很好用!但是我發現它掛在任何等於或大於10件物品的東西上。任何想法爲什麼?運行分區([1,2,3,4,5,6,7,8,9,10])掛起紅寶石 – mbdev 2012-03-15 21:39:29
涉及的集合變得非常快--10個物品陣列中有115975個分區,仍然只有幾秒鐘在我的機器上。如果你在irb中運行它,那麼它會嘗試並顯示結果 - 這不是一個好主意! – 2012-03-15 22:02:44
它實際上掛在rails s中,並在RubyMine的rspec下運行。我在運行Lion的Mac上。我的問題實際上比這更專業,所以我把它發佈在這裏:http://stackoverflow.com/questions/9732944/get-all-possible-subsets-preserving-order – mbdev 2012-03-16 06:34:27