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

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
גרף מכוון Directed Graph a b c f g ed h צמתים חוג עצמי קשתות.
Number Theory and Algebra Advisor …………… Dr. Shpilka Amir Presented by …… Cohen Gil..………
Recitation #9. Q1 גרף מכוון מורכב מקבוצה של צמתים (nodes) ומקשתות מכוונות (arcs) המחברות ביניהם. כל קשת מכוונת יוצאת מצומת אחד ונכנסת לצומת אחר. ( בגרפים.
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
R. Bar-Yehuda © 1 קומבינטוריקה למדעי - המחשב – הרצאה #14 Graph theory – תורת הגרפים Chapter 1: PATHS IN GRAPHS – 1. מסלולים.
עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES מגישים : עיד מוחמד טיבי פיראס.
אוטומט מחסנית הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 11.
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Trees CLRS: chapter A hierarchical combinatorial structure הגדרה רקורסיבית: 1. צומת בודד. זהו גם שורש העץ. 2. אם n הוא צומת ו T 1 ….T K הינם עצים,
1 Data Structures, CS, TAU, Splay Tree Splay Tree  מימוש של עץ חיפוש בינארי  מטרה לדאוג ל- Amortized Time  פעולה בודדת יכולה לקחת O(N)  אבל כל רצף.
משפט ההרכבה Composition Theorem תהי C מחלקה של פונקציות בוליניות תהי נגדיר סדרת פונקציות שניתנות לחישוב בזמן פולינומיאלי.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Data Structures, CS, TAU, Splay Tree 1 Splay Tree - עץ חיפוש בינארי - מטרה לדאוג ל - Amortized Time - פעולה בודדת יכולה לקחת O(N) - אבל כל רצף M פעולות.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תזכורת: גרפים גרף (G=(V,E V|=n, |E|=m| מכוון \ לא מכוון דרגה של קדקד
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תרגול 7 עצי B
2-3 trees עצי 3-2 ועצי דרגות Chapter 19: B trees (381 – 397) Chapter 15: Augmenting data structures (281 – 290) חומר קריאה לשיעור זה Lecture5 of Geiger.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
שאלה 1 נתון כביש ישר עם תחנות דלק בנקודות , בנקודת המוצא נתונה מכונית עם תא דלק שמספיק ל-100 ק"מ. מחיר מילוי תא הדלק בתחנה.
The Cyclic Multi-peg Tower of Hanoi מעגלי חד-כווני סבוכיות הפתרון בגרסאות עם יותר מ-3 עמודים.
Ray 7 דוגמא אלגוריתם 1.קבל דוגמאות 2. פלט f a עבור הדוגמה a המינימלית החיובית ?
תחשיב הפסוקים חלק ד'. תורת ההיסק של תחשיב הפסוקים.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
גרפים - Graphs גרף G(V,E) מורכב מקבוצת צמתים V וקבוצת קשתות E.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
תזכורת : אלגברה ליניארית מסקנה קלט : וקטורים פלט : האם u תלוי ליניארית ב קלט : מערכת של n משואות לינאריות ב -m נעלמים. פלט : פתרון, או שאין כזה. אלגוריתם.
עצים מאוזנים הגדרה: משפחת עצים תקרא מאוזנת אם ,h(T) = O(log n) באשר T הוא עץ במשפחה, n הוא מספר הצמתים ב-T ו-h(T) הוא הגובה של T עצי (Adelson-Velsky,
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תחשיב היחסים (הפרדיקטים)
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 - גמישות בבינאריות גמישות בעומק - עץ חיפוש בינארי: ממוצע O(log n) גרוע ביותר (O(n - היינו רוצים לשמור את העץ מאוזן תמיד Data Structures, CS, TAU
מתמטיקה בדידה תרגול 2.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
Lecture 13 Maximal Accurate Forests From Distance Matrix.
תרגול 4 21/3/2007 מבני נתונים 07b ליאור שפירא. תזכורת – B-trees  לכל צומת x יש השדות הבאים n[x] מס ' מפתחות ב -x המפתחות עצמם בסדר לא יורד כל צומת פנימי.
2-4 tree k=2 Each node has 2,3,or 4 children. Delete delete(14,T)
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
. Sequence Alignment Tutorial #3 © Ydo Wexler & Dan Geiger.
Tirgul 12 Trees 1.
Formal Specifications for Complex Systems (236368) Tutorial #1
מבוא למדעי המחשב סיבוכיות.
אינדקסינג והשינג (indexing & hashing)
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
הרצאה 07 עצים קרן כליף.
מבני נתונים עצים קרן כליף.
תיאוריית תכנון סכמות למסדי נתונים יחסיים חלק 4
Data Structures, CS, TAU, Splay Tree
Marina Kogan Sadetsky –
Presentation transcript:

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

3 דוגמא Suffix tree למלה 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 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 דוגמאות לשימושים חיפוש תבנית P באורך m במחרוזת T באורך n מציאת תת מחרוזת משותפת מקסימלית לקבוצת מחרוזות מציאת זיהומים ושיבושים ב – DNA

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

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

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

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

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

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

14 דוגמא - המשך S=awyawxawxz

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

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

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

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 הרחבות נסמןלהיות סיפא של, אזי בהרחבה ה j, כאשר נמצא את סופה של בעץ הנוכחי, נרחיב את כך שהסיפא תהיה בתוך העץ.

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

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

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

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

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

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

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

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

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

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 דוגמא : הרחבה j עבור j>1 J-1 v S(v)

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

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

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

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

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

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

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