פונקציית גיבוב – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
שורה 33:
כלומר ההסתברות שתהיה התנגשות (שהפונקציה <math>h</math> תמפה שני ערכים לאותה כניסה) נמוכה או שווה ל-<math>1/N</math> וכן אומרים שהפונקציה <math>h</math> 'כמעט אוניברסלית' אם היא מקיימת <math>\textstyle \Pr[h(x)=h(y)]\le \frac{2}{N}</math>.
 
לדוגמה אם נתונה קבוצה <math>A=\{0,1,...,a-1\}</math> עם <math>a</math> אלמנטים והקבוצה <math>B=\{0,1,...,b-1\}</math> עם <math>b</math> אלמנטים ונתון מספר ראשוני <math>p\ge a</math> והפונקציה <math>g</math> שממפה אלמנטים מ-<math>Z_p</math> לקבוצה <math>B</math> (מסיבות של יעילות רצוי ש-<math>g</math> תהיה השארית מחילוק ב-<math>b</math> אם <math>b=2^k</math>, אין צורך לבצע חילוק בפועל אלא נוטלים את <math>k</math> הסיביות הפחות משמעותיות של האלמנט). בוחרים שני אלמנטים <math>m</math> ו-<math>n</math> מתוך <math>Z_p</math> כאשר <math>m\ne0</math>. אז הפונקציה
:<math>h_{m,n}(x)=((mx+n)\text{ mod }p)\text{ mod }b</math> היא
אוניברסלית.
 
כדי להימנע מפעולת הצמצום המודלורי שהיא פעולה לא יעילה במונחי מיחשוב אפשר לבצע את הטריק הבא: אם <math>p=2^j-1</math> עבור <math>j</math> כלשהו (למשל <math>2^{11}-1</math> הוא מספר ראשוני), אם <math>x</math> ניתן לייצוג על ידי <math>2j</math> סיביות אזי קיימים <math>x_1,x_2<2^j</math> כך שמתקיים <math>x= 2^jx_1+x_2</math> במילים אחרות <math>x_1</math> הוא <math>j</math> הסיביות המשמעותיות ביותר של <math>x</math> ו-<math>x_2</math> הוא <math>j</math> הסיביות הפחות משמעותיות. היות ש-<math>2^j\equiv 1 \ (\text{ mod }p)</math> מתקיים: