3
我正在實施Apriori算法。我需要計算列表 的例如組合我有一個包含 ABC DEF GHI JKL 及其出來放列表應該是這樣的 ABCDEF ABCGHI ABCJKL要查找列表的組合
PLZ告訴我,HW我能得到這樣的輸出.....
我正在實施Apriori算法。我需要計算列表 的例如組合我有一個包含 ABC DEF GHI JKL 及其出來放列表應該是這樣的 ABCDEF ABCGHI ABCJKL要查找列表的組合
PLZ告訴我,HW我能得到這樣的輸出.....
這就是所謂的cartesian product
簡單的方法
var inputs = new [] { "ABC", "DEF", "GHI", "JKL", "MNO" };
var combi = from first in inputs
from second in inputs
select first+second;
靈活的方式(通過Eric Lippert出版)
static IEnumerable<IEnumerable<T>> CartesianProduct<T>(this IEnumerable<IEnumerable<T>> sequences)
{
IEnumerable<IEnumerable<T>> emptyProduct = new[] { Enumerable.Empty<T>() };
return sequences.Aggregate(
emptyProduct,
(accumulator, sequence) =>
from accseq in accumulator
from item in sequence
select accseq.Concat(new[] {item}));
}
使用它像
var combi = new [] { inputs, inputs }.CartesianProduct();
力量來自能夠做
var combi = new [] { inputs, inputs, somethingelse, inputs }.CartesianProduct();
一樣容易