generateSubsets function

List<List<FPNode>> generateSubsets(
  1. List<FPNode> nodes
)

Generates all non-empty subsets for a given list of FPNodes.

This is used in the single-path optimization to efficiently generate all frequent itemsets from a linear tree structure.

Implementation

List<List<FPNode>> generateSubsets(List<FPNode> nodes) {
  final subsets = <List<FPNode>>[];
  final n = nodes.length;

  // Iterate from 1 to 2^n - 1 to get all non-empty subsets
  for (int i = 1; i < (1 << n); i++) {
    final subset = <FPNode>[];
    for (int j = 0; j < n; j++) {
      if ((i >> j) & 1 == 1) {
        subset.add(nodes[j]);
      }
    }
    subsets.add(subset);
  }

  return subsets;
}