48
תתתת תתתתתתת תתתתת- : תתתתתתת תתת תתת ת : תתתתתתתת תתתתתתת תתתת תתתת תתתתתתתתתת תתת1 n s s s , , , 2 1 || i i s l ) 1 ( | | O

מיון מחרוזות

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

Page 1: מיון  מחרוזות

מיון מחרוזות

: מחרוזות מעל אלף-ביתקלט

nsss ,,, 21 | |i is l

: המחרוזות ממוינות בסדר עולהפלט לקסיקוגרפי

)1(|| O

קטן

1

Page 2: מיון  מחרוזות

2

1

2

3

n

s df vf v s sc 3 jh3 j tg na

O(1)זמן גישה לתו

1l

Page 3: מיון  מחרוזות

חסם תחתון

iilקריאת מחרוזת

מחרוזת nקריאת 1

n

ii

l

)( nl

3

| |is l אם

1

n

ii

l

Page 4: מיון  מחרוזות

4

אלגוריתם סיבוכיות זמן

חסם תחתון

אלגוריתם סיבוכיות זמן

חסם תחתון

מיון מחרוזות באורך

מיון מחרוזות באורך

Page 5: מיון  מחרוזות

1פתרון

QuickSortסיבוכיות

lsi ||

השוואות )log( nnO

כל השוואה

)log( nnlO

)(האם אפשר למיין בזמן nlO ?5

log) סבוכיות מקום נוסף )O n

Page 6: מיון  מחרוזות

2פתרון

RadixSortסיבוכיות

)(nO

מיונים l

כל מיון

)( nlO

6 ) סבוכיות מקום נוסף )O n

1

n

ii

O l

| |i is l הוכח!אם

Page 7: מיון  מחרוזות

7

אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף

Quicksort, HeapSort

RadixSort

חסם תחתון

אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף

Quicksort, HeapSort

RadixSort

חסם תחתון

מיון מחרוזות באורך

מיון מחרוזות באורך

Page 8: מיון  מחרוזות

$

$ c

b

$

c

b

b

abb a

$abcc

Trie

c

bbc

b

$

bb

abc

3פתרון

8

Page 9: מיון  מחרוזות

$

$ c

b

$

c

b

b

a

$

c

b

$

abbabcc

bbc

bb

abc

abb abc abcc bb bbc

בעץpreorderסיור שורש – בן שמאלי ראשון - ימני

9

Page 10: מיון  מחרוזות

למיון למחרוזות באורך 3פתרון

Trie ל si הכנס i- לכל 1

בעץ preorder- סיור 2

$

$ c

b

$

c

b

b

a

$

c

b

$)( nlO

)( nlO

)( nlO

lO)(כל הכנסה

עוברים על כל קשת פעמיים

10

Page 11: מיון  מחרוזות

למיון מחרוזות באורך 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

Page 12: מיון  מחרוזות

Trieמספר הצמתים ב-$

$ c

b

$

c

b

b

a

$

c

b

$

)(יכול להגיע עד nlO

aaaaaaaaaaaaabaaaaaaaaaaaacaaaaaaaaaaaadaaaaaaaaaaaa …

למשל לסדרה

סבוכיות מקום נוסף

12

1

n

iiO l

Page 13: מיון  מחרוזות

dc

aaaaaaaaaaaaabaaaaaaaaaaaacaaaaaaaaaaaadaaaaaaaaaaaa …

ba

aa

aa

aa

aa

aa

aa

aa

aa

00000000000001000000000000010000000000011000000000000010000000000 …

2||

13

Page 14: מיון  מחרוזות

14

אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף

Quicksort, HeapSort

RadixSort

Trie

חסם תחתון

אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף

Quicksort, HeapSort

RadixSort

Trie

חסם תחתון

מיון מחרוזות באורך

מיון מחרוזות באורך

Page 15: מיון  מחרוזות

c$

c$

b$

ab

bb

$

$ c

b

$

c

b

b

a

$

c

b

$

Trieדחיסת

15

Page 16: מיון  מחרוזות

c$

c$

b$

ab

bb

$

$c

abbabcc

bbcbb

abc

nמספר העלים

מספר הצמתים nהפנימיים >

בנים2לכל צמת פנימית לפחות

2n< מספר הצמתים

Trieב- l n במקום לא דחוס

16

Page 17: מיון  מחרוזות

בנים2אם בעץ לכל צמת פנימית יש לפחות אזי מספר העלים < מספר הצמתים הפנמיים

משפט

הוכחה

n1

l1

n2

l2

מספר הצמתים הפנמייםמספר העלים

n2<l2

באינדוקציה

n1<l1

n=n1+n2+…+1<l1+l2+…=l

הצמתים פנמייםn עץ עם Tיהי

עלים lו-

17

⋯ ⋯

Page 18: מיון  מחרוזות

18

אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף

Quicksort, HeapSort

RadixSort

Trie

חסם תחתון

אלגוריתם סיבוכיות זמן סיבוכיות מקום נוסף

Quicksort, HeapSort

RadixSort

Trie

חסם תחתון

מיון מחרוזות באורך

מיון מחרוזות באורך

Page 19: מיון  מחרוזות

Insert

Delete

Search

מבנה נתונים במחרוזות

1Hashפתרון

n ממוצע ידוע וזמן O(l)

?O(l) מדויקהאם קיים פתרון עם זמן 19

Page 20: מיון  מחרוזות

abb

a

c$20

Insert(ac)

Trie

c$

c$

b$

bb

$

$c

abbabcc

bbcbb

abc

2פתרון

ac

Page 21: מיון  מחרוזות

21

Insert )(lO

Delete )(lO

Search )(lO

Trie

c$

c$

b$

ab

bb

$

$c

abbabcc

bbcbb

abc

2פתרון

Page 22: מיון  מחרוזות

מעל אלף-בית קטןs: טכסט קלט וקבוצה של מחרוזות

nsss ,,, 21 | |i is l

ע של כל מחרוזת בטכסט פלט Rמופ :

|)חיפוש מחרוזת אחת | )iO s l

22

חיפוש מחרוזת בטקסט

𝑠=𝑎𝑎𝑎𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑎𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑎𝑏𝑎𝑎𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑎𝑏𝑏𝑎 ⋯𝑠𝑖=𝑎𝑎𝑏𝑎𝑏𝑎𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑎𝑏𝑏𝑏𝑎𝑏

למשל:

Page 23: מיון  מחרוזות

מעל אלף-בית קטןs: טכסט קלט וקבוצה של מחרוזות

nsss ,,, 21 | |i is l

ע של כל מחרוזת בטכסט פלט Rמופ :

|)חיפוש מחרוזת אחת | )iO s l

|)חיפוש כל המחרוזות | )O s l

(| | )s l חסם תחתון

23

חיפוש מחרוזת בטקסט

1

n

ii

l l

Page 24: מיון  מחרוזות

(| | )O s l חסם תחתון

האם אפשר לפתור את הבעיה ב-

(| | )O s l?

כן!!!!!!!24

Page 25: מיון  מחרוזות

יומות 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|

Page 26: מיון  מחרוזות

s = xabxa$$a$

xa$

bxa$

abxa$

xabxa$

xa

bxa$

$

bxa

$ $ $

a

bxa$

יומות משפט Uקיים אלגוריתם שבונה עץ ס O(|s|2) בזמן

רק לבנות את העץ

|O(|sצריכים 2)

26

יומות Uעץ סSuffix tree

Page 27: מיון  מחרוזות

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

Page 28: מיון  מחרוזות

סבוכיות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

Page 29: מיון  מחרוזות

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

Page 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

463

5

1

2

2פתרון

2

3=6-3+11

1

41

1

4

=6-5+1+

30

Page 31: מיון  מחרוזות

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מופע ראשון של

Page 32: מיון  מחרוזות

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

Page 33: מיון  מחרוזות

דחיסה

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

Page 34: מיון  מחרוזות

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

Page 35: מיון  מחרוזות

xa

$ bxa$

bxa$

$

a$bxa

$

s = xabxa$ 123456

46

1

3

5

12

2

1

יומותפתרון Uעץ ס

xabxa$

(1,2)

לא תת-מחרוזת קודמת

4<1 תת-מחרוזת

קודמת

סבוכיות

O(|s|)35

Page 36: מיון  מחרוזות

מציאת תת-מחרוזת ארוכה משותפת

s2 ו- s1: מחרוזות קלט

: תת-מחרוזת ארוכה ביותר משותפתפלט

s1=superiocalifornialives

s2=sealiver

:דוגמא

m =|s1|+|s2|

Ω(m)

נסמן:

חסם תחתון:36

Page 37: מיון  מחרוזות

יומות ל-פתרון 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

Page 38: מיון  מחרוזות

𝑥

𝑎

$1 𝑥𝑎𝑏𝑥𝑎

$2

𝑏

$1 𝑥𝑎

𝑏𝑥𝑎

$2

𝑏𝑏

$1 𝑥𝑎𝑏𝑥𝑎

$2

$1𝑥𝑎𝑏𝑥𝑎

$2

𝑥𝑎

$

2

𝑥

𝑎$2

𝑥𝑎$2

$

2

𝑎$

2

$

2

𝑠=𝑏𝑥𝑎𝑏$1𝑥𝑎𝑏𝑥𝑎 $2

𝑏$1 𝑥𝑎𝑏𝑥𝑎

$2

Page 39: מיון  מחרוזות

𝑥

𝑎

$1 𝑥𝑎𝑏𝑥𝑎

$2

𝑏

$1 𝑥𝑎

𝑏𝑥𝑎

$2

𝑏𝑏

$1 𝑥𝑎𝑏𝑥𝑎

$2

$1𝑥𝑎𝑏𝑥𝑎

$2

𝑥𝑎

$

2

𝑥

𝑎$2

𝑥𝑎$2

$

2

𝑎$

2

$

2

𝑠=𝑏𝑥𝑎𝑏$1𝑥𝑎𝑏𝑥𝑎 $2

𝑏$1 𝑥𝑎𝑏𝑥𝑎

$2

Page 40: מיון  מחרוזות

$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

Page 41: מיון  מחרוזות

תת-מחרוזת ארוכה ביותר המשותפת היאזאת המיוצגת ע"י המסלול הארוך ביותר

בתת-עץ עם צמתים

$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

Page 42: מיון  מחרוזות

𝑥

𝑎

$

1

𝑏

$1

𝑏𝑏

$

1

$1

𝑥𝑎

$

2

𝑥

𝑎$2

𝑥𝑎$2

$

2

𝑎$

2

$

2

𝑠=𝑏𝑥𝑎𝑏$1𝑥𝑎𝑏𝑥𝑎 $2

𝑏

$1

3

1

0

1

2

1

3

𝑏𝑥𝑎

𝑥𝑎𝑏

Page 43: מיון  מחרוזות

43

2011מועד א חורף

Page 44: מיון  מחרוזות

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סיור

Page 45: מיון  מחרוזות

סוף45

Page 46: מיון  מחרוזות

נחזור ל-יומות 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

Page 47: מיון  מחרוזות

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

Page 48: מיון  מחרוזות

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