Marina Kogan Sadetsky –

Slides:



Advertisements
מצגות קשורות
אוגרים ומונים – Registers & Counters
Advertisements

תכנות בשפת C תרגול 11 - קבצים.
הרצאה 02 סוגי משתנים קרן כליף.
מבנה מחשבים ספרתיים זיכרון מטמון - המשך
מבוא לתכנות ב-JAVA מעבדה 1
טיפים מנצחים: לחפש ולמצוא במהירות ובדיוק
Trends in Periodic Table Properties
תרגול 11: רקורסיה ופיתוח טלסקופי
לולאות Department of Computer Science-BGU 19 יולי 19.
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
ייצוג קבוצות מתוחכם עצי חיפוש בינאריים BINARY SEARCH TREES
Isotopes and Atomic Mass
יצוג קבוצות מתוחכם עצי חיפוש בינאריים BINARY SEARCH TREES
Marina Kogan Sadetsky –
אלקטרושליליות ופולריות הקשר
רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©
Jump tables, review questions
מודל דחיית זוגות אלקטרונים של קליפת הערכיות
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
Present Perfect Simple
Passover in “Tomer” kindergarten
תירגול 11: מיונים וחיפוש בינארי
תרכובות עם יונים פוליאטומים בחיי היום יום
כפליות של מצבים במערכת מרובת חלקיקים נקודת מבט מיקרוסקופית
יסודות מבני נתונים תרגול 13: עץ פורש מינימלי - Minimum Spanning Tree (MST)
למידת חקר עבודת חקר – מהי
הכרת מאגרי מידע ביבליוגרפיים
מבני נתונים תרגול 3 ליאור שפירא.
OOO Execution of Memory Operations
Engineering Programming A
מבוא למדעי המחשב הרצאה 9: רקורסיה
רובוטיקה תרגול שימוש בלולאות
Direction of induced current
זיכרון מטמון 1 מבנה מחשבים ספרתיים
Harel Mazor Open Source GIS Meetup / 11-jun-2018 / Tel-Aviv
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
הכנה למבחן.
מבוא לתכנות למערכות מידע
מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש
Computer Architecture and System Programming Laboratory
SQL - כתיבת שאילתות למתחילים
אלגוריתמי מיון רקורסיביים
כל הזכויות שמורות לגבריאל אנקרי © 2017
Branch Prediction בעריכת אורן קצנגולד Updated by Franck Sala.
Branch Prediction Oren Katzengold, Franck Sala, Elad Shtiegmann.
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
מת"מ מעבדה 7-8 רשימות.
Emech at 1 + W = Emech at 2 mgh1 = mgh2
Solving Simultaneous Linear Equations Using GPU
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Search&Buy There are 70 items in a 7 km radios
What is Chemistry? מהי כימיה? Chemistry is the study of matter and its
מבוא לתכנות ב- JAVA מעבדה 4
Proquest Central
מבנה כללי של היררכיית הקבצים עבור המסלול /A/B.txt
Ci,j=Σκ Ai,κxBκ,j מכפלת מטריצות מכפלת מטריצות ב- O(n3)
תרגול 12: backtracking.
Data Structures, CS, TAU, Perfect Hashing
פיתוח מערכי שיעור כיתתיים משולבי תקשוב (הל"ה)
תרגול מס' 2: Data and Control Hazards
שם הגננת:אתי ברכפלד קיבוץ סער
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
דוגמא להשערה חד-צדדית ימנית
יינון המים In the ionization of water,
Engineering Programming A
הדרכה לשימוש במאגרי.
תמליל מצגת:

Marina Kogan Sadetsky – 1.2015 יסודות מבני נתונים תרגול 9: טבלת גיבוב - Hash table Marina Kogan Sadetsky – 1.2015

טבלת גיבוב Hash table hash table – מערך שמאפשר זמן חיפוש O(1). כל מפתח ממופה לתא מסוים במערך (בעזרת hash function). מה קורה אם שני מפתחות k1 ו k2 ממופים לאותו תא במערך? התנגשות! hash function h(k) 3 החלטות חשובות: גודל המערך פונקציית מיפוי פתרון להתנגשויות

התנגשויות - hash collisions hash collision – שני מפתחות k1 ו k2 ממופים לאותו תא ב hash table. באיזה פתרון להתנגשויות כדאי לבחור ? k2 משתרשר לאותו תא במערך (chain hashing) k2 יצטרך לחפש לעצמו מקום אחר במערך (open addressing) שאלה: בשיטת השרשור, במקרה הגרוע חיפוש מתבצע בזמן O(n). האם אפשר לשפר אותו ל O(log n)? דוגמא: תשובה: כן, במקום רשימה מקושרת נשתמש בעץ AVL. h(5)=1 h(16)=1  H[1] is occupied   probe hash to find empty slot (linear probe) h(38)=1  H[1] is occupied   probe hash to find empty slot 38 נכשל באותם המקומות במערך כמו 16 ! בגלל שנסיוניות לא תלוים בערך המפתח!

m - hash table size hash table size - m – גודל של hash table. x x √ דוגמא: נניח עולם של מספרים שלמים. לhash table צפוים להכנס רק 100 מספרים מתוך העולם. באיזה גודל m כדאי להגדיר את hash table? בשיטת chain hashing: 5 ? אז, לכל תא יכנסו 100/5=20 מפתחות ... יותר מדי 100 ? אז, לכ תא יכנס רק מפתח אחד ... בזבוז זכרון נקח m כך ש (load factor α > 1) n/m=α=O(1) בשיטת open addressing: m מומלץ הוא ~ פי 1.5 מ n (load factor α < 1) x x √

h(k) - hash function hash function - h(k) – ממפה מפתח לתא מסוים בhash table. דוגמא: נניח עולם של מספרים שלמים. לhash table צפוים להכנס רק 10 מספרים מתוך העולם. באיזה פונקציית גיבוב h(k) כדאי לבחור ? h(k)=5 ? אז, כל המפתחות יכנסו לאותו תא במערך... והמטרה לפזר מפתחות על פני המערך h(k) = rand(0,m-1) ? אז הפיזור יהיה מושלם... אבל אי אפשר יהיה למצוא מפתחות במערך h(k)=k mod 10 ? אז, כל המפתחות יבחרו תא במערך רק ע"פ ספרת האחדות...רוצים שלכל הספרות של המפתח תהיה השפעה על בחירת התא במערך h(k)= ? כן!! איך הגענו לנוסחה הזו? דרך מחקר (זה לא מובן מאליו) ⌋m(k∙(√5-1)/2-⌋k∙(√5-1)/2⌊) ⌊

התנגשויות - hash collisions דוגמא: h(5)=1 h(16)=1  H[1] is occupied   calculate probing step by additional step function h’(k) (double hashing) Let’s take h’(k)=k mod (m-1) +1 first step: h’(16) = 16 mod 6 + 1 = 5  H[1+5=6] is free  h(38)=1  H[1] is occupied   first step: h’(38) = 38 mod 6 + 1 = 3  H[1+3=4] is free  שאלה: האם h’(k) מבטיחה שנמצא מקום פנוי אם קיים כזה? תשובה: לא מובן מאליו, מצריך הוכחה.

Question 1

Question 2 Suggest how to implement Delete(k) function for a hash table, when using open addressing. search(54) h(54)=1 H[1]=5  H[2]=16  H[3]=38  H[4]=empty  there is no 54 in hash delete(16) search(38) h(38)=1 H[1]=5  H[2]=empty  there is no 38 in hash ?? פתרון: לכל תא שנמחק, נסמן אותו כ"deleted". אם נתקלים בתא “deleted”, לא נפסיק חיפוש. search(18) h(18)=1 H[1]=“d”  H[2]=“d”  … H[6]=“d”  H[7]=18  חיפשנו את 18 בכל המערך בזמן O(m) ! פתרון אפשרי: rehash כל O(m) פעולות.

Question 2

Question 3 Consider two sets of integers, S = {s1, s2, …, sm} and T = {t1, t2, …, tn} , m ≤ n. Suggest an algorithm to test where S is a subset of T. Solution: נגדיר hash table H ונכניס לתוכה את כל המפתחות של T. עבור כל מפתח k ב S, נבדוק האם k נמצא ב H. אם כן, נחזיר “true” אחרת, נחזיר “false”

Question 4 נתונה קבוצה S עם n מספרים שלמים ומספר שלם x. צריך למצוא שני מספרים k2, k1 ϵ S כך ש x = k1 + k2 בזמן O(n). פתרון: נגדיר hash table H ונכניס לתוכה את כל המפתחות של S. עבור כל מפתח k1 ב S, נבדוק האם k2:=x-k1 נמצא ב H. אם כן, נחזיר k2, k1 אחרת, נחזיר “false”