1 / 48

מיון מחרוזות

מיון מחרוזות. קטן. קלט : מחרוזות מעל אלף-בית. פלט : המחרוזות ממוינות בסדר עולה לקסיקוגרפי. 1. f. s. f. v. v. c. s. s. d. 3. 3. h. j. g. j. a. n. t. 2. 3. n. זמן גישה לתו. חסם תחתון. קריאת מחרוזת i. קריאת n מחרוזת. אם. מיון מחרוזות באורך. מיון מחרוזות באורך.

Download Presentation

מיון מחרוזות

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מיון מחרוזות קטן קלט: מחרוזות מעל אלף-בית פלט: המחרוזות ממוינות בסדר עולה לקסיקוגרפי

  2. 1 f s f v v c s s d 3 3 h j g j a n t 2 3 n זמן גישה לתו

  3. חסם תחתון קריאת מחרוזת i קריאת nמחרוזת אם

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

  5. פתרון 1 QuickSort סיבוכיות השוואות כל השוואה סבוכיות מקום נוסף ? האם אפשר למיין בזמן

  6. פתרון 2 RadixSort סיבוכיות מיונים כל מיון אם הוכח! סבוכיות מקום נוסף

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

  8. Trie פתרון 3 abb b a abcc b bbc b bb $ c c b abc $ $ c $ $

  9. abb abcc b a bbc b b bb $ c abc c b $ $ c $ סיור preorder בעץ שורש – בן שמאלי ראשון - ימני $ abb abc abcc bb bbc

  10. פתרון 3למיון למחרוזות באורך 1- לכל i הכנס si ל Trie b a 2- סיור preorder בעץ b b כל הכנסה $ c c b $ עוברים על כל קשת פעמיים $ c $ $

  11. פתרון 3למיון מחרוזות באורך 1- לכל i הכנס si ל Trie b a 2- סיור preorder בעץ b b כל הכנסה $ c c b $ עוברים על כל קשת פעמיים $ c $ $

  12. סבוכיות מקום נוסף b מספר הצמתים ב-Trie a יכול להגיע עד b b $ c c b למשל לסדרה $ aaaaaaaaaaaaa baaaaaaaaaaaa caaaaaaaaaaaa daaaaaaaaaaaa … $ c $ $

  13. d c b a a a a a aaaaaaaaaaaaa baaaaaaaaaaaa caaaaaaaaaaaa daaaaaaaaaaaa … a a a a 0000000000000 1000000000000 0100000000000 1100000000000 0010000000000 … a a a a a a a a

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

  15. דחיסתTrie b a bb ab b b $ c c c$ b $ b$ $ c $ c$ $

  16. מספר העלים n לכל צמת פנימית לפחות 2 בנים bb ab מספר הצמתים הפנימיים < n $ c c$ b$ bb מספר הצמתים >2n $ bbc c$ abb abc במקום l nב- Trie לא דחוס abcc

  17. משפט אם בעץ לכל צמת פנימית יש לפחות 2 בנים אזי מספר העלים > מספר הצמתים הפנמיים הוכחה באינדוקציה יהי T עץ עם n הצמתים פנמיים ו- l עלים n1<l1 n2<l2 n=n1+n2+…+1<l1+l2+…=l n1 l1 n2 l2 מספר הצמתים הפנמיים מספר העלים

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

  19. מבנה נתונים במחרוזות Insert Delete Search Hash פתרון 1 n ידוע וזמן ממוצעO(l) האם קיים פתרון עם זמן מדויקO(l)?

  20. Trie פתרון 2 a Insert(ac) bb ab b c$ ac $ c c$ b$ bb $ bbc c$ abb abc abcc

  21. Trie פתרון 2 Insert bb ab Delete Search $ c c$ b$ bb $ bbc c$ abb abc abcc

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

  23. חיפוש מחרוזת בטקסט קלט: טכסט s מעל אלף-בית קטן וקבוצה של מחרוזות פלט: מוֹפָע של כל מחרוזת בטכסט חיפוש מחרוזת אחת חיפוש כל המחרוזות חסם תחתון

  24. חסם תחתון האם אפשר לפתור את הבעיה ב- ? כן!!!!!!!

  25. עץ סִיּוֹמוֹתSuffix tree s = xabxa$ $ 1 a$ 2 xa bxa$ a $ 3 xa$ $ bxa$ bxa$ bxa$ $ abxa$ |s| xabxa$ משפט קיים אלגוריתם שבונה עץ סִיּוֹמוֹת בזמן O(|s|2) |s|+1 (|s|+1)(|s|+2)/2

  26. עץ סִיּוֹמוֹתSuffix tree רק לבנות את העץ צריכים O(|s|2) s = xabxa$ $ a$ xa bxa$ a $ xa$ $ bxa$ bxa$ bxa$ $ abxa$ xabxa$ משפט קיים אלגוריתם שבונה עץ סִיּוֹמוֹת בזמן O(|s|2)

  27. דחיסת עץ סִיּוֹמוֹת s = xabxa$ 123456 (4,5) xa bxa$ (3,6) (5,5) a (6,6) $ (3,6) (6,6) $ bxa$ (6,6) (3,6) bxa$ $ משפט ללא הוכחה קיים אלגוריתם שבונה עץ סִיּוֹמוֹתדחוס בזמן O(|s|)

  28. קיים אלגוריתם שבונה עץ סִיּוֹמוֹתדחוס בזמן O(|s|) s = xabxa$ 123456 הטכסט סבוכיות O(|s|+l) בונים עץ סִיּוֹמוֹת (4,5) xa bxa$ (3,6) (5,5) a (6,6) $ s1 = xa (3,6) (6,6) $ bxa$ (6,6) (3,6) bxa$ $ s2 = xabx 5-4+1=2 6-3+1=4 6 - 6 +1=1 +

  29. s2 s = xabxa$ 123456 הטכסט s xa bxa$ 5-4+1=2 6-3+1=4 6 - 6 +1=1 + s2 = xabx (4,5) xa bxa$ (3,6) (5,5) a (6,6) $ (3,6) (6,6) $ bxa$ (6,6) (3,6) bxa$ $

  30. פתרון 2 s = xabxa$ 123456 2 (4,5) 4 xa bxa$ (3,6) 1 (5,5) a (6,6) $ 3=6-3+1 3 1 1 (3,6) (6,6) $ bxa$ 6 4 1 4 (6,6) (3,6) bxa$ $ 1 + 5 2 =6-5+1

  31. פתרון 2 s = xabxa$ 123456 מופע ראשון של xa 1 1 = min(4,1) (4,5) 4 xa 1 bxa$ (3,6) 1 (5,5) a (6,6) $ 4 3 1 1 (3,6) 2 (6,6) $ bxa$ 6 4 1 4 (6,6) (3,6) bxa$ $ 1 5 2

  32. פתרון 2 s = xabxa$ 123456 1 xa 1 bxa$ a $ 3 2 $ bxa$ 6 4 1 bxa$ $ 5 2 פלט: כל הַמּוֹפָעִים s1 = xa s2 = ab s3 = a פלט: מוֹפָע הראשון של כל מחרוזת בטכסט

  33. דחיסה i=12 S[1..m]= aabcbbabbsbabcbbbbabbabcbbabbabbsb… aabcbbabbsb(2,5)bbabbabcbbabbabbsb… (s 12,L12) נגדיר Priori=S[i..i+Li-1] הרישה S[i..i+Li-1] הארוכה ביותר אשר מופיעה כתת מחרוזת ב- S[1..i-1] Prior12=abcbb L12=5 s12=2

  34. אלגוריתם דחיסה Ziv-Lempel Input S[1..m] 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 bs איך לחשב Compute (si,Li) (2,2) (6,4)

  35. פתרון עץ סִיּוֹמוֹת s = xabxa$ 123456 1 xa 1 bxa$ a $ 3 2 $ bxa$ 6 4 xa b xa $ 1 bxa$ $ 5 2 לא תת-מחרוזת קודמת סבוכיות (1,2) O(|s|) 4<1 תת-מחרוזת קודמת

  36. מציאת תת-מחרוזת ארוכה משותפת קלט: מחרוזות s1 ו- s2 פלט: תת-מחרוזת ארוכה ביותר משותפת דוגמא: s1=superiocalifornialives s2=sealiver m =|s1|+|s2| נסמן: Ω(m) חסם תחתון:

  37. בונים עץ סִיּוֹמוֹת ל- פתרון s=s1$1s2 $2 סבוכיות O(|s|)=O(m) s2 s1 |s| =|s1|+|s2| $2$2$2 $2$2 $1 $1 $1 $1 עץ סִיּוֹמוֹת מוכלל $2 $2 $2 $2

  38. 1,2 סבוכיות O(m) 1,2 1,2 1 1,2 1 2 $1$2$2$1 $1$2 $2$1$2$1$2$2$1$1$2 $2 תת-מחרוזת ששייכת רק למחרוזת s1 צהוב 1 תת-מחרוזת ששייכת רק למחרוזת s2 כחול 2 ירוק תת-מחרוזת ששייכת למחרוזת s1ו- s2 1,2

  39. סבוכיות 1,2 O(m) 1,2 1,2 1 1,2 1 2 $1$2$2$1 $1$2 $2$1$2$1$2$2$1$1$2 $2 תת-מחרוזת ארוכה ביותר המשותפת היא זאת המיוצגת ע"י המסלול הארוך ביותר בתת-עץ עם צמתים 1,2

  40. מועד א חורף 2011

  41. פתרון עץ סִיּוֹמוֹת s = xabxa$ 123456 empty string 1 x,xa xa 1 bxa$ a $ 3 2 $ bxa$ a b,bx,bxa,bxa$ 6 xab, xabx, xabxa, xabxa$ 4 1 $ bxa$ $ xa$ 5 2 סיור preorder בעץ a$ ab,abx,abxa,abxa$

  42. סוף

  43. נחזור ל- עץ סִיּוֹמוֹתלא דחוסSuffix tree s = xabxa$ $ a$ xa bxa$ a $ xa$ $ bxa$ bxa$ |s|+1 bxa$ $ abxa$ xabxa$ משפט קיים אלגוריתם שבונה עץ סִיּוֹמוֹת בזמן O(|s|2) |s|+1 האם קיים אלגוריתם לעץ סִיּוֹמוֹתלא דחוס שרץ בזמן O(|s|) ?

  44. s=000001010011100101110111 s=000 001 010 011 100 101 110 111 עץ סִיּוֹמוֹת |s| = 3 x 23 0 1 0 1 0 1 0 1 0 1 0 1 0 1 000 001 010 011 100 101 110 111 (|s|-3) + (|s|-6) + (|s|-9) + … גודל העץ לפחות

  45. s=(0…000) (0…001) (0…010) (0…011) … k גודל העץ

More Related