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

תוכן שנמחק תוכן שנוסף
שורה 35:
לדוגמה אם נתונה קבוצה <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> היא אוניברסלית.
 
כדי להימנע מצמצום מודולי שהוא פעולה יחסית איטית במחשב, Dietzfelbinger הציע לקחת את הסיביות המשמעותיות של התוצאה. לדוגמה אם <math>k=32</math>, אם האלמנטים <math>m,n</math>התוצאה בגודל 64 סיביות תוצאת הכפל <math>mx+n</math> תהיה בגודל 64 סיביות. אם, נוטלים רק את 32 הסיביות המשמעותיות, או בניסוח אחר: <math>h_{m,n}(x)=(mx+n) \gg k</math> כאשר <math>\gg</math> הוא הזזה לימין (shift right), אזי הפונקציה <math>h_{m,n}(x)</math> אוניברסלית.
 
<!-- לדוגמה, בהינתן ראשוני <math>p</math> הגדול מ-<math>N</math> והמחלקה <math>\mathcal{H}</math> שממפה ערכים מ-<math>\{0,1,...,p-1\}</math> ל-<math>\{0,1,...,N-1\}</math> שמכילה עבור כל <math>a\in \{0,1,...,p-1\}</math> את הפונקציה: