Fakultative Komplexität - ist eine Situation, in der die Anzahl der Varianten oder Kombinationen wie die Fakultät der Anzahl der Elemente wächst. Mit anderen Worten, für n Elemente gibt es n!n!n! (n Fakultät) mögliche Permutationen, was selbst bei kleinen n schnell zu einer riesigen Zahl wird.
Dieses Phänomen tritt häufig in der Kombinatorik, Planung und in Algorithmen der vollständigen Durchmusterung auf. Zum Beispiel gibt es für die Permutationen von 5 Elementen 120 Varianten, und für 10 Elemente sind es bereits 3.628.800.
Beispiele aus dem realen Leben:
-
Permutationen von Aufgaben oder Routen – Planung von Lieferwegen oder Aufgaben in einem Projekt.
-
Schach oder Rätsel – die Anzahl der möglichen Zugfolgen wächst extrem schnell.
-
Kryptographie – das Finden von Kombinationen oder Passwörtern bei vollständiger Durchmusterung.
Ein einfacher Ruby-Code zur Demonstration der fakultativen Komplexität:
def factorial(n)
(1..n).reduce(1, :*)
end
(1..10).each do |i|
puts "n=#{i} - #{factorial(i)} Varianten"
end
Ergebnis:
n=1 - 1 Varianten
n=2 - 2 Varianten
n=3 - 6 Varianten
n=4 - 24 Varianten
n=5 - 120 Varianten
n=6 - 720 Varianten
n=7 - 5040 Varianten
n=8 - 40320 Varianten
n=9 - 362880 Varianten
n=10 - 3628800 Varianten
=> 1..10
Dieses Beispiel zeigt, warum die fakultative Komplexität die Aufgabe schnell kompliziert und eine direkte Durchmusterung der Varianten praktisch unmöglich macht.