|
|
Proof:
|
|
|
|
|
|
St = ∅; ***** Notice the change: S ---> S-mwl while ( not end of stream S-mwl ) do { I = next item set; // St = current summary // St+1 = summary after processing the next item set St+1 = ∅; // New summary information if ( St == ∅ ) { if ( A ⊆ I ) { St+1 = [(t+1, 1)]; // One border } } else { if ( A ⊆ I ) { /* ----------------------------------------- An addition of A will either: 1. extend the last border region 2. create a new border It will not remove existing border ----------------------------------------- */ if ( ar == t - pr + 1 ) { // Situation: .... A A A A A St+1 = St; Update: ar = ar + 1; // extend last border } else { // Situation: .... A A A A O St+1 = St ⊕ [(t+1), 1]; // create new border } } else { /* ----------------------------------------- An addition of not-A may cause a border to disappear... ----------------------------------------- */ St+1 = St; // Original set of border... // Remove borders that do not satisfy the property (click here) i = r; while ( i > 1 ) { ai ai-1 + ai if ( ------------- ≤ ------------- ) t - pi + 1 t - pi-1 + 1 { ai-1 = ai-1 + ai; // Merge the counts in 2 consecutive segments delete entry (pi, pi) from S |
|
|
|