Patent ID: 7536403

Claim:
A method of incrementally maintaining a stable, bounded, uniform random sample S from a dataset R, in the presence of arbitrary insertions and deletions of an item t to the dataset R, and without accesses to the dataset R, the sample S having a maximum size of M items, the method comprising the steps of: initializing to zero a counter c 1 for uncompensated deletions that have been applied to sample S; initializing to zero a counter c 2 for uncompensated deletions that have not been applied to sample S; while transactions comprising insertions and deletions are applied to dataset R, each transaction having a transaction type selected from a group consisting of an insertion transaction and a deletion transaction, performing steps A through C: A. receiving a transaction applied to dataset R for an item t; B. if the received transaction is an insertion transaction, then if the total number c 1 +c 2 of uncompensated deletions is zero, then performing the steps of including the item t into the sample S with probability equal to the value of M divided by the maximum of size |R| and M, wherein |R| is the size of the dataset R just after insertion of item t, adding item t to sample S if |S|<M, and replacing a randomly selected item in sample S by item t if |S|>=M, otherwise if the total number c 1 +c 2 of uncompensated deletions is non-zero, then performing the steps of inserting item t into the sample S with probability equal to the value of c 1 /(c 1 +c 2 ), decrementing by 1 the value of counter c 1 if the item t is inserted into sample S, and decrementing by 1 the value of counter c 2 if the item t is not inserted into sample S; and C. if the received transaction is a deletion transaction, then if the deleted item t is in the sample S, then performing the steps of removing the deleted item t from S and increasing the value of the counter c 1 by one, otherwise, performing the step of increasing the value of the counter c 2 by one.