Ushtrime Permbledhese

12
20/06/2012 1 Ushtrime 1 Algoritmike dhe Programim i Avancuar 2 1) Supozojme qe duam te gjenerojme random kombinacionet e n numrave te pare integer, psh , {4, 3, 1, 5, 2} dhe {3, 1, 4, 2, 5} jane kombinacione te vlefshme, por {5, 4, 1, 2, 1} nuk eshte eshte dublikuar numri 1 dhe numri 3 mungon. Supozojme ekzistencen e nje gjeneratori numrash random rand_int(i, j), qe gjeneron numra integer midis i dhe j me probabilitet te njejte. Po japim me poshte 3 algoritme: 1. A[0] deri ne A[n-1] si me poshte: per te mbushur A[i] gjenerohen numra random derisa merret nje qe nuk ndodhet ne A[0], A[1],…. A[i-1] 2. Njelloj si algoritmi (1), por mbahet nje vektor shtese “perdorur”. Kur nje numer random, nr, vendoset ne vektorin A, njekohesisht caktohet perdorur[nr] = 1. Kjo tregon qe duke mbushur A[i] me numra random mund te testohet me nje hap te vetem nqs eshte perdorur apo jo me pare ai numer, ne vend te i hapave qe duheshin ne algoritmin e pare. 3. Mbushet vektori ne menyre qe A[i] = i+1 for( i=0; i<n; i++ ) swap( &A[i], &A[ rand_int( 0, i ) ] ); Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

description

fsdfsdfsdf

Transcript of Ushtrime Permbledhese

  • 20/06/2012

    1

    Ushtrime

    1

    Algoritmike dhe Programim i Avancuar

    2

    1) Supozojme qe duam te gjenerojme random kombinacionet e n numrave te pare integer, psh , {4, 3, 1, 5, 2} dhe {3, 1, 4, 2, 5} jane kombinacione te vlefshme, por {5, 4, 1, 2, 1} nuk eshteeshte dublikuar numri 1 dhe numri 3 mungon. Supozojmeekzistencen e nje gjeneratori numrash random rand_int(i, j), qegjeneron numra integer midis i dhe j me probabilitet te njejte. Po japim me poshte 3 algoritme:

    1. A[0] deri ne A[n-1] si me poshte: per te mbushurA[i] gjenerohen numra random derisa merret nje qe nuk ndodhet ne A[0], A[1],. A[i-1]

    2. Njelloj si algoritmi (1), por mbahet nje vektor shtese perdorur. Kur nje numerrandom, nr, vendoset ne vektorinA, njekohesisht caktohet perdorur[nr] = 1. Kjotregon qe duke mbushurA[i] me numra random mund te testohet me nje hap tevetem nqs eshte perdorur apo jo me pare ai numer, ne vend te i hapave qe duheshinne algoritmin e pare.

    3. Mbushet vektori ne menyre qe A[i] = i+1for( i=0; i

  • 20/06/2012

    2

    3

    a) Tregoni qe te tre algoritmet gjenerojne kombinacione tevlefshme, dhe qe te gjitha kombinacionet jane njelloj probabel.

    b) Analizoni kompleksitetin e secilit algoritem. c) Analizoni rastin me te mire dhe ate me te keq.

    4

    2) Shkruani nje program per te gjetur nqs nje numer pozitiv n eshtenumer prim.

    a) Cili eshte rasti me i keq i ekzekutimit i shprehur me terma te n?b) Le te jete B numri i biteve ne paraqitjen binare te n. Cila eshte

    vlera e B?c) Duke e shprehur sipas B, cili eshte rasti me i keq i ekzekutimit te

    programit?d) Krahasoni kohet e ekzekutimit per te percaktuar nqs nje numer

    me 20 bit dhe nje me 40, bit jane numra prime.e) Eshte me e arsyeshme te shprehim kohen e ekzekutimit ne

    terma te n apo te B? Pse?

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

  • 20/06/2012

    3

    5

    3) Tregoni qe x62 mund te llogaritet me vetem 8 shumezime.

    4) Shkruani nje funksion qe percakton nqs ekziston nje numeri integer i tille qe ai = i ne nje vektor numrash integer a1 < a2 < a3 < . . . < an. Cili eshte kompleksiteti i algoritmittuaj?

    5) Gjeni nje algoritem eficent (duke argumentuar analizen e tij te kompleksitetit) per:

    a) Gjetjen e shumes min te sekuencave ne vektor.b) Gjetjen e shumes minimum te sekuencave pozitive ne vektor.c) Gjetjen e prodhimit maksimum te sekuencave ne vektor.

    6

    6) Pasi jane analizuar programet A dhe B eshte percaktuar qerastet me te keqija nuk e kalojne numrin e veprimeverespektivisht 15n log2n dhe n2. Pergjigjuni pyetjeve temeposhtme:

    a) Cili program garanton kohe me te mire ekzekutimi per vlerate medha te n (n > 10 000)?

    b) Cili program garanton kohe me te mire ekzekutimi per vlerate vogla te n (n

  • 20/06/2012

    4

    7

    7) Nje element ne maxhorance ne nje vektor A me n elemente eshte ai i cili ndeshet me shume se n/2 here (ekziston max nje i tille). Psh vektori 3, 3, 4, 2, 4, 4, 2, 4, 4 ka maxhorance elementin 4 ndersa vektori 3, 3, 4, 2, 4, 4, 2, 4 nuk ka maxhorance. Nqsnuk ka element maxhorance algoritmi juaj duhet ta tregoje kete. Nje algoritem qe e zgjidh kete problem eshte si vijon:Hapi i pare: gjendet nje kandidat per element ne maxhorance (pjesa me e veshtire). Kykandidat eshte elementi i vetem qe mund te jete ne maxhorance.Hapi i dyte: tregohet qe kandidati eshte aktualisht ne maxhorance.

    Ky eshte nje kerkim sekuencial ne vektor. Per te gjetur nje kandidat ne vektorin A, krijoni nje vektor tjeter B. Pas kesaj krahasoni A1 me A2. Nqs jane te njejte, ruani njerenprej tyre ne vektorin B, perndryshe mos beni asgje. Pastaj krahasoni A3 me A4. Perserinqs jane te barabarte, shtoni njeren prej tyre ne B, perndryshe mos beni asgje. Vazhdonine kete menyre derisa eshte lexuar I gjithe vektori. Pastaj ne menyre rekursive gjeni njekandidat per B. Ky do te jete eshte kandidati per A. Pse?

    a) Si perfundon thirrja rekursive?b) Si trajtohet rasti kur n eshte tek?c) Cili eshte kompleksiteti i algoritmit?d) Si mund te menjanojme perdorimin e nje vektori shtese B?e) Shkruani nje funksion qe llogarit elementin ne maxhorance.

    8

    8) Ne funksionin e meposhte te kerkimit binar nqs shprehja ne rreshtin 5 do te zevendesohej me majte = mes, cfare do te ndodhte ne ekzekutimin e funksionit? Do te ishte funksioni i sakte gjithsesi?

    int kerkimBinar( int a[ ], int x, int n )

    {

    int majte, mes, djathte;

    /*1*/ majte = 0; djathte = n - 1;

    /*2*/ while(majte

  • 20/06/2012

    5

    9

    9) Jepet vektoriT[n]. Ndertoni nje funksion rekursiv qe teparaqese ne ekran te gjitha dyshet e mundshme teelementeve te vektoritT. Psh T = {1,2,3,4} dyshet e mundshme jane: {1,2} {1,3} {1,4} {2,3} {2,4} {3,4}

    10

    10) Nje liste lineare permban vetem 3 elemente me vlerat 100, 200, 45. K eshte shenjuesi i kokes se listes. N dhe P jane variabla te tipitshenjues ne elemente te listes. Te shpjegohet rezultati iinstruksioneve te meposhtme.

    a) N = K -> next; N->vlere = 350;b) P=K->next; N = P->next;

    P->next=P->next; delete(N);c) N=K; K = new node;

    K->vlere = 700; K->next = N;

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

  • 20/06/2012

    6

    11

    11) Te ndertohet nje funksion qe gjen shumen e elementeve te njeliste.

    12) Te ndertohet nje funksion qe gjen elementin me te madh te njeliste.

    13) Te pershtatet funksioni i mesiperm qe te gjeje dy elementet me temedhenj te nje liste (lista te bridhet vetem nje here).

    14) Jepet nje pointer P mbi nje element te listes lineare L, njedrejtimore. Te shkruhet nje funksion qe heq nga kjo liste:

    a) Elementin pasardhes atij ku shenjon pointeri Pb) Elementin e treguar nga pointeri P

    12

    15) Te shkruhet nje funksion i cili merr si parameter dy lista L1 dhe L2 dhe i bashkon ato duke i vendosur elementet e listesL2 pas atyre te listes L1.

    16) Te shkruhet nje funksion qe merr nje liste njedrejtimore L dhe e ndan ate ne dy lista L1 dhe L2. Ndarja behet pas elementit X te dhene qe ndodhet ne listen L.

    17) Te shkruhet nje funksion qe largon nga lista e lidhurnjedrejtimore L te gjithe elementet pozitive te saj.

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

  • 20/06/2012

    7

    13

    18) Jepet lista e lidhur njedrejtimore L e renditur ne rend rrites. Te shkruhet nje funksion qe shton ne kete liste elementin X duke respektuar renditjen.

    19) Jepen dy liste te lidhura njedrejtimore L1 dhe L2. Te shkruhetnje funskion i cili krijon listen L ne te cilen elementet e listaveL1 dhe L2 vendosen ne menyre te nderthurur. Ne castin kurelementet e nje liste mbarohen te vazhdoje vendosja e elementeve te mbetur nga lista tjeter.

    14

    20) Te ndertohet nje funksion qe numeron kulmet e nje pemebinare.

    21) Per nje vektor heap, te dhene te shkruhet nje funksion qevecon nenpemen e majte te pemes se paraqitur me ane teketij vektori.

    22) A ekziston peme binare qe te kete redhet e bredhjesnderrendore dhe pasrendore si me poshte:

    Nderrendore CADB Pasrendore CBAD

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

  • 20/06/2012

    8

    15

    23) Shkruani nje funksion per zgjedhjen e pivot ne algoritminquicksort si:

    a) Elementi i pare i vektorit.b) Me i madhi midis dy elementeve te pare te ndryshem nga njeri

    tjetrin.c) Nje element random.d) Mesatarja e gjithe elementeve ne vektor.

    Cila do te ishte zgjedhja me e mire per pivot? Pse?

    16

    24) Pse algoritmi bubble sort eshte me i shpejte per input terenditur paraprakisht?

    25) Pse selection sort nuk ndikohet nga fakti qe inputi eshteparaprakisht i renditur?

    26) Pse insertion sort ekzekutohet me shpejt ne input paraprakisht te renditur?

    27) Pse merge sort ekzekutohet me shpejt ne input paraprakisht te renditur?

    28) Pse quicksort eshte me i ngadalte ne input paraprakisht terenditur?

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

  • 20/06/2012

    9

    17

    29) Jepet metoda e meposhtme e fshirjes nga heap?

    void zhvendosPoshte( int bosh) { int child; int tmp = array[bosh]; for( ; bosh * 2

  • 20/06/2012

    10

    19

    30) Ndertoni nje funksion qe merr si input nje tekst dhe e printonate te kthyer ne te kundert. Perdorni nje stive ndihmese.

    31) Ndertoni nje funksion kerkoNeListe qe kerkon ne menyrerekursive nje vlere te caktuar ne nje liste te lidhur njedrejtimore. Funksioni duhet te ktheje nje pointer ne element nqs ai gjendetdhe NULL nqe elementi nuk gjendet ne liste.

    20

    32) Ndertoni nje funksionin rekursiv afishoPeme qe afishon nje pemebinare ne ekran. Psh pema te meposhtme:

    Duhet te afishohet si:

    Funksioni duhet te marre si parametra nje pointer ne rrenjen e pemes dhe nje integer nrHapesira qe do te mbaje nr. e hapesiraveqe paraprijne vleren qe do te afishohet (ky variabel do te fillojeme vleren fillestare zero mqs rrenja afishohet direkt ne te majtete ekranit).

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

  • 20/06/2012

    11

    21

    Algoritmi

    Per aq kohe sa pointeri ne nyjen korente nuk eshte NULL. Therrit ne menyre rekursive afishoPeme me parametra nenpemen e

    djathte dhe nrHapesira + 5 Perdorni nje instruksion per te numeruar nga 1 ne nrHapesira dhe

    afishoni hapesirat. Afishoni vleren e nyjes korente. Vendosni pointerin e nyjes korente ne nenpemen e majte te nyjes

    korente. Rrisni nrHapesira me 5.

    22

    33) Ndertoni nje algoritem eficent NdajCiftTek(A) qe kthen vektorin A qepermban ne fillim numrat tek te pasuar nga numrat cift. Psh per input vektorin A = 7, 17, 74, 21, 7, 9, 26, 10 funksioni do te ktheje sioutput vektorin A = 74, 10, 26, 17, 7, 21, 9, 7. Funksioni te perdore ekstra nje madhesi konstante kujtese te pavarur nganumri i elementeve te A, pra te mos perdoret vektor temporar tjeter. Sa eshte kompleksiteti i algoritmit tuaj? A mund ta permiresoni algoritmin tuajne menyre qe te kete kompleksitet linear?

    34) Jepet vektori A = 4, 33, 6, 90, 33, 32, 31, 91, 90, 89, 50, 33(a) A eshte A nje min-heap? Argumentoni pergjigjen duke shpjeguarkarakteristikat e min-heap.

    (b)Nqs A eshte nje min-heap, hiqni vleren min te vektorit dhe riorganizonine menyre qe A te mbetet nje min-heap. Tregoni cdo iteracion te min-heapify.

    (c) Nqs A nuk eshte nje min heap, aplikoni algoritmin qe e kthen ate ne njemin-heap. Tregoni cdo iteracion te min-heapify.

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)

  • 20/06/2012

    12

    Ushtrime Permbledhese20/06/2012

    23

    Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)