עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES

Preview:

DESCRIPTION

עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES. מגישים: עיד מוחמד טיבי פיראס. תוכן ההרצאה. בהרצאה זו נדון בבניית עצי T rie באמצעות אלגוריתם ON-LINE-TRIE . - PowerPoint PPT Presentation

Citation preview

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

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

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

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

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

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

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

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

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

PREFIXESPREFIXES

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

i.P[1..i]

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

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

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

= 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

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

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²) כדי לבנות עץכדי לבנות עץ•

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

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 בזמןבזמן

SUFFIX LINKSSUFFIX LINKS

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

aa

bb

aa

aa

bb

aa

aaaa

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

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

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

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

מהצומת מהצומת 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 הרצףהרצף•

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

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

•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

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

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

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

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

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

Recommended