Je ne travaille pas en théorie, mais mon travail nécessite de lire (et de comprendre) des articles théoriques de temps en temps. Une fois que j'ai compris un (ensemble de) résultats, je discute de ces résultats avec des gens avec qui je travaille, dont la plupart ne fonctionnent pas aussi en théorie. Au cours d'une de ces discussions, la question suivante s'est posée:
Quand dit-on que deux algorithmes donnés sont "similaires"?
Qu'est-ce que j'entends par "similaire"? Disons que deux algorithmes sont réputés similaires si vous pouvez faire l'une des revendications suivantes dans un document sans dérouter / ennuyer aucun critique (de meilleures définitions sont les bienvenues):
Revendication 1. "L'algorithme , qui est similaire à l'algorithme B , résout également le problème X "
Revendication 2. "Notre algorithme est similaire à l'algorithme "
Permettez-moi de le rendre un peu plus précis. Supposons que nous travaillons avec des algorithmes de graphe. D'abord quelques conditions nécessaires pour que les deux algorithmes soient similaires:
- Ils doivent résoudre le même problème.
- Ils doivent avoir la même idée intuitive de haut niveau.
Par exemple, parler de traversée de graphe, traversée en largeur d'abord et en profondeur d'abord satisfait aux deux conditions ci-dessus; pour les calculs sur le chemin le plus court, l'amplitude en premier et l'algorithme de Dijkstra satisfont aux deux conditions ci-dessus (sur les graphiques non pondérés, bien sûr); etc.
Ces conditions sont-elles également suffisantes? Plus précisément, supposons que deux algorithmes remplissent les conditions nécessaires pour être similaires. Les appelleriez-vous en effet similaires, si
- ils ont des performances asymptotiques différentes?
- pour une classe particulière de graphes, un algorithme nécessite du temps tandis que l'autre nécessite O ( n une / 3 ) fois?
- ils ont des conditions de terminaison différentes? (rappelez-vous, ils résolvent le même problème)
- l'étape de prétraitement est différente dans les deux algorithmes?
- la complexité de la mémoire est différente dans les deux algorithmes?
Edit: La question est clairement très dépendante du contexte et est subjective. J'espérais cependant que les cinq conditions ci-dessus permettront d'obtenir des suggestions. Je suis heureux de modifier davantage la question et de donner plus de détails, si nécessaire, pour obtenir une réponse. Merci!