Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

download Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

of 22

Transcript of Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    1/22

    Algoritmet e Renditjes 2

    Leksion 5

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    2/22

    Dizenjimi i Algoritmeve

    Ka disa menyra per ndertimin e algoritmeve. Rendtja menderfutje perdor metoden inkrementale: Duke patur terenditur nenvektorinA[1..j - 1], ne nderfutim elementinA[j] ne vendin e vet, duke perftuar keshtu nenvektorin erenditurA[1 j].

    Ne kete leksion do te shohim nje metode alternative tedizenjimit, te njohur si Pera-e-Sundo .

    Ne do ta perdorim metoden Pera-e-Sundo per tedizenjuar nje algoritem renditjeje per te cilin koha e

    kezekutimit ne rastin me te keq eshte shume me e shkurterse ajo e renditjes me nderfutje.

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    3/22

    Metoda Pera-e-Sundo .

    Shume algoritme te perdorshem jane rekursive nestrukture: per te zgjidhur nje problem te dhene, atatherrasin vetveten ne menyre rekursive nje ose disa hereper te zgjidhur nenprobleme te lidhura ngushte me to.

    Keto algoritme zakonisht ndjekin nje metode pera esundo: ata e ndajne problemin ne disa nenprobleme qejane te ngjashem me problemin fillestar por qe jane me tevegjel ne madhesi, i zgjidhin nenproblemet ne menyrerekursive dhe me pas kombinojne keto zgjidhje per te

    krijuar nje zgjidhje te problemit fillestar.

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    4/22

    Metoda Pera-e-Sundo .

    Metoda pera e sundo perfshin 3 hapa ne secilin nivel terekursivitetit:

    Ndaj (pera) problemin ne disa nenprobleme.

    Zgjidh (sundo) nenproblemet duke i zgjidhur atone menyre rekursive. Megjithate, nese madhesia enenproblemeve eshte mjaftueshem e vogel, zgjidh

    nenproblemet ne nje menyre te drejtperdrejte.

    Kombino zgjidhjet e nenproblemeve per teperftuar zgjidhjen e problemit fillestar.

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    5/22

    Renditja me perzierje (Merge Sort )

    Algoritmi i renditjes me perzierje ndjek parimin pera e sundo.

    Pera: Ndaj sekuencen prej n elementesh qe duhet renditur, ne dynensekuenca me nga n/2 elemente secila.

    Sundo: Rendit dy nensekuencat ne menyre rekursive dukeperdorur renditjen me perzierje.

    Kombino: Perziej dy nensekuencat e renditura per te prodhuarzgjidhjen e renditur: Rekursiviteti perfundon kur sekuenca qe duhetrenditur ka gjatesine 1, rast ne te cilin nuk ka pune per te bere,

    meqe do sekuence prej 1 elementi eshte vete e renditur.

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    6/22

    Renditja me perzierje - Pseudokodi

    Thi rr ja f i l lestare: MERGE-SORT(A, 1, n)

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    7/22

    Renditja me perzierjeShembull per n=8

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    8/22

    Renditja me perzierjeShembull per n=11

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    9/22

    Renditja me perzierje (Merge Sort )

    Veprimi baze i renditjes me perzierje eshte perzierja e dysekuencave, ne hapin Kombino

    Per te realizuar perzierjen , ne perdorim nje procedure

    ndihmese MERGE(A, p, q, r), ku A eshte nje vektor dhe p,q, dhe r jane indekset qe numerojne elementet e vektoritte tille qe p q< r.

    Procedura supozon se nenvektoret A[p..q] dhe A[q + 1..r]

    jane te renditur. Kjo procedure i perzien dy vektoret per teformuar nje nenvektor te vetem te renditur qezevendeson nenvektorin aktual A[p..r].

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    10/22

    Renditja me perzierje (Merge Sort )

    Procedura MERGE kerkon nje kohe ekzekutimi te rendit (n),ku n = r - p + 1 eshte numri i elementeve qe po renditen dhefunksionon si me poshte: Duke iu kthyer lojes me letra, supozojme se:

    Kemi dy stiva me letra mbi tavoline, ku selica stive eshte e renditur, meletren me te vogel ne maje te stives.

    Ne deshirojme qe ti perziejme dy stivat ne nje stive te vetme output. Hapi baze konsiston ne zgjedhjen e letres me te vogel nga dy stivat dhe

    heqjen e saj nga stiva dhe vendosjen ne stiven output.

    Ky hap perseritet, derisa njera stive input te jete bosh, kohe ne te cilenne vetem marrim stiven input te mbetur dhe e vendosim ne stiven

    output. Cdo hap baze kerkon nje kohe konstante, meqenese ne jemi duke

    krahasuar vetem dy letrat ne maje te seciles stive. Meqe ne kryejme teshumten n hapa baze, perzierja kerkon nje kohe te rendit (n).

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    11/22

    Renditja me perzierje (Merge Sort )

    Nuk kemi nevoje qe te kontrollojme nese stiva eshte bosh ne do hapbaze.

    Vendos ne fund te seciles stive input nje leter te veante sentinel,qe permban nje vlere te veante qe e perdorim per te thjeshtuarkodin.

    Ne perdorim , qe ta kemi te sigurt qe do ta humbim kete vlere. Kur eshte ne maje te seciles stive, te gjitha letrat josentinel jane

    vendosur tashme ne stiven output.

    Ne e dime qe me perpara se ka saktesisht r p + 1 letra josentinelndalojme kur kemi kryer r p + 1 hapa baze. Pra nuk na

    nevojitet kurre qe te kontrollojme per sentinelet, meqe atogjithmone humbin.

    Ne vend qe te numerojme hapat baze, mjafton te mbushim vektorinoutput nga indeksi p deri tek dhe duke perfshire indeksin r .

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    12/22

    Renditja me perzierje - Pseudokodi

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    13/22

    Shembull: Thirrja e MERGE(9, 12, 16)

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    14/22

    Shembull: Thirrja e MERGE(9, 12, 16) - vazhdim

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    15/22

    Analiza e renditjes me perzierje (1)

    Per thjeshtesi supozojme se n eshte fuqi e 2, pra cdo hap perca nacon ne dy nenprobleme, secili me madhesi saktesisht n/2

    Hapi baze ndodh kur n = 1.

    Kur n 2, duhen hapat per Merge Sort:

    Perca: Llogaritet q si mesatare e p dhe r , pra D(n) = (1).

    Sundo: Zgjidhen dy nenproblemet ne menyre rekursive, secilime madhesi n/2, pra 2T (n/2).

    Kombino: MERGE per nje nenvektor me n elemente kerkon njekohe (n), pra C(n) = (n).

    Meqe D(n) = (1) dhe C(n) = (n), te dy se bashku sjellin nje funksionqe eshte linear ne n: (n) Pra rekursiviteti per kohen e ekzekutimit te

    merge sort eshte

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    16/22

    Le te jete c nje konstante qe pershkruan kohen e ekzekutimit perrastin baze dhe gjithashtu eshte koha per element vektori per hapatpera e sundo (natyrisht nuk eshte e domosdoshme qe te perdoret enjejta konstante per te dyja). Per kete kemi:

    Vizatojme nje peme rekursiviteti, qe tregon zgjerimin hap pas hapi:

    Per problemin fillestar, kemi nje kosto cn, plus dy nenproblemet, kusecili kushton T (n/2):

    Analiza e renditjes me perzierje (2)

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    17/22

    Per secilin nga nenproblemetme madhesi n/2, kemi nje kosto prejcn/2, plus dy nenproblemet, ku secili kushton T (n/4):

    Analiza e renditjes me perzierje (3)

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    18/22

    Vazhdojme te zgjerojme pemen derisa madhesia e problemit te behet 1:

    Analiza e renditjes me perzierje (4)

    Secili nivel ka koston cn.Niveli me i larte ka koston cn.Niveli pasardhes me poshteka 2 nenprobleme, me kostocn/2 secili

    Niveli pasardhes ka 4nenprobleme, me kosto cn/4secili.Sa here qe ulemi me njenivel, numri i nenproblemevedyfishohet por kostoja per

    gjysmat e nenproblemeve kostoja per nivek mbetet enjejte.Ka lg n + 1 nivele (lartesiaeshte lg n).

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    19/22

    Analiza e renditjes me perzierje (5)

    Duke perdorur induksionin kemi: Rasti baze: n = 11 nivel, dhe lg 1 + 1 = 0 + 1 = 1.

    Hipoteza induktive eshte qe nje peme per nje problem me madhesi 2ika lg 2i+1 = i+1 nivele.

    Duhet te vertetojme qe pema me madhesi 2i+1ka i + 2 nivele.

    Meqe supozojme se madhesia e problemit eshte fuqi e numrit 2,madhesia e problemit tjeter pas 2i eshte 2i+1.

    Nje peme per nje problem me madhesi 2i+1ka nje nivel me shumese pema e problemit me madhesi 2ii + 2 nivele.

    Meqe lg 2i+1+ 1 = i + 2, pema ka i+2 nivele (cfare deshem te

    vertetojme)

    Kostoja totale eshte shuma e kostove te secilit nivel. Kemi lg n +1nivele, ku secili e ka koston cn kostoja totale eshte cn lg n + cn.

    Duke mos marre parasysh termin e rendit me te ulet cn dhekoeficientin konstant c (n lg n).

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    20/22

    Krahasuar me renditjen me nderfutje, renditja me perzierjeeshte me e shpejte.

    Per madhesi te vogla inputi, renditja me nderfutje mund te jeteme e shpejte. Por per inpute mjaft te medha renditja meperzierje gjithmone do te jete me e shpejte, sepse koha eekzekutimit te tij rritet me ngadale se koha e ekzekutimit terenditjes me nderfutje.

    Krahasime

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    21/22

    Detyre Shtepie

    Bazuar ne algoritmin ne pseudokod per renditjen meperzierje, ndertoni nje program ne Paskal per ketealgoritme.

    Modifikojeni algoritmin menyre qe ai ti rendisevektoret ne rendin zbrites.

  • 8/12/2019 Algoritmike - 2011 - Leksion 5- Algoritmet e Renditjes 2

    22/22

    Pyetje