Randomized Algorithms (Spring 2010)/Fingerprinting: Difference between revisions
Jump to navigation
Jump to search
imported>WikiSysop |
imported>WikiSysop |
||
Line 23: | Line 23: | ||
==== Example: Checking polynomial identities ==== | ==== Example: Checking polynomial identities ==== | ||
{|border="1" | |||
|'''Algorithm (Schwartz-Zippel)''' | |||
*pick <math>r_1, \ldots , r_n</math> independently and uniformly at random from a set <math>S</math>; | |||
*if <math>P_1(r_1, \ldots , r_n) = P_2(r_1, \ldots , r_n)</math> then return “yes” else return “no”; | |||
|} | |||
===Evaluating over a random field === | ===Evaluating over a random field === |
Revision as of 12:58, 2 June 2010
Fingerprinting
Evaluating at random points
Example: Checking matrix multiplication
Consider the following problem:
- Given as the input three [math]\displaystyle{ n\times n }[/math] matrices [math]\displaystyle{ A,B }[/math] and [math]\displaystyle{ C }[/math],
- check whether [math]\displaystyle{ C=AB }[/math].
Algorithm (Freivalds)
|
If [math]\displaystyle{ AB=C }[/math] then [math]\displaystyle{ A(Br) = Cr }[/math] for any [math]\displaystyle{ r \in\{0, 1\}^n }[/math], thus the algorithm always returns "yes".
Lemma
|
Example: Checking polynomial identities
Algorithm (Schwartz-Zippel)
|
Evaluating over a random field
Example: Identity checking
Example: Randomized pattern matching
Universal hashing
- Example: checking distinctness