2010-12-13 16 views
2

Je voudrais avoir une idée de la gamme de complexité dans laquelle les algorithmes se situent. Je pense que ce serait intéressant et utile pour ceux, comme moi, d'essayer de mieux comprendre comment les algorithmes sont formulés et comment les déconstruire.Un exemple d'algorithme de niveau débutant, d'algorithme de niveau intermédiaire et d'algorithme de niveau complexe/expert?

Pouvez-vous proposer un algorithme de base avec explication, un algorithme intermédiaire avec explication, et peut-être un niveau expert (avec ou sans) une explication?

+5

Je crois que cette question est sans réponse. – AlexanderMP

+2

@Alexander: c'est indécidable. – ybungalobill

+0

Tout est relatif, à part le fait que cette question est subjective et argumentative. ;-) –

Répondre

5

Permettez-moi de vous référer à ce site pour heureux brainmunching. http://projecteuler.net/index.php?section=problems

algorithme débutant: Trouver le premier élément d'une séquence qui correspond à un critère. C'est une simple traversée O (n) de, disons, une liste ou un tableau, recherche le premier cas de vérité qu'il voit et renvoie le résultat ou la position d'index.

Débutant Intermédiaire algorithme: définir un en place du tas Tri qui nécessite O (1) mémoire. Cela nécessite de jouer avec la mémoire et assez de réflexion abstraite pour vous sortir des couches de la science computationnelle.

Algorithme intermédiaire: Trouvez le 1 000 000e nombre premier dans les 5 secondes qui suivent le calcul. Il s'agit d'un problème mathématique simple que la plupart des programmeurs devraient être capables de résoudre en un jour, s'ils se considèrent comme familiers avec la science du calcul.

Algorithme intermédiaire avancé: Définir un algorithme génétique. Pas grand chose à dire ici, juste Wikipédia.

Algorithme avancé: Définir une fonction de tri de recuit quantique se terminant en temps O (n). Vous pouvez gagner votre doctorat avec celui-ci. Je mentionne quelque chose comme cela qui est presque impossible avec un système de calcul numérique Turing-complet parce que c'est dans des endroits comme celui-ci que la science du calcul marche sur de nouvelles terres. Quiconque est avancé en informatique et en étude algorithmique est concerné par un terrain étrange comme celui-ci.

+0

Sorte d'un saut de "Débutant" à "Débutant-Intermédiaire" là-bas! Je suppose que près de 30% des programmeurs ont * entendu parler * d'une structure de données en tas. (De plus, les algorithmes génétiques ne sont pas difficiles - ce serait un meilleur choix pour les «intermédiaires».) –

+0

30% des programmeurs qui travaillent peuvent être, mais 100% des diplômés du CS devraient en avoir entendu parler. La question initiale n'est pas vraiment claire quant à savoir si elle demande des exemples d'algorithmes à partir d'une perspective CS ou d'une perspective de programmeur fonctionnel. –

+0

Oui, vous venez avec de grandes critiques. J'ai fait de mon mieux pour lui donner une idée des algorithmes de la science du calcul. Je modifierais et développerais si la question n'était pas fermée. – Squirrelsama