שאלת מבחן במבני נתונים - אוניברסיטת בר-אילן 2015 - Boyer-Moore

נתונה התבנית מעל אלף-בית . בנו את טבלאות ו- מהאלגוריתם של Boyer & Moore עבור התבנית הנתונה.

123456789101112
AABAAABAABAA
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2015 · סמסטר ב
★★★★★
Boyer-Mooreחיפוש מחרוזות
עבור טבלת , מצאו את המופע האחרון של כל תו מהאלפבית בתבנית. עבור טבלת , חשבו את גודל ההזזה הנדרש עבור כל "סיומת טובה" אפשרית .
טבלת
— כלל התו הרע (Bad Character)

הגדרה: , כאשר אם אינו מופיע בתבנית, .

כאן , והתבנית היא
תו
מיקום אחרון1210——


---
טבלת
— כלל הסיומת הטובה (Good Suffix)

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

הסיומת חישוב
12הזזה מינימלית1
11AA מופיע במיקום 8, לפניו → 4
10AAAA מסתיים במיקום 6, לפניו → 6
9BAAהופעה ב-7..9 אך (פסול); קידומת AA תואמת סיומת → 10
8ABAAהופעות ב-6..9, ב-2..5 כולן עם (פסולות); קידומת AA → 10
7AABAAAABAA = , ללא תו לפני (תחילת התבנית) → 7
6BAABAAאין הופעה נוספת; קידומת AA תואמת סיומת AA → 10
5ABAABAAקידומת AABAA= תואמת סיומת → 7
4AABAABAAקידומת AABAA= תואמת סיומת → 7
3BAABAABAAקידומת AABAA= תואמת סיומת → 7
2ABAABAABAAקידומת AABAA= תואמת סיומת → 7
1AABAABAABAAקידומת AABAA= תואמת סיומת → 7
הטבלה המלאה:


123456789101112
AABAAABAABAA
777771071010641


הכלל הכולל: בכל שלב מחשבים ומזיזים את התבנית בהתאם.