← strona głównaProgramowanie (Програмування)

Czym jest złożoność faktorialna?

Złożoność faktorialna to szybki wzrost liczby wariantów, gdy dla n elementów możliwych permutacji wynosi n! Klasycznie występuje w kombinatoryce, planowaniu tras, algorytmach pełnego przeszukiwania i kryptografii.

Ta treść została automatycznie przetłumaczona z ukraińskiego.
Funkcjonalna złożoność - to sytuacja, gdy liczba wariantów lub kombinacji rośnie jak silnia liczby elementów. Innymi słowy, dla n elementów możliwych permutacji n!n!n! (n silnia), co szybko staje się ogromną liczbą nawet przy małych n.
To zjawisko często występuje w kombinatoryce, planowaniu i algorytmach pełnego przeszukiwania. Na przykład, permutacje 5 elementów to 120 wariantów, a dla 10 elementów jest już 3 628 800.
Przykłady z życia codziennego:
  • Permutacje zadań lub tras – planowanie tras dostaw lub zadań w projekcie.
  • Gra w szachy lub łamigłówki – liczba możliwych sekwencji ruchów rośnie niezwykle szybko.
  • Kryptografia – dobór kombinacji lub haseł przy pełnym przeszukiwaniu.
Prosty kod Ruby do demonstracji funkcjonalnej złożoności:
def factorial(n)
  (1..n).reduce(1, :*)
end

(1..10).each do |i|
  puts "n=#{i} - #{factorial(i)} wariantów"
end
Wynik:
n=1 - 1 wariantów
n=2 - 2 wariantów
n=3 - 6 wariantów
n=4 - 24 wariantów
n=5 - 120 wariantów
n=6 - 720 wariantów
n=7 - 5040 wariantów
n=8 - 40320 wariantów
n=9 - 362880 wariantów
n=10 - 3628800 wariantów
=> 1..10
Ten przykład pokazuje, dlaczego funkcjonalna złożoność szybko komplikuje zadanie i czyni bezpośrednie przeszukiwanie wariantów praktycznie niemożliwym.

🔥 Więcej postów

Wszystkie wpisy
Co to jest przepełnienie całkowite?
Programowanie (Програмування)15 sie '25 08:28

Co to jest przepełnienie całkowite?

Przepełnienie całkowite — to sytuacja, gdy wartość przekracza granicę typu zmiennej. Dla 32-bitow...

Co to jest plik HAR (HTTP Archive)?
Programowanie (Програмування)25 sie '25 18:23

Co to jest plik HAR (HTTP Archive)?

Plik HAR (HTTP Archive) — to format .har, który przechowuje dziennik pracy przeglądarki z siecią....

Czym jest NP-trudność?
Programowanie (Програмування)16 wrz '25 19:31

Czym jest NP-trudność?

NP-trudność – to klasa zadań, w której znalezienie rozwiązania jest niezwykle trudne, ale sprawdz...

Czym jest ivar w Ruby / Rails?
Programowanie (Програмування)19 paź '25 20:12

Czym jest ivar w Ruby / Rails?

ivar w Ruby to zmienna instancji (instance variable), która jest oznaczana @. W Rails przekazuje ...

Czym różni się OAuth 1 od OAuth 2
Programowanie (Програмування)19 paź '25 20:34

Czym różni się OAuth 1 od OAuth 2

Post opisuje OAuth 1 i OAuth 2: ich historię, przeznaczenie, różnice, cechy bezpieczeństwa oraz z...