Presentation is loading. Please wait.

Presentation is loading. Please wait.

2 Suffix Tree: Definition Suffix tree T על מחרוזת S שגודלה n, הוא עץ מכוון עם בדיוק n עלים ממוספרים מ -1 עד n. לכל צומת פנימית ( חוץ מהשורש ) יש לפחות.

Similar presentations


Presentation on theme: "2 Suffix Tree: Definition Suffix tree T על מחרוזת S שגודלה n, הוא עץ מכוון עם בדיוק n עלים ממוספרים מ -1 עד n. לכל צומת פנימית ( חוץ מהשורש ) יש לפחות."— Presentation transcript:

1

2 2 Suffix Tree: Definition Suffix tree T על מחרוזת S שגודלה n, הוא עץ מכוון עם בדיוק n עלים ממוספרים מ -1 עד n. לכל צומת פנימית ( חוץ מהשורש ) יש לפחות שני ילדים כל קשת מייצגת תת מחרוזת לא ריקה של S. אין שתי קשתות היוצאות מאותה צומת שתת המחרוזת שהם מייצגות מתחילה באותה אות. תכונה עיקרית : לכל עלה i, חיבור כל המחרוזות המיוצגות ע ” י קשת במסלול מהשורש ל -i, מהווה סיפא של S המתחילה במקום ה -i.

3 3 דוגמא Suffix tree למלה a w y a w x a w x z 21435679 8 10 z z 6 9 x z a w x 8 y a w x a w x z 3 w x a w x z wa y a w x a w x z 2 5 y a w x a w x z 1 xz a w x 4 7 z z

4 4 דוגמאות לשימושים חיפוש תבנית P באורך m במחרוזת T באורך n מציאת תת מחרוזת משותפת מקסימלית לקבוצת מחרוזות מציאת זיהומים ושיבושים ב – DNA

5 5 דוגמא למציאת תבנית P בטקסט T מצא את כל ההופעות, אם ישנן, של aw בתוך a w y a w x a w x z z z 6 9 x z a w x 8 y a w x a w x z 3 w x a w x z w a y a w x a w x z 2 5 y a w x a w x z 1 xz a w x 4 7 z z 10 21435679 8

6 6 z z 6 9 x z a w x 8 y a w x a w x z 3 w x a w x z w a y a w x a w x z 2 5 y a w x a w x z 1 xz a w x 4 7 z z דוגמא - המשך

7 7 z z 6 9 x z a w x 8 y a w x a w x z 3 w x a w x z w a y a w x a w x z 2 5 y a w x a w x z 1 xz a w x 4 7 z z 10

8 8 דוגמא - סוף z z 6 9 x z a w x 8 y a w x a w x z 3 w x a w x z w a y a w x a w x z 2 5 y a w x a w x z 1 xz a w x 4 7 z z 10 הפלט יהיה 7,4,1 : אלה הם בדיוק המיקומים של P ב - T

9 9 אינטואיציה לנכונות השיטה אם P מהווה תת מחרוזת של T, אז היא חייבת להיות התחלה של סיפא כלשהי של T – לדוגמא : singing היא ההתחלה של הסיפא singing in the rain של המחרוזת I ’ m singing in the rain לכן אם P היא תת מחרוזת של T היא בהכרח חייבת להיות זהה למסלול היוצא מהשורש לאחד העלים, לפי הגדרתו של suffix Tree המיקומים של P ב – T יהיו בדיוק מספרי העלים שהמסלול מהשורש המתחיל ב - P מסתיים בהם.

10 10 חישובי זמן ומקום לפעולת זיהוי P בתוך T זמן בניית העץ, ועוד מספר התווים ב – p אותם נשווה עם מסלול היוצא מהשורש בעץ, ועוד זמן סיור DFS בתת העץ כדי למצוא את מספרי העלים ( ניתן להכין מראש עבור כל ההרצה ), בכל מקרה לא יותר מ – O(n). זמן הריצה תלוי במהירות בה ניתן לבנות את העץ

11 11 אלגוריתם נאיבי לבניית עץ סייפות באופן כללי בנית קשת אחת בלבד עבור הסיפא ( כלומר למחרוזת כולה ) באופן איטרטיבי הכנסת הסיפא לעץ,. בפירוט נסמן ב - את עץ הביניים המכיל את כל הסייפות של S מ – 1 עד i. 1. מכיל קשת יחידה מהשורש אל העלה מספר 1 של העץ, אשר מתארת את המחרוזת $S. 2. העץ נבנה מתוך העץ ע " י מציאת המסלול הארוך ביותר המתחיל מהשורש, אשר התווית שעליו מתארת רישא של ( מציאת מסלול זה נעשה ע ” י השוואות תו תו ).

12 12 אלגוריתם נאיבי - המשך 3. אם סיום המסלול הוא בתוך קשת (u,v) אזי נפצל את הקשת לשתיים ע ” י הוספת צומת חדשה מיד לאחר התו האחרון הזהה בהשוואות, נסמנה ב w. שתי הקשתות שהתקבלו ייצגו את שארית הקשת - והסיפא החדשה. 4. אם סיום המסלול הוא בצומת w, נוסיף בן עלה נוסף לצומת זו, שהקשת החדשה היוצאת ממנו מתארת את יתרת הסיפא, שלא נכללה במסלול.

13 13 דוגמא לאלגוריתם הנאיבי הדגמת האלגוריתם הנאיבי למחרוזת S=awyawxawxz 1 1 2 3

14 14 דוגמא - המשך 1 2 3 4 S=awyawxawxz

15 15 דוגמא - המשך 7 6 וכו'...

16 16 מטרה : אלגוריתם בניה לינארי יתרונות האלגוריתם של E. Ukkonen : – קל להבנה ולמימוש – אלגוריתם : On-Line בניית העץ נעשית תו תו לפי סדר ההכנסה, ובכל שלב יש בידנו Suffix Tree המתאים למחרוזת שהוכנסה עד כה.

17 17 האלגוריתם של Ukkonen נסמן ב - את העץ המתקבל מהמחרוזת. אם אינו עומד בהגדרה המלאה של עץ סייפות, נאמר כי הוא עץ מרומז. תיאור כללי של האלגוריתם : האלגוריתם יחולק ל – n פאזות, כך שבפאזה ה – i+1, העץ נבנה מתוך העץ הפאזה ה – i+1 נחלקת ל – i+1 הרחבות, הרחבה אחת לכל סיפא של

18 18 High-level Ukkonen algorithm 1.Construct tree 2.For i from 1 to n-1 do 3.begin {phase i+1} 4. for j from 1 to i+1 5. begin {extention j} 6. Find the end of the path from the root labeled 7. in the current tree. If needed, extand that 8. path by adding character, 9. thus assuring that string is in the tree. 10. end 11.end

19 19 הרחבות נסמןלהיות סיפא של, אזי בהרחבה ה j, כאשר נמצא את סופה של בעץ הנוכחי, נרחיב את כך שהסיפא תהיה בתוך העץ.

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

21 דוגמא לסוגי ההרחבות תהי S=axabxb, ונניח שכבר נבנה : 1 3 4 2 נתבונן בהרחבות שהתבצעו עבור 1 3 4 2 5 הרחבה לפי סוג 1 הרחבה לפי סוג 2 הרחבה לפי סוג 3 5

22 22 אם נבצע את חיפוש הסיפא בצורה נאיבית, ב זמן, אז כל הרחבה j של פאזה תיקח זמן, ובנית העץ תיקח זמן, לכן בנית תקח פתרון נראה כיצד לבצע את שלב החיפוש של הסיפא בכל הרחבה בצורה מהירה, עם הוספת טריקים פשוטים, שכל אחד לבדו אינו מספיק, אך יחד - הם עושים את העבודה. בעיה

23 23 Suffix link תהי מחרוזת כלשהי, כך ש הוא תו בודד, ו היא תת מחרוזת (יתכן ריקה). לכל צומת פנימית שהתווית מסלול שלה מהשורש היא, אם קיימת צומת נוספת עם תווית מסלול, אזי מצביע מ- ל- נקראת suffix link מקרה מיוחד אם אזי ה - suffix link מ - הולכת לשורש של העץ.

24 24 למה אם צומת פנימית חדשה עם תווית מסלול נוספת לעץ בהרחבה ה j של פאזה כלשהי, אזי קורה אחד מהשניים: 1. תווית המסלול כבר מסתיימת בתוך צומת פנימית של העץ, או 2. תיווצר צומת פנימית בסוף המסלול בהרחבה ה j+1- של אותה הפאזה. נוסיף לאלגוריתם הבנייה חיבור Suffix link בין הצמתים כאשר הן נוצרות

25 25 דוגמא ל suffix link אפשרי בעץ S=cacao הצומת הפנימית שתוויתה ca נוצרת בפאזה החמישית, בהרחבה מספר 3. בהרחבה מספר 4 של אותה פאזה, ניצור את הצומת שתוויתה a. בסיום ההרחבה ה 3+1 של הפאזה החמישית, לצומת החדשה שנוצרה עם התווית ca תהיה suffix - link לצומת שתוויתה a

26 26 מסקנת ביניים באלגוריתם של Ukkonen, לכל צומת פנימית חדשה שנוצרת יהיה suffix link ממנה בסוף ההרחבה הבאה בתור. עבור כל עץ, אם לצומת פנימית v יש תווית מסלול אזי קיימת צומת ב- עם תווית מסלול

27 27 שימוש ב – Suffix link להאצת הקצב נתאר תחילה את שתי ההרחבות הראשונות בפאזה ה - : 1. סוף המחרוזת המלאה ימצא תמיד בעלה של, מכיוון שזוהי המחרוזת הארוכה ביותר המיוצגת בעץ. לכן נחזיק מצביע לעלה קבוע זה, ותמיד נבצע בו את סוג 1 של ההרחבה. 2. תהי תווית של הקשת האחרונה לעלה הנ”ל (נסמנה ב ) ונניח כי. כעת בהרחבה מספר 2 נרצה למצוא את סופה של. כדי לעשות זאת, נלך מעלה מס’ 1 לצומת v, נעקוב אחר ה suffix link היוצאת ממנו ל, ונמשיך משם למטה דרך המסלול. סוף המסלול הזה הוא סופה של ולכן במקום זה צריך לבצע את ההרחבה, לפי החוקים.

28 28 ההרחבות הבאות כדי להרחיב את המחרוזת ל - נבצע רעיון דומה: נתחיל בסוף המחרוזת של העץ הנוכחי, נלך לכל היותר צומת אחת למעלה בעץ - שהיא השורש, או שיש ממנה suffix link. אם נסמן ב את התווית של הקשת עליה הלכנו, ואם v איננה השורש, נעקוב אחר ה suffix link היוצא ממנה ל, ונמשיך לעקוב אחר המסלול המסומן ב עד סופו, ושם נבצע את ההרחבה - לפי הסוג המתאים. הערה: אם סופה של הוא בצומת שיש ממנה suffix link, נשתמש בה ולא נלך צומת אחת אחורה (מקרה כזה יתכן לאחר הרחבה מסוג 3 למשל), ואם סופה הוא בצומת שרק עכשיו נוצרה, אזי אם אביה איננו השורש, אז יש ממנו suffix link. בכל מקרה ההליכה אחורה היא לכל היותר קשת אחת.

29 29 Single extension algorithm Begin 1. Find the first node v at or above the end of that either has a suffix link from it or is the root. Let denote the string between v and the end of. 2. if v is not the root, traverse the suffix link from v to s(v) and then walk down from s(v) following the path for string. If v is the root, then follow the path for from the root - as in the naive algorithm 3. Using the extension rules, ensure that the string is in the tree. 4. If a new internal node w was created in extension j-1, then create the suffix link (w,s(w)) from w to s(w).

30 30 דוגמא : הרחבה j עבור j>1 J-1 v S(v)

31 31 Skip/count נסמן ב g את האורך של, נסמן ב d את מספר התווים על הקשת היוצאת מ בכיוון. אם d<g אזי נדלג ישר לצומת הבאה. נסמן g=g-d, ו h=d+1, כך נוכל למצוא בקלות את המשך המסלול שהוביל לאורך. נמשיך כך עד אשר נקבל, וכל שנותר הוא למצוא את התו מספר g של הקשת אליה הגענו. ע"י שימוש בשיטה זו, המעקב אחרי יהיה תלוי במספר הצמתים ולא במספר התווים של

32 32 ע”י שיטת skip/count, כל פאזה באלגוריתם לוקחת זמן יתרון שיטת Skip/count למה תהי suffix link כלשהי אחריה עקבנו בזמן האלגוריתם, אזי ברגע המעקב, עומקה של הוא לכל היותר באחד יותר מעומקה של טענה מסקנה האלגוריתם יכול להתבצע ב זמן. הערה על מנת להוריד את זמן האלגוריתם ל -, יש להוריד גם את המקום בזכרון בו אנו משתמשים.

33 33 אבחנות אבחנה ראשונה : בכל פאזה, אם סוג 3 של ההרחבה מתבצע בהרחבה ה j, אזי הוא יתבצע בכל יתר ההרחבות שנותרו באותה פאזה. אבחנה שניה : עלה נשאר עלה. כלומר, אם בשלב כלשהו באלגוריתם נוצר עלה חדש, וניתן לו המספור j, אזי עלה זה ישאר עלה עד סוף תהליך בנית העץ. משמעות הדבר היא, שכל ההרחבות שיעשו בעלה זה בכל הפאזות הבאות תמיד ישתמשו בסוג ראשון של הרחבה.

34 34 שיפור האלגוריתם בעקבות האבחנות הפסק כל פאזה ברגע שהופעל לראשונה סוג 3 של ההרחבה במקום לבצע במפורש סוג הרחבה מספר 1 בכל עלה קיים, הרחב את הקשת לעלה זה ע " י סימון סוף הקשת באינדקס כללי e, אותו נעדכן בסוף כל פאזה. סימון "e" כאינדקס סוף הקשת האחרונה לעלה, יעשה בזמן היווצרות העלה.

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

36 36 Single phase algorithm 1.Begin 2.Explicitly compute successive extensions starting at pointer “ j ” until reaching the first extension where rule 3 applies or until all extensions are done in this phase. –When do rule 2, put j to point on the new leaf 3.Increment index “ e ” by 1. 4.end

37 37 זמן הריצה של האלגוריתם המשופר טענה : האלגוריתם של Ukkonen עובד בזמן ומקום O(n) הוכחה : כל ההרחבות הלא מפורשות ( סוג 1 וסוג 3) של כל פאזה לוקחות O(1) זמן, ולכן לוקחות O(n) לאורך האלגוריתם כולו. כמו כן מספר ההרחבות מסוג 1 בכל פאזה אינו יורד. אם נסמן ב j את האינדקס של ההרחבה המפורשת שמתבצעת כעת, הראינו ש j הוא אינדקס שאינו יורד, אבל נשאר זהה בין כל שתי פאזות עוקבות. מכיוון שיש n פאזות, ו j חסום ע ” י n, נקבל שהאלגוריתם מבצע לאורך כל הדרך לכל היותר 2n הרחבות מפורשות. את זמן ביצוען של אלה חישבנו קודם : זמן קבוע, ועוד הזמן של חיפוש המסלול, שגם אותו חסמנו ב - O(n) לאורך כל האלגוריתם.

38 38 הורדת המקום בזכרון 1,3 2,3 4,6 10,12 4,6 S=abcdefabcuvw 1 2 3 4 5 6 7 8 9 10 11 12


Download ppt "2 Suffix Tree: Definition Suffix tree T על מחרוזת S שגודלה n, הוא עץ מכוון עם בדיוק n עלים ממוספרים מ -1 עד n. לכל צומת פנימית ( חוץ מהשורש ) יש לפחות."

Similar presentations


Ads by Google