חיפוש בינארי או : חיפוש אריה במדבר
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
pr
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
pr
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
pr
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
pr
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