Ich weiß nicht, wie ich es elegant ausdrücken soll, aber im Grunde möchte ich einen Brute-Force-Suchalgorithmus implementieren, aber es gibt viele verschiedene Möglichkeiten, die ich durch den Suchraum aufzählen könnte. Das mag für mich naiv sein, aber ich stelle mir vor, dass die Art und Weise, wie ich durch den Suchraum aufzähle, einen großen Einfluss darauf haben kann, ob mein Algorithmus in der Praxis gut funktioniert oder nicht.
Betrachten Sie das folgende Entscheidungsproblem als vereinfachtes Beispiel.
Eingabe: Ein Polynom mit ganzzahligen Koeffizienten und einer natürlichen Zahl .
Frage: Existiert so, dass ?
Nun könnte es viele verschiedene Algorithmen geben, um dieses Problem zu lösen, aber ich entscheide mich für einen Brute-Force-Ansatz. Betrachten Sie die folgenden Strategien zum Aufzählen im Suchraum.
Aufsteigende Strategie: Ich könnte überprüfen, ob 0 ist, dann , dann , ..., bis ich ein finde, so dass oder ich versuche jedes .
Absteigende Strategie: Ich könnte überprüfen, ob 0 ist, dann , dann , ..., bis ich ein finde, so dass oder ich versuche es jedes .
Beliebtheitsstrategie: Ich könnte eine kleine Liste der beliebtesten Lösungen speichern und diese zuerst ausprobieren, bevor ich die Zahlen in versuche .
Siebstrategie: Ich könnte eine Art Siebzählung durchführen. Ich versuche alle Zahlen, die durch 2 in teilbar sind, dann Zahlen, die durch 3 in teilbar sind , dann 5, dann 7, dann 11, dann 13 und so weiter. (Vorausgesetzt, ich habe Zugriff auf eine große vorberechnete Liste von Primzahlen.)
Zufallsstrategie: Vielleicht gibt es eine interessante Aufzählungsstrategie, die eine große Folge von Zufallsbits verwendet.
Grundsätzlich möchte ich die folgenden Fragen zu Brute-Force-Suchalgorithmen beantworten:
Frage A: Gibt es Vorteile bei der Auswahl einer bestimmten Aufzählungsstrategie?
Frage B: Gibt es Beispiele für Suchprobleme, bei denen Sie in der Praxis eine interessante Aufzählungsstrategie wählen würden? Ich habe das Gefühl, dass es einige Suchprobleme geben kann, bei denen in der Praxis eine Variante der Popularitätsstrategie effektiv funktioniert.