• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Złożoność obliczeniowa algorytmy

Object Storage Arubacloud
0 głosów
67 wizyt
pytanie zadane 17 kwietnia w Python przez skiczyn Nowicjusz (140 p.)

Witam, mógłby mi ktoś pomóc określić złożoność obliczeniową algorytmu i wytłumaczyć dlaczego tak?

wynik := n;​

 for i := 1 to n do​

   if (i < wynik and r[i]+r[wynik] <= R)​

    wynik := wynik-1;​

​

1 odpowiedź

+1 głos
odpowiedź 17 kwietnia przez Benek Szeryf (91,070 p.)

Załóżmy, że to Python ze względu na to, że pytanie umieszczono w takim dziale.

Zazwyczaj to będzie O(n), ponieważ trzonem tego kodu jest iterowanie po n-elementowej tablicy. Innymi słowy złożność jest linowa. W linii 5. odwołujemy się do kontenera po indeksie. I to może być klasyczna pythonowa lista lub słownik. W przypadku obu zazwyczaj wyszukiwanie ma złożność O(1), czyli nie zależy od rozmiaru kontenera, a więc ostatecznie O(n * 1) da nam O(n). Jeśli jednak r jest słownikiem to jest on zaimplementowany jako tablica mieszająca. Wyszukiwanie w niej elementów, gdy znamy indeks, ma zwykle złożność O(1), ale w pesymistycznym przypadku może mieć O(m), gdzie m jest rozmiarem słownika.

Zatem podsumowując, w zależności czym jest r złożność obliczeniowa wynosi:

  • O(n*1) = O(n) - zwykle tak będzie gdy r = dict, zawsze tak będdzie gdy r = list
  • O(n*m) - pesymistyczny wariant gdy r = dict

Podobne pytania

0 głosów
0 odpowiedzi 225 wizyt
0 głosów
1 odpowiedź 563 wizyt
pytanie zadane 1 listopada 2020 w Algorytmy przez niezalogowany
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 25 kwietnia 2020 w C i C++ przez Tacoo Nowicjusz (150 p.)

92,592 zapytań

141,441 odpowiedzi

319,702 komentarzy

61,975 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...