18
תתתתת תתתתתתתתתת תתתתת תתתתתתתתתתPrelude to Ukkonen Prelude to Ukkonen algorithm algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES ON-LINE CONSTRUCTION OF SUFFIX TREES םםםםםם םםםםםם: : םםם םםםםם םםם םםםםם םםםם םםםםם םםםם םםםםם

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

  • View
    225

  • Download
    6

Embed Size (px)

Citation preview

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

עבודה סמינריוניתעבודה סמינריונית

Prelude to Ukkonen algorithmPrelude to Ukkonen algorithmON-LINE CONSTRUCTION OF SUFFIX TREESON-LINE CONSTRUCTION OF SUFFIX TREES

::מגישיםמגישים

עיד מוחמדעיד מוחמד

טיבי פיראסטיבי פיראס

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

תוכן ההרצאהתוכן ההרצאה

באמצעות באמצעות TTrierieבהרצאה זו נדון בבניית עצי בהרצאה זו נדון בבניית עצי •..ON-LINE-TRIEON-LINE-TRIEאלגוריתם אלגוריתם

הבנייה תהיה בנייה הדרגתית, הכוונה היא הבנייה תהיה בנייה הדרגתית, הכוונה היא •לבנות עצי ביניים שכל עץ מהן יעזור בבניית לבנות עצי ביניים שכל עץ מהן יעזור בבניית

online intermeduate online intermeduate))העץ שאחריו. העץ שאחריו. treestrees))

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

PREFIXESPREFIXES

, מסמל תת מילה מהטקסט Pi הגדרה:הגדרה: ומסתיימת באינדיקס1שמתחילה מהאינדקס

i.P[1..i]

דוגמאות בשקופית הבאה...•

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

PrefixesPrefixesדוגמאות על דוגמאות על

text = abbatext = abba

P¹ = P[1..1] = aP¹ = P[1..1] = a P² = P[1..2] = abP² = P[1..2] = ab P³ = P[1..3] = abbP³ = P[1..3] = abb PP44 = P[1..4] = P = abba = P[1..4] = P = abba

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

תזכורתתזכורת

= text = text( ל_ ( ל_ Trie TreeTrie Treeבניית עץ נסיוני )בניית עץ נסיוני )abaabbabaabb

Trie(text)Trie(text)

aa

bb

aa

aa

bb

bb

bb

aa

aa

bb

bb

bb

aa

bb

bb

bb

הצמתים השחורים נקראיםהצמתים השחורים נקראים צמתים מהותיים. צמתים מהותיים.

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

ON-LINE ON-LINE INTERMEDIATEINTERMEDIATE TREESTREES

?? ON-LINE INTERMEDIATE TREESON-LINE INTERMEDIATE TREESמה הכוונה בבניית מה הכוונה בבניית

הכוונה לבנות עצי ביניים, שכל עץ מהן עוזר הכוונה לבנות עצי ביניים, שכל עץ מהן עוזר בבניית העץ שאחריו.בבניית העץ שאחריו.

Trie(PTrie(P¹¹), Trie(P²), . . ., Trie(P), Trie(P²), . . ., Trie(Pn-1n-1))

Trie(PTrie(P¹¹)) נעזרים בעץנעזרים בעץ Trie(P²)Trie(P²) כדי לבנות עץכדי לבנות עץ•

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

SUFFIX LINKSSUFFIX LINKS

•xpxp .היא מחרוזת. היא מחרוזתxx _הוא תו אחד ו_ הוא תו אחד ו pp היא היא תת-מילה.תת-מילה.

•VV היא צומת שהתווית שלה היא צומת שהתווית שלה xpxp אם קיימת . אם קיימת . ,V, V((, אז המצביע , אז המצביע pp עם תווית עם תווית S(V)S(V)צומת צומת S(V)S(V)(( נקרא נקרא Suffix LinkSuffix Link..

Label[S)V(] = pLabel[S)V(] = p

Label[V] = xpLabel[V] = xp

VV

S(V)S(V)

Suffix Suffix LinkLink

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

SUFFIX LINKSSUFFIX LINKS

•Suf[root]Suf[root] = root = root

suf[V] = nilsuf[V] = nilאז אז )S)V(S)Vאם אין צומת אם אין צומת •

•Suffix LinksSuffix Links תורמים לבנייתתורמים לבניית Suffix TreesSuffix Trees ..)O)n(O)n בזמןבזמן

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

SUFFIX LINKSSUFFIX LINKS

דוגמא:דוגמא:•

aa

bb

aa

aa

bb

aa

aaaa

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

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

ON-LINE-TRIE ON-LINE-TRIE ALGORITHMALGORITHM

Algorithm on-line-trie;Algorithm on-line-trie;

create the two-node tree create the two-node tree Trie(text[1])Trie(text[1]) with suffix with suffix links;links;

for i := 2 to n do beginfor i := 2 to n do begin

aaii := := text[i]text[i];;

VVi -1 i -1 := deepest leaf of := deepest leaf of Trie(P Trie(P i -1i -1));;

k := min{ k : son)k := min{ k : son)suf suf kk[V[Vi-1i-1], a], aii( = nil };( = nil };

create acreate aii-sons for V-sons for Vi -1i -1, suf[V, suf[Vi-1i-1], … , suf ], … , suf k-1k-1[V[Vi-1i-1],],

and new suffix links for them.and new suffix links for them.

endend

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

Creating aCreating aii-sons-sons

VV55

VV44

VV33

VV22

VV11 aaii

BeforeBefore

AfterAfter

VV55

VV44

VV33

VV22

VV11 aaii

VV55

VV44

VV33

VV22

VV11

aaii

aaii

aaii

aaii

New suffix links createdNew suffix links createdNew nodesNew nodes

existing suffix linksexisting suffix links

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

רעיון האלגוריתםרעיון האלגוריתם

מהצומת מהצומת suffix linkssuffix links עוברים דרך ה_ עוברים דרך ה_iiבכל איטרציה בכל איטרציה •..aaii-sons-sons עמוקה עד לצומת הראשונה ומוסיפיםעמוקה עד לצומת הראשונה ומוסיפים הכיהכי

•VVkk הואהוא suffixsuffix של האורךשל האורך kk _מ_מ PPii

דוגמא:דוגמא: text = abab, i = 3, k = 2text = abab, i = 3, k = 2

PPii = aba V = aba Vkk = = suf[ab]suf[ab] = b = bהן בעצם צמתים מהותיים.הן בעצם צמתים מהותיים. VVkk הצמתיםהצמתים• PPii של של suffixessuffixes מייצג את ה_מייצג את ה_ VVii, V, Vi-1i-1, …, V, …, V00 הרצףהרצף•

בסדר יורד מבחינת אורכן.בסדר יורד מבחינת אורכן.

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

המשך רעיון האלגוריתםהמשך רעיון האלגוריתם

•aai i = text[i]= text[i]•VVjj הוא הצומת הראשונה ברצף הצמתים המהותיים הוא הצומת הראשונה ברצף הצמתים המהותיים

VVi-1i-1, V, Vi-2i-2, …, V, …, V00 שמקיים שמקייםchild)Vchild)Vjj, a, aii( = nil( = nil , ,..aaiiכלומר, שיש לה צומת עם תווית כלומר, שיש לה צומת עם תווית

הוא תוצאה של הוספת הוא תוצאה של הוספת Trie(P Trie(P ii))קיים אז העץ קיים אז העץ VVjjאם אם • לצמתים: לצמתים: aaiiבנים חדשים עם תווית בנים חדשים עם תווית

VVi-1i-1, V, Vi-2i-2, …, V, …, Vj+1j+1

aaiiלא קיים אז מוסיפים בנים חדשים עם תווית לא קיים אז מוסיפים בנים חדשים עם תווית VVjjאם אם •לצמתים:לצמתים:

VVi-1i-1, V, Vi-2i-2, …, V, …, V00

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

ON-LINE-TRIE ON-LINE-TRIE ALGORITHMALGORITHM

= text = textהרצת האלגוריתם על הקלט הרצת האלגוריתם על הקלט •abaabbabaabb..

Trie(P Trie(P 11) Trie(P ) Trie(P 22))

המשך ההרצה בדף הבא...המשך ההרצה בדף הבא...

aaP P 1 1 = a= a P P 22= ab= abi = 2i = 2aaii = b = b

aaaa

bb

bb

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

ON-LINE-TRIE ON-LINE-TRIE ALGORITHMALGORITHM

Trie(P Trie(P 33))

P P 3 3 = aba= abai = 3i = 3aai i = a= a

aa

bb

bb

bb

aa

aa

bb

aa

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

ON-LINE-TRIE ON-LINE-TRIE ALGORITHMALGORITHM

Trie(P Trie(P 44))

abaaabaa= = P P 44

i = 4i = 4aai i = a= a

aa

bb

aa

aa

bb

aa

aaaa

aa

bb

aa

bb

aa

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

ON-LINE-TRIE ON-LINE-TRIE ALGORITHMALGORITHM

Trie(P Trie(P 55))

P P 55 = abaab = abaabi = 5i = 5aai i = b= b

aa

bb

aa

aa

bb

aa

aaaa

aa

bb

aa

aa

bb

bb

aa

aa

bb

aa

bb

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

ON-LINE-TRIE ON-LINE-TRIE ALGORITHMALGORITHM

P P 6 6 = abaabb= abaabbi = 6i = 6aai i = b= b

Trie(P Trie(P 66))

aa

bb

aa

aa

bb

bb

aa

aa

bb

aa

bb

aa

bb

aa

aa

bb

bb

bb

aa

aa

bb

bb

bb

aa

bb

bb

bb