Un algorithme est une modélisation logique. Elle peut s'appliquer à n'importe quel type d'analyse ou modèle, et pas qu'au numérique.
Ex : diagnostique par éléments discriminants.
-----
Un algorithme est une modélisation logique. Elle peut s'appliquer à n'importe quel type d'analyse ou modèle, et pas qu'au numérique.
Ex : diagnostique par éléments discriminants.
"Deviens ce que tu es", Friedrich W. Nietzsche
Et ? Un logiciel ne le peut-il pas ?
Le logiciel peut le faire mais n'est pas nécessaire ^^
"Deviens ce que tu es", Friedrich W. Nietzsche
OK donc a priori c'est la même chose.
Bah non. L'un s'appuie sur des algorithmes, l'autre est un outil logique mathématique. C'est comme confondre la mer et l'eau.
"Deviens ce que tu es", Friedrich W. Nietzsche
Donc si je te comprends bien, l'algorithme d'Euclide (par exemple) est un algorithme ; mais une fois implémenté «dans» un logiciel ce n'en est plus un par le simple fait d'être implémenté ?
Ce qu'il y a dans un logiciel, c'est une implémentation de l'algorithme. Où est la difficulté à distinguer un algorithme abstrait (ce que représente l'expression "l'algorithme d'Euclide") d'une implémentation de cet algorithme ?
C'est comme distinguer l'opéra Siegfried avec une représentation de cet opéra...
[Au passage, l'algorithme d'Euclide peut s'appliquer à bien d'autres choses que des entiers. Par exemple à des polynômes... Ce qui différencie d'entrée des implémentations !!]
Dernière modification par Amanuensis ; 31/03/2012 à 18h49.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Je dis tout cela car la notion d'algorithme est complexe et vaste. Je pourrais continuer en disant que «l'algorithme d'Euclide pour les entiers» n'est qu'une implémentation de «l'algorithme général d'Euclide» ...Ce qu'il y a dans un logiciel, c'est une implémentation de l'algorithme. Où est la difficulté à distinguer un algorithme abstrait (ce que représente l'expression "l'algorithme d'Euclide") d'une implémentation de cet algorithme ?
C'est comme distinguer l'opéra Siegfried avec une représentation de cet opéra...
[Au passage, l'algorithme d'Euclide peut s'appliquer à bien d'autres choses que des entiers. Par exemple à des polynômes... Ce qui différencie d'entrée des implémentations !!]
Tout comme je pourrais me poser la question un peu plus profonde : «qu'est-ce qui différencie l'algorithme d'Euclide écrit en Français suivi pas à pas par un élève et l'algorithme d'Euclide écrit en langage machine (format ELF32 pour mon ubuntu 32bit) et exécuté par mon PC ?»
Tout logiciel est un algorithme (à la restriction de la terminaison près)
Ce n'est pas plutôt la correspondance de Curry-Howard auquel tu fais référence ?
Patrick
C'est un peu plus complexe que ça encore ... En première approche un algorithme n'a pas besoin d'être écrit dans un langage formel, sinon aucun enfant n'apprendrait à nouer ses lacets.
La même différence qu'entre la sonate n°14 de Beethoven jouée par Glenn Gould et la même sonate de Beethoven joué par quelqu'un d'autre.
Une différence évidente dans le cas de la citation sera visible en demandant l'exécution sur des nombre de 10, 20, 50 ou 10000 chiffres décimaux, selon.
---
Tout logiciel implémente un ou plusieurs algorithmes. Un logiciel est une interprétation de ces algorithmes, adaptée dans un langage donné pour un type de support d'exécution donné.
[Pour Euclide, il y a des langages permettant une écriture générique de l'algo, fonctionnant pour toute une collection de type de données. Je me rappelle m'être amusé à cela en ADA, cela fonctionnait aussi bien pour les entiers que pour les polynômes dans différents corps de base, et encore d'autres choses. Manifestement une implémentation DIFFERENTE d'une du même algorithme mais limitée aux entiers. L'algorithme d'Euclide est un bon exemple pour distinguer l'algorithme abstrait de ses implémentations !!]
Pour toute question, il y a une réponse simple, évidente, et fausse.
Pour toute question, il y a une réponse simple, évidente, et fausse.
OK, donc un algorithme écrit en Français sur une feuille de papier donné à un élève (qui sait lire, comprend le Français, etc ...) mais qui ne l'applique mais l'apprend (pour une éventuelle utilisation ultérieure) possède-t-il une version abstraite de l'algorithme d'Euclide ou une implémentation de cet algorithme ? Exécute-t-il l'algorithme ou autre chose quand on lui demande de l'appliquer aux nombres 10 et 12 ?La même différence qu'entre la sonate n°14 de Beethoven jouée par Glenn Gould et la même sonate de Beethoven joué par quelqu'un d'autre.
Une différence évidente dans le cas de la citation sera visible en demandant l'exécution sur des nombre de 10, 20, 50 ou 10000 chiffres décimaux, selon.
---
Tout logiciel implémente un ou plusieurs algorithmes. Un logiciel est une interprétation de ces algorithmes, adaptée dans un langage donné pour un type de support d'exécution donné.
[Pour Euclide, il y a des langages permettant une écriture générique de l'algo, fonctionnant pour toute une collection de type de données. Je me rappelle m'être amusé à cela en ADA, cela fonctionnait aussi bien pour les entiers que pour les polynômes dans différents corps de base, et encore d'autres choses. Manifestement une implémentation DIFFERENTE d'une du même algorithme mais limitée aux entiers. L'algorithme d'Euclide est un bon exemple pour distinguer l'algorithme abstrait de ses implémentations !!]
Donc, l'algorithme d'Euclide écrit en Français est une interprétation adaptée à son exécution par humain ?
Une implémentation s'il ne le comprend que comme une suite d'instructions à appliquer sans idée de la sémantique. Les humains ont la capacité de généraliser, et donc d'imaginer l'algo abstrait à partir d'une implémentation.OK, donc un algorithme écrit en Français sur une feuille de papier donné à un élève (qui sait lire, comprend le Français, etc ...) mais qui ne l'applique mais l'apprend (pour une éventuelle utilisation ultérieure) possède-t-il une version abstraite de l'algorithme d'Euclide ou une implémentation de cet algorithme ?
Il déroule l'implémentation de l'algorithme, là encore comparable à l'exécution d'une partition de musique. L'oeuvre elle-même reste un concept distinct de ses exécutions.Exécute-t-il l'algorithme ou autre chose quand on lui demande de l'appliquer aux nombres 10 et 12 ?
Selon la manière dont il est décrit, éventuellement. Si c'est une suite d'instructions élémentaires dont l'exécution ne demande aucune compréhension autre que celles des instructions élémentaires, oui.Donc, l'algorithme d'Euclide écrit en Français est une interprétation adaptée à son exécution par humain ?
Mais là encore, les humains sont capables de discuter entre eux d'algorithmes abstraits. Je pourrais faire de l'algorithme d'Euclide une description mathématique très générique (en commençant par introduire axiomatiquement le concept d'anneau factoriel) que certains humains pourront ensuite traduire, implémenter, selon les besoins, le langage et les capacités du "matériel" concret. Mais cela demande une compréhension bien au-delà de celle d'instructions élémentaires.
Dernière modification par Amanuensis ; 31/03/2012 à 21h16.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Vous m'impressionez, patrick!Ce n'est pas plutôt la correspondance de Curry-Howard auquel tu fais référence ?
Je ne pensais pas que quelqu'un sur ce forum puisse connaitre de tels travaux...
Il me semble que la remarque pertinente que tu as faite :
est peut être le fond de la question.
Avons nous nécessairement besoin d'un langage pour :
construire (apprentissage inclus) une algorithmique ?
exécuter une algorithmique ?
Sans langage, même pas le plus primaire serions capable d'apprendre à nouer nos lacets ?
Algorithmique et langage se définissent l’un par rapport à l’autre tout comme signifiant/signifié ?
Patrick
Je comprends bien que pour certains les êtres humains sont imcomparablement plus puissants et supérieurs à n'importe quelle machine ... je ne discute pas de ça ici.
Les humains n'ont pas le monopole de l'induction, des «algorithmes» aussi ...
Sinon je ne comprends pas cette distinction.
OK ... l'oeuvre transcrite sur la partition n'est qu'une donnée et non un algo ...
ok ... donc pas mieux qu'un vulgaire PC voire z80 qui fait exactement la même chose.
Difficile à suivre ... en dehors du fait que les humains mais aussi des programmes informatiques sont capables de manipuler/parler d'algorithmes abstraits. Je ne comprends toujours pas cette notion d'algorithme abstrait ... (cf première réponse).Mais là encore, les humains sont capables de discuter entre eux d'algorithmes abstraits. Je pourrais faire de l'algorithme d'Euclide une description mathématique très générique (en commençant par introduire axiomatiquement le concept d'anneau factoriel) que certains humains pourront ensuite traduire, implémenter, selon les besoins, le langage et les capacités du "matériel" concret. Mais cela demande une compréhension bien au-delà de celle d'instructions élémentaires.
Un algorithme abstrait serait ce qui se passe dans notre cerveau quand ony pense ? Dès qu'il est transcrit pour être communiqué il en devient une implémentation ?
Un peu. C'est surtout une description d'algorithme indépendante des choix d'implémentation. Abstrait = enlevé de. L'abstraction consiste à enlever ce qui n'est pas essentiel.
Toute implémentation demande de faire des choix, à cause des contraintes nécessairement posées par le "matériel" qui va exécuter l'algorithme.
Non, c'est quand il est exécuté. Ce qui exécute un algorithme est une implémentation de cet algorithme.Dès qu'il est transcrit pour être communiqué il en devient une implémentation ?
---
Et tout cela est bien dans le sujet. Même si un cerveau et un ordinateur déroule le même algorithme abstrait, l'implémentation de cet algorithme sera différente, à cause des contraintes posées par le "matériel". Faire une "méta-machine" (que ce soit dans le sens d'un humain se prenant pour une machine de Turing, comme lorsqu'on fait des opérations arithmétiques, ou dans le sens d'une machine qui émulerait un SNC directement au niveau des neurones et leurs connexions) restera une implémentation différente, avec des propriétés en termes de limitations, performances de vitesse, performances de consommations, etc. différentes. Ainsi d'ailleurs, ce qui n'est pas le moindre, en termes de mode d'entrée des données et mode de sortie du résultat.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Un algorithme est concept abstrait, et bien entendu c'est aussi un signifiant pouvant être signifié.Envoyé par Photon57Je ne comprends toujours pas cette notion d'algorithme abstrait ... (cf première réponse).
http://interstices.info/jcms/c_5776/...uun-algorithmeEnvoyé par IntersticeUn algorithme, très simplement, c'est une méthode.
Une façon systématique de procéder pour faire quelque chose : trier des objets, situer des villes sur une carte, multiplier deux nombres, extraire une racine carrée, chercher un mot dans le dictionnaire…
Il se trouve que certaines actions mécaniques - peut-être toutes ! - se prêtent bien à la décortication.
On peut les décrire de manière générale, identifier des procédures, des suites d'actions ou de manipulations précises à accomplir séquentiellement.
C'est cela, un algorithme.
En tant que méthode, il répond donc à des questions du type : « comment faire ceci ? », « obtenir cela ? », « trouver telle information ? », « calculer tel nombre ? ».
C'est un concept pratique, qui traduit la notion intuitive de procédé systématique, applicable mécaniquement, sans réfléchir, en suivant simplement un mode d'emploi précis.
Parler d'algorithme concret, c'est parler d'une des mises en oeuvre concrète de l'algorithme abstrait.
Dans le même cas de figure, un mot est abstrait, mais on peut aussi le penser, voir le prononcer.
http://interstices.info/jcms/c_5776/...uun-algorithmeEnvoyé par IntersticesBien avant le premier ordinateur électronique, dans les années trente, les mathématiciens ont découvert un modèle général de machines procédant de manière logique (Logical Computing Machine) - les fameuses machines de Turing, capables d'effectuer mécaniquement tous les algorithmes possibles et imaginables, déjà découverts ou qui le seront jusqu'à la fin des temps.
La thèse, dite de Church-Turing, selon laquelle tous les algorithmes sont représentables et effectuables sur une Machine de Turing, est aujourd'hui universellement acceptée.
Il a même été démontré de manière formelle que les mécanismes de toutes les machines obéissant aux lois de la physique classique (newtonienne), aussi complexes soient-ils, ne pourront jamais réaliser des opérations qui ne soient pas assimilables (moyennant les correspondances adéquates) à un calcul sur une machine de Turing.
Un cerveau lui, manipule un ensemble d'algorithmes, qui interfèrent sans qu'on sache vraiment comment, ce qui le distingue de la machine de Turing, qui est elle "linéaire", déterministe.
En bon vivant, rien ne vaut un bonne logique ternaire.
OK ... donc un source en C est un algo abstrait, le fichier objet issu de la compilation le reste, finalement l'exécutable aussi puisqu'il est interprété par le loader de l'OS, y compris le code machine puisque qu'il est interprété par le microcode du processeur ... on peut aller loin ainsi ... ou pas ... car finalement écrire un algo «abstrait» en Français c'est déjà faire un choix d'implémentation ... Alors Charybde ou Scylla pour toi ?Un peu. C'est surtout une description d'algorithme indépendante des choix d'implémentation. Abstrait = enlevé de. L'abstraction consiste à enlever ce qui n'est pas essentiel.
Toute implémentation demande de faire des choix, à cause des contraintes nécessairement posées par le "matériel" qui va exécuter l'algorithme.
Non, c'est quand il est exécuté. Ce qui exécute un algorithme est une implémentation de cet algorithme.
---
Et tout cela est bien dans le sujet. Même si un cerveau et un ordinateur déroule le même algorithme abstrait, l'implémentation de cet algorithme sera différente, à cause des contraintes posées par le "matériel". Faire une "méta-machine" (que ce soit dans le sens d'un humain se prenant pour une machine de Turing, comme lorsqu'on fait des opérations arithmétiques, ou dans le sens d'une machine qui émulerait un SNC directement au niveau des neurones et leurs connexions) restera une implémentation différente, avec des propriétés en termes de limitations, performances de vitesse, performances de consommations, etc. différentes. Ainsi d'ailleurs, ce qui n'est pas le moindre, en termes de mode d'entrée des données et mode de sortie du résultat.
On peut facilement se promener d'une conception à l'autre car pour l'instant on ne sait pas grand chose, on peut faire les analogies qui nous plaisent ou qui nous semblent le mieux représenter notre vision du monde car de toute fan nous n'avons absolument pas définit (car en partie nous n'y arrivons pas, il faut bien l'avouer) un vocabulaire adéquat pour parler de ce sujet en général. On a également du mal à se sortir de cette méconception IA=robot+ordinateur+logiciel <==> nous=corps+cerveau+<Esprit/Âme/Conscience/...> (au choix suivant ses propres considérations).
Tant qu'on restera dans cette conception nos réflexions n'iront pas très loin, en tout cas pas plus loin que des brèves de comptoirs.
Hello,
Il existe le concept de machine de Turing non déterministe. Quant à «linéaire» je ne vois pas de quoi tu parles.
Dans mes fines allusion, Charybde = penser que le SNC des vertébrés est une machine de Turing, Scylla = penser que le cerveau humain ne peut pas être expliqué sans nouveau principe physique (ou non physique ).
Pas grand chose à voir avec les subtilités du mot algorithme.
Dernière modification par Amanuensis ; 31/03/2012 à 22h30.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Quelquepart si. Personnellement, je pencherais pour l'hypothèse que l'on pourrait caricaturer «nous ne sommes qu'un machine, biologique certe, mais qui essentiellement est analysable/compréhensible/... avec les mêmes outils que nous utilisons pour analyser/comprendre/... d'autres machines non-biologiques» c'est relativement mal exprimé mais j'espère avoir fait passer l'idée.
Pour les personnes qui ne suivent pas cette voie, un moyen de prouver leur conviction serait de montrer qu'aucun des ces outils n'est apte à décrire «ce qui se passe quand on pense/fait/agit».
La proposition que le cerveau ne peut pas fonctionner (uniquement pour la version faible) à base de «symboles manipulés par des algorithmes» est un de ces arguments. Et c'est généralement ici que la démonstration capote car non seulement la notion d'algorithme est suffisamment vaste pour décrire de nombreux phénomène mais de plus il n'y a aucun moyen de montrer la limite où «il n'y a plus d'algorithmes mais autre chose». Évidemment, d'autres arguments entrent ensuite en jeu ... hypertâche, le cerveau quantique, ...
Pas totalement correct, car certains réservent le mot "algorithme" à ce qui est implémentable par une machine de Turing (plus précisément, par un dispositif modélisable comme une machine de Turing).
Mais cela n'avait pas l'air d'être le point discuté dans les messages précédant.
Pour toute question, il y a une réponse simple, évidente, et fausse.
Par linéaire, j'entendais une machine qui suit le cheminement d'une machine de Turing Classique, déterministe, dont on peut voir l'implémentation physique ici : http://www.youtube.com/watch?v=2PjU6DJyBpwEnvoyé par Photon57Il existe le concept de machine de Turing non déterministe. Quant à «linéaire» je ne vois pas de quoi tu parles.
Il n'y a pas de fonctionnement en parallele, c'est très lent, et certains "calculs" sont impossibles à effectuer en un temps raisonnable.
Le concept de machine de Turing non déterministe (probabiliste par exemple) est à ce titre plus proche du cerveau humain...maisLe problème vient de ce que l'algorithme du cerveau s'implémente sur des composants nanométriques.Envoyé par Xoxopixosans qu'on sache vraiment comment
Chaque atome intervient dans le bon déroulement de l'algorithme.
On peut dire qu'il s'agit une "machine" analogique mais qui va plus loin encore.
http://fr.wikipedia.org/wiki/Informatique_quantiqueEnvoyé par WikipediaPar contre, selon la thèse de Church, tout calcul devrait être faisable efficacement sur une machine de Turing, alors qu'il ne semble pas possible de simuler un calculateur quantique avec une machine de Turing.
Dans un premier temps, un autre type d'ordinateur semblait avoir contredit cette thèse, le calculateur analogique.
Cette contradiction apparente a néanmoins été rapidement réfutée parce que la question du bruit n'avait pas été abordée, et la surpuissance supposée du calculateur analogique est maintenant nullifiée.
La prise en compte du bruit est donc un des premiers défis du calculateur quantique.
En particulier, la théorie de l'information quantique traite des codes correcteurs quantiques et du calcul quantique avec tolérance d'erreurs.
Résultats non négatifs
Deux résultats des années 1990 indiquent que les ordinateurs quantiques pourraient être plus puissants que les machines de Turing, et même des machines de Turing probabilistes.
Dernière modification par Xoxopixo ; 31/03/2012 à 22h48.
En bon vivant, rien ne vaut un bonne logique ternaire.