0 evaluări0% au considerat acest document util (0 voturi)
138 vizualizări14 pagini
Din cauza încărcării prezentărilor / documentelor pe acest site, vizual, acestea au fost afectate, însă la descărcarea lor, această problemă dispare.
(Из-за загрузки презентаций / документов на этом сайте визуально они были испорчены, но после их загрузки эта проблема исчезает.)
Din cauza încărcării prezentărilor / documentelor pe acest site, vizual, acestea au fost afectate, însă la descărcarea lor, această problemă dispare.
(Из-за загрузки презентаций / документов на этом сайте визуально они были испорчены, но после их загрузки эта проблема исчезает.)
Din cauza încărcării prezentărilor / documentelor pe acest site, vizual, acestea au fost afectate, însă la descărcarea lor, această problemă dispare.
(Из-за загрузки презентаций / документов на этом сайте визуально они были испорчены, но после их загрузки эта проблема исчезает.)
În informatică complexitatea temporală a algoritmilor se caracterizează prin tim-
pul de execuţie T(n) sau numărul de operaţii elementare Q(n). Întrucît
calculatoarele moderne au o viteză de calcul foarte mare- 10^8 ... 10^10 instrucţiuni pe secundă, problema timpului de execuţie se pune numai pentru valorile mari ale lui n. În consecinţă, în formulele ce exprimă numărul de operaţii elementare Q(n) prezintă interes numai termenul dominant, adică acel care tinde cît mai repede la infinit. Importanţa termenului dominant faţă de ceilalţi este pusă în evidenţă în tabelul 4.5. De exemplu, numărul de operaţii elementare ale procedurii Sortare se exprimă prin formula:
Termenul dominant din această formulă este 16n^2 . Evident, pentru valorile mari ale lui n numărul de operaţii elementare
iar timpul de execuţie
În funcţie de complexitatea temporală, algoritmii se clasifică în: algoritmi polinomiali; algoritmi exponenţiali; algoritmi nederminist polinomiali. Un algoritm se numeşte polinomial dacă termenul dominant are forma
n-este caracteristica datelor de intrare; C-o constantă pozitivă; k-un număr
natural. Complexitatea temporală a algoritmilor polinomiali este redată prin notaţia O(n^k) care se citeşte „algoritm cu timpul de execuţie de ordinul n^k ” sau, mai pe scurt, „algoritm de ordinul n^k ”. Evident, există algoritmi polinomiali de ordinul n, n^2 , n^3 etc. De exemplu, algoritmul de sortare a elementelor unui vector prin metoda bulelor este un algoritm polinomial de ordinul n^2 . Un algoritm se numeşte exponenţial dacă termenul dominant are forma Ck^n, adică
unde k>1. Complexitatea
temporală a algoritmilor exponenţiali este redată prin notaţia O(k^n ). Menţionăm faptul că tot exponenţiali se consideră şi algoritmii de complexitatea n^log n , cu toate că aceasta nu este exponenţială în sensul strict matematic. Din comparaţia vitezei de creştere a funcţiilor exponenţială şi polinomială rezultă că algoritmii exponenţiali devin inutilizabili chiar pentru valori nu prea mari ale lui n. Algoritmii nederminist polinomiali se studiază în cursurile avansate de informatică. În funcţie de complexitatea temporală se consideră că o problemă este uşor rezolvabilă dacă pentru soluţionarea ei există un algoritm polinomial. O problemă pentru care nu există un algoritm polinomial se numeşte difi cilă. Accentuăm faptul că această clasifi care se referă doar la analiza asimptotică a algoritmilor, adică la comportarea lor pentru valori mari ale lui n. Pentru valorile mici ale lui n situaţia poate fi diferită. În practică, elaborarea programelor de calculator presupune parcurgerea următoarelor etape: 1)formularea exactă a problemei; 2)determinarea complexităţii temporale a problemei propuse-problemă uşor rezolvabilă sau problemă dificilă; 3)elaborarea algoritmului respectiv şi implementarea lui pe un sistem de calcul. Evident, în cazul unor probleme uşor rezolvabile, programatorul va depune toate eforturile pentru a inventa algoritmi polinomiali, adică algoritmi de ordinul n^k , astfel încît parametrul k să ia valori cît mai mici. În cazul problemelor dificile se va da prioritate algoritmilor care minimizează timpul de execuţie cel puţin pentru datele de intrare frecvent utilizate în aplicaţiile practice. Metodele de clasifi care a problemelor în cele uşor şi cele dificil rezolvabile se studiază în cursurile avansate de informatică. Mulțumim pentru atenție!