מיון מחרוזות

Post on 02-Jan-2016

60 views 4 download

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

Transcript of מיון מחרוזות

מיון מחרוזות

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

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