2010-12-12 4 views
2

Comment pouvons-nous classer divers algorithmes?Comment pouvons-nous classer divers algorithmes?

J'ai entendu différents noms: Diviser & Algorithmes de conquête, Algorithmes déterministes, Algorithmes probabilistes, Algorithmes in-situ et ainsi de suite. Est-ce qu'ils forment une sorte de hiérarchie de classification?

Veuillez me fournir un lien internet.

+1

La classification n'est pas nécessairement disjointe, comme Diviser et Conquer Les algorithmes peuvent être déterministes ou probabilistes. – unsym

Répondre

0

Il y a un nombre énorme de systèmes de classification de l'algorithme, un peu plus utiles que d'autres (pour un exemple d'un régime très stupide, envisager de classer par la somme de contrôle de la description de l'algorithme!), Ce qui est une conséquence des classifications n'étant pas tant une propriété fondamentale des algorithmes, mais plutôt de ce que nous savons d'eux. La classification des connaissances est très difficile et tend à produire de nombreuses classifications qui se chevauchent; tout le domaine de la construction de telles classifications s'appelle l'ontologie. (Confusément, le mot "ontologie" est également attaché à des schémas de classification lisible par ordinateur dans des langages comme OWL.)

En tant que tel, la question est de savoir s'il existe une hiérarchie utile de classifications, et doublement si il y a une utilité. hiérarchie quand il s'agit d'algorithmes. Je pense que la réponse est "pas vraiment", et je vous exhorte à être flexible quand il s'agit de classer les choses.

+0

Par conséquent, j'aime plutôt la réponse de Saeed et vous exhorte à lui donner la générosité malgré le fait qu'il ne soit pas une réponse «appropriée» à la question que vous avez posée, car c'est de loin la plus utile des réponses. –

1

Vous pouvez classer les algorithmes comme vous le souhaitez, selon vos besoins. La classification de contour que vous proposez, qui classe les algorithmes en fonction de leur conception, semble correcte. Une autre approche serait de les classer par but: Tri, Recherche, Multiplication, etc. Une autre approche pourrait être de les classer par complexité: O (1), O (n), O (log n), O (n ) Chaque algorithme que vous souhaitez classer s'intégrera à l'un de ces schémas de classification.

Vous pouvez définir un schéma de classification hiérarchique si c'est ce que vous voulez: tri/entrées aléatoires, tri/entrées presque triées, tri/entrées presque non triées.

Mais il n'y a pas de schéma de classification correct ou faux pour les algorithmes, ce que vous choisissez devrait dépendre de ce que vous avez l'intention d'en faire. En ce qui concerne les liens Web, je vais les laisser à d'autres.

+0

En tête de toute classification correcte, il doit y avoir la distinction entre les catégories d'algorithmes * bogosort * et * non-bogosort *. –

2

Il n'y a pas de classification universelle des algorithmes. Globalement, il peut selon le modèle de conception suivi, le problème que l'algorithme résout ou la complexité. Vous pouvez créer des hiérarchies en combinant ces classifications. Par exemple, les algorithmes de tri peuvent être subdivisés en groupes basés sur des modèles de conception ou par complexité.

Certains donnent plus de détails ici - http://www.scriptol.com/programming/algorithms-classification.php

6

Il existe une classification différente pour les algorithmes:

La façon dont ils résolvent les problèmes

algorithmes classiques:

les non classiques:

Mais ces algorithmes sont des moyens déterministe ou non déterministe pour chaque course sur l'entrée spécifique, ils auront même résultat (déterministe) ou résultat différent (non déterministe).

Aussi ces algorithmes ont trop de problèmes différents dans leur, et chacun des problèmes utilise hybride de tous les algorithmes, par exemple TSP dans le graphique euclidien peut être approximée en utilisant dfs et algorithmes de graphes, et aléatoire, .... ATSP (TSP dans les graphes asymétriques) peut être approximée par la combinaison de la programmation linéaire et de quelques algorithmes de graphes avancés.

Mais il y a la classification célèbre pour les problèmes et nous pouvons l'étendre à des algorithmes qui est de la complexité du temps (également de la mémoire, mais ce jour la mémoire ne concernent que le temps):

  • P
  • NP
  • NPC
  • NPC forte
  • NP dur
  • co-NP
  • ...