Я должен реализовать алгоритм, в котором способ, которым я придумал это на бумаге, немного отличается от псевдокода, предложенного в нашем учебнике.Я пытаюсь убедить себя в том, что 2 фрагмента псевдо ниже будут делать то же самое без каких-либо существенных различий в порядке сложности времени, когда приходится реализовывать «содержит» и генерировать все подмножества соответственно в два и один ниже.Я испытываю затруднения, придумывая что-то строгое, что убедит меня.
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
}