algoritmul divide et impera.docx

Upload: angela-biro

Post on 06-Jul-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Algoritmul divide et impera.docx

    1/9

    http://www.alphadev.ro/theme.php?theme=11

    Algoritmul divide et impera

    1

    http://www.alphadev.ro/theme.php?theme=11http://www.alphadev.ro/theme.php?theme=11

  • 8/17/2019 Algoritmul divide et impera.docx

    2/9

    <

    Ca

     pi

     Nu pot decât mă amuz de fiecare dată câd cite!c pe iteret cevade!pre programare. "ai ale! cur!urile uor facultă i. #otul e atât dețmatematic$ co i varia%ile i pre!upueri a%!tracte i !eci. &ropueriț ș ș

    de geul: !ă e imagiăm pro%lema & % de comple'itate c(

    .)hat?*

    Algoritmul divite et impera u e!te ceva complicat i toatășe'plica ia !a e!te co iută + deumire: +mparte i cucere te. ,auț ț ș șaltfel !pu! +mparte i !implifică.ș

    - pro%leme pe calculator$ algoritmul ace!ta fuc ioează foarteț %ie pe vectori/ iruri. &etru că partea de a +mpăr i muca e!te foarteș ț

    u or de făcut câd ai u vector. Adică de ce !ă afli cea mai micășvaloarea ditre 0 umere câd po i !ă o afli ditre (.ț

    a uite u e'emplu: care e valoarea cea mai mica ditre 2$ 1($ 13 iș(. &ăi e (. ,e vede clar.

    4acă mergem pe gâdirea cla!ică$ programatică 5%leah$ cecuvite6$ atuci luăm valorile pe râd i o re iem pe cea mai mică$ laș țfiecare pa!. -l luăm pe 2 i fiidcăm !utem la +ceput$ +l re iem.ș țApoi luăm al doilea elemet i +l comparăm cu cel mai mic. 7pt e maiș

    mic decât 1( a a că mergem mai departe cu 2.ș

    - gâdirea divide et impera mergem diferit. 8icem: Avem 0elemete? Cam mult. 9ai !ă +mpăr im muca. au eu două i tu ieiț șdouă i vedem care e mai mic.ș

    u iau 2 i 1($ tu iei 13 i (. i e foarte u or !ă tăiem u vector +ș ș Ș șdouă. ,tau i mă gâde!c i a;ug la cocluzia că 2 e mai mic decâtș ș1(. #u te gâde ti i zici: &af$ ( e mai mic decât 13 cât e ziua de lugă.ș ș4upă mucă$ e +tâlim cu rezultatele$ le puem pe ma!ă: eu am 2$

    tu ai (ul. #u ai valoarea cea mai mică: pro%lemă rezolvată.

    &are mai !implu cu divide et impera. umătate de mucă per cap$fiecare lucrează + paralel$ rezultatul vie mai repede.

    Ce caracteristici are ace!t divide et impera?

    1. - primul râd tre%uie !ă tim formula cea mai !implă petruș(

    http://www.alphadev.ro/theme.php?chapter=80http://www.alphadev.ro/theme.php?chapter=80http://www.alphadev.ro/theme.php?chapter=80http://www.alphadev.ro/theme.php?chapter=80http://www.alphadev.ro/theme.php?chapter=80http://www.alphadev.ro/theme.php?chapter=80http://www.alphadev.ro/theme.php?chapter=80

  • 8/17/2019 Algoritmul divide et impera.docx

    3/9

    4etermiarea ma'imului uui ir pri 4ivide et mperaș

    >

  • 8/17/2019 Algoritmul divide et impera.docx

    4/9

    1. Program

    2. Algoritm

    &etru irul: 51$ 0$ 2$ >6 algoritmul va +mpăr i irul + două ;umătă i.ș ț ș ța +cerca !ă gă!ea!că ma'imului irului 51$ 06 i apoi al irului 52 iș ș ș ș>6. &etru a + elege mai %ie recur!ivitatea prezetă aici tre%uie !ățurmărim codul:

    Nivelul 1:

    @uc ia e!te apelată cu parametri i=1 i ;=0. i e!te diferit de ;. 7$ț șatuci a ia valoarea ma'51 i 1B0 div (6$ adică ma'51$ (6.ș

    - ace!t momet e'ecu ia fuc iei e!te oprită fiidcă aceea i fuc ieț ț ș țe!te apelată a doua oară. &rogramul re ie locul ude am răma! +ț

     primul apel al fuc iei i co%oară la ivelul al doilea.ț ș

    Nivelul 2:

    0

  • 8/17/2019 Algoritmul divide et impera.docx

    5/9

  • 8/17/2019 Algoritmul divide et impera.docx

    6/9

    Backtrackingul e!te u algoritm care a;ută la rezolvarea pro%lemelor ude tre%uie aflate toate !olu iile !ale. !te u algoritm letț

    i poate de aceea u +totdeaua adoptat. Eeori e !uficiet !ă !e afleș

    câteva !olu ii !au e evoie !ă !e afle cea mai %uă !olu ie i petruț ț șacea!ta u +totdeaua e evoie de toate !olu iile.ț

    Ace!ta e!te u algoritm. !te o idee. Chiar dacă pa ii !ut idetici$șfiecare tre%uie a;u!tat petru pro%lema cerută. !te o metodă$ u u

     program pe calculator pe care +l !crii o dată i merge petru oriceș pro%lemă de ace!t tip.

    Descriere

    actracigul co!truie te$ %azâdu!e pe oș  !tivă$ !olu ia gradual.ț,e adaugă câte o Fiforma ieF pâă la u aumit ivel$ câd !e verificățdacă !olu ia e %uă. 4e e'emplu permutarea elemetelor G1$ ($ >H.țIegula umărul 1 e!te că u po i avea acela i elemet de mai multe ori$ț șiar mărimea !olu iei tre%uie !ă fie de > elemete. i elemetele tre%uie !ăț Șfie umere de la 1 la > iclu!iv. Nu 0. Categoric u D.

    A adar G1$ (H u are > elemete$ G1$ 1$ (H poate avea > elemete$ dar ș1 apare de două ori$ iar G1$ ($ 0H are elemete ivalide.

    - fuc ie de !itua ie tre%uie luată o decizie. G1$ 1$ (H u e!te %uă$ț țdar avem de;a > ivele. Ce putem face? #recem următoarea valoare

     petru ivelul curet al !tivei 5adică acolo ude e cifra (6. 7 !ă o% iemțG1$ 1$ >H. 4ar iar u e %ie. i u mai avem o valoare !ucce!ivă celei deȘ

     pe ultimului ivel. A adar pre!upuerea că primele două ivele !utșcorecte e fal!ă i atuci co%orâm + !tivă cu u ivel: G1$ 1H i +cercămș șurmătoarea valoare: G1$ (H.

    ,olu iile geerate de u algoritm %actracig petru permutareațelemetelor de la 1 la > ar fi:

    1. G1H

    (. G1$ 1H

    >. G1$ 1$ 1H

    0. G1$ 1$ (H3

    http://www.alphadev.ro/theme.php?chapter=79http://www.alphadev.ro/theme.php?chapter=79

  • 8/17/2019 Algoritmul divide et impera.docx

    7/9

    actracig &ermutări + &a!cal

    J

  • 8/17/2019 Algoritmul divide et impera.docx

    8/9

  • 8/17/2019 Algoritmul divide et impera.docx

    9/9

    K

    http://www.alphadev.ro/theme.php?chapter=91