Randomized Algorithms (Spring 2010)/Fingerprinting: Difference between revisions
Jump to navigation
Jump to search
imported>WikiSysop |
imported>WikiSysop |
||
Line 10: | Line 10: | ||
{|border="1" | {|border="1" | ||
|'''Algorithm (Freivalds)''' | |'''Algorithm (Freivalds)''' | ||
*pick a vector <math>r \in\{0, 1\}^n</math> uniformly at random; | |||
*if <math>A(Br) = Cr</math> then return "yes" else return "no"; | |||
|} | |} | ||
Revision as of 12:59, 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