1 / 13

Aplica ţ ii ale ridic ă rii la putere în informatic ă

Aplica ţ ii ale ridic ă rii la putere în informatic ă. F ă r ă ridicarea la putere o parte din informatic ă ar fi complet inaccesibil ă . Ea are o varietate de aplica ţ ii şi este esen ţ iala în rezolvarea unor probleme în timp optim .

ita
Download Presentation

Aplica ţ ii ale ridic ă rii la putere în informatic ă

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aplicaţii ale ridicării la putereîninformatică

  2. Fărăridicarea la putere o parte din informaticăarficompletinaccesibilă. Ea are o varietate de aplicaţiişiesteesenţialaînrezolvareaunorproblemeîntimpoptim. • Cu ajutorulacesteiprezentărivomarăta la ceesteutilăridicarea la putereîninformatică. • Pentru a nu mărilungimeaprezentării am decis căunelesurse de la probleme se vor găsi la o adresa web specificată.

  3. Probleme de numărare • Problemele de numărare sau de combinatoricăsuntcaracterizate de naturaloratipică, ceimpune din partearezolvitoruluiingeniozitate, flexibilitateşiperseverenţăîn căutareasoluţiei. • In continuarevomprezenta 2 probleme de combinatoricăîn a cărorrezolvare, ridicarea la putereeste predominantă.

  4. 1. Pătrate(preluata de pe site-ulinfoarena) •  Fie A o matrice cu N liniişi N coloane. Se cere să se găsească numărulposibilităţilor de a completamatricea A cu elemente din mulţimea {-1, 1, -5, 5} astfelîncâtprodusulnumerelor de pefiecareliniesaucoloanăeste -5 sau 5.  • Rezolvare: Din cerinţă ne dăm seama căpefiecareliniesaucoloanătrebuie săavem un 5 sau -5. Astfelpe prima linieavem N posibilităţi de a plasa 5 sau -5. Pelinia 2 avem N-1 posibilităţi, pelinia 3 avem N-2, etc. In total avem 1*2*3*….*N=N!(se citeste N factorial) configuraţii. Pentrucele N celule din fiecareconfiguraţieavemposibilităţi de a plasa 5 sau -5. Acum ne mai rămâne săplasăm pecele N*N-N celule 1 sau -1. Pentrufiecareconfiguraţieavemposibilităţideciîn total avemposibilităţi de a completamatricea A cu elemente din mulţimea {-1,1,-5,5} astfelîncâtprodusul de pefiecareliniesaucoloană să fie 5 sau -5.

  5. 2.Funcţii(din listaluiFrancu) • Pentru N şi S date, câtefuncţiisurjective definite pemulţimea { 1,2,3,4..N } cu valoriînmulţimeanumerelor { 0,-1,1 } existăastfelîncât |f(1)| + |f(2)| + .. |f(N)| =S (toatesuntînmodul) . • Rezolvare: • Din faptul căfuncţiilesuntsurjectiverezultă cătrebuie săavemcelpuţin un 1,un 0 şi un -1.Deoarece valoarealui |f(i)|,1 i N, poatefidoar 0 sau 1 ne dăm seama cătrebuie săavem S de f(i),1 I N, pentru care |f(i)|=1. • Pentrufiecare din cei S de f(i) avem 2 posibilităţi( 1 sau -1) deciîn total sunt . Observăm că am numărat şivariantele 1,1,1,…1 şi -1,-1,-1…-1 care nu suntcorectedeoarecefuncţiilesuntsurjective. Deci numărulcorectesteposibilităţi de a alege S valori de 1 sau -1 astfelîncâtfuncţiile să fie corecte. Mai rămân N-S valori de 0, care pot fialeseîn C(N,N-S) ( combinări de N luatecâte N-S). In final numărulfuncţiilorsurjective cu proprietatea din enunţeste .

  6. Ridicare la putereîntimplogaritmic • Proprietăţileputerilor pot fifolositepentru a ridica un număr la o putereîntimplogaritmic. • In limbajul C++ există o instrucţiune: pow(inta,int b) care ridică a la puterea b, însă ea esteliniară( o(b) ) deoareceefectueazăprodusul a*a*…*a(b termeni). Folosindproprietateaputemcalculaînmodulurmător: • Dacă b este par calculăm . • Dacă b esteimparcalculăm . • Deoareceputerea se tot înjumătăţestecomplexitateaestelogaritmică. • In continuareprezentăm o funcţierecursivăcecalculeazăîntimplogaritmic.

  7. intpow(inta,int b) { int nr; if(b==0) return 1; if(b%2==0) { nr=pow(a,b/2); return nr*nr; } else return pow(a,b-1) * a; } • Aceastametodă de ridicare la puterepoatefifolosita ca optimizareînmulteproblemeceimplicăputeri, reducândtimpul de execuţie.

  8. Ridicare la putere de matrici • O serie de probleme din informaticăpresupuncalculareaunorrecurenţe. De exemplu: care este al n-lea termen Fibonacci.Metodanaivăestecalcularea pas cu pas al fiecaruitermenpânăajungem la al n-lea termen , aceastăsoluţieavândcomplexitatealiniară. Pentruvalorimari ale lui n, rezolvareanici nu se încadreazăîntimp. • Astfel de problemesunt date la concursuripentru a partajaconcurenţii. Ele nu suntfoartegreledartrebuie un pic de experienţă, ingeniozitateşicunoştintematematice. • In continuareprezentăm o problemă importantă, însă care necesităcunoştinematematicemaiavansate.

  9. 1. Al n-lea termen Fibonacci( preluat de pe site-ulinfoarena) • Fie şirullui Fibonacci datprinrecurenţa: F0=0 , F1=1, … , Fn=Fn-1+Fn-2 • Sa se calculeze al n-lea termen al şirului, 0 n 1000000. • Rezolvare: • Observam ca la pasul n cunoaştem Fn-1 şi Fn-2 şidorim săaflăm Fn. • Considerăm matricea (Fn-2 Fn-1). Acumtrebuiesa căutam o matrice Z astfelîncât Z (Fn-2 Fn-1) să fie egal cu (Fn-1 Fn). • O astfel de matriceestedeoarece: • (Fn-2 Fn-1) = ( Fn-2*0 + Fn-1*1 Fn-2*1 + Fn-1*1 )=( Fn-1 Fn) • Notăm (Fi-1 Fi) cu Mi. Astfelobservăm că Mi= Mi-1 Z , dar Mi-1=Mi-2 Z. Deci Mi = Mi-2 . Inductivdeducem că Mi=M1 • Calculăm maiîntâifolosindridicarea la putereîntimplogaritmic (descrisămaisus) apoiînmulţimmatricearezultată cu M1. • Complexitatea finalăeste O( logK ). Astfel, folosindridicarea la putere am calculatFkîntimplogaritmic, soluţieceobţinepunctajul maxim.

  10. Aplicaţii diverse • Ridicarea la putere are o mulţime de utilizăripelângacelespecificatemaisus. In continuareprezentăm câtevachestiunice pot fidesluşiteprinridicare la putere: • 1. Câtenumereînbaza 2 de n cifre există? • Rezolvare: Observăm căpentrufiecarecifrăavem 2 opţiuni 1 sau 0. Deci numărul total vafi . • 2. Un călător vreasaviziteze n insule. Acesteasunt legate întreeleprincâte 5 podurişisuntdipuseliniar. Ultimainsulăestelegată de precedentanumaiprin 3 poduri. Câtedrumuri de la insula 1 la insula n există?

  11. Rezolvare: • Problemaesteoarecumasemănătoare cu cea de maisus. • Observăm ca peinsula 2 putemajungeîn 5 moduri(traversândcele 5 poduri), peinsula 3 în 5*5 moduri, peinsula 4 în 5*5*5 moduri ……, peinsulai in , i 0. Formula de maisusestegreşităpentrui=n deoareceinsula n-1 estelegată de insula n doarprin 3 poduri. Deci numărul de drumuri de la insula 1 la insula n este . • 3. Care estecomplexitatea căutariibinareîncelmaidefavorabilcaz ? • Rezolvare: • Să considerăm cămetodaesterecursivă. Celmaidefavorabilcazînseamna căelementul căutat x nu se află

  12. în vector sau x se aflăîn vector darestedepistatdoar la ultimulapel al funcţiei. • La fiecareapelrecursivspaţiul de căutare se injumătaţeste. Dupăprimulapel din cele n elementeiniţiale, rămân n/2 elemente. După al doileaapel, rămân n/ , etc. Inductivputemafirma că după k apeluri recursive spaţiul de căutarevaconţine n/ elemente. In final, numărul de elemente din spaţiul de căutaretrebuie să fie celmult 1 deci: • n/ 1 deci n . In final se obţine k=log n.

  13. Problemepropuse • 1.Tritzi(preluată de pe site-ulinfoarena, text modificat) • Un triteste o unitate logică care poatelua 3 valori: 0, 1 şi 2. Sirurile de tritzi au o proprietate specială : doitritziavândvalorile 0 şirespectiv 1 nu pot fipuşiunul dupăaltul. Astfel, existăşiruri de tritzivalideşiinvalide (care conţincelpuţin o pereche de tritzi alăturaţiegali cu 0 şi 1). De exemplu, şirul 02212212000211 este un şir valid, darşirurile 0122212 sau 2221022 nu suntvalide. • Determinaţi numărul de şiruri de tritzivalide, de lungime N. • Indiciu: ridicare la putere de matrici • 2.Suma şinumaruldivizorilor • Pentru un număr n dat să se determine număruldivizoriloracestuiaşisumalorfolosintridicarea la putereîntimplogaritmic.

More Related