Ich arbeite nicht in der Theorie, aber meine Arbeit erfordert von Zeit zu Zeit das Lesen (und Verstehen) von Theoriepapieren. Sobald ich eine (Reihe von) Ergebnissen verstanden habe, diskutiere ich diese Ergebnisse mit Menschen, mit denen ich zusammenarbeite, von denen die meisten theoretisch auch nicht funktionieren. Während einer solchen Diskussion stellte sich folgende Frage:
Wann sagt man, dass zwei gegebene Algorithmen "ähnlich" sind?
Was meine ich mit "ähnlich"? Nehmen wir an, dass zwei Algorithmen ähnlich sind, wenn Sie eine der folgenden Behauptungen in einem Artikel aufstellen können, ohne einen Prüfer zu verwirren oder zu ärgern (bessere Definitionen werden begrüßt):
Behauptung 1. "Der Algorithmus , der dem Algorithmus B ähnlich ist , löst auch das Problem X "
Behauptung 2. "Unser Algorithmus ist dem Algorithmus ähnlich. "
Lassen Sie mich es etwas genauer machen. Angenommen, wir arbeiten mit Graphenalgorithmen. Zuerst einige notwendige Bedingungen, damit die beiden Algorithmen ähnlich sind:
- Sie müssen das gleiche Problem lösen.
- Sie müssen dieselbe intuitive Idee auf hoher Ebene haben.
Zum Beispiel erfüllen das Sprechen über das Durchqueren von Graphen, das Durchqueren der Breite zuerst und das Durchqueren der Tiefe zuerst die obigen zwei Bedingungen; Für Berechnungen auf kürzesten Wegen erfüllen der Breitensignal-Algorithmus und der Dijkstra-Algorithmus die beiden oben genannten Bedingungen (natürlich bei ungewichteten Graphen). etc.
Reichen diese auch aus? Insbesondere sei angenommen, dass zwei Algorithmen die notwendigen Bedingungen erfüllen, um ähnlich zu sein. Würden Sie sie in der Tat ähnlich nennen, wenn
- Sie haben unterschiedliche asymptotische Leistungen?
- für eine spezielle Klasse von Graphen, erfordert einen Algorithmus Zeit , während die andere erfordert O ( n 1 / 3 ) Zeit?
- sie haben unterschiedliche kündigungsbedingungen? (erinnern Sie sich, sie lösen das gleiche Problem)
- Der Vorverarbeitungsschritt ist bei beiden Algorithmen unterschiedlich.
- ist die speicherkomplexität bei beiden algorithmen unterschiedlich?
Edit: Die Frage ist eindeutig sehr kontextabhängig und subjektiv. Ich hatte gehofft, dass die obigen fünf Bedingungen jedoch einige Vorschläge zulassen. Gerne ändere ich die Frage weiter und gebe bei Bedarf weitere Details an, um eine Antwort zu erhalten. Vielen Dank!