Video: EDI 0 - partea a cincea - Despre supervizor si algoritmi - prezentarea algoritmului general 2024
O parte din algoritmi pentru chestii Cheat Sheet
Știți deja că algoritmii sunt complexe. Cu toate acestea, trebuie să știți cât de complex este un algoritm deoarece este mai complexă, cu atât mai mult este nevoie să îl executați. Următorul tabel vă ajută să înțelegeți diferitele niveluri de complexitate prezentate în ordinea timpului de rulare (de la cel mai rapid la cel mai lent).
Complexitate | Descriere |
Complexitate constantă O (1) | Oferă un timp de execuție neobișnuit, indiferent de cantitatea de intrare pe care o furnizați. Fiecare intrare necesită o singură unitate de timp de execuție. |
Complexitatea logaritmică O (log n) | Numărul de operații crește cu o viteză mai mică decât intrarea, făcând algoritmul mai puțin eficient cu intrări mici și mai eficient cu cele mai mari. Un algoritm tipic din această clasă este căutarea binară. |
Complexitatea liniară O (n) | Operațiile cresc cu intrarea într-un raport 1: 1. Un algoritm tipic este iterația, când scanați o dată intrarea și aplicați o operație fiecărui element al acesteia. |
Complexitatea liniaritmică O (n log n) | Complexitatea este o combinație între complexitatea logaritmică și liniară. Este tipic unii algoritmi inteligenți folosiți pentru a comanda date, cum ar fi Mergesortsort, Heapsort și Quicksort. |
Complexitatea patratică O (n 2 ) | Operațiile cresc ca un pătrat al numărului de intrări. Când aveți o iterație în interiorul unei alte iterații (numite iterații imbricate în informatică), aveți complexitate patratică. De exemplu, aveți o listă de nume și, pentru a găsi cele mai similare, comparați fiecare nume cu toate celelalte nume. Alți algoritmi de ordonare mai puțin eficienți prezintă o astfel de complexitate: sortarea bulei, sortarea selecției și sortarea inserției. Acest nivel de complexitate înseamnă că algoritmii dvs. pot funcționa cu ore sau chiar zile înainte de a ajunge la o soluție. |
Complexitatea cubică O (n 3 ) | Operațiile cresc chiar mai repede decât complexitatea cuadratoare, deoarece acum aveți mai multe iterații imbricate. Atunci când un algoritm are această ordine de complexitate și trebuie să procesați o cantitate modestă de date (100, 000 de elemente), algoritmul dvs. poate rula de ani de zile. Atunci când aveți o serie de operații care reprezintă o putere a intrării, este comun să se facă referire la algoritm ca fiind executat în timp polinomial. |
Complexitatea exponențială O (2 n ) | Algoritmul ia de două ori numărul operațiilor anterioare pentru fiecare element adăugat nou. Când un algoritm are această complexitate, chiar și problemele mici pot dura pentru totdeauna. Mulți algoritmi care efectuează căutări exhaustive au complexitate exponențială. Cu toate acestea, exemplul clasic pentru acest nivel de complexitate este calculul numerelor Fibonacci. |
Complexitatea factorilor O (n!) | Acest algoritm prezintă un adevărat coșmar de complexitate datorită numărului mare de combinații posibile dintre elemente. Doar imaginați-vă: Dacă intrarea dvs. este de 100 de obiecte și o operațiune pe computer durează 10 -6 secunde (o viteză rezonabilă pentru fiecare calculator de astăzi), veți avea nevoie de aproximativ 10 140 pentru a finaliza cu succes sarcina (un timp imposibil deoarece vârsta universului este estimată la 10 14 ani). O problemă faimoasă a complexității factoriale este problema vânzătorilor care călătoresc, în care un vânzător trebuie să găsească cel mai scurt traseu pentru a vizita multe orașe și pentru a reveni la orașul de plecare. |