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();
一样容易