0
我将实现一种算法,其中我在纸上认为出来的方式与我们教科书中建议的伪代码略有不同。我试图说服自己,当下面的两个和一个分别实现“包含”和所有子集的生成时,下面的伪代码的两个片段将按照时间复杂度的顺序执行相同的操作。我很难提出一些能说服我的严格的事情。伪代码的两个简单部分的等价
T和A是有限集合I的子集的集合。没有集合或子集是空的,并且每个集合都有一个称为“count”的“字段”。
片段一:
For-each t in T do {
A_t = A intersected with the set of all non-empty subsets of t
For-each a in A_t do {
a.count++
}
}
片段二:
For-each a in A do {
a.count = count(a, T)
}
这里计数由
count(a, T) {
c = 0
For-each t in T do {
if (t contains a) {
c++
}
return c
}
contains函数做什么?如果t是一个子集,则返回true。 – dfb 2011-02-25 18:43:16