• [^] # Re: Lae boulangèreuratriceuse qui calcule la monnaie exécute un algorithme

    Posté par . En réponse au lien Quand l'algorithmique devient fasciste. Évalué à 3.

    Définition du Larousse : « Ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations. » C'est une définition communément citée (bien qu'effectivement il puisse en exister d'autres plus relax).

    Remplir un carré en vert c'est tout à fait un problème algorithmique. On peut spécifier mathématiquement le problème. "Étant donné une forme géométrique (dans un espace), on veut obtenir (si on est dans un espace avec des pixels) la même forme (ou une forme avec les même frontières) dont tous les pixels à l'intérieurs sont verts)".

    On peut tester le résultat à l'aide de cette définition, ou prouver mathématiquement que l'algorithme de peinture à l'intérieur colorie bien tous les pixels concernés et uniquement ceux là.

    C'est juste toi qui le dis, mais j'ai toujours entendu et compris "une heuristique" comme un simple raccourci de "un algorithme heuristique", et je pense que c'est ce que la plupart des gens sous-entendent.

    Plutôt pas. Par exemple dans le cas de "algorithme heuristique" Wikipédia cite A*. A* est un algorithme exact qui utilise une heuristique (paramétré par) de recherche pour accélérer la recherche de chemin (il est exact si l'heuristique à les bonne propriété). Mais ce n'est pas lui même une heuristique, c'est un algorithme au sens ou il trouve le plus court chemin, c'est prouvé. L'heuristique aide à trouver un nœud qui est plus probablement le meilleurs, par la distance à vol d'oiseau par exemple plutôt que de partir de l'autre côté.

    Lis l'article :en:Heuristic par exemple, tu verras que c'est plus large que le strict cadre algorithmique et que ça n'implique pas que ce soit utilisé en qualificatif d'un algorithme. Pareil pour l'article :en:metaheuristic sur enwiki « Compared to optimization algorithms and iterative methods, metaheuristics do not guarantee that a globally optimal solution can be found on some class of problems. » Il est bien fait la distinction entre "algorithme d'optimisation" et "métaheuristiques" (bien qu'il existe des preuves de convergences pour certaines métaheuristiques qui en font des algos à proprement parler.)

    Sur la distinction "algorithme / programme", il y a généralement dans la définition d'algorithme un prérequis plus ou moins implicite : la suite finie doit utiliser un certain ensemble d'instruction, bien définie de façon à ce que ce soit exécutable par un ordinateur sans ambiguité. Or c'est quoi un truc qui définit des instructions bien définies et exécutables par un ordinateur ? Ben ... c'est un langage de programmation justement ;) Si on veut jouer on peut dire que les manières de décrire les algorithmes doivent permettre de traduire les instructions dans un de ces "langage algorithmique", ou autrement dit, si on a un langage dans lequel écrire des algorithmes, on a un programme. En général on explicite pas le langage, il est juste tenu qu'il puisse faire un ensemble d'instructions calculables de base, comme une machine. Donc pour moi la distinction est juste quand on regarde les trucs à haut niveau. Si on veut vraiment en faire une, un algo est une classe d'équivalence de programme qui font la même chose au final. Mais écrire un algo suppose de choisir un langage.