תרגול 8. Hash Tables

Similar documents
יסודות מבני נתונים. תרגול :9 ערימה - Heap

Practical Session No. 13 Amortized Analysis, Union/Find

חזרה, מיונים פולינה לוצקר

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

ASP.Net MVC + Entity Framework Code First.

מבוא לתכנות ב- JAVA תרגול 7

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

Depth-First Search DFS

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

פרק מיון וחיפוש - לשם מה? הגדרה

מושגים בסיסיים תלמידים והורים יקרים,

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

םימתירוגלאו םינותנ ינבמ המירעו תינס, חמ רות רקצול הנילופ

Reflection Session: Sustainability and Me

DNS פרק 4 ג' ברק גונן מבוסס על ספר הלימוד "רשתות מחשבים" עומר רוזנבוים 1

תרגול 11 תור עץ חיפוש בינארי

מבוא למחשב בשפת Matlab

מבני נתונים תרגיל 4 פתרון

פרק יעילות היעילות של קריטריון המקום עוסק בנושאים דומים לאלה של קריטריון הזמן. אנו נתרכז בחישובי היעילות של מדד הזמן.

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

A R E Y O U R E A L L Y A W A K E?

מבני נתונים תרגיל 5 שאלות לגבי העבודה יש להעלות בפורום של הקורס או בשעות הקבלה של המרצה או המתרגל האחראיים על העבודה.

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

Homework 10. Theoretical Analysis of Service Stations in Steady State. Priority Queues.

תרגול מס' 01 אלגוריתם דיניץ

7 קרפ תויגול,תויטמתירא תודוקפ הזזהו

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

לצפייה בפתרון בווידאו לתרגילים שבחוברת, כנסו ל "סטטיסטיקה והסתברות" בשאלון 802 שבאתר

לאחר מכן נוכל לכתוב תוכניות שכוללות אלגוריתמים

במבוא מורחב למדעי המחשב בשפת פייתון

בוחן בתכנות בשפת C בצלחה

כפתור רדיו בחירה בודדת מתוך רשימת אפשרויות

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

הקיטסיגול הרבחה יעדמל בלושמה גוחה

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

קובץ שאלות פתורות אביב 2102

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

מבוא למחשב בשפת פייתון

סיכום מבני נתונים )שיעור( מרצה: אלכס סמורודניצקי. להערות: אמיר נווה

מערכים Haim Michael. All Rights Reserved.

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

QUANTUM COMPUTATION. By Uri Kanonov

סיבוכיות זמן ריצה רדוקציות ושלמות ב- NP המחלקה P הגדרה: = המחלקה NP הגדרה: שפה סגירות שפות הגדרה: רדוקציה

פתרון בעיית צביעת הגרפים בעזרת אלגוריתם גנטי ואלגוריתמי Beam-Search

מדדי מרכז הגדרה: מדדים סטטיסטיים המשקפים את הנטייה המרכזית של ההתפלגות מדדי מרכז מרכז ההתפלגות

תרגול נושאי התרגול כעץ חיפוש בינארי : העץ הימני. Inorder(x) 1) if x NULL 2) then Inorder(left(x)) 3) print key[x] 4) Inorder(right(x))

הגדרה: משפחת עצים תקרא מאוזנת אם (n.h(t) = O(log

תורשכ ירפס לכ ץבוק " ב י קלח יללכ רעש

חטיבת הביניים "יונתן" עבודה לקיץ באנגלית לבוגרי כיתה עבודה נעימה!

תכנון אלגוריתמים, אביב 2010, תרגול מס' 7 סריקה לעומק, מיון טופולוגי, רכיבים קשירים היטב. time time 1

Patents Basics. Yehuda Binder. (For copies contact:

למבחן ביסודות מדעי המחשב דוגמא

Information The marks for questions are shown in brackets. The maximum mark for this paper is 50. You must not use a dictionary.

הרצאה מספר 10 נושאים לשיעור זה: סיכום הפקודות עד לשיעור זה *** )S-Q( = מקומות בהם ניתן לשלב תתי שאילתות

תכנות בטוח חלק ב ' מאת עידו קנר

interface Student {tag: Student, name: string; age: number;} const makestudent = ( name: string, age: number ) : Student =>

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב

A Long Line for a Shorter Wait at the Supermarket

Information The marks for questions are shown in brackets. The maximum mark for this paper is 40. You must not use a dictionary.

מדינת ישראל משרד החינוך המזכירות הפדגוגית אגף מדעים הפיקוח על הוראת המתמטיקה

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

Summing up. Big Question: What next for me on my Israel Journey?

FULL ARTICLE ACTIVE DIRECTORY

State Pattern מימוש מכונת מצבים (FSM) מבוא בעיה תמיכה ועדכונים עדכון מס' 48 מאי 2002

סוטמה ףא ןוויכ תיתימא ריוא תוריהמ סוטמה ביתנ תיעקרק תוריהמ

Theories of Justice

ל"תוכנה" שכותבים, כמו פונקציה זו, קוראים "קוד"

מספר ת"ז: יש לסמן את התשובה הטובה ביותר בתשובון. לא יינתן ניקוד על סימון תשובה בטופס הבחינה או במחברת הבחינה.

Genetic Tests for Partners of CF patients

מדור מערכות מידע פיננסיות

פרק היררכי

דיאלוג מומחז בין מרטין בובר וקרל רוג'רס

4...Informed Search Strategies Partial Order Planning 29...Hierarchical Decomposition Reenforcement Learning 40...Unsupervised Learning

אוניברסיטת בן גוריון בנגב

מבוא לחישוב נומרי הכנה לקראת המבחן

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

SPSS 10.0 FOR WINDOWS

הנדסה-לאחור: שרשרת העלייה של Windows 7 חלק שני - VBR

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

Ron Famini, Lior Bar,

B E N D, S T R A I G H T E N, B A L A N C E

Yetzer Shalom: Inclinations of Peace

מדריך למשתמש התקנה עצמית

Chofshi.

מבחן מועד ב' אנא קיראו היטב את ההראות שלהלן:

מבוא לאסמבלי מאת אופיר בק חלקים נרחבים ממאמר זה נכתבו בהשראת הספר "ארגון המחשב ושפת סף" אשר נכתב ע"י ברק גונן לתוכנית גבהים של משרד החינוך.

THINKING ABOUT REST THE ORIGIN OF SHABBOS

תרגיל בית מספר 6 )אחרון!( - להגשה עד 21 ביוני )יום ראשון( בשעה ::225

1.1. הקדמה (דיסק). מדריכי. (מחיצות) Link

Transcription:

תרגול Hash Tables ds-ps

חידה מהשיעור הקודם בכל השקים המטבעות שוקלים ורק בשק אחד המטבעות שוקלים.. מותר לנו לבצע שקילה אחת בלבד! איך נדע מה השק הקל יותר? שקים עם מטבעות ds-ps

מה היה לנו דיברנו על מבני נתונים מוכרים תור, מחסנית, מערך וכו' פגשנו את הצורך בעצים וראינו סוגים שונים שלהם עץ חיפוש בינארי, B-tree,AVL וכו' 3 ds-ps

מה יהיה לנו מה היה לנו רע עם עצים? אני רוצה להגיע מהר לכל אחד מהתאים אולי מערך? HASH TABLE ds-ps

- הגדרות Hash Tables Hash Function A hash function h maps keys of a given type into integers in a fixed interval [,m-] Uniform Hash Pr h key = i = m hash table., where m is the size of the Hash Table A hash table for a given key type consists of: Hash function h: keys-set [,m-] Array (called table) of size m ds-ps

- הגדרות Hash Tables Dictionary ADT The dictionary ADT models a searchable collection of keyelement items, and supports the following operations: Insert Delete Search ds-ps

Hash Tables שיטות לגיבוב Direct Addressing K is a set whose elements' keys are in the range [,m-]. Use a table of size m and store each element x in index x.key. Disadvantage: when K << m waste of space Chaining h(k) = k mod m (This is an example of a common hash function) If h(k) is occupied, add the new element in the head of the chain at index h(k) ds-ps

Hash Tables שיטות לגיבוב Direct Addressing K is a set whose elements' keys are in the range [,m-]. Use a table of size m and store each element x in index x.key. Disadvantage: when K << m waste of space דוגמא: נרצה לשמור תלמידים בכיתה לפי תעודות זהות Chaining h(k) = k mod m (This is an example of a common hash function) If h(k) is occupied, add the new element in the head of the chain at index h(k) ds-ps

שאלה נתון: טבלת גיבוב עם =m ופונקציות גיבוב h (k) = k mod m h (k) = + (k mod (m )) הכניסו את האיברים הבאים לפי הסדר )משמאל לימין(,, 3,,, 33,,, 3 לטבלת גיבוב מבוססת שרשור,.h(k) = h (k) עם פונקציית גיבוב.a h k היא הפונ' שאיתה עובדים. * ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k) = k mod 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h()= 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h()= 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h()= 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h()= 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h(3)= 3 ds-ps

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h(3)= 3 ds-ps 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod 3 ds-ps 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h()= 3 ds-ps 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h()= 3 ds-ps 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h()= 3 3 ds-ps 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod h(33)= 3 ds-ps 33 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod 3 h()= ds-ps 33 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod 3 h()= ds-ps 33 3

שאלה,, 3,,, 33,,, 3 Chaining h(k)=k mod 3 h(3)= ds-ps 33 3 3

- שיטות נוספות Hash Tables Open Addressing רעיון בסיסי אם תא כלשהו מלא, חפש תא אחר עד שתמצא תא ריק. מחיקה נסמן בדגל כל תא שבו מחקנו ערך. למה?! ds-ps

- שיטות נוספות Hash Tables Open Addressing Linear Probing: h k, i = h k + i mod m, i m h (k) - common hash function First try h(k,) = h'(k), if it is occupied, try h(k,) etc.. Advantage: simplicity Disadvantage: clusters, uses Θ(m) permutations of index addressing sequences Double Hashing: h(k,i) = (h (k) + i h (k))mod m i m- h hash function h step function First try h(k,) = h (k), if it is occupied, try h(k,) etc. Advantage: less clusters, uses Θ(m*m) permutations of index addressing sequences ds-ps

שאלה.h(k)=h (k) m= נתון: טבלת גיבוב עם ופונקציות גיבוב h (k) = k mod m h (k) = + (k mod (m )) הכניסו את האיברים הבאים לפי הסדר )משמאל לימין(,, 3,,, 33,,, 3 לטבלת גיבוב מבוססת שרשור, עם פונקציית גיבוב לטבלת גיבוב מבוססת,linear probing עם אותה פונקציית גיבוב. לטבלת גיבוב מבוססת,double hashing עם פונקציית גיבוב ראשית (k) h ופונקציית צעד (k).h.a.b.c 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 33 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h(3)= 3 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h(3)= 3 פנוי 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 3 ds-ps תפוס תפוס תפוס פנוי

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 ds-ps תפוס תפוס פנוי

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h(33)= 3 3 ds-ps תפוס תפוס תפוס תפוס תפוס פנוי

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h(33)= 3 3 פנוי 33 ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 33 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h()= 3 3 33 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h(3)= 3 3 33 ds-ps תפוס פנוי

שאלה,, 3,,, 33,,, 3 Linear Probing h(k)=k mod h(3)= 3 3 33 פנוי 3ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod Step Function h (k)=+ (k mod ) 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod Step Function h (k)=+ (k mod ) 3 ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) 3 ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) 3 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) 3 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod Step Function h (k)=+ (k mod ) 3 ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) 3 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) 3 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod Step Function h (k)=+ (k mod ) 3 ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h (3)= Step Function h (k)=+ (k mod ) 3 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h (3)= Step Function h (k)=+ (k mod ) 3 3 פנוי 3 ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod Step Function h (k)=+ (k mod ) 3 3 ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) h ()= 3 3 ds-ps תפוס תפוס פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) h ()= 3 3 פנוי ds-ps

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) h ()= 3 3 ds-ps תפוס פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) h ()= 3 3 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h (33)= Step Function h (k)=+ (k mod ) h (33)= 3 3 ds-ps תפוס תפוס פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h (33)= Step Function h (k)=+ (k mod ) h (33)= 3 3 33 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) h ()= 3 3 33 ds-ps פנוי תפוס

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h ()= Step Function h (k)=+ (k mod ) 3 3 33 ds-ps פנוי

שאלה,, 3,,, 33,,, 3 Double Hashing h (k)=k mod h (3)= Step Function h (k)=+ (k mod ) h (3)= 3 3 3 3 33 ds-ps תפוס תפוס תפוס פנוי תפוס

שאלה 3 Chaining Linear Probing Double Hashing 33 טבלת תוצאות: 3 3 3 3 33 3 33 3 3 ds-ps

Hash Tables Load Factor α α = n, Hash table with m slots that stores n m elements (keys) Average (expected) Search Time Open Addressing unsuccessful search: O( + α ) successful search: O( + α ln α ) Chaining unsuccessful search: Θ ( + α) successful search: Θ ( + α ) = Θ ( + α) ds-ps

Hash Tables הערות חשובות: היעילות בטבלאות גיבוב נמדדת בזמן הממוצע, לא הגרוע ביותר. ה load factor מייצג את מספר המפתחות בממוצע שמקבלים את אותו ערך בפונקציית הגיבוב. דוגמא : נסתכל על טבלת גיבוב עם שרשור הfactor load הינו האורך הממוצע של שרשרת בטבלה אם נסתכל במקרה הגרוע ביותר, כל המפתחות מקבלים אותו ערך גיבוב ומושמים באותו תא, ולכן נוצרת שרשרת באורך n. לכן, במקרה הגרוע ביותר, זמן החיפוש של מפתח בטבלה הינו hash).(θ n + time to compute על כן, ברור שאיננו משתמשים בטבלאות גיבוב עקב הביצועים בזמן הגרוע ביותר, וכשננתח זמן בפעולות גיבוב נחשב לפי המקרה הממוצע.

שאלה בשאלה השתמשנו, עבור טבלת גיבוב עם h (k)=k בפונקציית גיבוב ראשית mod,m= ופונקציית צעד.h (k)= k mod + a. האם ניתן היה להשתמש בפונקציה h כפונקציית הצעד ובפונקציה כפונקציית הגיבוב? h ds-ps

h (k)=k mod h (k)=k mod + שאלה h.a האם ניתן היה להשתמש בפונקציה h כפונקציית הצעד ובפונקציה כפונקציית הגיבוב? תשובה: לא, כיוון ש( k ) h עלול לקבל ערך, ואם התא כבר תפוס לא נוכל למקם את הערך החדש. לדוגמא, אם נכניס את הערך, ולאחר מכן ננסה להכניס את הערך, לא נוכל. בעיה נוספת היא ש h לא מקבלת את הערך. ds-ps

שאלה בשאלה השתמשנו, עבור טבלת גיבוב עם h (k)=k בפונקציית גיבוב ראשית mod,m= ופונקציית צעד.h (k)=k mod + a. האם ניתן היה להשתמש בפונקציה h כפונקציית הצעד ובפונקציה כפונקציית הגיבוב? h.b מדוע חשוב שתוצאת פונקציית הצעד וגודל הטבלה יהיו זרים? כלומר, אם h step הינה פונקציית הצעד, מדוע חשוב לדרוש?k לכל gcd(h step (k),m) = ds-ps

שאלה k d b. מדוע חשוב שתוצאת פונקציית הצעד וגודל הטבלה יהיו זרים? כלומר, אם h step הינה פונקציית הצעד, מדוע חשוב לדרוש?k לכל gcd(h step (k),m) = תשובה: אם (k),m)=d> gcd(h step אז ההשמה של m אפשרית רק ב מהתאים. לכן, ייתכן שלא נוכל למצוא תא פנוי עבור מלאה. k, אפילו אם הטבלה אינה ds-ps

שאלה 3 הדגמה: נניח ש,m=.h step (k)=,h (k)= אז (k),m)=,gcd(h step לכן ניתן להכניס את k רק ב = תאים אפשריים. לא אפשרי אפשרי לא אפשרי אפשרי לא אפשרי אפשרי לא אפשרי אפשרי ds-ps

שאלה דרכים להבטיח (k),m)= gcd(h step לכל מפתח: גודל הטבלה הוא מספר ראשוני, ו h step (k)<m לכל k.. גודל הטבלה הוא חזקה של ),(m = ופונקציית. הצעד מחזירה רק תוצאות אי-זוגיות. ds-ps

שאלה 3 נתונות שתי קבוצות של מספרים שלמים.m n כאשר,T={t,t,,t n } ו S={s,s,,s m } הציעו אלגוריתם דטרמיניסטי לבדיקה האם S T בעל זמן ריצה יעיל במקרה הגרוע ביותר..a 3 ds-ps

שאלה 3 נתונות שתי קבוצות של מספרים שלמים.m n כאשר,T={t,t,,t n } ו S={s,s,,s m } S T הציעו אלגוריתם דטרמיניסטי לבדיקה האם a. בעל זמן ריצה יעיל במקרה הגרוע ביותר. קוד: תשובה: ראשית, נמיין את T. לאחר מכן נעבור על האיברים בS ונחפש אותם בT באמצעות חיפוש בינארי. זמן ריצה: n) O(nlog n+mlog n)=o(nlog Subset(T,S,n,m) T:=sort(T) for each s j S found := BinarySearch(T, s j ) if (!found) return "S is not a subset of T" return "S is a subset of T" ds-ps

שאלה 3 נתונות שתי קבוצות של מספרים שלמים.m n כאשר,T={t,t,,t n } ו S={s,s,,s m } S T הציעו אלגוריתם דטרמיניסטי לבדיקה האם a. בעל זמן ריצה יעיל במקרה הגרוע ביותר. b. הציעו אלגוריתם בעל זמן ריצה יותר טוב בממוצע, ע"י שימוש בטבלת גיבוב בגודל m. ds-ps

שאלה 3 b. הציעו אלגוריתם בעל זמן ריצה יותר טוב בממוצע, ע"י שימוש בטבלת גיבוב בגודל m. תשובה: ראשית, נכניס את ערכי T לטבלת גיבוב )מבוססת שרשור(. לאחר מכן, נחפש עבור כל ערך בS אם הוא כבר נמצא SubsetWithHashTable(T,S,n,m) for each t i T insert(ht, t i ) for each s j S found = search(ht, s j ) if (!found) return "S is not a subset of T" return "S is a subset of T" בטבלת הגיבוב. קוד: ds-ps

שאלה 3 b. הציעו אלגוריתם בעל זמן ריצה יותר טוב בממוצע, ע"י שימוש בטבלת גיבוב בגודל m. ניתוח זמן הריצה הממוצע: הכנסת הערכים של T לטבלת הגיבוב - n n O = O אם S T במצב זה ישנם m חיפושים מוצלחים. לכן זמן m + α n הריצה הוא = m + = O m + n m = O n אם S T במקרה הגרוע ביותר ישנם (-m) חיפושים מוצלחים והחיפוש האחרון אינו מוצלח. לכן באופן דומה, הריצה הוא זמן m + α + + α = O(n) ds-ps

שאלה 3 נתונות שתי קבוצות של מספרים שלמים.m n כאשר,T={t,t,,t n } ו S={s,s,,s m } S T הציעו אלגוריתם דטרמיניסטי לבדיקה האם a. בעל זמן ריצה יעיל במקרה הגרוע ביותר. b. הציעו אלגוריתם בעל זמן ריצה יותר טוב בממוצע, ע"י שימוש בטבלת גיבוב בגודל m. c. בהינתן פילטר בלום בגודל r ו k פונקציות גיבוב S T הראו כיצד ניתן לבדוק אם h,h,,h k :U [r] בזמן O(n) במקרה הגרוע ביותר. מהי ההסתברות לקבלת false positive במקרה זה? ds-ps

Hash Tables Bloom Filter A Bloom filter model consists of a bit-array of size m (the bloom filter) and k hash functions h, h,..., h k. It supports insertion and search queries only: Insert at O(k) Search(x) in O(k), with e k n m false positive e k n m = e kn m k probability of getting a ds-ps

Bloom Filter ניתן לחשב שהמספר האופטימלי של פונקציות ערבול עבור m.k = m איברים( הוא ln n )מספר ביטים( ו- n )מספר ln m n וההסתברות לטעות בשאילתה תהיה: ds-ps

Bloom Filter ניתן לחשב שהמספר האופטימלי של פונקציות ערבול עבור m.k = m איברים( הוא ln n )מספר ביטים( ו- n )מספר ln m n וההסתברות לטעות בשאילתה תהיה: ds-ps

Bloom Filter ניתן לחשב שהמספר האופטימלי של פונקציות ערבול עבור m.k = m איברים( הוא ln n )מספר ביטים( ו- n )מספר ln m n וההסתברות לטעות בשאילתה תהיה: ds-ps

Bloom Filter ניתן לחשב שהמספר האופטימלי של פונקציות ערבול עבור m.k = m איברים( הוא ln n )מספר ביטים( ו- n )מספר ln m n וההסתברות לטעות בשאילתה תהיה: 3 ds-ps

Bloom Filter ניתן לחשב שהמספר האופטימלי של פונקציות ערבול עבור m.k = m איברים( הוא ln n )מספר ביטים( ו- n )מספר ln m n וההסתברות לטעות בשאילתה תהיה: ds-ps

Bloom Filter ניתן לחשב שהמספר האופטימלי של פונקציות ערבול עבור m.k = m איברים( הוא ln n )מספר ביטים( ו- n )מספר ln m n וההסתברות לטעות בשאילתה תהיה: ds-ps

Bloom Filter ניתן לחשב שהמספר האופטימלי של פונקציות ערבול עבור m.k = m איברים( הוא ln n )מספר ביטים( ו- n )מספר ln m n וההסתברות לטעות בשאילתה תהיה: ds-ps

שאלה 3 c. בהינתן בלום פילטר בגודל r ו k פונקציות גיבוב :U [r] h,h,,h k הראו כיצד ניתן לבדוק אם S T בזמן O(n) במקרה הגרוע ביותר. מהי ההסתברות לקבלת false positive במקרה זה? פתרון: ראשית, נכניס את כל האיברים בT לבלום פילטר. לאחר מכן, עבור כל איבר בS נבדוק אם הוא נמצא בבלום פילטר. זמן ריצה case( :)worst n θ k בבלום פילטר, לכן חיפושים הכנסות וm n + m θ k ds-ps = m + n θ = θ(n)

שאלה 3 ניתוח סיכוי לpositive :false עבור כל s, S נוכל לקבל תשובה שגויה רק אם s T. כלומר, ייתכן שהבלום פילטר יזהה ש s T גם כאשר זה לא המצב, בהסתברות. e kn r k האלגוריתם מחזיר שגיאה רק אם טעה בכל האיברים ב S\T וענה עליהם נכון. כלומר, אם נסמן,x= S\T אז האלגוריתם מחזיר שגיאה בהסתברות לחילופין, אם נסמן בהסתברות. e kn r kx,t= S T. e kn r k(m t) אז האלגוריתם טועה ds-ps

שאלה נתון מערך של מספרים ממשיים A וערך כלשהו X. עליכם למצוא האם קיימים שני ערכים במערך שסכומם הוא X. a. הראו כיצד ניתן לעשות זאת ב( n O(nlog במקרה הגרוע ביותר פתרון: נמיין את המערך. עבור כל ערך A[i] במערך, נבצע חיפוש בינארי במערך עבור הערך.X-A[i] סה"כ זמן ריצה: (n O(nlog ds-ps

שאלה נתון מערך של מספרים ממשיים וערך כלשהו X. עליכם למצוא האם קיימים שני ערכים במערך שסכומם הוא X..a.b הראו כיצד ניתן לעשות זאת ב( n O(nlog במקרה הגרוע ביותר. כיצד ניתן לעשות זאת ב( O(n זמן ממוצע? ds-ps

שאלה כיצד ניתן לעשות זאת ב( O(n זמן ממוצע? b. פתרון: בוחרים פונקציית גיבוב אוניברסלית h מקבוצת פונקציות גיבוב אוניברסליות H.. מכניסים את ערכי המערך לטבלת גיבוב בגודל n מבוססת שירשור ע"י פונקציית הגיבוב h.. עבור כל ערך A[i] במערך, נבדוק האם X-A[i] נמצא בטבלת הגיבוב..3 כפי שהראתם בשיעור, ע"י שימוש בפונקציית גיבוב אוניברסלית, זמן החיפוש של ערך בטבלת הגיבוב הינו ()O, ללא תלות בהתפלגות הערכים במערך. לכן זמן הריצה של האלגוריתם הינו O(n) בממוצע. ds-ps

Consistent hashing - שאלה בעיה: יש לנו כמות גדולה של גושי מידע ואנחנו רוצים לאחסן אותם בענן. כדי ליצור פיזור שווה, מבוצעת פונ' hash על כל גוש מידע שלפיה נקבע איזה שרת יטפל במידע. במצב בו שרת מפסיק לעבוד, כל גושי המידע שלו מועברים באופן שווה לשרתים הנותרים. כמובן שכל המידע שטופל ע"י השרתים האחרים נשמר כפי שהיה. הציעו דרך למימוש הבעיה. ds-ps

Consistent hashing - שאלה מימוש : נגדיר את גודל טבלת הhash שלנו לפי השרתים. לכל שרת יהיה תא וכל המידע שיכנס לתא שלו, יוכנס לשרת זה בענן. דוגמא מה יקרה אם שרת אחד יפסיק לעבוד? פונ' ה hash שלנו, שהסתמכה על גודל הטבלה עכשיו צריכה להשתנות, ומה עם כל המידע שהיה עד כה? 3 ds-ps

Consistent hashing - שאלה דוגמא: Server Server Server 3 Server Server Chunk 3 Chunk Chunk Chunk Chunk Chunk Chunk Chunk Chunk ds-ps

Consistent hashing - שאלה דוגמא: Server Server Server 3 Server Server Chunk 3 Chunk Chunk Chunk Chunk Chunk Chunk Chunk Chunk מה קורה אם Server 3 מפסיק לעבוד? ds-ps

Consistent hashing - שאלה דוגמא: Server Server Server Server Chunk 3 Chunk Chunk Chunk Chunk Chunk Chunk Chunk Chunk מה קורה אם Server 3 מפסיק לעבוד? לאן מעבירים את המידע? האם משנים את פונקציית ה- Hash? ds-ps

Consistent hashing - שאלה - השרתים והמידע מימוש : נגדיר Consistent hashing יוגרלו לאותה טבלת.hash ds-ps

Consistent hashing - שאלה מימוש : כל שרת ימופה ע"י מספר פונ' במספר מקומות בטבלה. hash כל גוש מידע ימופה לתא אחד בטבלה. כך שהוא יופיע כל שרת יאחסן את המידע מימין לו עד לשרת הבא. ds-ps

Consistent hashing - שאלה מימוש : Chunk is mapped to server Chunk is mapped to server 3 (the array is circular) Chunk 3 is mapped to server Chunk is mapped to server Chunk is mapped to server Chunk is mapped to server Chunk is mapped to server 3 Chunk is mapped to server ds-ps

Consistent hashing - שאלה מימוש : אם שרת מספר מפסיק לעבוד, אז כל השרתים האחרים ימשיכו להחזיק את המידע שלהם בנוסף למידע החדש שנוסף להם. ds-ps

Consistent hashing - שאלה מימוש : Chunk is mapped to server Chunk is mapped to server 3 (the array is circular) Chunk 3 is mapped to server Chunk is mapped to server 3 Chunk is mapped to server Chunk is mapped to server 3 Chunk is mapped to server 3 Chunk is mapped to server ds-ps

שאלה hash Rolling Rolling hash שיטה לחיפוש מהיר של חלקי כלשהו. data לדוגמא: חיפוש של מילים בודדות בתוך משפט שלם. ב-,Rolling hash נגדיר חלון בגודל קבוע. נזיז את החלון על הdata כך שבכל צעד תו אחד יוצא ותו אחד נכנס. נחשב את פונ' הגיבוב של החלון בכל צעד. I'm still, I'm still Jenny from the block ds-ps

שאלה Hash Rolling HELLO MY NAME IS INIGO MONTOYA Window size: דוגמה: Hash values example: hash on HELLOSM = hash on ELLOSMY = hash on LLOSMYS = hash on LOSMYSN = 3 3 ds-ps

שאלה Hash Rolling HELLO MY NAME IS INIGO MONTOYA Window size: דוגמה: Hash values example: hash on HELLOSM = hash on ELLOSMY = hash on LLOSMYS = hash on LOSMYSN = 3 hash on OSMYSNA = hash on SMYSNAM= hash on MYSNAME= ds-ps

שאלה hash Rolling בדרך כלל משתמשים בחלון בגודל כלומר, byte וכל שני חלונות סמוכים שונים בתו אחד בהתחלה ובתו אחד בסוף. ביצוע פונ' hash של מודולו על = bits,כלומר, על מספרים עולה הרבה מאוד! לכן נרצה להיעזר בחלון הקודם על מנת לחשב את החלון הנוכחי. בואו נראה איך עושים זאת יעיל ds-ps

שאלה hash Rolling דוגמא: נניח שנתון המספר 3 עם חלון בגודל ופונקצית -hash.h(x)=x mod יש חלונות:.3,3 ראשית נחשב את החלון 3..h(3)= 3 + + 3 + = 3 איך נקבל את החלון הבא? 3 = 3 3 + h 3 = h 3 3 + = 3 3 + mod ds-ps

שאלה hash Rolling דוגמא: נניח שנתון המספר 3 עם חלון בגודל ופונקצית.h(x)=x mod -hash 3 3 + mod = 3 3 + mod = 3 3 mod + mod = 3 mod mod mod mod + mod ds-ps

שאלה hash Rolling דוגמא: נניח שנתון המספר 3 עם חלון בגודל ופונקצית.h(x)=x mod -hash 3 3 + mod = 3 3 + mod = 3 3 mod + mod = 3 mod mod mod mod + mod קל לחשב ידוע תמיד אותו חישוב ds-ps

שאלה hash Rolling a והתו במקום.x הוא w בטקסט נתון, התו הראשון הוא ה- 3 הוא b. גודל החלון הוא. פונ' הhash היא.mod z ערך הhash של החלון הראשון מהו הערך של החלון w? ds-ps

שאלה hash Rolling פתרון: a הוא הbyte הגדול ביותר במספר בינארי בגודל ביט. b הוא הbyte הקטן ביותר במספר בינארי בגדול ביט. W כאשר = aw Wb ds-ps

שאלה hash Rolling פתרון: aw Wb כאשר = W w = w a + b w mod z = ((w a ) + b) mod z = (w a + b) mod z = ((w mod z) ( mod z) (a mod z) ( mod z) + b mod z) mod z = X ( mod z) (a mod z) ( mod z) + b mod z) mod z ds-ps

שאלה hash Rolling = X ( mod z) (a mod z) ( mod z) + b mod z) mod z פתרון: X ידוע מהחישוב הקודם. a,b, קל מאוד לחשב מספרים קטנים. mod z זהו מספר שיחזור עליו בכל חישוב של חלון לכן ניתן לחשב אותו בהתחלה, פעם אחת בלבד. ds-ps

מה היה לנו דיברנו על החיסרון במבני הנתונים שהיו לנו. הבנו שצריך רעיון כמו.hash table הכרנו סוגים שונים של טבלאות גיבוב בוא ננסה את עצמנו עם 3 ds-ps