אלגוריתמים - תרגול 14

21
ללללל- לללללללללל14 הההה : ללל ללללללללל ללללל ללללל לללללל? ללל: לל לל "ללל".

Upload: sandro

Post on 06-Jan-2016

92 views

Category:

Documents


0 download

DESCRIPTION

אלגוריתמים - תרגול 14. חידה : מהו הפלינדרום הארוך ביותר בעברית? רמז: זה לא "שמש". תזכורת – התאמת מחרוזות. הבעיה: נתון טקסט באורך ותבנית באורך מטרת האלגוריתם היא לבדוק האם מופיעה בתוך והיכן. שימושים לדוגמא:. תזכורת – אלגוריתם KMP. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: אלגוריתמים - תרגול 14

14אלגוריתמים - תרגול מהו הפלינדרום הארוך ביותר בעברית?חידה :

:זה לא "שמש".רמז

Page 2: אלגוריתמים - תרגול 14

תזכורת – התאמת מחרוזות

2

:נתון טקסט באורך ותבנית באורך הבעיה מטרת האלגוריתם היא לבדוק האם מופיעה

בתוך והיכן.

:שימושים לדוגמא

Tn

P

m. P

T

Page 3: אלגוריתמים - תרגול 14

:נסמן ב- רישא של באורךהגדרה נגדיר את כאורך הרישא המקסימאלית של

שהיא סיפא של

אנו מחפשים עבורו מתקיים האלג' שלKMPמוצא את כל הערכי ה- בסיבוכיות

זמן

KMPתזכורת – אלגוריתם

iTTi.

)(iP

iT.

mj )(. j

)(. mnO

a b r a c a d a b r a

b r a c k e t

T

P

Page 4: אלגוריתמים - תרגול 14

דוגמא

4

0)1(

a b r a c a d a b r a

b r a c k e t

T

P

1)2( 2)3(

1 2 3 4 5 6 7 8 9 A B

3)4(

4)5( 0)6( 0)7(

0)8(

1)9( 2)( A3)( B

Page 5: אלגוריתמים - תרגול 14

5

– סיבוב מעגלי1שאלה :מחרוזת היא סיבוב מעגלי של מחרוזת הגדרה

אם קיים כך שמתקיים

:דוגמאות

:נתונות שתי מחרוזות באורך תארו תרגיל אלגוריתם הבודק האם הינה סיבוב מעגלי של

'T

nttttT ...321ni 1

1211 ......'. inii ttttttT

',TTn.

'TT.

mommy mymom

armstrong strongarm

ינטי פרזי ????????

Page 6: אלגוריתמים - תרגול 14

פתרון

6

נשים לב ש- הינה סיבוב מעגלי של אם"םמופיע במחרוזת

:לדוגמא

'נריץ אלגKMP עם טקסט ותבנית זמן ריצה יהיה

'TT'T

TT:

ni

T

iniii tttttttttttttTT ............'

132111321

1211 ......' inii ttttttT

armstrongarmstrong

TT'.T)()2(. nOnnO

Page 7: אלגוריתמים - תרגול 14

7

תזכורת – פונקציית פאי נסמן ב- רישא של באורך הוא אורך הסיפא המקסימאלית של שהיא

רישא של (אך אינה כולו).:דוגמא

)( jP

jPjPPj.

jP

ababcP

ababP

abaP

abP

aP

ababcP

5

4

3

2

1

0)5(

2)4(

1)3(

0)2(

/)1(

AN

Page 8: אלגוריתמים - תרגול 14

8

– שרשור טקסט ותבנית2שאלה :נתונים טקסט באורך ותבנית באורך תרגיל

בנוסף, נתונים ערכי עבור המחרוזת (כלומר, עבור השרשור של הטקסט עם התבנית). הסבירו כיצד ניתן להשתמש בערכים אלו על מנת

למצוא היכן התבנית מופיעה בטקסט.

TnPm.PTX

T= arachibutyrophobiaP=butter

X= butterarachibutyrophobia

Page 9: אלגוריתמים - תרגול 14

פתרון

9

תזכורת: - אורך הרישא המקסימאלית שלשהיא סיפא של

אם אז מצאנו מופע של שמסתייםבמקום ה- של

)( jX

jX.

mj )(,PT. mj

a a b a z a a r r a a

b a z a a r r a aa aP2X T

X

a a a a

2m

2)7(

2)11(

Page 10: אלגוריתמים - תרגול 14

המשך פתרון

10

האם מספיק למצוא את כל ערכי שמקיימים

!לא

אם כך שכבר מצאנו מופע של התבניתשמסתיים ב- אז זהו מופע נוסף של התבנית.

jmj )(?

ij )(i,

a a b a z a a a a r aX a

3)9(

a

4)10(

Page 11: אלגוריתמים - תרגול 14

קצת על המימוש

11

לכל איבר במחרוזת נחזיק ביט שיסמן האם מסתייםבו מופע של התבנית.

כאשר נבדוק ערך של נדע שמצאנו מופעחדש של התבנית (ונדליק את הביט שלו) אם ורק

אם הערך הוא או מיקום שהביט שלו דולק..קיבלנו אלגוריתם עם זמן ריצה לינארי

)(, jm

a a b a z a a a a r aX a a

)( j

bit

0 0 0 1 2 3 4 0 03

0 0 0 0 1 1 1 0 01 1

2

Page 12: אלגוריתמים - תרגול 14

12

פלינדרומים :המחרוזת ההופכית של מחרוזת תסומן הגדרה

אם פלינדרוםבתור מחרוזת הינה :דוגמאות

TRT.

TRTT .

Rise to vote sirWas it a car or a cat I saw?

Not a banana batonA Toyota's a Toyota

A dog - a panic in a pagodaיש רוחב לב לבחור שי

Page 13: אלגוריתמים - תרגול 14

13

עוד דוגמא קצרה של פלינדרום"Dammit I'm Mad“ – by Demetri Martin

Dammit I’m mad. Evil is a deed as I live. God, am I reviled? I rise, my bed on a sun, I melt. To be not one man emanating is sad. I piss. Alas, it is so late. Who stops to help? Man, it is hot. I’m in it. I tell.I am not a devil. I level “Mad Dog”. Ah, say burning is, as a deified gulp, In my halo of a mired rum tin.I erase many men. Oh, to be man, a sin. Is evil in a clam? In a trap? No. It is open. On it I was stuck.Rats peed on hope. Elsewhere dips a web. Be still if I fill its ebb. Ew, a spider… eh? We sleep. Oh no!Deep, stark cuts saw it in one position. Part animal, can I live? Sin is a name. Both, one… my names are in it. Murder? I’m a fool. A hymn I plug, deified as a sign in ruby ash, a Goddam level I lived at.On mail let it in. I’m it. Oh, sit in ample hot spots. Oh wet! A loss it is alas (sip). I’d assign it a name. Name not one bottle minus an ode by me: “Sir, I deliver. I’m a dog” Evil is a deed as I live.Dammit I’m mad.

Page 14: אלגוריתמים - תרגול 14

14

– פלינדרומים3שאלה :נתונה מחרוזת באורך תארו אלגוריתם תרגיל

המוצא את הרישא המקסימאלית של שהינה פלינדרום.

:דוגמא

Tn.T

Evil lived!No lemons; no melon…

Devil lived on a banana pagoda.

Page 15: אלגוריתמים - תרגול 14

15

פתרון אם נחלק את לשתי תתי מחרוזות

נקבל שהמחרוזת ההופכית הינה

אם נבחר חלוקה כך ש- הואפלינדרום, נקבל (וגם הכיוון

השני נכון). לכן, אנו מחפשים את הרישא המקסימאלית

של שהיא סיפא של

TxyT ,RRR xyT .

Rat star: cat heavenT

x y

Neva ehtac: rat starRT

RxRy

xyT x

xyxyT RRRR T

RT.

Page 16: אלגוריתמים - תרגול 14

16

המשך פתרון אנו מחפשים את הרישא המקסימאלית של

שהיא סיפא של נריץKMP עם טקסט ותבנית אורך

הפלינדרום המקסימאלי יהיה

- זמן ריצה

T. RT)(. n

)(. nOTTO R

TRT.

N e v a e h t a c : r a t s t a rT

r a t s t a r : c a t h e a v e nP

Page 17: אלגוריתמים - תרגול 14

17

– מציאת חלוקה4שאלה :נתונה מחרוזת שאורכה תארו תרגיל

אלגוריתם המוצא חלוקה , כך ש- והגודל של מקסימאלי.

הערה: תמיד קיימת חלוקה כזו, כיוון ש- יכולהלהיות מחרוזת ריקה.

:דוגמא

*T15. nxyxT 10y

xx

I know you know I know you know I know

y xx

Page 18: אלגוריתמים - תרגול 14

18

– פתרון4שאלה

? -מהו הגודל המקסימאלי שיכול להיות ל

כלומר, אנו רוצים למצוא רישא מקסימאליתשל באורך לכל היותר שהיא גם סיפא

של

10 ,* yxyxT

x

knx 2/)10(

*,Tk,*.T

Page 19: אלגוריתמים - תרגול 14

19

– פתרון4שאלה אנו רוצים למצוא רישא מקסימאלית של באורך

לכל היותר שהיא גם סיפא של נריץ את האלגוריתם שלKMP כאשר התבנית היא

והטקסט הוא התווים האחרונים של האורך המקסימאלי של הינו ערך ה- של התו

האחרון בטקסט.

kT *

k x

k,

*,T*.T

*.T

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

y xx

Page 20: אלגוריתמים - תרגול 14

20

דוגמא וסיבוכיות

.נחשב את בזמן קבוע נריץ אלגוריתםKMPעם שתי מחרוזות בגודל - 'סה"כ סיבוכיות האלג

)(. nOk k

k.

)(. nO

T* = Too hot to hoot, to hoot too hot, too hot, too hot to hoot

57n kx 232/)1057(

P = “Too hot to hoot, to hoo”T = “oo hot, too hot to hoot” 16)23(

Page 21: אלגוריתמים - תרגול 14

פתרון החידה מאת "יוצר מלוע שמים השמש, ה' מימש עולם רצוי ",

.נעם דובב

– מכפלת המחלקים 363מספר המילים הפלינדרומי בסיפור – .11 * 3 * 11הראשוניים שלו נכתבת אף היא כביטוי פלינדרומי:

– מכפלת המחלקים 1331מספר האותיות הפלינדרומי בסיפור – * 11 * 11הראשוניים שלו נכתבת אף היא כביטוי פלינדרומי:

11.

צר. פוסק חום? ם הרצון שתישאר לחות ִיו! שמש תדע א'ך, סתיו!" – פוגש תום )ידוע סֹופה – פוסק סוף האל, ׂשח: "ל3

עונת מעבר(....