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

Czym jest złożoność faktorialna?

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ą na...

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?

Masz licznik, który może liczyć tylko do pewnej liczby. Na przykład, kieszonkowy kalkulator, któr...

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

Co to jest plik HAR (HTTP Archive)?

Plik HAR (HTTArchive) - to specjalny format pliku .har, w którym przechowywany jest dziennik prac...

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

Czym jest NP-trudność?

NP-trudność - to klasa problemów, dla których bardzo trudno znaleźć rozwiązanie, ale łatwo sprawd...

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

Czym jest ivar w Ruby / Rails?

ivar - to skrót od instance variable (zmienna instancji). W Ruby zapisuje się ją z @ przed nazwą,...

Podstawowe metody uwierzytelniania w API
Programowanie (Програмування)19 paź '25 20:26

Podstawowe metody uwierzytelniania w API

Kiedy tworzymy API w Ruby on Rails, ważne jest, aby kontrolować, kto ma dostęp do zasobów. Oto po...

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

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

OAuth 1 OAuth 1 został opracowany na początku lat 2000 jako sposób bezpiecznego dostępu aplikacji...