How to cite this



Probabilistic Data Structures and Algorithms

Christian Steinruecken, Alexandre K. W. Navarro

Use arrow keys, PgUp, PgDn to move between slides, or press 'dot' to toggle the toolbar.
Typing 'HELP' + return opens a help screen.







How to cite this presentation

@misc{steinruecken2013c,
   title = {Probabilistic Data Structures and Algorithms},
   author = {Christian Steinruecken and Alexandre K. W. Navarro},
   year = {2014},
   month = jan,
   url = {http://www.inference.phy.cam.ac.uk/tcs27/talks/probdata.html},
   howpublished = {Slide presentation. CBL Lab, Engineering Department, University of Cambridge},
}

Why use randomness?


Question:
Why use randomness in a deterministic algorithm?

Why would randomness help to answer a deterministic question?
What does randomness even mean?

Why build machines?


Humans construct machines to make life more predictable:
machines are mainly designed to guarantee a certain behaviour.
(Also: to do things humans can't.)

The most general machine


The most general machine is a computer, capable of simulating any other machine (except for hardware).

Quantum computers may be slightly more general, offering fundamentally different runtime behaviour for certain problems.

Computers aren't perfect


A computer's probability of error isn't zero. Normand (1996)

But computer scientists design software components to zero-error specifications.

The zero error design targets can be costly.

The probability of error


Computers and storage components are engineered to have a low probability of error. (But it's non-zero.) Normand (1996)

The CS illusion: we design software components assuming that the probability of error is zero.

In some cases, this illusion comes at a cost.
Jaynes (1994)

From logic to probability


Probability theory generalises logic.

\[ \p{A \| B} = \frac{\p{B \| A} \mul \p{A}}{ \p{B} } \]
How to cite this

Contents

Key themes of this talk


Randomness

Non-chaoticChaotic
Predictablenon-randompseudo-random
Unpredictableweakly randomstrongly random
A message is random to a recipient if the recipient cannot predict it.

A sequence of random numbers has several distinct properties: These properties are subjective.

Predictability may depend on e.g. a shared secret.
Chaos is the degree to which the sequence is statistically indistinguishable from true randomness.
"objectively random"

Unpredictability

Some sources of unpredictability:
These sources are weakly random.
Use randomness extractors or compression algorithms to get strongly random (unpredictable + chaotic) numbers.
"subjectively random"

Chaotic behaviour

Some sources of deterministic chaos:
Properties of interest: invertability, stochastic properties of the output, resource costs, dependence on a shared secret

Deterministic random numbers generators (PRNGs)

11.001001000011111101101010100010001000010110100011000010001101001100010011000110011000101000101110000000110111000001110011010001001010010000001001001110000010001000101001100111110011000111010000000010000010111011111010100110001110110001001110011011001000100101000101001010000010000111100110001110001101000000010011011101111011111001010100011001101100111100110100111010010000110001101100110000001010110000101001101101111100100101111100010100001101110100111111100001001101010110110101101101010100011100001001000101111001001000010110110101011101100110001001011110011111101100011011110100010011000100001011101001101001100011011111101101011010110000101111111111010111001011011011110100000001101011011111101101111011100011100001101011111110110101101010001001100111111010010110101110100111110010010000010001011111000100101100011111111001100100100100101000011001100101000111101100111001000101101100111101110000100000000001111100101110001010000101100011101111110000010110011000110110100100100000110110000111000101010111010011100110100110100100010110001111111010100011111101001001001100111101011111100000110110010101011101001000111101110010100011101011011001011000011100011000101111001101010110001000001000010101010010101110111001111011010101001010010000011101110000100101101001011001101101011001110000110000110101010011100100101010111100100110000000010011110001011101000110110000001000110010100001100000100001011111000011001010010000010111100100011000101110001101101100111000111011111000111001111001110111001011000001100000001110100001100000001110011011001001111000001110100010111011000000011110100010100011111011010111000101010111011111000001101111010011000101001011001001110111100010101111001011111101101001010101011000000101110001100000111001100101010100100101111100111010101001010101101010111001010001010111010010001001100001100010011000111110100000010100010000000101010111001010001110010110101000101010101010110001000010110110101101001100110001011100001101000001000101000001111010001100111010100001010101001000011010101111011111000111001011101001100100111011001111101110000101000001000101100011011011111011110000101010001010111010100111000101010111010111010000011000001100011111011011001110010111000011111000010110100110111000011110010011000111101010111111010110101110100011001101101100001001001100111101011100011110100011001001010011100000010010100010010101100001100111011100111011100011110100100010011000011010110100101110111001101011111100010010111111111010000001101101100110001010000010000110010011011000011101100000001001110011001111101100100001101010011001000101001000011111001010110001100000010111011110110010000000001100101110111110000100010111010101110111101001100001010111010110110001110111000010011000100011000000101110101101100101000110111000100000100011100010010011111010000001110100111001011010101100110001010000111101101101011011111111001110000011111101000100001000111001001011100000101101000100100000101010010010000100001000000000010001101001110010001111000001001010100111100001111110011011010111100010000111000110011010000100001011110110111010010110110010011010011001110000110010011100011000011010101111010011100010001111000001101010010100011010000011010010110110000101010000101111011010001001011000001111101001110010100010101011010100010011001110100011011011101110111100001011011011000001001101111010001110111110010010111010001110111111000001010000011111101111101100101010100110001010000111110001011001010001110100111001101011110000000101110110011001101100101001011001001111101000001001000011000011101000100010001100111011101000011000011001010001010110111110011111101101000111110110000100101001011100001100111011100010110101111010111110111000000110111101110101110110001000010111000001001000000111001101000000000110100100010010011111010101101100000101101010101001100100111011010011101010100110001000110110001111110111011100000110000110111111111011011111011100100100001010011011000000100011110100110111110100001101011100100100110100000000101000010010010010001101101100001111111010101101001101001001111100011100000010011011000001110101001101110010110010011000000010011001000110110111101100100101110101000111100111011000111101101110100011011110111101111110001111111110010100000001101010110110011110010100110000111011100101110110110011100000101111010000010011000000000001101011101011000001101010010100111110110110010000001001111101100000110001000101111001011100100111101100001000011001011010100010010001100011011010001111101101101111101011110011111001101100010100111011010100010011001110011011001011101011001110110101001011101100011011110110110111111100010100010001111110011011001100001001010100101100110011001000000101000101010001001010111101011110101111010000100110111110111000111101000000000100110111100011001101001010111111010110011000001111001010000000011100011001001011100100101110110011110000001100101110101000010101110100010111001000011101000000111111010010000010110101111100111001101110011101001111111011110110110101010101111001110000001011110100011010011000000010101
10.101101111110000101010001011000101000101011101101001010100110101010111111011100010101100010000000100111001111010011110011110001110110001011100111000101100000111100111000101101001101101001010110101001111000010011011001000001000101000110010000110011111110111100110010010011100111011100111000100100100110110011111011111001011111010010111111100011011000110110001100001100011101011101100011110110100000011011001000000010101011101100010001100001011110101101001111011111000111101101010111010101111111010110010101100001001001000011001111110101000111110101111100000110011011101101000010000101011000110110010101010101001111011110110100011010111100111011010101010111000100110101111001111111010101111100100100110101100110000100111100001100011100001110000011100110100010110111011111100010101001101000100111011010111100111110111111101000011100100001110111110001010110001010000100110110101011011110011100110101001100001010110011001010010011110100100000111010011110010111101010111100000010101011000110000010101100110010010011111011011000011101000100001000101010010100101110110010110010001110001111111011101110010110101011011010101101110110000011010111111101000110100000011101010011110100001010100011110111100011100101001101111101001010111001010110111011011110011101100011011100101011101100011001000010110000011110100111110010001110111000001010011011010111000010011110000000101111110011100001110011011111011111100010111011001100000000110100000001001100110100101000001101000010111101100001100100010111001011111110100111001110100110000101100000111111111110001110010011110001001000110010111011101111001010000001100000111100001111111110001110110001101101001100011011111010110101110011001110111011010111111100101111000010111011000010001000000000010111000101100011101111000110000011011111010001011010000011101100101100011011110011010010100010011011000001101100101110111111111010100010000110101101000010001110000110000100011111110011111101110011011110001101010101101100111011011001010001100100000011010110111011110000110100111101001101111011111001100111000000001000111000011000011011010001101111110010011101011011100110110010010000011101111010110110010001110100100110100100011111011111110111111011100101100110001100101100001111101011000001100001101101100100011100101011101111111000010011000010011000010100010011100100100111000010110100000100110000110010010011101111000100001101111001010001001111010011111101010001000101001011100010110101110100110111010011011001001111001011100010000111100111000111110101010010111111111101011100101011101000001010101011100111001001110111110110100111101110100001101101001010111100010100100010001101100011101000001101101010111100010100100001100101111001101100001101111010101101101000011101101111111001101001000010110101011100010001001000010011100000101010111100110100000110101111111010010100111101110111101111001111000001101100100000111011100011111111010101100111010111110000100101111001000001110100101011011001101001111000011110111100010110111001101111010100101100001100010110010011011111010011111011011110010011000011101001111001001110010110001000010101111011011010101100011111010101111101000010110101101001111101101101000110000111011101100011110011110001110101010101000000110100000000000100100001111111010101011011101001010111111000110001110011000111101001110001001101011100100010000110111011111011010000110001100010101110110101101010000111100000000100101101100111100110100000110010101010010000011101100000000010101001000110000001001100001100010001101101110001110111100011111001011100011010110100000000001110000000100100101001100110011010001100110011110010111000101101111010000110100001110110111001001111010111000101000000000000000011110000101010010011101100111010101001111110011000110100001010110011000000101010000010100100011100110111001110110010010111110111001111100011101100100110110101010110100111111110001000101001000110101101001101101101011010100001010001111101000100000110000010111000011100011010001010000000000111111001011110000011011101100100000010000010111111110101100100101101100100010100000011011011000111101001001110011001110111110100101100001110000101001100101010001110100010001110111010010001000100001011001010111101010011111010100110001110111011010001010100001100101001101101110110001001001100100010010001011110111101110101100100101100011100000011111101010011001011001110001110100011000011001101001100011100000001110000111010110011011010110100000110010101111111110011001111111011000111000110011011000111110101110000111110010011100100011000000100000111110011100010000001010001111111101101001100111111011011010001110111101001010010010001110001111101111010100110101001011010010001000010111000010101010011001000101110110110110110001101000000110110001010000000001110111100001001001000110101000001010001000111100011000010101011111011000001111111111111100111100011101000100110111001111111101100101001111110001100000110000011000000100011110000110101100001111110001110001101101000000000011101111101100110110100011101100011111001001110010010111001010010110010101110110

Uses of randomness

Hash functions


Properties of a good hash function:

Hash functions: there are lots


There are many well-known hash functions.

The use of hash functions is ubiquitous in computer science.
NIST (2012)

Hash functions: example


Hash function demo for string inputs.
Computationally impractical to reverse / invert.


(This demo uses the SHA-256 secure hashing algorithm.)

Cryptographic hash functions: Quiz


Q1: Does applying a hash function twice make it more secure? \(h(h(x))\)
Q2: We could create a new hash function by combining several different hash functions (e.g. by XOR).
Is that a good idea?

Demos

Hash maps / hash tables


Position 012345678910111213141516171819
Value                     

General idea:
Why hash? because of \(\bigO{1}\) look-ups.
Expected problems: hash collisions.

Arrays and hashes


Generalising this idea,
what other structures can be built from arrays with hash-mapped positions?

Whang et al. (1990)

Linear Counter

Estimates the cardinality (number of unique elements) of a set \(\set{X}\).

Operation:
Whang et al. (1990)

Linear Counter: Example


\(x\) \(h(x)\)
Zoubin 4
Carl 2
Zoubin 4
Richard 3
Máté 4
Zoubin 4
Carl 2
Bit array
PositionValueItems mapped
10
21Carl
31Richard
41Zoubin, Máté
50

Duplicates are removed...
... but collisions add errors.

In the example, cardinality\((\set{X}) \approx 3\)
Durand & Flayjolet (2003)

Loglog Counter


itemhashlead-0s
hash( ? ) = ?
Durand & Flayjolet (2003)

Loglog Counter

In a string of random bits:
any bit \( \sim \txtBern(\theta=\textstyle \frac12)\)
# of 0s before first 1 \( \sim \txtGeom(\theta=\textstyle \frac12)\)
Estimates the cardinality (number of unique elements) of a set \(\set{X}\).

Key idea:

Repeat the above with several different hash functions to improve the estimate of \(\setsize{\set{X}}\).
Bloom (1970)

Bloom filter

Bit vector
Set \(\set{X} = \{ \) \(\} \) P(false positive) = 0%

Insertion

\(h_1(x) =\) 1, \(h_2(x) =\) 0
Query
\(\in \set{X}\ ?\) No
\(h_1(x) = \) 1, \(h_2(x) = \) 0
Script adapted from: http://billmill.org/bloomfilter-tutorial/
Bloom (1970)

Bloom filter: Summary

Count-min sketch

min( ? ) = ?
Cormode & Muthukrishnan (2005)

Count-min sketch

Pagh & Rodler (2001)

Cuckoo hashing

Monte Carlo tree search game playing

image/svg+xml 26/49 19/29 7/20 0/8 8/15 11/14 4/7 6/7 3/8 4/12

Monte Carlo tree search game playing

image/svg+xml 26/49 19/29 7/20 0/8 8/15 11/14 4/7 6/7 0/0 3/8 4/12

Monte Carlo tree search game playing

image/svg+xml 26/49 19/29 7/20 0/8 8/15 11/14 4/7 6/7 1/1 3/8 4/12

Monte Carlo tree search game playing

image/svg+xml 27/50 20/30 7/20 0/8 8/15 12/15 4/7 7/8 1/1 3/8 4/12
Browne & al (2012)

Monte Carlo tree search: Summary

Digital Fountain codes: Encoding

image/svg+xml OriginalMessage Encoded 1 0 1 1 1 0 1 =1 =0 XOR 1 XOR 0 1 =1 XOR 1 0 =1 XOR 0 XOR 1 0

Digital Fountain codes: Decoding

image/svg+xml DecodingMessage Encoded 1 ? ? ? ? ? 1 =1 1 0 0 DecodingMessage Encoded 1 ? 1 ? ? ? 1 1 1 0 0 1=
Luby (2002) MacKay (2005)

Digital Fountains: Summary

Luby (2002) MacKay (2005)

Digital Fountains: Operation

Degree distributions
\[\text{IdealSoliton}\left( d \| K \right) = \begin{cases} \frac{1}{K} & d = 1 \\ \frac{1}{d(d-1)} & d = 2, \mdots, K \end{cases} \]
\[\text{RobustSoliton}\left( d \| K,R \right) = \begin{cases} \frac{R}{dK} & d = 1, \mdots,\frac{K}{R} - 1 \\[0.5em] \frac{R \mul \ln \left( R / \delta \right)}{K} & d = \frac{K}{R} \\[0.5em] 0 & d \gt \frac{K}{R} \\ \end{cases} \] with \(R = c \mul \ln(K/\delta)\sqrt{K}\) and \(c \gt 0\).
The quantity \(\delta\) is the allowable failure probability.

Random tree classifier

image/svg+xml
Breiman (2001)

Random forests

Karp & Rabin (1987)

Rabin–Karp pattern matching

Rabin (1980)

Miller–Rabin primality test: Summary

See also Kleinberg (2010) for an entry-level description.
Gallager (1963)

Low-density parity-check codes

Min-cut

image/svg+xml a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e a b c d e
Karger (1993)

Randomized Min-Cut

Sedgewick (1978) Hoare (1962)

Randomized Quicksort

Heaps

image/svg+xml 10 8 5 2 3 6 1 10 5 8 2 1 3 6

Randomized Search Trees and Heaps (Treaps)

image/svg+xml 10 8 5 2 3 6 1 10 5 8 2 1 3 6 58 27 76 99 62 43 18
Seidel & Aragon (1996)

Randomized Search Trees and Heaps (Treaps)

Pugh (1990)

Skip lists

image/svg+xml Level 1 Level 2 Level 3 Level 4 -∞ Head 10 25 30 85 96 +Head
Pugh (1990)

Skip lists: Summary

Metwally et al. (2005)

Stream Summary

image/svg+xml 7 5 2 8 1 3 5 5 81 8 26 3 42 1 63 2 92 0 0 0 0 0 7 Stream ... Monitored elements: Label Occurences Max Error
Metwally et al. (2005)

Stream Summary

image/svg+xml 7 5 2 8 1 3 5 5 81 3 42 1 63 2 92 0 0 0 0 7 Stream ... Monitored elements: Label Occurences Max Error 8 26 0 Detach label withleast occurences 7 27 26 Attach new label Update estimatives +1
Metwally et al. (2005)

Stream Summary

Recap: use of randomness


Use chaotic behaviour of systems to build efficient components.


Many of these data structures and algorithms underlie much of the software infrastructure supporting our daily lives.

Arrays with hash-mapped positions


StructureArray-typeHash fn'sValue-type
Hashtable linear 1 pointer to linked list
Linear counter linear 1 single bit
Bloom filter linear \(k\) single bit
Count-min sketch 2-dim. \(k\) integer count
yours :-) ? ? ?

Recommended reading

Probability and Computing: Randomized Algorithms and Probabilistic Analysis. Mitzenmacher & Upfal, 2005.
Entry-level textbook (non-free, few references).
Probabilistic Data Structures for Web Analytics and Data Mining. Blog post. Ilya Katsov (2012)
Nice motivation and presentation of various probabilistic data structures, including Bloom filter, count-min sketch, loglog counter, stream summary and others.
Other presentations:
Random forests: one tool for all your problems (Neil Houlsby & Novi Quadrianto, 2013)
Fountain Codes (Gauri Joshi et al, 2010)

References

Edwin Thompson Jaynes.  Probability Theory: The Logic of Science, 2003. Book, ed. G. Larry Bretthorst. Cambridge University Press. ISBN 978-0-52159-271-0. [PDF] Eugene Normand.  Single event upset at ground level, 1996-12. In IEEE Transactions on Nuclear Science, Vol. 43, No. 6, pp. 2742-2750. IEEE. ISSN 0018-9499. [PDF] Anand Rajaraman; Jure Leskovec; Jeffrey D. Ullman.  Mining of massive datasets. Book, Version 1.3. [PDF] Michael Mitzenmacher; Eli Upfal.  Probability and Computing: Randomized Algorithms and Probabilistic Analysis, 2005. Book. Cambridge University Press. ISBN 978-0-521-83540-4. Lenore Blum; Manuel Blum; Michael Shub.  A Simple Unpredictable Pseudo-Random Number Generator, 1986-05. In SIAM Journal on Computing, Vol. 15, No. 2, pp. 364-383. SIAM. ISSN 0097-5397. Makoto Matsumoto; Takuji Nishimura.  Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator, 1998-01. In ACM Transactions on Modeling and Computer Simulation, Vol. 8, No. 1, pp. 3-30. ACM. ISSN 1049-3301. [PDF] John von Neumann.  Various Techniques used in Connection with Random Digits, 1951. In National Bureau of Standards, Applied Math Series, Vol. 11, pp. 36-38. ISSN 1049-4685. Yadolah Dodge.  A Natural Random Number Generator, 1996-12. In International Statistical Review / Revue Internationale de Statistique, Vol. 64, No. 3, pp. 329-344. International Statistical Institute (ISI). [download] NIST.  Secure hash standard, 2012-03-06. Federal Information Processing Standards (FIPS), Publication 180-4. For the earliest version, see NIST (1995). [PDF] NIST.  Secure hash standard, 1995-04-17. Federal Information Processing Standards (FIPS), Publication 180-1. [Web] Geoff Pike; Jyrki Alakuijala.  CityHash: fast hash functions for strings, 2012. Presentation Slides. [PDF] Burton Howard Bloom.  Space/time trade-offs in hash coding with allowable errors, 1970-07. In Communications of the ACM, Vol. 13, pp. 422-426. ACM Press, New York, NY, USA. ISSN 0001-0782. Rasmus Pagh; Flemming Friche Rodler.  Cuckoo hashing, 2001. In Algorithms – ESA 2001, Lecture Notes in Computer Science, Vol. 2161, ed. Friedhelm Meyer auf der Heide. Springer Berlin Heidelberg. ISSN 0302-9743. ISBN 978-3-540-42493-2. [PDF] Ruslan Salakhutdinov; Geoffrey Hinton.  Semantic hashing, 2009. In International Journal of Approximate Reasoning, Vol. 50, No. 7, pp. 969-978. Elsevier. ISSN 0888-613X. [PDF] Ilya Katsov.  Probabilistic Data Structures for Web Analytics and Data Mining, blog post in Highly Scalable Blog, 2012-05-01. [website] Graham Cormode; S. Muthukrishnan.  An improved data stream summary: the count-min sketch and its applications, 2005-02-04. In Journal of Algorithms, Vol. 55, No. 1, pp. 58-75. ISSN 0196-6774. Elsevier. Kyu-Yong Whang; Brad T. Vander-Zanden; Howard M. Taylor.  A Linear-Time Probabilistic Counting Algorithm for Database Applications, 1990-06. In ACM Transactions on Database Systems, Vol. 15, pp. 208-229. ACM Press, New York, NY, USA. [PDF] M. Durand; P. Flajolet.  Loglog Counting of Large Cardinalities 2003. In Lecture Notes in Computer Science, Vol. 2832, pp. 605-617. Elsevier. [PDF] Cameron Browne; Edward Powley; Daniel Whitehouse; Simon Lucas; Peter I. Cowling; Phillip Rohlfshagen; Stephen Tavener; Diego Perez; Spyridon Samothrakis; Simon Colton.  A Survey of Monte Carlo Tree Search Methods 2012-03. In IEEE Transactions on Computational Intelligence and AI in Games, Vol. 4, N. 01. pp. 1-49. IEEE. [PDF] William Pugh.  Skip Lists: A Probabilistic Alternative to Balanced Trees, 1990-06. In Journal of the ACM, Vol. 33, No. 6, pp. 668-676. ACM, New York, NY, USA. ISSN 0004-5411. [PDF] David J. C. MacKay.  Information Theory, Inference, and Learning Algorithms, 2003. Book. Cambridge University Press. ISBN 978-0-521-64298-9. [PDF] David J. C. MacKay.  Digital Fountain Codes, 2003. Chapter 50 in Information Theory, Inference, and Learning Algorithms, pp. 588-596. Cambridge University Press. ISBN 978-0-521-64298-9. [PS.GZ] Leo Breiman.  Random Forests, 2001-10. In Machine Learning, Vol. 45, No. 1, pp. 5-32. Kluwer Academic Publishers, Amsterdam, Netherlands. ISSN 0885-6125. [PDF] Richard M. Karp; Michael O. Rabin.  Efficient randomized pattern-matching algorithms, 1987-03. In IBM Journal of Research and Development, Vol. 31, No. 2, pp. 249-260. IBM. ISSN 0018-8646. [PDF] Bobby Kleinberg.  The Miller-Rabin Randomized Primality test 2010-05-05. In Lecture Notes. Cornell University. USA. [PDF] Shafi Goldwasser; Silvio Micali; Charles Rackoff.  The knowledge complexity of interactive proof systems 1989-02. In SIAM J. Computation. Vol 18. No. 1. pp. 186-208. SIAM. USA. [PDF] Robert G. Gallager.  Low Density Parity Check Codes 1963-01. In Transactions of the IRE Professional Group on Information Theory. Vol. IT-8 pp. 21-28. USA. [PDF] Charles Anthony Richard Hoare.  Quicksort, 1962. In The Computer Journal, Vol. 5, No. 1, pp. 10-16, ed. Eric N. Mutch. Oxford University Press. ISSN 0010-4620. [PDF] Robert Sedgewick.  Implementing Quicksort Programs, 1978-10. In Communications of the ACM, Vol. 21, No. 10, pp. 847-857. ACM Press, New York, NY, USA. ISSN 0001-0782. [PDF] Michael Luby.  LT codes, 2002. In 43rd Annual IEEE Symposium on Foundations of Computer Science, pp. 271-280. ISSN 0272-5428. ISBN 978-0-7695-1822-0. [PDF] David J. C. MacKay.  Fountain codes, 2005. In IEE Proceedings - Communications, Vol. 152, No. 6, pp. 1062-1068. ISSN 1350-2425. [download]
See also: MacKay (2003, ch50)
Michael O. Rabin.  Probabilistic algorithm for testing primality, 1980. In Journal of Number Theory, Vol. 12, No. 1, pp. 128-138. Elsevier. ISSN 0022-314X. [PDF] Donald Ervin Knuth; James H Morris, Jr; Vaughan R Pratt.  Fast pattern matching in strings, 1977. In SIAM Journal on Computing, Vol. 6, No. 2, pp. 323-350. SIAM. [PDF] Robert S. Boyer; J. Strother Moore.  A fast string searching algorithm, 1977. In Communications of the ACM, Vol. 20, No. 10, pp. 762-772. ACM Press, New York, NY, USA. ISSN 0001-0782. [PDF] Neil Houlsby; Novi Quadrianto.  Random Forests: one tool for all your problems, 2013-07-04. Slide Presentation, Machine Learning RCC. [PDF] Raimund Seidel; Cecilia R. Aragon.  Randomized Search Trees 1996. In Algorithmica. Vol. 16 pp. 464-497. USA. [PDF] Ahmed Metwally; Divyakant Agrawal; Amr Abbadi.  Efficient Computation of Frequent and Top-k Elements in Data Streams, 2005. In Database Theory - ICDT 2005, Lecture Notes in Computer Science, Vol. 3363, pp. 398-412, ed. Thomas Eiter; Leonid Libkin. Springer Berlin Heidelberg. ISSN 0302-9743. ISBN 978-3-540-24288-8. [Web] [PDF] David Karger.  Global Min-cuts in RNC and Other Ramifications of a Simple Min-cut Algorithm, 1993. In Proceedings of the 4th Annual ACM/SIGACT-SIAM Symposium on Algorithms. pp.21-30 SIAM. Austin, Texas, USA. ISBN 0-89871-313-7. [PS] Gauri Joshi; Joong Bum Rhim; John Sun; Da Wang.  Fountain codes, 2010-12-00. Slide Presentation, MIT. [PDF]