שאלת מבחן במבני נתונים - אוניברסיטת בר-אילן 2016 - חיפוש

היזוחה הקנויות בשדל אלו-יורו { A,B,C,D }. בחתיח את הקנויות הנתונה בעזור Boyer & Moore של .

| i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| --- | A | A | B | A | A | A | B | A | A | B | A | A |

|
| | | | | | | | | | | | |
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א2016סמסטר ב
חיפושBoyer-Mooreכלל הסיומת הטובה
כלל הסיומת הטובה () קובע את ההזזה על פי הסיומת של התבנית שכבר נמצאה מתאימה. ישנם שני מקרים: או שנמצא מופע נוסף של הסיומת, או שנמצאת רישא של התבנית שמתאימה לסופה של הסיומת.
השאלה, על אף ניסוחה המשובש, מבקשת לחשב את טבלת ההזזות (כלל הסיומת הטובה) של אלגוריתם Boyer-Moore עבור התבנית הנתונה בטבלה.

התבנית:
, ואורכה .

טבלת
מגדירה את גודל ההזזה (shift) שיש לבצע כאשר מתגלה אי-התאמה בתו ה- של התבנית (בספירה משמאל, 1-indexed), לאחר שהסיומת נמצאה מתאימה.

חישוב ערכי הטבלה:


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

* **חישוב עבור
:**
- אי-התאמה ב-
.
- הסיומת הטובה היא
.
- נחפש את המופע הימני ביותר של
בתת-המחרוזת , כך שהתו שלפניו שונה מ-.
- המופע הימני ביותר של 'A' ב-
הוא במיקום . התו שלפניו הוא . התנאי לא מתקיים. נבדוק את המופע הבא: , התו שלפניו . מכיוון ש-, מצאנו התאמה במיקום .
- ההזזה היא המרחק שיביא את
למקום בו היה , כלומר . שינוי: המופע הימני ביותר הוא ב-9, לפניו 8 (A). הבא הוא ב-8, לפניו 7 (B). . $P[7]=B
eq A
12-8=411 - (8-1) = 4m-k = 12-8=4juui+1s = (i+1) - ju12P[j]12s = 12-j=12-8=4P[9]P[8]='A'P[8]P[7]='B'P[11]='A'j=8P[7] \neq P[11]12-8=4\Delta_2(11) = 4$.

* **חישוב עבור
:**
- אי-התאמה ב-
.
- הסיומת הטובה היא
.
- נחפש מופע של 'AA' ב-
שהתו שלפניו שונה מ-.
- המופעים של 'AA' הם ב-
. עבור , התו הקודם הוא , זהה ל-. עבור , התו הקודם הוא , זהה. עבור , אין תו קודם (תנאי מתקיים). לכן נשתמש ב-.
- ההזזה מיישרת את
עם מיקום . .
-
.

* **חישוב עבור
:**
- אי-התאמה ב-
.
- הסיומת הטובה היא
.
- אין מופע נוסף של 'BAA' בתבנית. לכן, נחפש את הרישא (prefix) הארוכה ביותר של
שהיא גם סיומת (suffix) של .
- הסיומות של
הן 'A', 'AA'. הרישאות של הן 'A', 'AA', 'AAB'.... הרישא הארוכה ביותר המשותפת היא 'AA', שאורכה .
- ההזזה היא
.
-
.

* **חישוב עבור
:**
- אי-התאמה ב-
.
- הסיומת הטובה היא
.
- אין מופע נוסף. הרישא הארוכה ביותר של
שהיא סיומת של היא 'AA' ().
- ההזזה היא
.
-
.

* **חישוב עבור
עד :**
- עבור כל
בטווח זה, הסיומת הטובה היא ארוכה מספיק כדי להכיל את 'AABAA' כסיומת (כיוון ש-).
- אין מופעים נוספים של סיומות אלו בתבנית.

- לכן, נשתמש בכלל השני. הרישא הארוכה ביותר של
היא 'AABAA' (). זוהי גם הסיומת הארוכה ביותר של כל רלוונטי שמהווה רישא של .
- ההזזה היא
.
-
לכל $i













∈ [1, 7]$.


**טבלת
המסכמת:**
i123456789101112
****77777771010104-