Efektywność algorytmów

Informatyka, klasa 8 · Algorytmy

Najważniejsze w skrócie

Dwa algorytmy mogą dać ten sam wynik, ale w bardzo różnym czasie. Efektywność mierzymy liczbą operacji potrzebnych dla danych o rozmiarze n.

Wyszukiwanie liniowe sprawdza po kolei wszystkie elementy — dla miliona danych to milion kroków. Wyszukiwanie binarne w posortowanym zbiorze potrzebuje około dwudziestu.

Podobnie z sortowaniem: metody proste wykonują około n do kwadratu porównań, a szybkie algorytmy znacznie mniej. Przy dużych danych ta różnica decyduje o użyteczności programu.

▶ Ćwicz ten temat fiszki, quiz i prawda/fałsz — z wynikiem i powtórkami
Szafy superkomputera
Superkomputer — nawet on nie pomoże przy złym algorytmie (Autor: OLCF at ORNL, CC BY 2.0, źródło)

Ważne daty

Ważne postacie

Pojęcia

Co oznacza n w analizie algorytmu?
Rozmiar danych wejściowych.
Ile kroków ma wyszukiwanie liniowe?
W najgorszym razie tyle, ile elementów.
Jaki warunek ma wyszukiwanie binarne?
Dane muszą być posortowane.
Ile kroków binarnie dla miliona elementów?
Około dwudziestu.
Dlaczego sortowanie bąbelkowe jest wolne?
Wykonuje około n do kwadratu porównań.
Kiedy różnica w efektywności ma znaczenie?
Przy dużych zbiorach danych.
Co robi wyszukiwanie binarne w każdym kroku?
Odrzuca połowę pozostałych elementów.
Czy szybszy komputer zastąpi lepszy algorytm?
Nie przy dużych danych — wzrost kosztu jest zbyt szybki.
Ile porównań wymaga w najgorszym razie wyszukiwanie liniowe w liście tysiąca elementów?
Tysiąc — sprawdzamy każdy element po kolei.
Jak zmienia się czas algorytmu kwadratowego po podwojeniu danych?
Wydłuża się mniej więcej czterokrotnie.
Kiedy sortowanie bąbelkowe w zupełności wystarcza?
Przy małych zbiorach, na przykład kilkunastu elementach.
Co oznacza algorytm o stałej liczbie kroków?
Że działa tak samo szybko niezależnie od rozmiaru danych.

Sprawdź się

1. W każdym kroku wyszukiwanie binarne odrzuca:

  1. Jeden element
  2. Połowę elementów
  3. Wszystkie
  4. Nic
Pokaż odpowiedź

B. Połowę elementów — Dlatego liczba kroków rośnie bardzo wolno.

2. Efektywność algorytmu mierzymy:

  1. Długością kodu
  2. Liczbą operacji dla n danych
  3. Liczbą zmiennych
  4. Kolorem edytora
Pokaż odpowiedź

B. Liczbą operacji dla n danych — Liczy się tempo wzrostu, nie liczba linii kodu.

3. Podwojenie liczby danych w algorytmie liniowym…

  1. Nie zmienia czasu
  2. Mniej więcej podwaja czas
  3. Czterokrotnie wydłuża czas
  4. Skraca czas
Pokaż odpowiedź

B. Mniej więcej podwaja czas — To najbardziej przewidywalny rodzaj wzrostu.

4. Algorytm o stałej liczbie kroków…

  1. Zwalnia przy większych danych
  2. Działa tak samo szybko niezależnie od rozmiaru danych
  3. Wymaga sortowania
  4. Nie istnieje
Pokaż odpowiedź

B. Działa tak samo szybko niezależnie od rozmiaru danych — Przykład to odczytanie elementu listy po numerze pozycji.

5. Wyszukiwanie binarne ma złożoność:

  1. liniową
  2. logarytmiczną
  3. kwadratową
  4. stałą
Pokaż odpowiedź

B. logarytmiczną — Liczba kroków rośnie bardzo wolno.

Więcej pytań — razem 50 fiszek, pytań i zdań prawda/fałsz — czeka w ćwiczeniach.

▶ Ćwicz ten temat fiszki, quiz i prawda/fałsz — z wynikiem i powtórkami