עבודה סמינריונית Prelude to Ukkonen algorithm ON-LINE CONSTRUCTION OF SUFFIX TREES...
-
date post
20-Dec-2015 -
Category
Documents
-
view
225 -
download
6
Transcript of עבודה סמינריונית 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
::מגישיםמגישים
עיד מוחמדעיד מוחמד
טיבי פיראסטיבי פיראס
תוכן ההרצאהתוכן ההרצאה
באמצעות באמצעות 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