dr inż. Michał Malinowski

bazy grafowe, cyberbezpieczeństwo, sztuczna inteligencja

Notacja O (wielkie O)


Fundament Analizy Wydajności Algorytmów


January 10, 2023

Klasy złożoności obliczeniowej
Klasy złożoności obliczeniowej
Notacja O (wielkie O) przedstawia pesymistyczne oszacowanie złożoności algorytmu, co oznacza, że określa górną granicę czasu wykonania. To oznacza, że w najgorszym scenariuszu czas wykonania algorytmu nie przekroczy wartości określonej przez notację O dla dużych rozmiarów danych wejściowych.

Podstawowe Klasy Złożoności

  1. O(1) - Stała złożoność czasowa
    •  Czas wykonania algorytmu jest niezależny od rozmiaru danych wejściowych.
    • Przykład: Dostęp do elementu w tablicy.
  2. O(log n) - Logarytmiczna złożoność czasowa
    •  Czas wykonania algorytmu rośnie logarytmicznie wraz z rozmiarem danych wejściowych.
    • Przykład: Wyszukiwanie binarne.
  3. O(n) - Liniowa złożoność czasowa
    •  Czas wykonania algorytmu rośnie liniowo wraz z rozmiarem danych wejściowych.
    • Przykład: Przeszukiwanie nieposortowanej listy.
  4. O(n log n) - Liniowo-logarytmiczna złożoność czasowa
    •  Czas wykonania algorytmu rośnie w tempie n log n.
    • Przykład: Sortowanie przez scalanie (Merge Sort).
  5. O(n^2) - Kwadratowa złożoność czasowa
    •  Czas wykonania algorytmu rośnie kwadratowo wraz z rozmiarem danych wejściowych.
    • Przykład: Sortowanie bąbelkowe (Bubble Sort).
  6. O(n^3) - Sześcienna złożoność czasowa
    •  Czas wykonania algorytmu rośnie sześciennie wraz z rozmiarem danych wejściowych.
    • Przykład: Algorytmy przetwarzania grafów, takie jak algorytm Floyda-Warshalla.
  7. O(2^n) - Eksponencjalna złożoność czasowa
    •  Czas wykonania algorytmu rośnie wykładniczo wraz z rozmiarem danych wejściowych.
    • Przykład: Algorytmy przeszukiwania przestrzeni stanów, takie jak problem komiwojażera.
  8. O(n!) - Silnia
    •  Czas wykonania algorytmu rośnie silniowo wraz z rozmiarem danych wejściowych.
    • Przykład: Algorytmy generujące wszystkie permutacje zbioru.

Podsumowanie

Zrozumienie różnych klas złożoności opisanych za pomocą notacji O jest kluczowe dla oceny i porównywania wydajności algorytmów. Wybór odpowiedniego algorytmu może znacząco wpłynąć na efektywność rozwiązania problemu, szczególnie w przypadku dużych zbiorów danych. 
#NotacjaO #AnalizaAlgorytmów #ZłożonośćObliczeniowa #Algorytmy 

Share



Follow this website


You need to create an Owlstown account to follow this website.


Sign up

Already an Owlstown member?

Log in