Presentation is loading. Please wait.

Presentation is loading. Please wait.

עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.

Similar presentations


Presentation on theme: "עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס."— Presentation transcript:

1 עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס

2 תוכן ההרצאה בהרצאה זו נדון בבניית עצי Trie באמצעות אלגוריתם ON-LINE-TRIE. בהרצאה זו נדון בבניית עצי Trie באמצעות אלגוריתם ON-LINE-TRIE. הבנייה תהיה בנייה הדרגתית, הכוונה היא לבנות עצי ביניים שכל עץ מהן יעזור בבניית העץ שאחריו. (online intermeduate trees) הבנייה תהיה בנייה הדרגתית, הכוונה היא לבנות עצי ביניים שכל עץ מהן יעזור בבניית העץ שאחריו. (online intermeduate trees)

3 PREFIXES הגדרה : הגדרה : P i מסמל תת מילה מהטקסט, שמתחילה מהאינדקס 1 ומסתיימת באינדיקס i. P[1..i] דוגמאות בשקופית הבאה...

4 דוגמאות על Prefixes text = abba  P¹ = P[1..1] = a  P² = P[1..2] = ab  P³ = P[1..3] = abb  P 4 = P[1..4] = P = abba

5 תזכורת בניית עץ נסיוני (Trie Tree) ל _ text = abaabb Trie(text) a b a a b b b a a b b b a b b b הצמתים השחורים נקראים צמתים מהותיים. צמתים מהותיים.

6 ON-LINE INTERMEDIATE TREES מה הכוונה בבניית ON-LINE INTERMEDIATE TREES ? הכוונה לבנות עצי ביניים, שכל עץ מהן עוזר בבניית העץ שאחריו. Trie(P ¹ ), Trie(P²),..., Trie(P n-1 ) כדי לבנות עץ Trie(P²) נעזרים בעץ Trie(P ¹ ) כדי לבנות עץ Trie(P²) נעזרים בעץ Trie(P ¹ )

7 SUFFIX LINKS xp היא מחרוזת. x הוא תו אחד ו _ p היא תת - מילה. xp היא מחרוזת. x הוא תו אחד ו _ p היא תת - מילה. V היא צומת שהתווית שלה xp. אם קיימת צומת S(V) עם תווית p, אז המצביע (V, S(V)) נקרא Suffix Link. V היא צומת שהתווית שלה xp. אם קיימת צומת S(V) עם תווית p, אז המצביע (V, S(V)) נקרא Suffix Link. Label[S(V)] = p Label[V] = xp V S(V) Suffix Link

8 SUFFIX LINKS Suf[root] = root Suf[root] = root אם אין צומת S(V) אז suf[V] = nil אם אין צומת S(V) אז suf[V] = nil Suffix Links תורמים לבניית Suffix Trees בזמן O(n). Suffix Links תורמים לבניית Suffix Trees בזמן O(n).

9 SUFFIX LINKS דוגמא : דוגמא : a b a a b a a a לצומת הזו יש שני בנים {a,b} אי - אפשר להוסיף לה עוד בנים

10 ON-LINE-TRIE ALGORITHM Algorithm on-line-trie; create the two-node tree Trie(text[1]) with suffix links; for i := 2 to n do begin a i := text[i]; V i -1 := deepest leaf of Trie(P i -1 ); k := min{ k : son(suf k [V i-1 ], a i ) = nil }; create a i -sons for V i -1, suf[V i-1 ], …, suf k-1 [V i-1 ], and new suffix links for them. end

11 Creating a i -sons V5V5V5V5 V4V4V4V4 V3V3V3V3 V2V2V2V2 V1V1V1V1 aiaiaiai Before After V5V5V5V5 V4V4V4V4 V3V3V3V3 V2V2V2V2 V1V1V1V1 aiaiaiai V5V5V5V5 V4V4V4V4 V3V3V3V3 V2V2V2V2 V1V1V1V1 aiaiaiai aiaiaiai aiaiaiai aiaiaiai New suffix links created New nodes existing suffix links

12 רעיון האלגוריתם בכל איטרציה i עוברים דרך ה _ suffix links מהצומת הכי עמוקה עד לצומת הראשונה ומוסיפים a i -sons. בכל איטרציה i עוברים דרך ה _ suffix links מהצומת הכי עמוקה עד לצומת הראשונה ומוסיפים a i -sons. V k הוא suffix של האורך k מ _ P i V k הוא suffix של האורך k מ _ P i דוגמא : text = abab, i = 3, k = 2 text = abab, i = 3, k = 2 P i = aba V k = suf[ab] = b P i = aba V k = suf[ab] = b הצמתים V k הן בעצם צמתים מהותיים. הצמתים V k הן בעצם צמתים מהותיים. הרצף V i, V i-1, …, V 0 מייצג את ה _ suffixes של P i בסדר יורד מבחינת אורכן. הרצף V i, V i-1, …, V 0 מייצג את ה _ suffixes של P i בסדר יורד מבחינת אורכן.

13 המשך רעיון האלגוריתם a i = text[i] a i = text[i] V j הוא הצומת הראשונה ברצף הצמתים המהותיים V j הוא הצומת הראשונה ברצף הצמתים המהותיים V i-1, V i-2, …, V 0 שמקיים child(V j, a i ) = nil, כלומר, שיש לה צומת עם תווית a i. אם V j קיים אז העץ Trie(P i ) הוא תוצאה של הוספת בנים חדשים עם תווית a i לצמתים : אם V j קיים אז העץ Trie(P i ) הוא תוצאה של הוספת בנים חדשים עם תווית a i לצמתים : V i-1, V i-2, …, V j+1 V i-1, V i-2, …, V j+1 אם V j לא קיים אז מוסיפים בנים חדשים עם תווית a i לצמתים : אם V j לא קיים אז מוסיפים בנים חדשים עם תווית a i לצמתים : V i-1, V i-2, …, V 0 V i-1, V i-2, …, V 0

14 ON-LINE-TRIE ALGORITHM הרצת האלגוריתם על הקלט text = abaabb. הרצת האלגוריתם על הקלט text = abaabb. Trie(P 1 ) Trie(P 2 ) המשך ההרצה בדף הבא... המשך ההרצה בדף הבא... a P 1 = a P 2 = ab i = 2 a i = b aa b b

15 ON-LINE-TRIE ALGORITHM Trie(P 3 ) P 3 = aba i = 3 a i = a a b b b a a b a

16 ON-LINE-TRIE ALGORITHM Trie(P 4 ) abaa= P 4 abaa= P 4 i = 4 a i = a a b a a b a a a a b a b a

17 ON-LINE-TRIE ALGORITHM Trie(P 5 ) P 5 = abaab i = 5 a i = b a b a a b a a a a b a a b b a a b a b

18 ON-LINE-TRIE ALGORITHM P 6 = abaabb i = 6 a i = b Trie(P 6 ) a b a a b b a a b a b a b a a b b b a a b b b a b b b


Download ppt "עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס."

Similar presentations


Ads by Google