Ich bin Native String Search-Algorithmus (alias Brute-Force-Algorithmus). Ich weiß, dass es andere effizientere Algorithmen gibt, aber da ich von Basic aus arbeite, interessiert mich derzeit nur dieser Algorithmus. Und ich habe eine Frage, wie folgt: Was ist die durchschnittliche Zeit Komplexität (Θ) für diesen Algorithmus? ich festgestellt, dass die besten und schlimmsten Fälle haben jeweils Θ = N, Θ = M * NNaive String-Suchalgorithmus - durchschnittliche Zeit
Antwort
Von Ihrem Kommentar auf die Frage, so scheint es, dass die N Textzeichen erzeugt gleichmäßig zufällig sind. Für diese Einstellung beträgt die durchschnittliche Zeit der Brute-Force-Methode O (N - M), unabhängig davon, wie die Suchzeichenfolge generiert wird. (Man beachte, dass Wikipedia states O(N + M), aber wir können tatsächlich O (N - M) unter Verwendung der folgenden Analyse ableiten. Siehe auch these lecture notes).
Betrachten Sie die Iteration, in der die Suchzeichenfolge mit dem Text an Position i des Textes verglichen wird. Für jede Suchzeichenfolge hat jedes Zeichen der Suchzeichenfolge eine Wahrscheinlichkeit von p = 255/256, die nicht mit dem Zeichen der Suchzeichenfolge übereinstimmt. Sagen wir, dass ein "Erfolg" ist nicht passend. Dann ist die Anzahl der Versuche bis zum Erfolg ein Geometric Distribution mit expected (1 - p)/p = O(1) failures until success.
Also, für die Position i, die zu erwartenden Kosten ist O (1). Durch linearity of expectation, müssen wir jetzt über alle relevanten i summieren. Es gibt Θ (N - M) wie i.
- 1. PerformanceCounterType für durchschnittliche Zeit
- 2. SQL durchschnittliche Zeit
- 3. Durchschnittliche Zeit für Datetime-Liste
- 4. MS Access erhält durchschnittliche Zeit
- 5. Durchschnittliche Zeit bis zur Fehlerberechnung in DAX
- 6. SQL Query - Durchschnittliche Zeit von Datetime Feld
- 7. Durchschnittliche Inter-Keypress-Zeit bei der Eingabe
- 8. SQL Server: komplexe Abfrage, um durchschnittliche Zeit
- 9. Durchschnittliche Ausführungszeit
- 10. Big Query Compute Durchschnittliche Zeit zwischen zwei benutzerdefinierten Ereignissen
- 11. Durchschnittliche Zeit zwischen Transaktionen oder Bestellungen von Benutzern in Panda
- 12. Durchschnittliche Zeit, um eine assert-Anweisung in RUBY auszuführen?
- 13. berechnen durchschnittliche Korrelation für benachbarte Pixel durch die Zeit
- 14. Wie hoch ist die durchschnittliche Zeit für die schnelle Sortierung?
- 15. Durchschnittliche Zeit der Differenz von zwei Daten in Stunden
- 16. Durchschnittliche Zeit mit Spalten in zwei verschiedenen Tabellen ermitteln
- 17. Jmeter - Wie berechnet man die durchschnittliche Zeit pro Benutzer Thread?
- 18. Durchschnittliche Zeit Komplexität für eine Entfernung von Minheap
- 19. Textklassifizierung. TFIDF und Naive Bayes?
- 20. Python: Naive Bayes Filmkritik
- 21. Implement Gaussian Naive Bayes
- 22. interpretieren Naive Bayes Ergebnisse
- 23. Schätzung Naive - Bayes Wahrscheinlichkeitsfunktion
- 24. Naive Bayes Classifier Fehler
- 25. Naive Bayes-Algorithmus python3.5.2
- 26. TextBlob Naive Bayes Textklassifikation
- 27. Naive Bayes Classifier
- 28. Wie man eine Einkaufsliste automatisch sortiert? (Naive Machine Learning)
- 29. Durchschnittliche Befehlszeit
- 30. Durchschnittliche Berechnung
Werden alle Buchstaben in Ihren Strings gleichmäßig zufällig generiert? Sind sie immer gleich lang? Wenn die Strings alternativ Worte einer natürlichen Sprache oder Daten sind, die von einem Prozess erzeugt werden, kann die Θ-Schätzung unterschiedlich sein. – anatolyg
Haben Sie sich auch die Erklärung in [Wikipedia] (https://en.wikipedia.org/wiki/String_searching_algorithm#Na.C3.AFve_string_search) angesehen? Wenn nicht, benutze das einfach. Wenn ja, geben Sie bitte an, was dort unklar ist. – anatolyg
Der zu suchende Text (N) wird zufällig generiert. Es hat ein Alphabet von 256 Zeichen (Byte-Puffer), – jdimko