Algorithms on Strings, Trees, and Sequences, Dan Gustfield Chapter 5, 7.3, 7.4, 7.17

Σχετικά έγγραφα
Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות.

מבני נתונים ואלגוריתמים תרגול #11

השאלות..h(k) = k mod m

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

חורף תש''ע פתרון בחינה סופית מועד א'

תורת הגרפים - סימונים

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

מבני נתונים (234218) 1

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

logn) = nlog. log(2n

שאלה 1 V AB פתרון AB 30 R3 20 R

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

ל הזכויות שמורות לדפנה וסטרייך

מתמטיקה בדידה תרגול מס' 13

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

Logic and Set Theory for Comp. Sci.

תרגיל 13 משפטי רול ולגראנז הערות

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

מתמטיקה בדידה תרגול מס' 12

סיכום- בעיות מינימוםמקסימום - שאלון 806

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

תרגול מס' 6 פתרון מערכת משוואות ליניארית

סדרות - תרגילים הכנה לבגרות 5 יח"ל

מבני נתונים ויעילות אלגוריתמים

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

gcd 24,15 = 3 3 =

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

תרגול פעולות מומצאות 3

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

אלגוריתמים בתורת הגרפים חלק ראשון

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

אלגברה ליניארית (1) - תרגיל 6

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

. {e M: x e} מתקיים = 1 x X Y

מודלים חישוביים תרגולמס 5

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

מודלים חישוביים פתרון תרגיל 5

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

תרגילים באמצעות Q. תרגיל 2 CD,BF,AE הם גבהים במשולש .ABC הקטעים. ABC D נמצאת על המעגל בין A ל- C כך ש-. AD BF ABC FME

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

מודלים חישוביים תרגולמס 7

אלגוריתמים / תרגיל #1

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

Practical Session #9 - Heap, Lempel-Ziv

גבול ורציפות של פונקציה סקלרית שאלות נוספות

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

רשימת בעיות בסיבוכיות

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

Hash Tables (המשך) ערבול (Hashing)

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

השאלות ידי מצביעים לילדים.

Regular Expressions (RE)

Layer(0) := {s}; i := 0; While there is an edge (u,v) s.t. u Layer( i)& v Layer( k) i := i+1; R := {s}; while there is an edge (u,v) s.t.

פתרונות , כך שאי השוויון המבוקש הוא ברור מאליו ולכן גם קודמו תקף ובכך מוכחת המונוטוניות העולה של הסדרה הנתונה.

%Initialization: Layer(0):={s}; i:=0; %Iterations: While there is an edge (u,v) s.t. u Layer( i)& v. i:=i+1;

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

Lecture 10 of Geiger & Itai s slide brochure Median/sort. pivot. Geiger & Itai, 2001

מתמטיקה בדידה תרגול מס' 5

תשובות מלאות לבחינת הבגרות במתמטיקה מועד חורף תשע"א, מיום 31/1/2011 שאלון: מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן.

הגדרה: מצבים k -בני-הפרדה

אלגברה מודרנית פתרון שיעורי בית 6

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

אלגוריתמים בתורת הגרפים חלק שני

Nir Adar גירסה 1.00 עמוד 1

מבני נתונים עצים שיעור 7

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

3-9 - a < x < a, a < x < a

תרגיל 7 פונקציות טריגונומטריות הערות

בסל A רמת התועלת היא: ) - השקה: שיפוע קו תקציב=שיפוע עקומת אדישות. P x P y. U y P y A: 10>6 B: 9>7 A: 5>3 B: 4>3 C: 3=3 C: 8=8 תנאי שני : מגבלת התקציב

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

Nir Adar

אינפי - 1 תרגול בינואר 2012

עץץץץ AVL. עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1, 0, או 1-. הגדרה: במילים אחרות: לכל צומת x בעץ,

co ארזים 3 במרץ 2016

{ : Halts on every input}

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י

אלגוריתמים בתורת הגרפים חלק רביעי

התפלגות χ: Analyze. Non parametric test

שיעור 1. זוויות צמודות

תורישק :תורישקה תייעבב בוש ןייענ?t- t ל s- s מ לולסמ שי םאה 2

אלגוריתמים 1, סמסטר אביב 2017

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

Transcript:

Lecture of Geiger & Iti s slide rochure www.cs.technion.c.il/~dng/courseds מבני נתו נים למח ר ו ז ו ת חומר קריאה לשיעור זה Algorithms on Strings, Trees, nd Sequences, Dn Gustfield Chpter 5, 7.3, 7.4, 7.7 Geiger & Iti, 200

מבנה נתוני ם Trie strings מבנה נתונים Trie מאפשר חיפוש,הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות. המימוש באמצעות עץ. לכל צומת פנימי יש לכל היותר מספר ילדים כגודל האלף-בית + אחד. כל קשת מסומנת בתו. התו (שאינו שייך ל- ) מסמן סיום מחרוזת. אנו נתייחס לגודל של כקבוע. c c דוגמא: trie עבור המחרוזות,c,, c כאשר תו סיום-המחרוזת הוא הקטן ביותר לקסיקוגרפית. Geiger & Iti, 200 הערת מימוש: בכל צומת מוחזק מערך באורך + של מצביעים מסומנים המסודרים לקסיקוגרפית (לפי סדר עולה של האותיות+).

מיו ן מח ר ו ז ות נא יבי 3 m = n. i= S i קלט: מחרוזות S,,S n שאור כן הכולל פלט: ה דפסת המחרוזות בסדר לקסיקוגרפי. נניח לרגע (לשם פשטות) שאורך כל המחרוזות אחיד ושווה ל-.m/n השוואת שתי מחרוזות לוקחת זמן O(m/n). לפתרון באמצעות השוואות נדרשות (n Θ(n log השוואות, ולכן סה"כ נדרש זמן n).o( (m/n) n log n) = O( m log נראה כעת פתרון בזמן.O(m)

מיו ן מח ר ו ז ות באמצעות Trie האל גוריתם הכנס את S,,S n ל- trie עבור על ה- trie לפי סדר preorder וכתוב לפלט את המסלול לכל עלה...2 c c דוגמא: נתונות המחרוזות,c,, c כאשר תו סיום-מחרוזת הוא (הקטן ביותר לקסיקוגרפית). המחרוזות הממוינות הן c,. c,

ניתו ח ז מנים זמן הריצה: הכנסת s i דורשת זמן ( i.o( s לכן זמן הכנסת כל המחרוזות הוא ( i.o(m)=o(σ i s סיור ה- preorder ב- trie דורש זמן כמספר הצמתים ומספר זה חסום ע"י.O(m) עבור ה דפסת s i נטפס למעלה ע ד ה שורש 5 דוגמא: c c

6 ד ח י סת Trie - נסלק מהעץ צמתים בעל י בן אח ד ע"י החלפ ת שרשרת קשתות בקשת בוד דת שתסומן בתווית המקוד דת את המחרוזת המתאימה. z c c z חיסכון במקום: מספר הע לים הוא n. ל כל צומת פנימי לפחות שני בנים. לפיכך יש לכ ל היותר -n צמתים פנימיים. ל כן סה"כ ה צמתים קטן שווה -2n. החס כון יהיה משמעותי יותר בהמשך כאשר תוויות ה קשתות יהיו מקודדות בצורה קומפקטית.

7 עץ סי ומות (Suffix tree) עץ סיומות של מחרוזת S הוא Trie שבו הוכנסו כל הסיומות של המחרוזת S עם תו סיום. x x דוגמא: עץ סיומות עבור S=xx הסיומות:,,,x,x,x xx לעץ סיומות עשרות שימושים במסגרת אלגוריתמים הפועלים על מחרוזות. אנו נבחן שלושה שימושים (שימושים רבים נוספים מתוארים בספר של :(Gusfield מציאת תת מחרוזת בתוך מחרוזת נתונה (או בתוך רשימת מחרוזות נתונה). מציאת תת מחרוזת ארוכה ביותר המשותפת לשתי מחרוזות נתונות. מימוש אלגוריתם לד חיסת אינפורמציה x x.(ziv-lempel compression)

אל ג ו ר יתם לבניי ת עץ ס י ומות נניח לאורך ההרצאה שאורך המחרוזת S הוא m. אלגוריתם נאיבי לבניית עץ סיומות עבור S: הכנס את המחרוזות S[m...m] S[...m], S[2...m],,... ל- Trie דחוס את ה- Trie שנוצר. 8 Time(m) = cm+c(m-)+ + = O(m 2 ) ניתוח זמנים: קיימים מספר אלגוריתמים מסובכים בהרבה המאפשרים לבנות עץ סיומות בזמן O(m) (כאשר גודל ה אלף-בית קבוע).הא לגוריתם היעיל ביותר מתואר במאמר: Esco Ukkonen. On-line construction of suffix trees. Algorithmic, 4:249-60, 995 ובספר של.Gusfield אנו נשתמש באלגוריתם זה כ"קופסא שחורה".

9 ח יס כו ן הכ ר ח י במק ו ם x x ניזכר בעץ הסיומות עבור S=xx (, ) x,,x, x, x, xx (, ) x S=xx חיסכון במקום: נשים לב שהתווית של כל קשת יכולה להיות בגודל (עד) m= S ושחלקים ממנה מופיעים שוב ושוב. ל כן נשמור העתק נ פרד של המח רוזת S וכל תווית תהיה זוג מצביעים המציינים את מיקום התווית במחרוזת S. סך המקום הנ ד ר ש הוא.O(m)

ח יס כו ן הכ ר ח י במק ו ם 0 x x (, ) x (, ) x תרגיל: מצא מחרוזת באורך 2m שגודל עץ הסיומות הלא דחוס הוא m 2 S=xx לכן כל אלגוריתם ליניארי לבניית עצי סיומות (דחוסים) חייב לייצג את תוויות הקשתות בצורה לא-ישירה.

x r 6 x x 4 w 2 x 5 u 2 v אי נפו רמציה נוספ ת בעץ סי ומות ניבחן שוב את עץ הסיומות עבור S=xx ע"י סיור preorder בעץ נוכל בזמן ליניארי O(m) לחשב לכל צומת z את המיקום הראשון של תת המחרוזת המיוצגת ע"י המסלול מהשורש ועד z. נסמן מיקום זה ע"י.c z 3 למשל המחרוזת x המיוצגת ע"י המסלול (r,v) מתחילה במקום השני ב- S והמחרוזת המיוצגת ע"י המסלול (r,u) מתחילה במקום החמישי ב- S. בעלים מספרים אלה מתקבלים ע"י חיסור מספר התווים המופיעים על המסלול לעלה z מהאורך הכללי m ועוד אחד (6=m בדוגמא זו). c w = בצמתים פנימיים יירשם המינימום של ערכי הילדים. למשל 2 בצומת w, 2. אמנם המיקום השמאלי ביותר של המחרוזת ב- s הוא 2. כ לומר

} n {S,..,S עם 2 עץ סי ומות מוכ ל ל עץ סיומות מוכלל הוא Trie שבו הוכנסו כל הסיומות של קבוצת מחרוזות תו סיום שונה i לכל מחרוזת S. i 3 x x x 2 6 3 4 x 2 5 2 2 2 דוגמא: עץ סיומות מוכלל עבור.{S =xx, S 2 = 2 } אלגוריתם נאיבי לבניה: נכניס את כל הסיומות אחת אחת ל- Trie בודד. זמן הריצה כאורך סכום כל הסיומות של כל המחרוזות (במקרה הגרוע גדול הרבה מסכום אורכי המחרוזות).

x 2 S 2 2 S n n דוגמא: } 2.{S =xx, S 2 = עץ סיומות עבור 2 xx נראה כך: בנית עץ סי ומות מוכ ל ל x x 2. i S 2 x אלגוריתם ליניארי : נבנה עץ סיומות עבור המחרוזת נ קצ ץ את כל תתי הע צים מתחת לקשתות שהתווית שלהן היא סיבוכיות זמן ) i.o( i s 3 העצים המצויירים כמשולש מייצגים סיומות המכילות. i סיומות אלה אינן שייכות לאף אחת מהמחרוזות המקוריות. לכן ניתן לגזום את המשולשים הנ"ל מהעץ.

4 מציאת מח ר ו ז ות קצ ר ו ת בטקס ט אר ו ך הבעיה: נתונה מחרוזת T מאורך m הנקראת טקסט. לאחר זמן עיבוד ליניארי O(m) של הטקסט, יש להיות מוכנים לקבל מחרוזת s לא ידועה באורך n ולמצוא מופע של s בטקסט T (המופע הראשון) או לקבוע שהמחרוזת s אינה נמצאת בטקסט. שימו לב שכל פתרון העובר על הטקסט T בזמן קבלת המחרוזת s ללא עיבוד מוקדם של T יאלץ לבצע לפחות Θ(m) פעולות. דוגמאות לשימושים:הטקסט הוא האנציקלופדיה בריטניקה והמחרוזת s היא מילה. הטקסט הוא הגנום של אורגניזם כלשהו, כלומר מחרוזת ארוכה של האותיות,{A,C,T,G} והמחרוזת s היא סדרה של אותיות כאלה המקודדת גן אותו יש למצוא בגנום הנתון. הערה: כמובן שקיימות וריאציות לבעיה זו כגון מציאת כל המופעים של s בטקסט הנתון, התאמה חלקית של s לטקסט, או חיפוש s בתוך אוסף טקסטים. הנחה: m>>n כלומר המחרוזת המבוקשת קצרה יחסית לאורך הטקסט.

5 אל ג ו ר יתם למציאת מח ר ו ז ות בטקסט בנה בזמן O(m) עץ סיומות עבור הטקסט T. הוסף לכל צומת v בעץ הסיומות את המספר c. v בהינתן מחרוזת s, עקוב על המסלול מהשורש של עץ הסיומות לפי התווים שבמחרוזת s. אם נמצאה המחרוזת s, אזי מקום המחרוזת הוא c v כאשר v הוא הצומת האחרון במסלול החיפוש של s. v x x דוגמא: ניבחן שוב את עץ הסיומות עבור x.t=xx המחרוזת x נמצאת 4 2 במקום הראשון (והרביעי) והמחרוזת 6 נמצאת במקום השני (והחמישי). x 3 5 2 הערה: למציאת כל המופעים של s בטקסט, האלגוריתם מוצא את c u לכל עלה u בתת העץ ששורשו v. זמן החיפוש הוא O(k) כאשר k הוא מספר המופעים של s בטקסט. החסם נובע מכך שמספר הצמתים בתת העץ קטן מ- 2k. בדוגמא, עבור המחרוזת x נגיע לצומת v שעבורו =,4 v c.

6 ד ח י סת אי נפו רמציה הבעיה: טקסט מילולי (ואחר) המקודד בצורה מפורשת הוא לעיתים ארוך מהנחוץ שכן מילים וחלקי מילים חוזרים על עצמם לאורך הטקסט. המטרה: בהינתן מחרוזת s, לייצר מחרוזת s התופסת פחות מקום מ- s כך שבעזרת אלגוריתם מתאים נצליח לשחזר את s. השימוש: העברה יעילה של קבצי אינפורמציה במדיום אלקטרוני כגון בדיסקטים, ברשתות תקשורת, וכדומה. למשל פקודות הדחיסה המקובלות winzip ו- compress במערכת Windows ובמערכת. Unix הרעיון: נעבור על המחרוזת הנתונה s משמאל לימין, בכל פעם שעוברים על תת מחרוזת z שכבר ראינו נחליף את z עם האינדקס והאורך של המופע השמאלי ביותר של z במחרוזת s. האלגוריתם המתבסס על רעיון זה נקרא Ziv-Lempel compression והוא מתואר במאמרים: Ziv, Lempel, IEEE Trns on Informtion Theory, 23:337-43, 977. Ziv, Lempel, IEEE Trns on Informtion Theory, 24:530-368, 978. כמו כן מוכח במאמרים אלה שאסימפטוטית, זהו אלגוריתם דחיסה אופטימלי.

ד וגמ אות לד ח יסה דוגמא I: 7 S = x c x y המחרוזת הנתונה: S = x (2,) c (2,3) (,3) y המחרוזת הד חוסה: במקרה זה אין כמעט דח יסה. זוהי תופעה נ פוצה עבור מחרוזות קצרות. דוגמא :II S = המחרוזת הנתונה: S = (,2) (,4) (,8) (,6) המחרוזת הד חוסה:.Θ(log k) עבור k חזרות של נק בל מחרוזת ד חוסה באורך

הג ד ר ות וס ימונ ים הגדרה: לכל אינדקס i במחרוזת,S[..m] נגדיר את תת המחרוזת Prior i להיות הרישא (Prefix) הארוכה ביותר של S[i..m] ואשר מופיעה כתת מחרוזת בתוך.S[.. i-] 8 Prior 7 =x 2 3 4 5 6 7 8 9 S = x דוגמא: c x y נסמן ב- L i את אורך המחרוזת.Prior i כאשר Prior i היא מחרוזת ריקה אז 0= i L. נסמן ב- s i את מיקום המחרוזת Prior i כאשר >0 i.l L 7 = x =3 s 7 = 2 בדוגמא :

האל ג ו ר י תם וניתו ח ו for (i=; i <= m; ) נתונה המחרוזת.S[..m] {(s i,l i ) = Compute_Prior(i) ; if (L i > 0) {output(s i, L i ); i = i + L i }; else {output(s[i]) ; i = i + } } נקודת המפתח במימוש האלגוריתם הוא חישוב ) i s) i L, בכל איטרציה. נניח שניתן לממש פעולה זו בזמן ) i O(L (כפי שנראה), מה יהיה זמן הריצה של האלגוריתם? 9 האלגוריתם קורא את המחרוזת משמאל לימין. האלגוריתם לא מחשב את ) i s) i L, עבור אינדקס i שכבר נמצא באזור הדחוס. בכל איטרציה האלגוריתם דוחס L i תווים וקופץ קדימה L i תווים במחרוזת S. לפיכך סכום האורכים L i שחושבו ע"י האלגוריתם קטן מ- m (אין חפיפות), וזמן הריצה.O(m) S = האורכים שחושבו : 6 = 0 0 2 4 8 i L

מימו ש יע יל ש ל Ziv-Lempel 20 בנה עץ סיומות דחוס T עבור המחרוזת.O(m) חשב את c v לכל צמתי T בזמן.O(m) Sבזמן בכל איטרציה, כאשר האלגוריתם נדרש לחשב את ) i s), i L, צעד על המסלול מהשורש של T לפי התווים במחרוזת S[i..m] כל עוד c. v i> כאשר החיפוש נעצר, לאחר L i תווים, המקום s i שווה ל- c u כאשר u הוא הצומת האחרון על מסלול הצעידה. x 3 6 x x 4 2 x 5 2 דחיסת S=xx S = x(,2) דוגמא: פענוח מחרוזת דחוסה: עבור על המחרוזת S משמאל לימין. במקרה של תו,העתק אותו ל- S, ובמקרה של זוג ) i,(s i,l שכפל את L i התווים המתחילים במקום.s i

מציאת תת מח ר ו זת א רו כ ה משותפת 2 הבעיה: מצא תת מחרוזת ארוכה ביותר המשותפת לשתי מחרוזות נתונות S S, 2 בזמן ) 2 O(L +L כאשר L i הוא אורך המחרוזת.S i S = superioclifornilives דוגמא: S 2 =seliver פתרון לדוגמא: תת המחרוזת הארוכה ביותר המשותפת לשתי המחרוזות הנתונות היא.live תרגיל: מצאו אלגוריתם יעיל כ כ ל שתוכל ו ללא שימוש בעצי סיומות.

מציאת תת מח ר ו זת א רו כ ה משותפת 22 הרעיון: נבנה עץ סיומות מוכלל המכיל את הסיומות של שתי המחרוזות. נסמן עלה בתווית אם העלה מתאים לסיומת של S ובתווית 2 אם העלה מתאים לסיומת של S. 2 נסמן צומת פנימי ב- אם כל ילדיו מסומנים ב-, נסמנו ב- 2 אם כל ילדיו מסומנים ב- 2, ונסמנו ב- {,2} אם תוויות ילדיו מכילים גם וגם 2. סימון זה לוקח זמן ליניארי בגודל עץ הסיומות. דוגמא: עץ סיומות מוכלל עבור.{S =xx, S 2 = 2 } x x x,2 2 2 x 2,2,2 2 2 2 שורת המחץ: תת המחרוזת הארוכה ביותר המשותפת היא זאת המיוצגת ע"י המסלול הארוך ביותר מהשורש אשר סימון כל הצמתים שלו הוא {,2}. בדוגמא,המחרוזת המשותפת היא או.

מציאת תת מח ר ו זת א רו כ ה משותפת ל- k מח ר ו ז ו ת הבעיה: מצא תת מחרוזת ארוכה ביותר המשותפת ל- k מחרוזות נתונות S S, 2.S i הוא אורך המחרוזת L i כאשר O(L +L 2 + +L k ) בזמן,,S k 23 הרעיון כמו קודם: נבנה עץ סיומות מוכלל המכיל את הסיומות של k המחרוזות. נסמן את הצמתים ונמצא את המסלול הארוך ביותר מהשורש אשר מסומן בכול אורכו ע"י {k,,}. דוגמא לשימוש:המחרוזות הנתונות הם הגנום של מספר אורגניזמים, והמחרוזת הארוכה ביותר המשותפת להם עוזרת למציאת התאמות בן הגנומים השונים. כמובן שבשימוש זה נצטרך להכניס מגבלות נוספות, כגון מיקום תת המחרוזת בכל גנום, התאמה חלקית לחלק מהגנומים,מחרוזות משותפות נוספות, וכו.