חיפוש בינארי או : חיפוש אריה במדבר

Download Report

Transcript חיפוש בינארי או : חיפוש אריה במדבר

Hana Zimmerman-Karl
[email protected]
Binary Search
‫חיפוש בינארי‬
‫ חיפוש אריה במדבר‬: ‫או‬
Made by :
Hana Zimmerman-Karl
1
[email protected]
‫כיצד מוצאים (ותופסים)‬
‫אריה במדבר‬
‫‪Hana Zimmerman-Karl‬‬
‫‪[email protected]‬‬
‫(כפי שהסביר לי אחי‪ ,‬כשהייתי בכיתה ו')‬
‫‪2‬‬
‫כיצד מוצאים (ותופסים)‬
‫אריה במדבר‬
‫(כפי שהסביר לי אחי‪ ,‬כשהייתי בכיתה ו')‬
‫‪3‬‬
‫‪Hana Zimmerman-Karl‬‬
‫‪[email protected]‬‬
‫כיצד מוצאים (ותופסים)‬
‫אריה במדבר‬
‫(כפי שהסביר לי אחי‪ ,‬כשהייתי בכיתה ו')‬
‫‪4‬‬
‫‪Hana Zimmerman-Karl‬‬
‫‪[email protected]‬‬
‫‪Hana Zimmerman-Karl‬‬
‫כיצד מוצאים (ותופסים)‬
‫אריה במדבר‬
‫(כפי שהסביר לי אחי‪ ,‬כשהייתי בכיתה ו')‬
‫‪5‬‬
‫‪[email protected]‬‬
‫‪Hana Zimmerman-Karl‬‬
‫כיצד מוצאים (ותופסים)‬
‫אריה במדבר‬
‫(כפי שהסביר לי אחי‪ ,‬כשהייתי בכיתה ו')‬
‫‪6‬‬
‫‪[email protected]‬‬
‫‪Hana Zimmerman-Karl‬‬
‫כיצד מוצאים (ותופסים)‬
‫אריה במדבר‬
‫(כפי שהסביר לי אחי‪ ,‬כשהייתי בכיתה ו')‬
‫‪7‬‬
‫‪[email protected]‬‬
‫‪Hana Zimmerman-Karl‬‬
‫חיפוש בינארי – דוגמא‬
‫‪[email protected]‬‬
‫נחפש את הערך ‪ 46‬ברשימה הממויינת הבאה ‪:‬‬
‫‪29‬‬
‫‪10 11 12 13 14 15‬‬
‫‪8‬‬
‫‪9‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪Hana Zimmerman-Karl‬‬
‫חיפוש בינארי – דוגמא‬
‫‪[email protected]‬‬
‫נחפש את הערך ‪ 46‬ברשימה הממויינת הבאה ‪:‬‬
‫‪73‬‬
‫‪10 11 12 13 14 15‬‬
‫‪9‬‬
‫‪29‬‬
‫‪9‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪Hana Zimmerman-Karl‬‬
‫חיפוש בינארי – דוגמא‬
‫‪[email protected]‬‬
‫נחפש את הערך ‪ 46‬ברשימה הממויינת הבאה ‪:‬‬
‫‪73‬‬
‫‪10 11 12 13 14 15‬‬
‫‪10‬‬
‫‪39‬‬
‫‪9‬‬
‫‪29‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪Hana Zimmerman-Karl‬‬
‫חיפוש בינארי – דוגמא‬
‫‪[email protected]‬‬
‫נחפש את הערך ‪ 46‬ברשימה הממויינת הבאה ‪:‬‬
‫‪73‬‬
‫‪39 46‬‬
‫‪10 11 12 13 14 15‬‬
‫‪11‬‬
‫‪9‬‬
‫‪29‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
Hana Zimmerman-Karl
[email protected]
‫חיפוש בינארי – דוגמא‬
: ‫נניח כעת שהערך לא נמצא ברשימה‬
29
0
1
2
3
4
5
6
7
39 62
8
9
73
10 11 12 13 14 15
12
‫‪Hana Zimmerman-Karl‬‬
‫חיפוש בינארי – דוגמא‬
‫‪[email protected]‬‬
‫המצב הסופי בחיפוש בינארי‪ ,‬כאשר הערך לא מפיע ברשימה ‪:‬‬
‫‪73‬‬
‫‪39 62‬‬
‫‪10 11 12 13 14 15‬‬
‫‪13‬‬
‫‪9‬‬
‫‪29‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫כיצד משתמשים בשיטת חיפוש‬
‫אריה במדבר לחיפוש ברשימה‬
‫‪Hana Zimmerman-Karl‬‬
‫‪[email protected]‬‬
‫שיטת אריה במדבר ניתנת ליישום בחיפוש‬
‫ברשימות ממויינות בלבד!!!*‬
‫הרעיון הוא לתחום את האזור בו מחפשים‪ ,‬ולהזיז את אחד הגבולות‪ ,‬כך‬
‫שנחפש באזור שגודלו חצי מהקודם‪...‬‬
‫עד ש ‪( :‬האריה יעמוד על רגל אחת) נגיע לרשימה בת איבר אחד‪.‬‬
‫כיצד נדע איזה מהגבולות יש להזיז ? (נקשיב לשאגת האריה‪ )...‬נשווה‬
‫את הערך אותו אנו מחפשים‪ ,‬אל הערך שבאמצע הרשימה הממוינת‪,‬‬
‫וכך נדע באיזה חצי יש להמשיך ולחפש את הערך המבוקש‪.‬‬
‫‪14‬‬
Hana Zimmerman-Karl
[email protected]
Binary Search
‫ אלגוריתם איטרטיבי‬- ‫חיפוש בינארי‬
BS ( A,p,r,x)
while p  r do
 pr
m id  

2


if A[m id]  x
return m id
else if A[m id]  x
p  m id  1
else r  m id  1
return- 1
15
Hana Zimmerman-Karl
[email protected]
Binary Search
‫ אלגוריתם רקורסיבי‬- ‫חיפוש בינארי‬
BS ( A,p,r,x)
if p  r
 pr
m id  
 2 
if A[m id]  x
return m id
else if A[m id]  x
return BS  A, m id  1, r , x 
else return BS  A, p, m id  1, x 
else return- 1
16
Hana Zimmerman-Karl
[email protected]
‫שני האלגוריתמים‬
BS ( A,p,r,x)
while p  r do
BS ( A,p,r,x)
if p  r
 pr
m id  
 2 
if A[m id]  x
return m id
else if A[m id]  x
p  m id  1
else r  m id  1
return- 1
 pr
m id  
 2 
if A[m id]  x
return m id
else if A[m id]  x
return BS  A, m id  1, r , x 
else return BS  A, p, m id  1, x 
else return- 1
17
‫‪Hana Zimmerman-Karl‬‬
‫ניתוח סיבוכיות‬
‫‪[email protected]‬‬
‫• כמה פעמים תתבצע הלולאה ?‬
‫• מהו המקרה הטוב ביותר ?‬
‫• כאשר ‪ x‬נמצא ע"י ההשוואה הראשונה‪ .‬הלולאה‬
‫מתבצעת פעם אחת בלבד‪.‬‬
‫• מהו המקרה הגרוע ביותר ?‬
‫• כאשר ‪ x‬אינו נמצא במערך‪ ,‬נבצע את הלולאה עד‬
‫ש‪ ,p>r -‬כלומר הלולאה תתבצע מספר רב ביותר של‬
‫פעמים‪.‬‬
‫‪18‬‬
‫‪Hana Zimmerman-Karl‬‬
‫ניתוח סיבוכיות – המשך ‪1‬‬
‫‪[email protected]‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫כמה פעמים תתבצע הלולאה במקרה הגרוע ?‬
‫נסמן ב‪ n -‬את מספר האיברים ברשימה‪.‬‬
‫בסוף הלולאה‪ ,‬נגיע “לטפל” באיבר אחד בלבד‪.‬‬
‫מה בדרך ?‬
‫‪n n‬‬
‫איטרציה ‪1‬‬
‫‪20‬‬
‫איטרציה ‪2‬‬
‫‪1‬‬
‫‪n/2‬‬
‫איטרציה ‪3‬‬
‫‪2‬‬
‫איטרציה ‪4‬‬
‫‪3‬‬
‫איטרציה‬
‫‪19‬‬
‫אחרונה‬
‫‪2‬‬
‫‪2‬‬
‫‪n‬‬
‫‪2‬‬
‫‪n‬‬
‫‪1‬‬
‫‪2‬‬
‫‪i‬‬
‫‪2‬‬
‫‪22‬‬
‫‪n‬‬
‫‪n‬‬
‫‪2‬‬
‫‪n‬‬
‫אחרי כמה פעמים נגיע‬
‫לאיטרציה האחרונה ?‬
‫‪Hana Zimmerman-Karl‬‬
‫‪[email protected]‬‬
‫• בכל איטרציה‪ ,‬אנחנו מחלקים את מספר האיברים הקודם ב‪-‬‬
‫‪ .2‬לכן‪ ,‬אנחנו מתעניינים ‪:‬‬
‫• עבור איזה ‪ i‬נקבל ‪? n/2i=1 :‬‬
‫• נכפול את שני האגפים ב‪2i -‬‬
‫ונקבל ‪n = 2i :‬‬
‫• כלומר‪ ,‬אנחנו רוצים לדעת ‪:‬‬
‫•‬
‫‪20‬‬
‫באיזו חזקה יש להעלות את ‪ 2‬כדי‬
‫להגיע ל‪? n -‬‬
‫‪Hana Zimmerman-Karl‬‬
‫‪[email protected]‬‬
‫‪lg2n‬‬
‫ההגדרה של ‪ lgab :‬היא ‪ :‬החזקה שאם נעלה בה את ‪,a‬‬
‫נקבל ‪.b‬‬
‫כלומר‪ lg2n ,‬זו החזקה‪ ,‬שאם נעלה בה את ‪ ,2‬נקבל ‪.n‬‬
‫‪.‬‬
‫מכאן ש ‪:‬‬
‫‪n‬‬
‫‪21‬‬
‫‪lg2 n‬‬
‫‪2‬‬
‫‪Hana Zimmerman-Karl‬‬
‫‪[email protected]‬‬
‫סיבוכיות של חיפוש בינארי‬
‫במקרה הגרוע – הלולאה תתבצע ‪ lg2n‬פעמים‪,‬‬
‫ולכן סדר הגודל של חיפוש בינארי הוא ‪:‬‬
‫)‪O(lg2n‬‬
‫‪22‬‬
Hana Zimmerman-Karl
‫סדר הגודל של חיפוש בינארי‬
‫דוגמא‬
[email protected]
29
0
1
2
3
4
5
6
7
39 46
8
9
73
10 11 12 13 14 15
23