طراحی الگوریتم فصل 1

102
1

Upload: saeed-sarshar

Post on 20-Jul-2015

227 views

Category:

Education


1 download

TRANSCRIPT

Page 1: طراحی الگوریتم فصل 1

1

Page 2: طراحی الگوریتم فصل 1

2

Page 3: طراحی الگوریتم فصل 1

3

Page 4: طراحی الگوریتم فصل 1

4

Page 5: طراحی الگوریتم فصل 1

T(n) = n-1 + T(n-1) = n-1 + n-2 + T(n-2)

= n-1 + n-2 + n-3 + T(n-3)

...

...

T(n) = n-1 + n-2 +...+2+1 = 𝑛(𝑛−1)

2

5

T(n)=n-1+T(n-1) n>1

0 n=1

Page 6: طراحی الگوریتم فصل 1

6

Page 7: طراحی الگوریتم فصل 1

7

Page 8: طراحی الگوریتم فصل 1

8

Page 9: طراحی الگوریتم فصل 1

9

Page 10: طراحی الگوریتم فصل 1

10

Page 11: طراحی الگوریتم فصل 1

11

Page 12: طراحی الگوریتم فصل 1

12

Page 13: طراحی الگوریتم فصل 1

13

Page 14: طراحی الگوریتم فصل 1

14

Page 15: طراحی الگوریتم فصل 1

15

Page 16: طراحی الگوریتم فصل 1

16

Page 17: طراحی الگوریتم فصل 1

17

Page 18: طراحی الگوریتم فصل 1

18

Page 19: طراحی الگوریتم فصل 1

19

Page 20: طراحی الگوریتم فصل 1

20

Page 21: طراحی الگوریتم فصل 1

21

1 void seqsearch (int n,const keytype s[],keytype x, index &location)

2 {

3 location=1;

4 while (location<=n&&s[location]!=x)

5 location++;

6 if(location>n)

7 location=0;

8 }

Page 22: طراحی الگوریتم فصل 1

22

T(n)=1+T(n-1) n>1

1 n=1

T(n) = 1+ T(n-1) = 1+1+T(n-2) = 1+1+1+T(n-3) = n

Page 23: طراحی الگوریتم فصل 1

23

1 void binsearch (int n,const keytype s[],keytype x, index &location){

2 index low,high,mid;

3 low=1; high=n; location=0;

4 while(low<=high && location==0){

5 mid=[(low+high)/2];

6 if(x==s[mid])

7 location=mid;

8 else if(x<s[mid])

9 high=mid-1;

10 else

11 low=mid+1;

12 }

13 }

Page 24: طراحی الگوریتم فصل 1

24

T(n)=1+T(n/2) n>11 n=1

n=2𝑘:فرض

T(n) = 1+ T(n/2) = 1+1+T(n/22) = 1+1+1+T(n/23)

=k+T(n/2𝑘) = k+1

T(n)=log2 𝑛 +1

Page 25: طراحی الگوریتم فصل 1

25

Page 26: طراحی الگوریتم فصل 1

26

Page 27: طراحی الگوریتم فصل 1

27

Page 28: طراحی الگوریتم فصل 1

28

Page 29: طراحی الگوریتم فصل 1

29

Page 30: طراحی الگوریتم فصل 1

30

Page 31: طراحی الگوریتم فصل 1

31

Page 32: طراحی الگوریتم فصل 1

32

Page 33: طراحی الگوریتم فصل 1

33

Page 34: طراحی الگوریتم فصل 1

34

1 void mergesort (int n, keytype S[])

2 {

3 if (n>1) {

4 const int h=[n/2], m = n - h;

5 keytype U[1 ..h], V[1 ..m];

6 copy S[1] through S[h] to U[1] through U[h];

7 copy S[h+1] through S[n] to V[1] through V[m];

8 mergesort(h, U);

9 mergesort(m, V);

10 merge (h, m, U, V, S);

11 }

12 }

Page 35: طراحی الگوریتم فصل 1

35

T(n)2T(n/2)+n-1 n>1

0 n=1

n=2𝑘:فرض

T(n)=2T(n/2)+n-1 = 2[2T(n/2)+(n/2)-1]+n-1

=22T(n/22)+n-2 +n-20

=22T(n/22)+2n-[21+20]

...

...

=2𝑘T(n/2𝑘)+kn-[2𝑘−1 +⋯+ 20]

=kn-1 x (1-2𝑘)/(1-2)=kn+1-2𝑘

T(n)=nlog2 𝑛+1-n

Page 36: طراحی الگوریتم فصل 1

36

1 void merge (int h, int m, const keytype U[], const keytype V[],keytype S[]){

2 index i, j, k;

3 i = 1, j = 1, k = 1;

4 while (i< = h && j <= m) {

5 if (U[i] < V[j]) {

6 S[k] = U[i];

7 i++;}

8 else{

9 S[k] = V[j];

10 j++;}

11 k++;

12 if (i>h)

13 copy V[j] through V[m] to S[k] through S[h+m];

14 else

15 copy U[i] through U[h] to S[k] through S[h+m];

16 }

17 }

Page 37: طراحی الگوریتم فصل 1

37

Page 38: طراحی الگوریتم فصل 1

38

Page 39: طراحی الگوریتم فصل 1

39

Page 40: طراحی الگوریتم فصل 1

40

Page 41: طراحی الگوریتم فصل 1

41

Page 42: طراحی الگوریتم فصل 1

42

Page 43: طراحی الگوریتم فصل 1

43

Page 44: طراحی الگوریتم فصل 1

44

1 procedure maxmin(i,j,fmax,fmin)

2 begin

3 case

4 i = j : Fmax Fmin A(i)

5 i = j-1 : if A(i)<A(j) then

6 Fmax A(j),Fmin A(i);

7 else

8 Fmax A(i),Fmin A(j)

9 else : mid [(i+j)/2]

10 call maxmin(i,mid,gmax,gmin);

11 call maxmin(mid+1,j,hmax,hmin);

12 Fmax max(gmax,hmax);

13 Fm𝐢𝐧 min(gmin,hmin);

14 endelse;

15 end;

Page 45: طراحی الگوریتم فصل 1

45

A=[5,7,-3,-2,7,9,3,6]

minMax(A,1,8,-3,9)

Page 46: طراحی الگوریتم فصل 1

46

A=[5,7,-3,-2,7,9,3,6]

minMax(A,1,8,-3,9)

minMax(A,1,4,-3,7) minMax(A,5,8, 3,9)

Page 47: طراحی الگوریتم فصل 1

47

A=[5,7,-3,-2,7,9,3,6]

minMax(A,1,8,-3,9)

minMax(A,1,4,-3,7) minMax(A,5,8, 3,9)

Page 48: طراحی الگوریتم فصل 1

48

T(n)=

2T(n/2)+2 n>2

0 n=1

n=2𝑘:فرض

n/2=2𝑘−1

T(n)=2T(n/2)+2= 2[2T(n/4)+2]+2

=22T(n/22)+22 + 21

=23T(n/23)+23 + +22 + 21

...

...

=2𝑘−1T(n/2𝑘−1)+2𝑘−1 +⋯+ 2

=n/2+2 x 1−2𝑘−1

1−2=n/2-2+2𝑘 = (n/2)-2+n

T(n)=3(n/2)-2

1 n=2

Page 49: طراحی الگوریتم فصل 1

49

≤ X X ≥X

Page 50: طراحی الگوریتم فصل 1

50

Page 51: طراحی الگوریتم فصل 1

51

1 void quicksort (index low,index high)

2 {

3 index pivot point;

4 if (high>low)

5 {

6 partition(low,high,pivot point);

7 quicksort(low,pivot point-1);

8 quicksort(pivot point+1,high);

9 }

10 }

Page 52: طراحی الگوریتم فصل 1

52

Page 53: طراحی الگوریتم فصل 1

53

1 void partition (index low,index high,index &pivotpoint)

2 {

3 index i,j;

4 keytype pivotitem;

5 pivotitem=s[low];

6 i=low;

7 for(j=low+1;j<=high;j++)

8 if(s[j]<pivotitem){

9 i++;

10 exchange s[i]ands[j];

11 }

12 pivot point=i;

13 exchange s[low]ands[pivot point];

14 }

Page 54: طراحی الگوریتم فصل 1

54

Page 55: طراحی الگوریتم فصل 1

55

Page 56: طراحی الگوریتم فصل 1

56

Page 57: طراحی الگوریتم فصل 1

57

Page 58: طراحی الگوریتم فصل 1

58

Page 59: طراحی الگوریتم فصل 1

59

Page 60: طراحی الگوریتم فصل 1

60

Page 61: طراحی الگوریتم فصل 1

61

Page 62: طراحی الگوریتم فصل 1

62

Page 63: طراحی الگوریتم فصل 1

63

Page 64: طراحی الگوریتم فصل 1

64

Page 65: طراحی الگوریتم فصل 1

65

Page 66: طراحی الگوریتم فصل 1

6666

T(n)=n-1+T(0)+T(n-1) n>1

0 n=1

n=2𝑘:فرض

T(n) = n-1+T(n-1)= n-1+n-2+T(n-2)

= n-1+n-2+n-3+ T(n-3)

...

...

= n-1 + n-2 + n-3 + ... + 3 + 2 + 1

= n(n-1)/2

T(n)=𝑛2

2−𝑛

2

Page 67: طراحی الگوریتم فصل 1

67

Page 68: طراحی الگوریتم فصل 1

68

Page 69: طراحی الگوریتم فصل 1

69

Page 70: طراحی الگوریتم فصل 1

70

Page 71: طراحی الگوریتم فصل 1

71

Page 72: طراحی الگوریتم فصل 1

72

Page 73: طراحی الگوریتم فصل 1

73

Page 74: طراحی الگوریتم فصل 1

74

Page 75: طراحی الگوریتم فصل 1

75

Page 76: طراحی الگوریتم فصل 1

76

Page 77: طراحی الگوریتم فصل 1

77

Page 78: طراحی الگوریتم فصل 1

78

Page 79: طراحی الگوریتم فصل 1

79

Page 80: طراحی الگوریتم فصل 1

80

Page 81: طراحی الگوریتم فصل 1

81

𝑻 𝒏 = 𝒂𝑻𝒏

𝒃+ 𝑪𝒏𝒌

T(n)=

a > 𝑏𝑘

a = 𝑏𝑘

a < 𝑏𝑘

𝑛log𝑏 𝑎

𝑛𝑘 log2 𝑛

𝑛𝑘

Page 82: طراحی الگوریتم فصل 1

82

T(n)=1+T(n/2) n>11 n=1

a=1 , b=2 , k=0 (a = 𝑏𝑘)

T(n) = log2 𝑛

Example : Binary search

Page 83: طراحی الگوریتم فصل 1

83

Page 84: طراحی الگوریتم فصل 1

84

Page 85: طراحی الگوریتم فصل 1

85

Page 86: طراحی الگوریتم فصل 1

86

Page 87: طراحی الگوریتم فصل 1

87

Page 88: طراحی الگوریتم فصل 1

88

Page 89: طراحی الگوریتم فصل 1

89

Page 90: طراحی الگوریتم فصل 1

90

Page 91: طراحی الگوریتم فصل 1

91

Page 92: طراحی الگوریتم فصل 1

92

Page 93: طراحی الگوریتم فصل 1

93

𝑎0𝑥0 + 𝑎1𝑥

1 +⋯+ 𝑎𝑛−1𝑥𝑛−1

𝑏0𝑥0 + 𝑏1𝑥

1 +⋯+ 𝑏𝑛−1𝑥𝑛−1

Page 94: طراحی الگوریتم فصل 1

94

5𝑥2 + 4𝑥 − 5

5|2| 4|1| -5|0|

0 1 2 3

-5 4 5 0

2 1 0

5 4 -5

Page 95: طراحی الگوریتم فصل 1

95

1 mult(A,B,C)

2 for i = 0 to 2(n-1) do

3 c[i] = 0

4 for i = 0 to n-1 do

5 for j = 0 to n-1 do

6 c[i+j] = c[i+j] + A[i] * B[j]

7 end

Page 96: طراحی الگوریتم فصل 1

96

1 + x + 3𝑥2 − 4𝑥3 = 1 + 𝑥 + 3 − 4𝑥 𝑥2

1 + 2x − 5𝑥2 − 3𝑥3 = 1 + 2𝑥 + (−5 − 3𝑥)𝑥2

P1(x) Pr(x)

Qr(x)Q1(x)

R(x)=P(x).Q(x)=[P1+Pr.𝑥2][Q1+Qr.𝑥2]

R(x)=P(x).Q(x)=[P1.Q1+P1.Qr. 𝑥2+Pr.Q1. 𝑥2+Pr.Qr. 𝑥4]

Page 97: طراحی الگوریتم فصل 1

97

a=4

b=2

k=1

a>𝑏𝑘

T(n)=𝑛log2 4 = 𝑛2

T(n)=4T(n/2)+n n>1

c n=1

Page 98: طراحی الگوریتم فصل 1

98

𝒂𝟎 + 𝒂𝟏𝒙 +⋯+ 𝒂𝒏𝒙𝒏−𝟏

𝑎0 + 𝑎1𝑥 +⋯+ 𝑎𝑛2−1𝑥𝑛

2−1

+[𝑎𝑛2+ 𝑎𝑛

2+1𝑥 +⋯+ 𝑎𝑛−1𝑥

𝑛2−1]𝑥

𝑛2

𝒃𝟎 + 𝒃𝟏𝒙 +⋯+ 𝒃𝒏𝒙𝒏−𝟏

𝑏0 + 𝑏1𝑥 +⋯+ 𝑏𝑛2−1𝑥

𝑛

2−1

+[𝑏𝑛2+ 𝑏𝑛

2+1𝑥 +⋯+ 𝑏𝑛−1𝑥

𝑛2−1]𝑥

𝑛2

P1(x)

Pr(x)

Q1(x)

Qr(x)

Page 99: طراحی الگوریتم فصل 1

99

𝑥𝑛

2 𝑥𝑛

2

𝑥𝑛

2 𝑥𝑛

a=4

𝑏𝑘=2

a>𝑏𝑘

T(n)=𝑛2

T(n)=4T(n/2)+𝜃n n>2b else

Page 100: طراحی الگوریتم فصل 1

100

𝑥𝑛

2 𝑥𝑛

T(n)3T(n/2)+𝜃n n>2

b else

a=3 , 𝑏𝑘=2 ,a> 𝑏𝑘

T(n)=𝑛log2 3

Page 101: طراحی الگوریتم فصل 1

101

±10𝑛

× → 34 + 12 102

18 + (56)102

P1(x) Pr(x)

Qr(x)Q1(x)

102 104

Page 102: طراحی الگوریتم فصل 1

102

× × × × × 102 × × 104

× → × × × × × × 102

× → × × × × × × 102

0 × → × × × × × × 102

2 × → × × × × × × 102

× → × × × × × × 102