Beispiel für O (n!)?
Was ist ein Beispiel (code) ein O(n!) Funktion? Es sollten geeignete Anzahl von Operationen ausführen, in Bezug auf n, das ist, ich Frage nach der Zeit-Komplexität.
InformationsquelleAutor der Frage Derek Long | 2010-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dort gehen Sie. Dies ist wahrscheinlich das einfachste Beispiel einer Funktion, die ausgeführt wird in
O(n!)
Zeit (won
ist das argument der Funktion):InformationsquelleAutor der Antwort sepp2k
Ein klassisches Beispiel ist die traveling salesman problem durch brute-force-Suche.
Wenn es
N
Städte, die brute-force-Angriff probiert alle und jede permutation dieserN
Städte zu finden, die am billigsten ist. Nun ist die Anzahl der Permutationen mitN
Städten istN!
macht es die Komplexität factorial (O(N!)
).InformationsquelleAutor der Antwort codaddict
Sehen die Bestellungen von gemeinsamen Funktionen Abschnitt der Big O Wikipedia Artikel.
Laut dem Artikel, der Lösung des traveling salesman problem via brute-force-Suche und finden Sie die Determinante mit expansion durch Minderjährige sind beide O(n!).
InformationsquelleAutor der Antwort Bill the Lizard
Gibt es Probleme, die
NP-complete
(nachprüfbar in nichtdeterministische polynomialzeit). Bedeutung, wenn der Eingang skaliert, dann ist Ihre Berechnung erforderlich, um das problem zu lösen, steigt mehr als eine Menge.Einige
NP-hard
Probleme sind: Hamilton-Pfad problem( öffnen img ), Travelling salesman problem( öffnen img )Einige
NP-complete
Probleme sind: Boolesche Erfüllbarkeit problem (Sat.)( öffnen img ), N-puzzle( öffnen img ), Knapsack problem( öffnen img ), Sub-graph Isomorphismus-problem( öffnen img ), Subset-sum-problem( öffnen img ), Clique problem( öffnen img ), Vertex-cover problem( öffnen img ), Independent-set-problem( öffnen img ), Dominiert set problem( öffnen img ), Graph coloring problem( öffnen img ),Quelle: link 1link 2
Quelle: link
InformationsquelleAutor der Antwort
Finden der Determinante mit der Erweiterung durch Minderjährige an.
Sehr gute Erklärung hier.
Code von hier. Dort finden Sie auch die notwendigen
.hpp
Dateien dort.InformationsquelleAutor der Antwort Jungle Hunter
Ich glaube, ich bin ein bisschen spät, aber ich finde snailsort zu werden, das beste Beispiel von O(n!) deterministischen Algorithmus. Es ist im Grunde findet die nächste permutation des Arrays, bis es sortiert.
Sieht es wie folgt aus:
InformationsquelleAutor der Antwort Gabi Purcaru
das einfachste Beispiel 🙂
pseudocode:
dort gehen Sie 🙂
Als ein echtes Beispiel - was zur Erzeugung aller Permutationen einer Gruppe von Elementen?
InformationsquelleAutor der Antwort Armen Tsirunyan
Jeder Algorithmus, der berechnet alle Permutationen einer gegebenen array ist O(N!).
InformationsquelleAutor der Antwort John
printf("Hello World");
Ja, das ist O(n!). Wenn Sie denken, es ist nicht, ich schlage vor, Sie Lesen die definition von BigOh.
Ich nur Hinzugefügt, diese Antwort, weil Sie die lästige Angewohnheit haben Menschen immer BigOh unabhängig davon, was Sie eigentlich bedeuten.
Zum Beispiel, ich bin ziemlich sicher, dass die Frage bestimmt zu Fragen, Theta(n!), mindestens cn! Schritte und nicht mehr als Cn. Schritte für einige Konstanten c, C > 0, aber entschied sich zur Verwendung von O(n!) statt.
Andere Instanz:
Quicksort is O(n^2) in the worst case
zwar technisch korrekt (Sogar heapsort ist O(n^2) im worst-case!), was Sie tatsächlich bedeuten, istQuicksort is Omega(n^2) in the worst case
.InformationsquelleAutor der Antwort
In Wikipedia
Lösung des traveling salesman problem via brute-force-Suche; Suche nach der Determinante mit der Erweiterung durch Minderjährige an.
http://en.wikipedia.org/wiki/Big_O_notation#Orders_of_common_functions
InformationsquelleAutor der Antwort 太極者無極而生
In C#
Wäre das nicht O(N!) im Raum Komplexität? weil Strings in C# ist unveränderlich.
InformationsquelleAutor der Antwort user623429
Bogosort ist die einzige "offizielle" ich habe festgestellt, dass ventures in das O(n!) Bereich. Aber es ist nicht garantiert O(n!) wie es ist zufällig in der Natur.
InformationsquelleAutor der Antwort MdaG
Den rekursiven Methode, die Sie wahrscheinlich gelernt, für die die Determinante der matrix (wenn Sie nahm die lineare algebra) in O(n!) Zeit. Obwohl ich nicht besonders Lust-Kodierung, die alle bis.
InformationsquelleAutor der Antwort user477556
@clocksmith Sie absolut richtig. Dies ist nicht die Berechnung von n!. Noch ist es O(n!). Ich lief es erfasst die Daten in der Tabelle unten. Bitte vergleichen Sie in Spalte 2 und drei. (#nF ist die Anzahl der Aufrufe nFacRuntimeFunc)
n #nF n!
So klar, wenn führt viel schlechter als O(n!). Unten ist ein Beispiel-code für die Berechnung von n! rekursiv. Sie wird beachten, dass die O(n) zu bestellen.
InformationsquelleAutor der Antwort user3416507
Du hast Recht die rekursiven Aufrufe sollten genau n! Zeit. hier ist ein code gerne testen faktorielle Zeit für n verschiedene Werte. Die innere Schleife läuft für n! Zeit für verschiedene Werte von j, so dass die Komplexität der inneren Schleife ist der Große O(n!)
Hier sind die test-Resultat für n = 5, Sie Durchlaufen genau die Faktoren-Zeit.
Genaue Funktion mit Zeit-Komplexität n!
InformationsquelleAutor der Antwort techdips