|
|
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
|
|
|
|