םינותנ ינבמ - technionbshouty/ds/other/m01-introduction-slide-version.pdfintroduction...

78
Introduction מבני נתונים מטרת הקורס: .1 הכרות עם מבני נתונים ומימושיהם היעילים.2 פיתוח כלים לניתוח יעילות.3 בחירת מבני נתונים לפתרון בעיות מבני נתונים: מחסנית, תור, מילון, תור עדיפויות, טבלת ערבול... שימושים: מיון, מימוש שפות תכנות, ארגון קבצים, ועוד ועוד ועוד. ספר הלימוד העיקרי( קיים גם תרגום:) Cormen, Leiserson, Rivest, Introduction to Algorithms . Lecture1 of Geiger & Itai’s slide brochure www.cs.technion.ac.il/~dang/courseDS Geiger&Itai,2001

Upload: others

Post on 13-Mar-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

מבני נתונים

: מטרת הקורס

הכרות עם מבני נתונים ומימושיהם היעילים1.

פיתוח כלים לניתוח יעילות2.

בחירת מבני נתונים לפתרון בעיות3.

...טבלת ערבול, תור עדיפויות, מילון, תור, מחסנית: מבני נתונים

.ועוד ועוד ועוד, ארגון קבצים, מימוש שפות תכנות, מיון: שימושים

(:קיים גם תרגום)ספר הלימוד העיקרי

Cormen, Leiserson, Rivest, Introduction to Algorithms .

Lecture1 of Geiger & Itai’s slide brochure

www.cs.technion.ac.il/~dang/courseDS

Geiger&Itai,2001

Page 2: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

2

תוכנית הקורס

נים אסימפטוטיים מבני נתונים בסיסיים וסימו1.

מערכים ורשימות מקושרות2.

עצים ועצי חיפוש3.

AVLעצי 4.

3-2עצי 5.

רשימות דילוגים6.

טבלאות ערבול7.

אחזקת קבוצות זרות8.

מיון9.

מיון10.

טיפול במחרוזות11.

גרפים12.

איסוף אשפה13.

Page 3: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

3

חומר קריאה לשיעור זה

Chapter 2 – Growth of functions (23 - 41)

Chapter 4 – Recurrences (53 – 60)

Chapter 11.1 – Stacks and Queues (200 – 204)

Page 4: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

4

הגדרות בסיסיות

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

מימוש של מבנה נתונים הוא אוסף פרוצדורות, אחת לכל פעולה, המממשות את

.הפעולות של מבנה הנתונים

8

6

5

4

3

2

1

0

7

top

top ?-האם היא מערך עם מציין ל

מהי מחסנית?

top = 0 : אתחול

;top = top + 1; A[top] = x:הוספת איברA[top]:ראש המחסנית

– top = top: הוצאת איבר 1

Page 5: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

5

הגדרות בסיסיות

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

מימוש של מבנה נתונים הוא אוסף פרוצדורות, אחת לכל פעולה, המממשות את

.הפעולות של מבנה הנתונים

8

6

5

4

3

2

1

0

7

top

top ?-האם היא מערך עם מציין ל

מהי מחסנית?

top = 0 : אתחול

;top = top + 1; A[top] = x:הוספת איברA[top]:ראש המחסנית

– top = top: הוצאת איבר 1

. זהו מימוש של מחסנית באמצעות מערך ומצביע! לא

Page 6: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

מחסנית כמבנה 6

נתונים

Last In -- First Out : LIFO ראשון יוצא–אחרון נכנס

:י הפעולות הבאות"מחסנית מוגדרת ע

create(S)–מחזיר מחסניתS ריקה חדשה.

push(S,x)– מכניס איבר בעל ערךx למחסניתS.

top(S)– מחזיר את האיבר שבראש המחסניתS (המחסנית אינה משתנה .)

pop(S)– מוציא את האיבר שבראש המחסניתS.

is-empty(S)– מחזירtrue אם המחסניתS ריקה ו-false אחרת.

Page 7: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 7

(המשך)מחסנית כמבנה נתונים

:פעולות המחסנית מקיימות את הכללים הבאים

.רק על מחסנית לא ריקה pop, topאפשר לבצע

.trueמחזיר ערך create(S) ,is-empty(S)מיד לאחר

.המחסנית לא משתנה, popואחריו , pushלאחר ביצוע

.כל מימוש חייב לאפשר את הפעולות ולקיים את הכללים

. בלי תלות במימוש, יש טענות הנובעות רק מהכללים

: לדוגמאcreate(S);

push(S,17);

pop(S);

print is_empty(S);?מה יודפס

Page 8: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

8

מימושי מחסנית

(.כפי שהוסבר)מימוש בעזרת מערך 1.

.מימוש בעזרת רשימה מקושרת2.

s

#define NULL 0

typedef struct node {

DATA_TYPE info;

struct node *next;

} NODE;

typedef NODE *STACK;

:יצירת מחסנית ריקה

:הגדרת צומת

void create (STACK *s) {

(*s) = NULL ;

}

Page 9: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

9

הכנסת איבר

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

Page 10: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

10

הכנסת איבר

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

Page 11: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

11

הכנסת איבר

xp

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

Page 12: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

12

הכנסת איבר

xp

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

Page 13: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

13

הכנסת איבר

xp

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

Page 14: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

14

הכנסת איבר

xp

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

Page 15: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

15

הכנסת איבר

xp

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

Page 16: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

16

הכנסת איבר

xp

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

:push(s,x)פעולת

*s

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

void push ( STACK *s, DATA_TYPE x){

NODE *P;

P = malloc (sizeof (NODE));

P -> info = x;

P -> next = (*s) ;

(*s) = p ;

}

Page 17: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

17

אחזור והוצאת איבר

void pop ( STACK *s){

STACK t ;

t = (*s) next;

free (*s) ;

(*s) = t ;

}

:pop(s)פעולת

*s

}top(s):DATA_TYPE top ( STACK *s)פעולת

return (*s) info ;

}

Page 18: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

18

תור כמבנה נתונים

First In -- First Out : FIFO ראשון יוצא–ראשון נכנס

:י הפעולות הבאות"תור מוגדר ע

create(Q)–מחזיר תור ריק.

head(Q)– מחזיר את ערך האיבר שבראש התורQ (התור אינו משתנה .)

enqueue(Q,x)– מכניס איבר עם ערךx לסוף התורQ.

dequeue(Q)– מוציא את האיבר שבראש התורQ.

is-empty(Q)– מחזירtrue אם התורQ ריק ו-false אחרת.

Page 19: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

19

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0; . mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 20: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

20

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 21: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

21

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,r

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 22: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

22

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,r

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 23: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

23

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 24: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

24

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 25: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

25

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

r

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 26: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

26

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

r

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 27: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

27

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

rr

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 28: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

28

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

rr

מלא

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 29: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

29

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

rr

f

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 30: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

30

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

rr

f

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 31: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

31

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

rr

f

r

f

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 32: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

32

אנימציה

מימוש של תור בעזרת מערך

איברים עם שני מציינים nבן Qמערך

r =מציין את מקום האיבר שאחרי סוף התור

f =מציין את מקום האיבר שבראש התור

head(Q): Q[f];

enqueue(Q,x): Q[r] = x;

r = (r+1) %n;

dequeue(Q) f = (f+1) % n;

is_empty(Q): f = = r;

create(Q): f = r = 0;

10

32

f,rf

r

rr

f

r

f

. mod nהפעולות האריתמטיות נעשות

f = = (r +1)% n .המימוש מלא אם

enqueueלפני" לא מלא"יש לבדוק

dequeue.לפני" לא ריק"ו

8

6

5

4

3

2

1

0

7

f

r

Page 33: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

33

י רשימה מקושרת"מימוש תור ע

: (last)הכנסה בסוף התור

last

first

Page 34: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

34

י רשימה מקושרת"מימוש תור ע

: (last)הכנסה בסוף התור

last

first

last

first

Page 35: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

35

י רשימה מקושרת"מימוש תור ע

: (last)הכנסה בסוף התור

last

first

last

first

Page 36: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

36

י רשימה מקושרת"מימוש תור ע

: (last)הכנסה בסוף התור

last

first

last

first

Page 37: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

37

י רשימה מקושרת"מימוש תור ע

: (last)הכנסה בסוף התור

last

first

last

first

last

Page 38: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

38

י רשימה מקושרת"מימוש תור ע

: (last)הכנסה בסוף התור

last

first

last

first

last

Page 39: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

39

י רשימה מקושרת"מימוש תור ע

: (last)הכנסה בסוף התור

. (first)הוצאה מראש התור

.lastשימו לב שלא ניתן להוציא איבר באמצעות המצביע

last

first

last

first

last

Page 40: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

40

הערות לגבי מבני נתונים

:י"איכות המימוש נקבעת ע

:ניתוח יעילות•

.לכל פעולה, מספר צעדי החישוב הנדרשים–זמן •

.כמות הזיכרון הנדרשת– מקום•

(. מאפשר אחזקה יעילה)פשטות התכנות •

:המשתמש במבנה

.מכיר את הפעולות והשפעתן על הנתונים

.אינו נדרש להכיר את פרטי המימוש

. ניתן להחליף את מימוש מבני הנתונים מבלי לפגוע בשימושים: בזמן פיתוח

.מאפשר לתכנת מימושים פשוטים ואחר כך להחליפם

Page 41: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

41

זמן ריצה של אלגוריתם

י "זמן הריצה נמדד ע. tA(x)-יסומן ב xעבור קלט Aזמן ריצה של אלגוריתם

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

(.חבור לעומת כפל, למשל. )המהירות בין הפקודות

גודל , xבתוכנית המסכמת איברי מערך , לדוגמא. |x| -יסומן ב xהגודל של קלט

.הקלט הוא מספר איברי המערך

nעבור קלט שגודלו Aשל אלגוריתם (worst case)זמן הריצה הגרוע ביותר

| tA(n)= max {tA(x)י "מוגדר ע |x|=n} .

Page 42: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

42

זמן ריצה של אלגוריתם

י "זמן הריצה נמדד ע. tA(x)-יסומן ב xעבור קלט Aזמן ריצה של אלגוריתם

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

(.חבור לעומת כפל, למשל. )המהירות בין הפקודות

גודל , xבתוכנית המסכמת איברי מערך , לדוגמא. |x| -יסומן ב xהגודל של קלט

.הקלט הוא מספר איברי המערך

nעבור קלט שגודלו Aשל אלגוריתם (worst case)זמן הריצה הגרוע ביותר

| tA(n)= max {tA(x)י "מוגדר ע |x|=n} .

sum = 0

for (i = 0; i < n; i++)

sum = sum + a[i];

:דוגמא

n + 1 :זמן הריצה הגרוע ביותר של אלגוריתם זה מקיים tA(n) c1n + c2 כאשר

c1,c2 הם קבועים התלויים במימוש הפקודות בשפת מכונה.

Page 43: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 43

Oסיבוכיות והסימון

n0

cg(n)

f(n)

f(n)=O(g(n))

Page 44: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 44

Oסיבוכיות והסימון

נמצאת בקבוצת f(n)נאמר שהפונקציה . פונקציות חיוביות f(n), g(n)יהיו : הגדרה

n0 כך שלכל n0,cאם קיימים קבועים O(g(n))הפונקציות n מתקיים:

f(n) cg(n)

n0

cg(n)

f(n)

f(n)=O(g(n))

Page 45: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 45

Oסיבוכיות והסימון

נמצאת בקבוצת f(n)נאמר שהפונקציה . פונקציות חיוביות f(n), g(n)יהיו : הגדרה

n0 כך שלכל n0,cאם קיימים קבועים O(g(n))הפונקציות n מתקיים:

f(n) cg(n)

n0

cg(n)

f(n)

f(n)=O(g(n))

י "ונסמן זאת ע f(n)לפונקציה חסם עליון אסימפטוטימהווה g(n) -כמו כן נאמר ש

f(n) = O(g(n)) במקום הסימון הרגילf(n) O(g(n)) .

Page 46: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 46

Oסיבוכיות והסימון

נמצאת בקבוצת f(n)נאמר שהפונקציה . פונקציות חיוביות f(n), g(n)יהיו : הגדרה

n0 כך שלכל n0,cאם קיימים קבועים O(g(n))הפונקציות n מתקיים:

f(n) cg(n)

n0

cg(n)

f(n)

f(n)=O(g(n))

י "ונסמן זאת ע f(n)לפונקציה חסם עליון אסימפטוטימהווה g(n) -כמו כן נאמר ש

f(n) = O(g(n)) במקום הסימון הרגילf(n) O(g(n)) .

למשל זמן , היא פונקציה שקשה לתאר במדויק f(n)נשתמש בסימון זה כאשר הפונקציה

.פשוטה יותר לתיאור g(n)בעוד , הריצה של אלגוריתם

Page 47: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

47

פולינומיאליות דוגמאות

)(...)( 2

210

kk

k nOnananaanf קבוע מתקיים kעבור : טענה

n0 כך כך שלכל ,c ,n0נמצא קבועים : הוכחה n יתקייםf(n) cnk.

. amax= max{0,a0,..,ak}יהי

Page 48: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

48

פולינומיאליות דוגמאות

)(...)( 2

210

kk

k nOnananaanf קבוע מתקיים kעבור : טענה

n0 כך כך שלכל ,c ,n0נמצא קבועים : הוכחה n יתקייםf(n) cnk.

. amax= max{0,a0,..,ak}יהי

)...1()( 2

max

knnnanf

Page 49: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

49

פולינומיאליות דוגמאות

)(...)( 2

210

kk

k nOnananaanf קבוע מתקיים kעבור : טענה

n0 כך כך שלכל ,c ,n0נמצא קבועים : הוכחה n יתקייםf(n) cnk.

. amax= max{0,a0,..,ak}יהי

)...1()( 2

max

knnnanf 1

11

max

n

na

k

Page 50: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

50

פולינומיאליות דוגמאות

)(...)( 2

210

kk

k nOnananaanf קבוע מתקיים kעבור : טענה

n0 כך כך שלכל ,c ,n0נמצא קבועים : הוכחה n יתקייםf(n) cnk.

. amax= max{0,a0,..,ak}יהי

)...1()( 2

max

knnnanf 2/

1

maxn

na

k

1

11

max

n

na

k

Page 51: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

51

פולינומיאליות דוגמאות

)(...)( 2

210

kk

k nOnananaanf קבוע מתקיים kעבור : טענה

n0 כך כך שלכל ,c ,n0נמצא קבועים : הוכחה n יתקייםf(n) cnk.

. amax= max{0,a0,..,ak}יהי

)...1()( 2

max

knnnanf 2/

1

maxn

na

k

1

11

max

n

na

k

knamax2

Page 52: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

52

פולינומיאליות דוגמאות

)(...)( 2

210

kk

k nOnananaanf קבוע מתקיים kעבור : טענה

n0 כך כך שלכל ,c ,n0נמצא קבועים : הוכחה n יתקייםf(n) cnk.

. amax= max{0,a0,..,ak}יהי

)...1()( 2

max

knnnanf 2/

1

maxn

na

k

1

11

max

n

na

k

. c = 2amaxוכן n0= 2לפיכך נבחר

knamax2

Page 53: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

53

פולינומיאליות דוגמאות

)(...)( 2

210

kk

k nOnananaanf קבוע מתקיים kעבור : טענה

n0 כך כך שלכל ,c ,n0נמצא קבועים : הוכחה n יתקייםf(n) cnk.

. amax= max{0,a0,..,ak}יהי

)...1()( 2

max

knnnanf 2/

1

maxn

na

k

1

11

max

n

na

k

. c = 2amaxוכן n0= 2לפיכך נבחר

knamax2

קבוע :דוגמאות

ליניארי

ריבועי

f(n) = 10006 = O(1)

f(n) = 4n + 27 = O(n)

f(n) = n log2 n + 3n2 = O(n2)

. log2n < nהדוגמא האחרונה נובעת מאי השוויון

Page 54: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

54

נוספות דוגמאות

f(n) = logan = O(logbn)לוגריתמי

.loga n = logab logbn מכיוון שמתקיים

f(n) = logan = O(n) :מתקיים( שברים ושלמים)חיובי לכל

Page 55: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

55

נוספות דוגמאות

f(n) = logan = O(logbn)לוגריתמי

.loga n = logab logbn מכיוון שמתקיים

f(n) = 8 + 15 n + 9 n log2n = O(n log2n) בין ליניארי וריבועי

.f(n) < 32 n log2n כיוון שמתקיים

f(n) = logan = O(n) :מתקיים( שברים ושלמים)חיובי לכל

Page 56: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

56

נוספות דוגמאות

f(n) = logan = O(logbn)לוגריתמי

.loga n = logab logbn מכיוון שמתקיים

f(n) = 8 + 15 n + 9 n log2n = O(n log2n) בין ליניארי וריבועי

.f(n) < 32 n log2n כיוון שמתקיים

f(n) = nk + an = O(an) (a > 1) אקספוננציאלי

f(n) = an = O(bn) (b a)

f(n) = logan = O(n) :מתקיים( שברים ושלמים)חיובי לכל

Page 57: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

57

שליליות דוגמאות

f(n) = 3n?האם מתקיים = O(2n)

f(n) = en = O(nk) ( קבוע k)

f(n) = log n = O(log log n)

Page 58: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

58

שליליות דוגמאות

f(n) = 3n?האם מתקיים = O(2n)

f(n) = en = O(nk) ( קבוע k)

f(n) = log n = O(log log n)

.נוכיח את המקרה הראשון. התשובה שלילית בשלושת המקרים

3n: יתקיים n0 < nכך שעבור c,n0נניח בשלילה שקיימים קבועים < c2n .

n > log1.5אבל אי שוויון זה אינו מתקיים עבור c .סתירה.

Page 59: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

59

סיבוכיות זמן

T(n) < c1n +c2ראינו שמתקיים . סכום איברי מערך: דוגמא ראשונה

= T(n)ולפיכך O(n) .

Page 60: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

60

סיבוכיות זמן

T(n) < c1n +c2ראינו שמתקיים . סכום איברי מערך: דוגמא ראשונה

. T(n) = O(n)ולפיכך

.mmכפל מטריצות ריבועיות בגודל : דוגמא שניה

.n = 2m2גודל הקלט

:י"כאשר כל איבר מחושב ע .Cאיברים במטריצת התוצאה m2מחשבים

m

k

jkBkiAjiC1

],[],[],[

. O(m3)היא mסיבוכיות הזמן כפונקציה של

A Bm

m m

C

m

m

Page 61: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

61

סיבוכיות זמן

T(n) < c1n +c2ראינו שמתקיים . סכום איברי מערך: דוגמא ראשונה

= T(n)ולפיכך O(n) .

:כיוון שמתקיים O(n3/2)היא nסיבוכיות הזמן כפונקציה של גודל הקלט

)(2

)()( 2/3

2/3

2/33 nO

nOmOnT

קבוע

.mmכפל מטריצות ריבועיות בגודל : דוגמא שניה

.n = 2m2גודל הקלט

:י"כאשר כל איבר מחושב ע .Cאיברים במטריצת התוצאה m2מחשבים

m

k

jkBkiAjiC1

],[],[],[

. O(m3)היא mסיבוכיות הזמן כפונקציה של

A Bm

m m

C

m

m

Page 62: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 62

(המשך) סיבוכיות זמן

. איברים nבמערך ממוין בן xחיפוש בינרי של : דוגמא שלישית

.העכשווילאיבר האמצעי במערך xבכל צעד משווים את

. החיפוש נגמר x -אם האיבר האמצעי שווה ל•

.ממשיכים עם חלק המערך המכיל את המספרים הקטנים x -אם האיבר האמצעי גדול מ•

. ממשיכים עם חלק המערך המכיל את המספרים הגדולים x -אם האיבר האמצעי קטן מ•

Page 63: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 63

(המשך) סיבוכיות זמן

. איברים nבמערך ממוין בן xחיפוש בינרי של : דוגמא שלישית

.העכשווילאיבר האמצעי במערך xבכל צעד משווים את

. החיפוש נגמר x -אם האיבר האמצעי שווה ל•

.ממשיכים עם חלק המערך המכיל את המספרים הקטנים x -אם האיבר האמצעי גדול מ•

. ממשיכים עם חלק המערך המכיל את המספרים הגדולים x -אם האיבר האמצעי קטן מ•

:הבאה משוואת הנסיגהמתקיימת . את סיבוכיות הזמן T-נסמן ב

)2/()()1( 1 nTcnTcT

Page 64: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 64

(המשך) סיבוכיות זמן

. איברים nבמערך ממוין בן xחיפוש בינרי של : דוגמא שלישית

.העכשווילאיבר האמצעי במערך xבכל צעד משווים את

. החיפוש נגמר x -אם האיבר האמצעי שווה ל•

.ממשיכים עם חלק המערך המכיל את המספרים הקטנים x -אם האיבר האמצעי גדול מ•

. ממשיכים עם חלק המערך המכיל את המספרים הגדולים x -אם האיבר האמצעי קטן מ•

:הבאה משוואת הנסיגהמתקיימת . את סיבוכיות הזמן T-נסמן ב

)2/()()1( 1 nTcnTcT

:נקבל 2חזקה של n -בהנחה ש

)4/()( nTccnT

Page 65: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 65

(המשך) סיבוכיות זמן

. איברים nבמערך ממוין בן xחיפוש בינרי של : דוגמא שלישית

.העכשווילאיבר האמצעי במערך xבכל צעד משווים את

. החיפוש נגמר x -אם האיבר האמצעי שווה ל•

.ממשיכים עם חלק המערך המכיל את המספרים הקטנים x -אם האיבר האמצעי גדול מ•

. ממשיכים עם חלק המערך המכיל את המספרים הגדולים x -אם האיבר האמצעי קטן מ•

:הבאה משוואת הנסיגהמתקיימת . את סיבוכיות הזמן T-נסמן ב

)2/()()1( 1 nTcnTcT

:נקבל 2חזקה של n -בהנחה ש

)4/()( nTccnT )2/(... inTccc

i

Page 66: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 66

(המשך) סיבוכיות זמן

. איברים nבמערך ממוין בן xחיפוש בינרי של : דוגמא שלישית

.העכשווילאיבר האמצעי במערך xבכל צעד משווים את

. החיפוש נגמר x -אם האיבר האמצעי שווה ל•

.ממשיכים עם חלק המערך המכיל את המספרים הקטנים x -אם האיבר האמצעי גדול מ•

. ממשיכים עם חלק המערך המכיל את המספרים הגדולים x -אם האיבר האמצעי קטן מ•

:הבאה משוואת הנסיגהמתקיימת . את סיבוכיות הזמן T-נסמן ב

)2/()()1( 1 nTcnTcT

:נקבל 2חזקה של n -בהנחה ש

)4/()( nTccnT )2/(... inTccc

i

)2/(... 2log nnTccc

Page 67: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 67

(המשך) סיבוכיות זמן

. איברים nבמערך ממוין בן xחיפוש בינרי של : דוגמא שלישית

.העכשווילאיבר האמצעי במערך xבכל צעד משווים את

. החיפוש נגמר x -אם האיבר האמצעי שווה ל•

.ממשיכים עם חלק המערך המכיל את המספרים הקטנים x -אם האיבר האמצעי גדול מ•

. ממשיכים עם חלק המערך המכיל את המספרים הגדולים x -אם האיבר האמצעי קטן מ•

:הבאה משוואת הנסיגהמתקיימת . את סיבוכיות הזמן T-נסמן ב

)2/()()1( 1 nTcnTcT

:נקבל 2חזקה של n -בהנחה ש

)4/()( nTccnT )2/(... inTccc

i

)2/(... 2log nnTccc )(log)1(log2 nOTnc

Page 68: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 68

(המשך) סיבוכיות זמן

. איברים nבמערך ממוין בן xחיפוש בינרי של : דוגמא שלישית

.העכשווילאיבר האמצעי במערך xבכל צעד משווים את

. החיפוש נגמר x -אם האיבר האמצעי שווה ל•

.ממשיכים עם חלק המערך המכיל את המספרים הקטנים x -אם האיבר האמצעי גדול מ•

. ממשיכים עם חלק המערך המכיל את המספרים הגדולים x -אם האיבר האמצעי קטן מ•

:הבאה משוואת הנסיגהמתקיימת . את סיבוכיות הזמן T-נסמן ב

)2/()()1( 1 nTcnTcT

:נקבל 2חזקה של n -בהנחה ש

)4/()( nTccnT )2/(... inTccc

i

)2/(... 2log nnTccc )(log)1(log2 nOTnc

פרטים על שיטות פתרון למשוואות נסיגה ניתן למצוא. nהטענה נכונה גם ללא ההנחה על

. Cormen, Leiserson, Rivest, Introduction to Algorithms(:4פרק )בספר הלימוד

Page 69: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 69

(המשך) סיבוכיות זמן

:דוגמא רביעית

S = 0;

for ( i = 1; i < n; i ++)

for ( j = 0; j< n; j + = i )

S++ ;

T(n) . שתי לולאות מקוננות: אנליזה גסה n (n-1) .

Page 70: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 70

(המשך) סיבוכיות זמן

:דוגמא רביעית

S = 0;

for ( i = 1; i < n; i ++)

for ( j = 0; j< n; j + = i )

S++ ;

T(n) . שתי לולאות מקוננות: אנליזה גסה n (n-1) .

:אנליזה עדינה

.פעולות nמתבצעות , i = 1כאשר

,i = 2 n/2,i = 3 n/3

i = n , n/n = 1

nnHכ"סהn

nn

nnnnnT

1...

3

1

2

11...

32)(

Page 71: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 71

(המשך) סיבוכיות זמן

:דוגמא רביעית

S = 0;

for ( i = 1; i < n; i ++)

for ( j = 0; j< n; j + = i )

S++ ;

T(n) . שתי לולאות מקוננות: אנליזה גסה n (n-1) .

:אנליזה עדינה

.פעולות nמתבצעות , i = 1כאשר

,i = 2 n/2,i = 3 n/3

i = n , n/n = 1

nnHכ"סהn

nn

nnnnnT

1...

3

1

2

11...

32)(

ln(11(:כיוון שמתקיים1

...3

1

2

11)1ln(

1

1

1n

x

dx

nx

dxn

nn

Hn נקרא המספר ההרמוני ה-n

Page 72: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction 72

(המשך) סיבוכיות זמן

:דוגמא רביעית

S = 0;

for ( i = 1; i < n; i ++)

for ( j = 0; j< n; j + = i )

S++ ;

T(n) . שתי לולאות מקוננות: אנליזה גסה n (n-1) .

:אנליזה עדינה

.פעולות nמתבצעות , i = 1כאשר

,i = 2 n/2,i = 3 n/3

i = n , n/n = 1

nnHכ"סהn

nn

nnnnnT

1...

3

1

2

11...

32)(

ln(11(:כיוון שמתקיים1

...3

1

2

11)1ln(

1

1

1n

x

dx

nx

dxn

nn

Hn נקרא המספר ההרמוני ה-n

= T(n):לשם דיוק היה עלינו לכפול את כל המשוואות בקבוע ולפיכך: הערה O( nlog n)

Page 73: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

73

חסם תחתון אסימפטוטי

נמצאת בקבוצת f(n)נאמר שהפונקציה . פונקציות חיוביות f(n), g(n)יהיו : הגדרה

n0 כך שלכל n0,cאם קיימים קבועים ( אומגה) (g(n))הפונקציות n מתקיים :

f(n) cg(n)

n0

cg(n)

f(n)

f(n)= (g(n))

קיימות הגדרות נוספות לחסם תחתון אשר שקולות להגדרה לעיל עבור

. פונקציות מונוטוניות

Page 74: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

74

חסם הדוק אסימפטוטי

( תטה) f(n)=(g(n))נאמר שמתקיים . פונקציות חיוביות f(n), g(n)יהיו : הגדרה

.f(n)= (g(n))וגם f(n)=O(g(n))אם

n0

c1 g(n)

f(n)

f(n)= (g(n))

c2 g(n)

אם קיימים קבועים f(n)=(g(n))נאמר שמתקיים : (אקויולנטית)הגדרה

n0,c1,c2 כך שלכלn0 n מתקייםc1g(n) f(n) c2g(n).

Page 75: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

75

קטן oהסימון

נמצאת בקבוצת f(n)נאמר שהפונקציה . פונקציות חיוביות f(n), g(n)יהיו : הגדרה

:מתקיים n0 nכך שלכל 0nקיים קבוע cלכל קבוע אם o(g(n))הפונקציות

f(n) cg(n)

.אם f(n)=o(g(n))נאמר שמתקיים : (אקויולנטית)הגדרה

n0

g(n)

f(n)

f(n) = o(g(n))

f(n) זניחה אסימפטוטית

.g(n)יחסית לפונקציה

log n = o(n), n-100 : דוגמאות o(n)

0)(/)(lim

ngnfn

Page 76: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

76

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

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

…אבל לסימון יש מגבלות מסוכנות

על פני תוכנית הרצה בזמן קבוע של T(n) = n2ברור שנעדיף תוכנית הרצה בזמן כיון שבתוכניות ( י טבלה ענקית של תשובות לכל אפשרות"ממומשת למשל ע) 1080

. 1040-מ סופי הקטן באופן משמעותי nממשיות אנו משתמשים בגודל קלט

O, , אסימפטוטיות המתחבאים בהגדרות n0,cצריך לוודא שהקבועים : מסקנה".סבירים"אמנם

Page 77: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction

cs,Technion

77

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

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

…אבל לסימון יש מגבלות מסוכנות

על פני תוכנית הרצה בזמן קבוע של T(n) = n2ברור שנעדיף תוכנית הרצה בזמן כיון שבתוכניות ( י טבלה ענקית של תשובות לכל אפשרות"ממומשת למשל ע) 1080

. 1040-מ סופי הקטן באופן משמעותי nממשיות אנו משתמשים בגודל קלט

O, , אסימפטוטיות המתחבאים בהגדרות n0,cצריך לוודא שהקבועים : מסקנה".סבירים"אמנם

רץ בזמן Bואלגוריתם TA(n)= 100 nרץ בזמן Aנניח שאלגוריתם . דוגמא

TB(n)= 5nlog2n . בניתוח אסימפטוטי עדיף אלגוריתםA כיון שהאלגוריתם

.Bעדיף אלגוריתם n < 220אבל עבור קלטים המקיימים , ליניארי

AB

220

220100

Page 78: םינותנ ינבמ - Technionbshouty/DS/OTHER/M01-Introduction-Slide-Version.pdfIntroduction cs,Technion תויסיסב תורדגה םינותנ תצובק לע תולועפ לש

Introduction