Upload
ashely-stanley
View
60
Download
4
Embed Size (px)
DESCRIPTION
מיון מחרוזות. קטן. קלט : מחרוזות מעל אלף-בית. פלט : המחרוזות ממוינות בסדר עולה לקסיקוגרפי. 1. f. s. f. v. v. c. s. s. d. 3. 3. h. j. g. j. a. n. t. 2. 3. n. זמן גישה לתו. חסם תחתון. קריאת מחרוזת i. קריאת n מחרוזת. אם. מיון מחרוזות באורך. מיון מחרוזות באורך. - PowerPoint PPT Presentation
Citation preview
מיון מחרוזות
: מחרוזות מעל אלף-ביתקלט
nsss ,,, 21 | |i is l
: המחרוזות ממוינות בסדר עולהפלט לקסיקוגרפי
)1(|| O
קטן
1
2
1
2
3
n
s df vf v s sc 3 jh3 j tg na
O(1)זמן גישה לתו
1l
חסם תחתון
iilקריאת מחרוזת
מחרוזת nקריאת 1
n
ii
l
)( nl
3
| |is l אם
1
n
ii
l
4
אלגוריתם סיבוכיות זמן
חסם תחתון
אלגוריתם סיבוכיות זמן
חסם תחתון
מיון מחרוזות באורך
מיון מחרוזות באורך
1פתרון
QuickSortסיבוכיות
lsi ||
השוואות )log( nnO
כל השוואה
)log( nnlO
)(האם אפשר למיין בזמן nlO ?5
log) סבוכיות מקום נוסף )O n
2פתרון
RadixSortסיבוכיות
)(nO
מיונים l
כל מיון
)( nlO
6 ) סבוכיות מקום נוסף )O n
1
n
ii
O l
| |i is l הוכח!אם
7
אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף
Quicksort, HeapSort
RadixSort
חסם תחתון
אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף
Quicksort, HeapSort
RadixSort
חסם תחתון
מיון מחרוזות באורך
מיון מחרוזות באורך
$
$ c
b
$
c
b
b
abb a
$abcc
Trie
c
bbc
b
$
bb
abc
3פתרון
8
$
$ c
b
$
c
b
b
a
$
c
b
$
abbabcc
bbc
bb
abc
abb abc abcc bb bbc
בעץpreorderסיור שורש – בן שמאלי ראשון - ימני
9
למיון למחרוזות באורך 3פתרון
Trie ל si הכנס i- לכל 1
בעץ preorder- סיור 2
$
$ c
b
$
c
b
b
a
$
c
b
$)( nlO
)( nlO
)( nlO
lO)(כל הכנסה
עוברים על כל קשת פעמיים
10
למיון מחרוזות באורך 3פתרון
Trie ל si הכנס i- לכל 1
בעץ preorder- סיור 2
$
$ c
b
$
c
b
b
a
$
c
b
$ 1
n
iiO l
)כל הכנסה )iO l
עוברים על כל קשת פעמיים
11
1
n
iiO l
1
n
iiO l
Trieמספר הצמתים ב-$
$ c
b
$
c
b
b
a
$
c
b
$
)(יכול להגיע עד nlO
aaaaaaaaaaaaabaaaaaaaaaaaacaaaaaaaaaaaadaaaaaaaaaaaa …
למשל לסדרה
סבוכיות מקום נוסף
12
1
n
iiO l
dc
aaaaaaaaaaaaabaaaaaaaaaaaacaaaaaaaaaaaadaaaaaaaaaaaa …
ba
aa
aa
aa
aa
aa
aa
aa
aa
…
00000000000001000000000000010000000000011000000000000010000000000 …
2||
13
14
אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף
Quicksort, HeapSort
RadixSort
Trie
חסם תחתון
אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף
Quicksort, HeapSort
RadixSort
Trie
חסם תחתון
מיון מחרוזות באורך
מיון מחרוזות באורך
c$
c$
b$
ab
bb
$
$ c
b
$
c
b
b
a
$
c
b
$
Trieדחיסת
15
c$
c$
b$
ab
bb
$
$c
abbabcc
bbcbb
abc
nמספר העלים
מספר הצמתים nהפנימיים >
בנים2לכל צמת פנימית לפחות
2n< מספר הצמתים
Trieב- l n במקום לא דחוס
16
בנים2אם בעץ לכל צמת פנימית יש לפחות אזי מספר העלים < מספר הצמתים הפנמיים
משפט
הוכחה
n1
l1
n2
l2
מספר הצמתים הפנמייםמספר העלים
n2<l2
באינדוקציה
n1<l1
n=n1+n2+…+1<l1+l2+…=l
הצמתים פנמייםn עץ עם Tיהי
עלים lו-
17
⋯ ⋯
18
אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף
Quicksort, HeapSort
RadixSort
Trie
חסם תחתון
אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף
Quicksort, HeapSort
RadixSort
Trie
חסם תחתון
מיון מחרוזות באורך
מיון מחרוזות באורך
Insert
Delete
Search
מבנה נתונים במחרוזות
1Hashפתרון
n ממוצע ידוע וזמן O(l)
?O(l) מדויקהאם קיים פתרון עם זמן 19
abb
a
c$20
Insert(ac)
Trie
c$
c$
b$
bb
$
$c
abbabcc
bbcbb
abc
2פתרון
ac
21
Insert )(lO
Delete )(lO
Search )(lO
Trie
c$
c$
b$
ab
bb
$
$c
abbabcc
bbcbb
abc
2פתרון
מעל אלף-בית קטןs: טכסט קלט וקבוצה של מחרוזות
nsss ,,, 21 | |i is l
ע של כל מחרוזת בטכסט פלט Rמופ :
|)חיפוש מחרוזת אחת | )iO s l
22
חיפוש מחרוזת בטקסט
𝑠=𝑎𝑎𝑎𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑎𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑎𝑏𝑎𝑎𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑎𝑏𝑏𝑎 ⋯𝑠𝑖=𝑎𝑎𝑏𝑎𝑏𝑎𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏
למשל:
מעל אלף-בית קטןs: טכסט קלט וקבוצה של מחרוזות
nsss ,,, 21 | |i is l
ע של כל מחרוזת בטכסט פלט Rמופ :
|)חיפוש מחרוזת אחת | )iO s l
|)חיפוש כל המחרוזות | )O s l
(| | )s l חסם תחתון
23
חיפוש מחרוזת בטקסט
1
n
ii
l l
(| | )O s l חסם תחתון
האם אפשר לפתור את הבעיה ב-
(| | )O s l?
כן!!!!!!!24
יומות Uעץ סSuffix tree
s = xabxa$$a$
xa$
bxa$
abxa$
xabxa$
xa
bxa$
$
bxa
$ $ $
a
bxa$
יומותמשפט Uקיים אלגוריתם שבונה עץ ס O(|s|2) בזמן
(|s|+1)(|s|+2)/2
|s|+1
25
12
3
⋮|s|
s = xabxa$$a$
xa$
bxa$
abxa$
xabxa$
xa
bxa$
$
bxa
$ $ $
a
bxa$
יומות משפט Uקיים אלגוריתם שבונה עץ ס O(|s|2) בזמן
רק לבנות את העץ
|O(|sצריכים 2)
26
יומות Uעץ סSuffix tree
xa (4,5)
$
(6,6
)bxa
$(
3,6)
bxa$
(3,6
)
$(
6,6
)
a(
5,5)
$(
6,6
)
bxa
$(
3,6
)
s = xabxa$ 123456
יומות משפט ללא הוכחה Uקיים אלגוריתם שבונה עץ ס דחוס
O(|s|) בזמן
יומות Uדחיסת עץ ס
27
סבוכיותO(|s| + l)
s = xabxa$ 123456
xa (4,5)
$
(6,6
)
bxa$
(3,6)
bxa$
(3,6
)$
(6,
6)
a(
5,5)
$(
6,6
)
bxa
$(
3,6
)
הטכסטקיים אלגוריתם שבונה עץ
יומות O(|s|) בזמן דחוסס
יומות בונים עץ ס
s1 = xa
s2 = xabx
5-4+1=2 6-3+1=4 6 - 6 +1=1+
28
1
n
ii
l l
s = xabxa$ 123456
xa (4,5)
$
(6,6
)
bxa$
(3,6)
bxa$
(3,6
)$
(6,
6)
a(
5,5)
$(
6,6
)
bxa
$(
3,6
)
הטכסט
s2 = xabx
5-4+1=2 6-3+1=4 6 - 6 +1=1+
sxa
s2
bxa$
29
xa (4,5)
$
(6,6
)bxa
$(
3,6)
bxa$
(3,6
)
$(
6,6
)
a(
5,5)
$(
6,6
)
bxa
$(
3,6
)
s = xabxa$ 123456
463
5
1
2
2פתרון
2
3=6-3+11
1
41
1
4
=6-5+1+
30
xa (4,5)
$
(6,6
)bxa
$(
3,6)
bxa$
(3,6
)
$(
6,6
)
a(
5,5)
$(
6,6
)
bxa
$(
3,6
)
s = xabxa$ 123456
46
1
3
5
12
2
1
2פתרון
1
41
1
41
1
4 = min(4,1)
31
xaמופע ראשון של
xa
$ bxa$
bxa$
$
a$bxa
$
s = xabxa$ 123456
46
1
3
5
12
2
1
2פתרון
s1 = xa s2 = abע הראשון של כל מחרוזת בטכסטפלט Rמופ :
s3 = a
: כלפלטים Uע Rמופ Zה
32
דחיסה
aabcbbabbsbabcbbbbabbabcbbabbabbsb…
aabcbbabbsb (2,5) bbabbabcbbabbabbsb…
S[1..m]=
Priori=S[i..i+Li-1] S[i..i+Li-1]הרישה הארוכה ביותר
אשר מופיעה כתת מחרוזת S[1..i-1]ב-
i=12
Prior12=abcbbL12=5
s12=2
(s 12,L12)נגדיר
33
Ziv-Lempelאלגוריתם דחיסה
For (i=1 ; i>=m ;;){Compute (si,Li) if Li<1 {output(si,Li); i=i+Li}; else {output(S[i]); i=i+1}}
aabcbbabbsbabbbbbabbabcbbabbabbsb…aabcbb
(2,2)
bs
(6,4) Compute (si,Li)איך לחשב
Input S[1..m]
34
xa
$ bxa$
bxa$
$
a$bxa
$
s = xabxa$ 123456
46
1
3
5
12
2
1
יומותפתרון Uעץ ס
xabxa$
(1,2)
לא תת-מחרוזת קודמת
4<1 תת-מחרוזת
קודמת
סבוכיות
O(|s|)35
מציאת תת-מחרוזת ארוכה משותפת
s2 ו- s1: מחרוזות קלט
: תת-מחרוזת ארוכה ביותר משותפתפלט
s1=superiocalifornialives
s2=sealiver
:דוגמא
m =|s1|+|s2|
Ω(m)
נסמן:
חסם תחתון:36
יומות ל-פתרון Uבונים עץ ס
s=s1$1s2 $2
s2 s1
$2$2$2 $2$2 $1 $1 $1 $1
$2 $2$2 $2
יומות מוכלל Uעץ ס
סבוכיות
O(|s|)=O(m)
|s| =|s1|+|s2|
37
𝑥
𝑎
$1 𝑥𝑎𝑏𝑥𝑎
$2
𝑏
$1 𝑥𝑎
𝑏𝑥𝑎
$2
𝑏𝑏
$1 𝑥𝑎𝑏𝑥𝑎
$2
$1𝑥𝑎𝑏𝑥𝑎
$2
𝑥𝑎
$
2
𝑥
𝑎$2
𝑥𝑎$2
$
2
𝑎$
2
$
2
𝑠=𝑏𝑥𝑎𝑏$1𝑥𝑎𝑏𝑥𝑎 $2
𝑏$1 𝑥𝑎𝑏𝑥𝑎
$2
𝑥
𝑎
$1 𝑥𝑎𝑏𝑥𝑎
$2
𝑏
$1 𝑥𝑎
𝑏𝑥𝑎
$2
𝑏𝑏
$1 𝑥𝑎𝑏𝑥𝑎
$2
$1𝑥𝑎𝑏𝑥𝑎
$2
𝑥𝑎
$
2
𝑥
𝑎$2
𝑥𝑎$2
$
2
𝑎$
2
$
2
𝑠=𝑏𝑥𝑎𝑏$1𝑥𝑎𝑏𝑥𝑎 $2
𝑏$1 𝑥𝑎𝑏𝑥𝑎
$2
$1$2$2 $1 $1$2 $2$1$2 $1 $2$2 $1$1$2 $2
1 2
1
s1תת-מחרוזת ששייכת רק למחרוזת 1s2תת-מחרוזת ששייכת רק למחרוזת 2
s2ו- s1תת-מחרוזת ששייכת למחרוזת 1,2
1,2
1,21,2
1,2 סבוכיות
O(m)
צהובכחולירוק
40
תת-מחרוזת ארוכה ביותר המשותפת היאזאת המיוצגת ע"י המסלול הארוך ביותר
בתת-עץ עם צמתים
$1$2$2 $1 $1$2 $2$1$2 $1 $2$2 $1$1$2 $2
1 2
11,2
1,21,2
1,2
1,2
סבוכיות
O(m)
41
𝑥
𝑎
$
1
𝑏
$1
𝑏𝑏
$
1
$1
𝑥𝑎
$
2
𝑥
𝑎$2
𝑥𝑎$2
$
2
𝑎$
2
$
2
𝑠=𝑏𝑥𝑎𝑏$1𝑥𝑎𝑏𝑥𝑎 $2
𝑏
$1
3
1
0
1
2
1
3
𝑏𝑥𝑎
𝑥𝑎𝑏
43
2011מועד א חורף
xa
$ bxa$
bxa$
$
a$bxa
$
s = xabxa$ 123456
46
1
3
5
12
2
1
פתרון
44
b,bx,bxa,bxa$
empty string
$
x,xa
a$
a
ab,abx,abxa,abxa$
xa$
xab,xabx,xabxa,xabxa$
יומות Uעץ ס
בעץ preorderסיור
סוף45
נחזור ל-יומות Uלא דחוסעץ ס Suffix tree
s = xabxa$$a$
xa$
bxa$
abxa$
xabxa$
xa
bxa$
$
bxa
$ $ $
a
bxa$
יומותמשפט Uקיים אלגוריתם שבונה עץ ס O(|s|2) בזמן
|s|+1
|s|+1
יומות Uשרץ בזמן לא דחוס האם קיים אלגוריתם לעץ ס O(|s|)? 46
s=000 001 010 011 100 101 110 111
0
0
0 0 0 0
0
1
1 1
1 1 1 1
|s| = 3 x 23
000 001 010 011 100 101 110 111
… + (s|-9|) + (s|-6|) + (s|-3|)גודל העץ לפחות
s=000001010011100101110111
יומות עץ ס
47
s=(0…000) (0…001) (0…010) (0…011) …
k
גודל העץ
2
||1
||)2|(|)|(|
k
s
k
skksks
2 2| | | |
log | |
s sO O
k s
kks 2|| )(log sOk
2| |
log | |
sO
s
48