magliveli.files.wordpress.com€¦  · web viewპრაქტიკული...

21
პპპპპპპპპპ პპპპპპპპპპ 1 1. რრრრრრრრრრრ რრრრრრრრ რრრრრრრრრრრრ რრრრრრრრრრრრრრრ: რ. რ. რ. რრრრ რრ რრრრ ; რ. რრრრ რრ რრრრ ; რ. რრრრ რრ რრრრ რრრრრრრრრ რრრრრრრრრრ რრრრრრრრრ რრ რრრრრრრრრრ C-რრრრრრრ. 2. რრრრრრრრ რრრრრრრ რ. რ. ; რ. რ. ; რ. რ. ; რ. ; რ. რრრრრრრ რრრრრრრრრრრ რრრრრრრრ, რრრრრრ რრრრრრრრრ რრრრრრრრრრ რრრრრრრრრ რრ რრრრრრრრრრ C-რრრრრრრ. 1

Upload: others

Post on 02-Nov-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

პრაქტიკული მეცადინება 1

1. რეკურენტული ფორმულით განსაზღვრული მიმდევრობისთვის:

ა.

ბ.

გ. როცა და როცა ;

დ. როცა და როცა ;

ე. როცა და როცა შეადგინეთ რეკურსიული ალგორითმი და შესაბამისი C-ფუნქცია.

2. მოცემული ფუნქცია

ა.

ბ. ;

გ.

დ. ;

ე.

ვ. ;

ზ. ;

თ. ჩაწერეთ რეკურენტული ფორმულით, შემდეგ შეადგინეთ რეკურსიული ალგორითმი და შესაბამისი C-ფუნქცია.

ამოხსნა:

1

Page 2: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

მაგალითი 1. ბ) ამოხსნა. რეკურსიული ალგორითმი:

ალგორითმი {

1. თუ =1 დააბრუნე 1 და ალგორითმი დაასრულე.

2. თუ ( >1) შეასრულე ალგორითმი ( )-თვის, შედეგი გაამრავლე 2-ზე,

მიუმატე 1 და დააბრუნე მიღებული მნიშვნელობა (ანუ ).}

შესაბამისი -ფუნქცია:long P( int n )

{

if (n==1) return 1;

if (n>1) return 2*P(n-1)+1;

}

მაგალითი 2. ე)

ამოხსნა. შესაბამისი რეკურენტული ფორმულა : რეკურსიული ალგორითმი:

ალგორითმი {

1. თუ =1 დააბრუნე და ალგორითმი დაასრულე.

2. თუ ( >1) შეასრულე ალგორითმი ( )-თვის, მიუმატე და დააბრუნე მიღებული მნიშვნელობა.

}

შესაბამისი -ფუნქცია:float K(int n)

{

if (n==1) return 1;

if (n>1) return K(n-1)+1/(n*n);

}

2

Page 3: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

პრაქტიკული მეცადინება 2

1. მოცემულია მთელი რიცხვების n ელემენტიანი a[n] მასივი. დაწერეთ რეკურენტული ფორმულა მისი პირველი n ელემენტის:

ა) ჯამის განსაზღვრისთვის;ბ) კვადრატების ჯამის განსაზღვრისთვის;გ) შებრუნებული სიდიდეების ჯამის განსაზღვრისთვის (ვგულისხმობთ რომ მათ

შორის ნულის ტოლი არ გვხვდება);დ)კვადრატებისა და ერთიანების ჯამის შებრუნებული სიდიდეების ჯამის

განსაზღვრისთვის. შეადგინეთ რეკურსიული ალგორითმი და შესაბამისი C- ფუნქცია.

2. მოცემულია მთელი რიცხვების n ელემენტიანი a[n] მასივი. დაწერეთ რეკურენტული ფორმულა პირველ k ელემენტს შორის

ა) ლუწების ჯამის განსაზღვრისთვის;ბ) ლუწინდექსიანი ელემენტების ჯამის განსაზღვრისთვის;ბ) 3-ის ჯერადი რიცხვების ჯამის განსაზღვრისთვის.

ასეთების არ არსებობის შემთხვევაში საჭიროა შესაბამისი გზავნილის დაბეჭდვა. შეადგინეთ რეკურსიული ალგორითმი და შესაბამისი C- ფუნქცია.

3. მოცემულია მთელი რიცხვების n ელემენტიანი a[n] მასივი. დაწერეთ რეკურენტული ფორმულა , რომელიც მოძებნის მაქსიმუმს

ა) პირველ k რიცხვს შორის, ბ) ბოლო k რიცხვს შორის, გ) კენტ ნომრიან ელემენტებს შორის, დ)* ლუწ ელემენტებს შორის (არ არსებობის შემთხვევაში შესაბამისი შეტყობინებით)

შეადგინეთ რეკურსიული ალგორითმი და შესაბამისი C- ფუნქცია.

3

Page 4: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

პრაქტიკული მეცადინება 3

1. მოცემულია ნამდვილი რიცხვების n ელემენტიანი a[n] მასივი და რაიმე b რიცხვი. შეადგინეთ რეკურსიული ალგორითმი, რომელიც მოძებნის b-ს:

ა. პირველ k ელემენტს შორის. ბ. ბოლო k ელემენტს შორის .გ*. პირველ k ელემენტიდან ლუწებს შორის მოძებნის b-ს.(ასეთების არ არსებობის შემთხვევაში საჭიროა შესაბამისი გზავნილის დაბეჭდვა. )

შეადგინეთ შესაბამისი C- ფუნქცია.

2. მოცემულია ნამდვილი რიცხვების ელემენტიანი a[n][n] მასივი და რაიმე b რიცხვი. შეადგინეთ რეკურსიული ალგორითმი, რომელიც მოძებნის b-ს:

ა. პირველი k სტრიქონის ელემენტებს შორის. ბ. ბოლო k სვეტის ელემენტებს შორის .გ. პირველი k სტრიქონისა და პირველი k სვეტის ელემენტებს შორის.

შეადგინეთ შესაბამისი C- ფუნქცია.

პრაქტიკული მეცადინება 4

1. მოცემული ნამდვილი x რიცხვისთვის და მთელი n რიცხვისთვის,

ფუნქციის გამოსათვლელად გამოიყენეთ რეკურენტული ფორმულა. შეადგინეთ რეკურსიული ალგორითმი და შესაბამისი C- ფუნქცია.

2. მოცემული ნამდვილი x რიცხვისთვის და მთელი n რიცხვისთვის,

ფუნქციის გამოსათვლელად გამოიყენეთ რეკურენტული ფორმულა. შეადგინეთ რეკურსიული ალგორითმი და შესაბამისი C- ფუნქცია.(სწრაფი ვერსია)

3. დაწერეთ რეკურსიული ალგორითმი რომელიც მოცემულ b რიცხვს ჩასვავს ზრდადობით დახარისხებულ a[n] მასივში შესაბამის ადგილზე.

4

Page 5: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

პრაქტიკული მეცადინება 5

1. a მასივს აქვს სახე: 12 5 19 9 40 61 4 27 . ამ მონაცემებზე აჩვენეთ, თუ როგორ იმუშავებს მასივის გაყოფის ალგორითმი Partition(a,0,7) დასაბრუნებელი მნიშვნელობის მითითებით.

ამოხსნა:

x=12

k -1 0 1 2 3 4 5 6 7 8

a[k] 12 5 19 9 40 61 4 27

i j

k -1 0 1 2 3 4 5 6 7 8

a[k] 12 5 19 9 40 61 4 27

i j

k -1 0 1 2 3 4 5 6 7 8

a[k] 4 5 19 9 40 61 12 27

i j

k -1 0 1 2 3 4 5 6 7 8

a[k] 4 5 9 19 40 61 12 27

j i

5

Page 6: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

q=Partition(a,0,7)=2.

2. ქვემოთ მოცემული a მასივისთვის აჩვენეთ, თუ როგორ იმუშავებს მასივის გაყოფის ალგორითმი Partition(a,3,10) დასაბრუნებელი მნიშვნელობის მითითებით: 45 12 6 23 38 14 67 5 89 3 11 50 72

პრაქტიკული მეცადინება 6

2. a მასივს აქვს სახე: 15 11 49 13 73 . ამ მონაცემებზე აჩვენეთ, თუ როგორ იმუშავებს ჩქარი სორტირების ალგორითმი qsort(a,0,4), ფსევდოკოდის ძირითადი შეტყობინებების (ანუ სტრიქონების) მიმდევრობის მითითებით.

ამოხსნა

qsort(a,0,5)

0<5

q=partition(a,0,5)=2

qsort(a,0,2)

0<2

q=partition(a,0,2)=0

qsort(a,0,0)

qsort(a,1,2)

1<2

q=partition(a,1,2)=1

qsort(a,1,1)

qsort(a,2,2)

qsort(a,3,5)

3<5

q=partition(a,3,5)=3

qsort(a,3,3)

qsort(a,4,5)

4<5

q=partition(a,4,5)=4

qsort(a,4,4)

-1 0 1 2 3 4 5 6

27 15 11 49 13 73

11 15 13 49 27 73

13 15 11

11 15 13

11

15 13

13 15

13

15

49 27 73

27 49 73

27

49 73

49 73

49

6

Page 7: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

qsort(a,5,5)

3. a მასივს აქვს სახე:

45 7 89 12 9 47 11 91 34 5 0 20 33

ამ მონაცემებზე აჩვენეთ, თუ როგორ იმუშავებს ჩქარი სორტირების ალგორითმი qsort(a,3,6), ფსევდოკოდის ძირითადი შეტყობინებების (ანუ სტრიქონების) მიმდევრობის მითითებით.

4. a მასივს აქვს სახე: 17 78 2 39 14 51 23 2 34 25 20 13 ამ მონაცემებზე აჩვენეთ, თუ როგორ იმუშავებს ჩქარი სორტირების ალგორითმი qsort(a,2,7), ფსევდოკოდის ძირითადი შეტყობინებების (ანუ სტრიქონების) მიმდევრობის მითითებით.

ამოცანა 1. მოცემულია მთელი რიცხვების მასივი i 1 2 3 4 5 6 7 8 9

a[i] 12 40 15 67 3 24 31 10 16ამ მონაცემებით ააგეთ გროვა ფსევდოკოდის ძირითადი შეტყობინებების (ანუ სტრიქონების) მიმდევრობის მითითებით.

ამოხსნა.

lenght[a]=9, heap_size=9

BUILD_HEAP(a) {

for(i=9/2; i>=1; i--)

HEAPIFY(a,i);

}

7

Page 8: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

i=4

HEAPIFY(a,4)

l=8 , r=9;

8<9 მაგრამ 10>67 largest=4;

9=9 მაგრამ 16>67 largest არ შეცვლილა;

4 = 4 // i=largest

i=3

HEAPIFY(a,3)

l=6 , r=7;

6<9 && 24>15 largest=6; //შესრულდა if შეტყობინება

7<9 && 31>24 largest=7; //შესრულდა if შეტყობინება

3 7 // largest i

15 31 // a[3] a[7];

HEAPIFY(a,7)

l=14 , r=15

14>9 largest=7; //შესრულდა else შეტყობინება

15>9 largest არ შეცვლილა;

7 = 7 //a[7] ფოთოლია

i=2

HEAPIFY(a,2)

l=4 , r=5;

4<9 && 67>40 largest=4; //შესრულდა if შეტყობინება

5<9 მაგრამ 3>67 largest არ შეცვლილა;

2 4 //largest i

40 67 //a[2] a[4];

HEAPIFY(a,4)

l=8 ,r=9

8

Page 9: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

8<9 მაგრამ 10>40 largest=4;

9=9 მაგრამ 16>40 largest=4;

4 = 4 //largest=i

i=1

HEAPIFY(a,1)

l=2 , r=3;

2<9 && 67>12 largest=2;

3<9 მაგრამ 31>67 largest=2;

1 2 //largest i

12 67 //a[1] a[2];

HEAPIFY(a,2)

l=4 ,r=5

4<9 && 40>12 largest=4;

5<9 მაგრამ 3>40 largest=4;

2 4

12 40 //a[2] a[4];

HEAPIFY(a,4)

l=8 ,r=9

8<9 მაგრამ 10>12 largest=4;

9=9 && 16>12 largest=9;

4 9

12 16 //a[2] a[4];

HEAPIFY(a,9)

l=18 , r=19

18 9 largest=9;

19 9 largest=9;

9 = 9

9

Page 10: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

//a[9] ფოთოლია

10

Page 11: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

მოცემულია რიცხვების მიმდევრობა: 47, 23, 51, 15, 40, 49, 21. შეადგინეთ მათგან ძებნის ორობითი ხე ბჟების ჩვენებით. ჩანაწერების მისამართები აღნიშნეთ , და ა. შ. მოიყვანეთ ხის გრაფიკული წარმოდგენა:

1)

\ 47 \ \

2)

3)

4)

11

23 \ \\ 47 \

\ 47 23 \ \

51 \ \

Page 12: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

5

6)

12

23 \\ 47

15 \ \51 \ \

\ 47 23

15 \ \51 \ \

40 \ \

\ 47 23

Page 13: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

a2

a5a4

47

5123

a1a3

7)

13

15 \ \51 \

40 \ \ 49 \ \

\ 47 23

15 \51 \

40 \ \ 49 \ \

21 \ \

Page 14: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

=3

=2

=1

1

0

=0

შემდეგი მონაცემებისგან ააგეთ ძებნის ორობითი ხე: 47 23 51 15 40 49 21.

ჩათვალეთ რომ პირველი მონაცემი მოთავსებულია მისამართზე, მეორე _ზე, და ა.შ.

1. აჩვენეთ ხის სიმაღლის გამოთვლის ალგორითმის მუშაობა ბიჯების მიხედვით

height( )

u = height( ) // left( )=

u = height( ) // left( )=

u = height( )=-1 // left( )=

v = height( ) // right( )=

14

Page 15: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

0

=1

1 0

=0

u = height( )=-1 // left( )=

v = height( )=-1 // right( )=

max (-1,-1)+1=

max(-1,0)+1 =

v = height( ) //right( )=

u = height( )=-1 //left( )=

v = height( )=-1 //right( )=

max(-1,-1)+1=

max(1,0)+1=

v =height( ) // right( )=

u = height( ) // left( )=

u = height( )=-1 //left( )=

v = height( )=-1 //right( )=

max(-1,-1)+1=

v = height( )=-1

max(0,-1)+1 =

max(2,1)+1=

=0

=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0

15

Page 16: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

2. აჩვენეთ ST_search( , 21) ალგორითმის მუშაობა ბიჯების მიხედვით

ST_search( , 21)

&& 21 47

21 < 47

ST_search ( , 21) //left( )=

&& 21 23

21 < 23

ST_search ( , 21) //left( )=

&& 21 15

21>15

ST_search ( , 21) //right( )=

მაგრამ 21=21

return

16

Page 17: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

პრაქტიკული მეცადინება 10

ამოცანა: ქვემოთ მოცემული მთელი არაუარყოფით რიცხვების n =9 ელემენტიანი a[n] მასივი დაახარისხეთ გადათვლით სორტირების (countingsort) ალგორითმის საშუალებით, აჩვენეთ ბიჯების მიხედვით როგორ იცვლება დამხმარე c[k+1]

(k=max{a[0],a[1],...,a[n-1]})

და გამომავალი b[n] მასივი.

ამოხსნა:

# კოდის სტრიქონი

1ცვლადების აღწერა: int i,n,k; int a[n], b[n]; a მასივის და n სიდიდის შეყვანა,k სიდიდის განსაზღვრა

2 for (i=0; i<=k; i++){3 c[i]=0;}4 for (i=0; i<n; i++) {5 c[a[i]]++; }6 for (i=1; i<=k; i++) {7 c[i]+=c[i-1]; }8 for (i=n-1; i>=0; i--) {

9 b[c[a[i]]-1]=a[i]; c[a[i]]--; }

10 b მასივის გამოტანა

i 0 1 2 3 4 5 6 7 8a[i] 3 5 0 3 3 1 5 3 2

k=max{3, 5, 0, 3, 3,1, 5, 3, 2}=5, c[k+1]=c[6]

i 0 1 2 3 4 5c[i], I for -ის შემდეგ 0 0 0 0 0 0c[i], II for-ის შემდეგ 1 1 1 4 0 2c[i], III for-ის შემდეგ 1 2 3 7 7 9

=0

=0

17

Page 18: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

IV for-ის მუშაობის შედეგი ბიჯების მიხედვით:

1) i=8, a[8]=2, c[a[8]]=c[2]=3 b[3-1]=b[2]=2, c[2]=2;2) i=7, a[7]=3, c[a[7]]=c[3]=7 b[7-1]=b[6]=3, c[3]=6;3) i=6, a[6]=5, c[a[6]]=c[5]=9 b[9-1]=b[8]=5, c[5]=8;4) i=5, a[5]=1, c[a[5]]=c[1]=2 b[2-1]=b[1]=1, c[1]=1;5) i=4, a[4]=3, c[a[4]]=c[3]=6 b[6-1]=b[5]=3, c[3]=5;6) i=3, a[3]=3, c[a[3]]=c[3]=5 b[5-1]=b[4]=3, c[3]=4;7) i=2, a[2]=0, c[a[2]]=c[0]=1 b[1-1]=b[0]=0, c[0]=0;8) i=1, a[1]=5, c[a[1]]=c[5]=8 b[8-1]=b[7]=5, c[5]=7;9) i=0, a[0]=3, c[a[0]]=c[3]=4 b[4-1]=b[3]=3, c[3]=3;

b[9] c[6]

i 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5i=8 2 1 2 2 7 7 9i=7 2 3 1 2 2 7 7 9i=6 2 3 5 1 2 2 6 7 9i=5 1 2 3 5 1 2 2 6 7 8i=4 1 2 3 3 5 1 1 2 6 7 8i=3 1 2 3 3 3 5 1 1 2 5 7 8i=2 0 1 2 3 3 3 5 0 1 2 4 7 8i=1 0 1 2 3 3 3 5 5 0 1 2 4 7 7i=0 0 1 2 3 3 3 3 5 5 0 1 2 3 7 7

სავარჯიშო 1. მოცემულია მთელი არაუარყოფით რიცხვების n =10 ელემენტიანი მასივი a[n]={2, 3, 1, 2, 3, 0, 5, 7, 1, 2 } დაახარისხეთ გადათვლით დახარისხების (countingsort) ალგორითმის საშუალებით, აჩვენეთ ბიჯების მიხედვით როგორ იცვლება დამხმარე c[k+1] ,(k=max{a[0],a[1],...,a[n-1]}) და გამომავალი b[n] მასივი.

სავარჯიშო 2*. მოცემულია მთელი რიცხვების n ელემენტიანი a[n] მასივი;

k1=min{a[0],a[1],...,a[n-1]}<0, k2=max{a[0],a[1],...,a[n-1]}

დაწერეთ ზემოთ მოცემული გადათვლით დახარისხების (countingsort) ალგორითმის მოდიფიცირებული (მეხსიერების დაზოგვის მიზნით) ალგორითმის ფსევდოკოდი.

18

Page 19: magliveli.files.wordpress.com€¦  · Web viewპრაქტიკული მეცადინება 1. 1. რეკურენტული ფორმულით განსაზღვრული

19