Aller au contenu

« Informatique théorique » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Sylvainremy (discuter | contributions)
mAucun résumé des modifications
CSP49 (discuter | contributions)
Fonctionnalité de suggestions de liens : 1 lien ajouté.
Balises : Éditeur visuel Modification par mobile Modification par le web mobile Tâche pour novices Suggéré : ajouter des liens
 
(84 versions intermédiaires par 35 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Fichier:Turing Machine.png|vignette|Une représentation artistique d'une [[machine de Turing]]. Les machines de Turing sont un modèle de calcul.]]
L''''informatique théorique''' est l'étude des fondements [[logique]]s et [[mathématiques]] de l'[[informatique]]. C'est une branche de la [[Informatique#Science informatique|science informatique]]. Plus généralement, le terme est utilisé pour désigner des domaines ou sous-domaines de recherche centrés sur des vérités universelles ([[axiome]]s) en rapport avec l'informatique. L'informatique théorique se caractérise par une approche par nature plus mathématique et moins [[empirique]] de l'informatique et ses objectifs ne sont pas toujours directement reliés à des enjeux technologiques. De nombreuses disciplines peuvent être regroupées sous cette dénomination diffuse dont la [[théorie de la calculabilité]], l'[[algorithmique]] et la [[théorie de la complexité (informatique théorique)|théorie de la complexité]], la [[théorie de l'information]], l'étude de la [[sémantique des langages de programmation]], la [[logique mathématique]], la [[théorie des automates]] et des [[langages formels]].
L''''informatique théorique''' est l'étude des fondements [[logique]]s et [[mathématiques]] de l'[[informatique]]. C'est une branche de la [[Informatique#Science informatique|science informatique]] et la [[science formelle]]. Plus généralement, le terme est utilisé pour désigner des domaines ou sous-domaines de recherche centrés sur des vérités universelles ([[axiome]]s) en rapport avec l'informatique. L'informatique théorique se caractérise par une approche par nature plus mathématique et moins [[empirique]] de l'informatique et ses objectifs ne sont pas toujours directement reliés à des enjeux [[Technologie|technologiques]].

De nombreuses disciplines peuvent être regroupées sous cette dénomination diffuse dont :

* la [[théorie de la calculabilité]],
* l'[[algorithmique]] et la [[théorie de la complexité (informatique théorique)|théorie de la complexité]],
* la [[théorie de l'information]],
* l'étude de la [[sémantique des langages de programmation]],
* la [[logique mathématique]],
* la [[théorie des automates]] et des [[langages formels]].

== Histoire ==
{{Section vide ou incomplète}}
Dans cette section, nous donnons une histoire de l'informatique théorique en nous appuyant sur différentes sources :
* l'hommage à [[Maurice Nivat]] dans le bulletin de la [[Société informatique de France|SIF]]<ref>{{article| auteur = Pierre-Louis Curien | titre = Maurice Nivat, une grande figure | périodique = 1024 -- Bulletin de la Société Informatique de France | numéro = 12 | date = Juin 2018 | pages = 87 -107 | lire en ligne = https://www.societe-informatique-de-france.fr/wp-content/uploads/2018/06/1024-no12-Nivat.pdf}}</ref>,
* l'histoire du [[Laboratoire lorrain de recherche en informatique et ses applications#Le Centre de recherche en informatique de Nancy (CRIN)|CRIN]]<ref>{{Article | auteur = Claude Pair | titre =
CRIN: The History of a Laboratory | périodique = IEEE Annals of the History of Computing | volume= 12|numéro = 3 |pages = 159-166 | année = 1990}}</ref>,
* le livre ''Models of Computation'' de John E. Savage<ref>{{Ouvrage|prénom1=John E.|nom1=Savage|titre=Models of Computation|sous-titre=Exploring the Power of Computing|éditeur=Addison-Wesley Longman Publishing Co., Inc.|année=1997|pages totales=672|isbn=978-0-201-89539-1|lire en ligne=https://dl.acm.org/citation.cfm?id=522806|consulté le=2019-02-08}}</ref>.

=== Années 1940 ===
[[Fichier:Alan Turing az 1930-as években.jpg|vignette|Alan Turing à l'âge de 16 ans.]]
Les [[Logique|logiciens]] [[Bertrand Russell|Bertrand Russel]], [[David Hilbert]] et [[George Boole]] furent des précurseurs de l'informatique théorique. Mais cette branche de l'informatique a surtout vu le jour à partir des travaux d'[[Alan Turing]] et [[Alonzo Church]] en 1936, qui ont introduit les [[Méthode formelle (informatique)|modèles formels]] de calculs (les [[Machine de Turing|machines de Turing]] et le [[Lambda-calcul|lambda calcul]]). Ils ont montré l'existence de machines universelles capables de simuler toutes les machines du même type, par exemple les [[Machine de Turing universelle|machines de Turing universelles]]. En 1938, [[Claude Shannon]] montre que l'[[Algèbre de Boole|algèbre booléenne]] explique le comportement des circuits avec des [[Relais électromécanique|relais électromécaniques]]. En 1945, [[John von Neumann]] introduit la notion d'[[architecture de von Neumann]] à la base des ordinateurs. En 1948, [[Claude Shannon]] publie ''[[A Mathematical Theory of Communication]]'', fondateur de la [[théorie de l'information]]. En 1949, il annonce les fondements de la théorie de la complexité des [[Circuit booléen|circuits booléens]].

=== Années 1950 ===
[[Fichier:Eniac.jpg|vignette|L'ENIAC (photo prise entre 1947 et 1955).]]
La [[Programmation informatique|programmation]] des [[Ordinateur|ordinateurs]] de l'époque était difficile. Par exemple, il était nécessaire de brancher ou débrancher une centaine de câbles sur l'ordinateur [[ENIAC]] afin de réaliser une simple opération.

Une contribution importante des années 1950 est la création de [[Langage de programmation|langages de programmation]] comme [[Fortran|FORTRAN]], [[COBOL]] et [[Lisp|LISP]], qui offrent des constructions de haut-niveau pour écrire :

* des [[Instruction conditionnelle (programmation)|instructions conditionnelles]],
* des [[Structure de contrôle|structures de contrôle]] telles que des boucles de test,
* des [[Routine (informatique)|procédures]].

La [[théorie des langages]] et des [[Automate fini|automates]] est un sujet important dans les années 1950, car il permet de comprendre l'expressivité des langages informatiques et leur mise en œuvre. Les [[Automate fini|machines à états finis]] et les [[Automate à pile|automates à pile]] sont formellement définis. Puis [[Michael Rabin|Michael Oser Rabin]] et [[Dana S. Scott|Dana Stewart Scott]] étudient mathématiquement le pouvoir expressif et les limites de ces modèles.

=== Années 1960 ===
En 1964, [[Noam Chomsky]] définit la [[hiérarchie de Chomsky]]. Plusieurs classes de langages ([[Langage rationnel|langages rationnels]], [[Langage algébrique|langages algébriques]], [[Langage contextuel|langages avec contextes]], langages [[récursivement énumérable]]s) correspondent à des types de machines théoriques différentes ([[Automate fini|automates finis]], [[Automate à pile|automates à pile]], machine de Turing à mémoire linéaire, machine de Turing). Différentes variantes de ces classes de langages et machines sont étudiés.

[[Juris Hartmanis|Hartmanis]], Lewis et Stearns et d'autres classifient les langages selon le temps et/ou la mémoire qu'il faut pour les calculer. Ce sont les balbutiements de la [[Théorie de la complexité (informatique théorique)|théorie de la complexité]].

=== Années 1970 ===
Durant les années 1970, la [[Théorie de la complexité (informatique théorique)|théorie de la complexité]] se développe. Les [[Classe de complexité|classes de complexité]] [[P (complexité)|P]] et [[NP (complexité)|NP]] sont définis ; la [[NP-complétude]] est définie indépendamment par [[Stephen Cook]] et [[Leonid Levin]]. [[Richard Karp]] a démontré l'importance des langages NP-complets. La question [[Problème P = NP|P = NP]] est posée et les chercheurs conjecturaient que l'on pourrait la résoudre via la correspondance entre machines de Turing et circuits.

Se développent aussi les [[Méthode formelle (informatique)|méthodes formelles]] pour vérifier les programmes. On définit des sémantiques formelles aux langages de programmation.

Se développent aussi des connexions entre le modèle de [[base de données relationnelle]]s et le [[calcul des relations]], afin de réaliser des requêtes dans des [[Base de données|bases de données]] de manière efficace.

Ces années ont été florissantes également en [[algorithmique]]. [[Donald Knuth]] a beaucoup influencé le développement de l'algorithmique ainsi que [[Alfred Aho|Aho]], [[John Hopcroft|Hopcroft]] et [[Jeffrey Ullman|Ullman]].

=== Années 1980 et 1990 ===
Les années 1980 et 1990 sont propices au développement du [[Parallélisme (informatique)|calcul parallèle]] et des [[Systèmes Distribués|systèmes distribués]].


== Portée du domaine ==
== Portée du domaine ==


Il n'est pas facile de cerner précisément ce que l'on entend par informatique théorique. Le terme renvoie plutôt à une façon d'aborder les questions informatiques sous un angle plus mathématique et formel, en faisant souvent abstraction des aspects plus pratiques de l'informatique. En ce sens, l'informatique théorique est parfois considérée comme une branche des [[mathématiques discrètes]]. Ses objectifs se caractérisent généralement par une volonté d'identifier ''en principe'' les possibilités et les limites des [[ordinateurs]].
Il n'est pas facile de cerner précisément ce que l'on entend par « informatique théorique »<ref group="note">Par exemple, la présentation du journal {{Lien web | titre = Théoretical computer science | url = https://www.journals.elsevier.com/theoretical-computer-science/}} ne décrit pas la discipline mais en donne simplement des caractéristiques et des objectifs.</ref>. Le terme renvoie plutôt à une façon d'aborder les questions informatiques sous un angle plus mathématique et formel, en faisant souvent abstraction des aspects plus pratiques de l'informatique. En ce sens, l'informatique théorique est parfois considérée comme une branche des [[mathématiques discrètes]]<ref group="note">Comme cela se voit dans l'intitulé du groupe de recherche (GdR) du [[CNRS]], {{Lien web | titre = Informatique mathématique | url = https://www.gdr-im.fr/}}</ref>. Ses objectifs se caractérisent généralement par une volonté d'identifier ''en principe'' les possibilités et les limites des [[ordinateurs]].


Le [[SIGACT|Special Interest Group on Algorithms and Computation Theory (SIGACT)]], regroupement affilié à l'[[Association for Computing Machinery|Association for Computing Machinery (ACM)]] et voué au soutien à la recherche en informatique théorique en donne une définition assez large<ref>[http://sigact.acm.org/ ACM SIGACT<!-- Titre généré automatiquement -->]</ref> qui comprend des domaines aussi divers que l'[[algorithmique]] et les [[structures de données]], la [[théorie de la complexité (informatique théorique)|théorie de la complexité]], le [[parallélisme (informatique)|parallélisme]], le [[VLSI]], l'[[apprentissage automatique]], la [[bio-informatique]], la [[géométrie algorithmique]], la [[théorie de l'information]], la [[cryptographie]], l'[[informatique quantique]], la [[théorie algorithmique des nombres]] et de l'[[algèbre]], la [[sémantique des langages de programmation]], les [[méthode formelle (informatique)|méthodes formelles]], la [[théorie des automates]] et l'étude de l'aléatoire en informatique.
Le [[SIGACT|Special Interest Group on Algorithms and Computation Theory (SIGACT)]], regroupement affilié à l'[[Association for Computing Machinery|Association for Computing Machinery (ACM)]] et voué au soutien à la recherche en informatique théorique en donne une définition assez large<ref>[http://sigact.acm.org/ ACM SIGACT].</ref> qui comprend des domaines aussi divers que [[Algorithmique|l'algorithmique]] et les [[structures de données]], la [[théorie de la complexité (informatique théorique)|théorie de la complexité]], le [[parallélisme (informatique)|parallélisme]], le [[VLSI]], l'[[apprentissage automatique]], la [[bio-informatique]], la [[géométrie algorithmique]], la [[théorie de l'information]], la [[cryptographie]], l'[[informatique quantique]], la [[théorie algorithmique des nombres]] et de l'[[algèbre]], la [[sémantique des langages de programmation]], les [[méthode formelle (informatique)|méthodes formelles]], la [[théorie des automates]] et l'étude de l'aléatoire en informatique.


Les chercheurs en informatique théorique français sont regroupés au sein de l'[[Association française d'informatique fondamentale]], membre de l'[[Association des sciences et technologies de l'information|ASTI]] au niveau français et membre de l'[[EATCS]] au niveau européen.
Les chercheurs en informatique théorique français sont regroupés au sein du ''GdR Informatique Mathématique''<ref>[https://www.gdr-im.fr/ GdR Informatique Mathématique]</ref> et adhèrent à l'[[Association française d'informatique fondamentale]], membre de la [[Société informatique de France]] au niveau français et membre de l'[[EATCS]] au niveau européen.


Cette définition est à la fois trop restreinte en ce que la liste n'est pas exhaustive et trop large puisque plusieurs des domaines mentionnés ne sont pas uniquement axés sur des enjeux purement théoriques.
La définition donnée par ACM SIGACT est à la fois trop restreinte en ce que la liste n'est pas exhaustive<ref group="note">La théorie des types, les assistants de preuve et la logique formelle n'y figurent pas</ref> et trop large puisque plusieurs des domaines mentionnés ne sont pas uniquement axés sur des enjeux purement théoriques.


== Algorithmique ==
== Algorithmique ==
{{détail|Algorithmique}}
{{article détaillé|Algorithmique}}
Cette discipline tente de découvrir, d'améliorer et d'étudier de nouveaux algorithmes permettant de résoudre des problèmes avec une plus grande efficacité.
Cette discipline tente de découvrir, d'améliorer et d'étudier de nouveaux algorithmes permettant de résoudre des problèmes avec une plus grande efficacité.


== Méthodes formelles ==
== Méthodes formelles ==
{{détail|Méthode formelle (informatique)}}
{{article détaillé|Méthode formelle (informatique)}}
Certains programmes sensibles nécessitent une parfaite fiabilité et de ce fait des outils mathématiques à mi-chemin entre l'algorithmique, la modélisation et l'algèbre sont développés afin de permettre de vérifier formellement les programmes et algorithmes.
Certains programmes sensibles nécessitent une parfaite fiabilité et de ce fait des outils mathématiques à mi-chemin entre l'algorithmique, la modélisation et l'algèbre sont développés afin de permettre de vérifier formellement les programmes et algorithmes.


== Théorie de l'information ==
== Théorie de l'information ==
{{détail|Théorie de l'information}}
{{article détaillé|Théorie de l'information}}
La théorie de l'information résulte initialement des travaux de [[Ronald Fisher|Ronald A.Fisher]]. Ce statisticien théorise l'[[information]] dans sa théorie des probabilités et des échantillons. Techniquement, « l'information » est égale à la valeur moyenne du carré de la dérivée du logarithme de la loi de probabilité étudiée. À partir de l'inégalité de [[Gabriel Cramer|Cramer]], la valeur d'une telle « information » est proportionnelle à la faible variabilité des conclusions résultantes. En d'autres termes, Fisher met l'information en relation avec le degré de certitude.
La théorie de l'information résulte initialement des travaux de [[Ronald Aylmer Fisher|Ronald A. Fisher]]. Ce statisticien théorise l'[[information]] dans sa théorie des probabilités et des échantillons. Techniquement, « l'information » est égale à la valeur moyenne du carré de la dérivée du logarithme de la loi de probabilité étudiée. À partir de l'inégalité de [[Gabriel Cramer|Cramer]], la valeur d'une telle « information » est proportionnelle à la faible variabilité des conclusions résultantes. En d'autres termes, Fisher met l'information en relation avec le degré de certitude. D'autres modèles mathématiques ont complété et étendu de façon formelle la définition de l'information.
D'autres modèles mathématiques ont complété et étendu de façon formelle la définition de l'information.


[[Claude Shannon]] et [[Warren Weaver]] renforcent le paradigme. Ingénieurs en télécommunication, leurs préoccupations techniques les ont conduit à vouloir mesurer l'information pour en déduire les fondamentaux de la Communication (et non une théorie de l'information). Dans « Théorie Mathématique de la Communication » en [[1948]], ils modélisent l'information pour étudier les lois correspondantes : bruit, entropie et chaos, par analogie générale aux lois d'énergétique et de thermodynamique.
[[Claude Shannon]] et [[Warren Weaver]] renforcent le paradigme. Ingénieurs en télécommunication, leurs préoccupations techniques les ont conduits à vouloir mesurer l'information pour en déduire les fondamentaux de la Communication (et non une théorie de l'information). Dans ''Théorie Mathématique de la Communication'' en [[1948]], ils modélisent l'information pour étudier les lois correspondantes : bruit, entropie et chaos, par analogie générale aux lois d'énergétique et de thermodynamique.


Leurs travaux complétant ceux d'Alan Turing, de Norbert Wiener et de Von Neuman (pour ne citer que les principaux) constituent le socle initial des « Sciences de l'information ». La théorie de l'information s'appuie principalement sur deux notions caractéristiques que sont la variation d'incertitude et l'entropie (« désordre » au sens d'absence d'ordre et donc d'information dans l'ensemble considéré, d'où indétermination). Déclinant ces principes et ceux d'autres sciences dures, les technologies s'occupent de la façon d'implémenter, agencer et réaliser des solutions pour répondre aux besoins des sociétés humaines.
Leurs travaux complétant ceux d'[[Alan Turing]], de [[Norbert Wiener]] et de [[John von Neumann|Von Neuman]] (pour ne citer que les principaux) constituent le socle initial des « Sciences de l'information ». La théorie de l'information s'appuie principalement sur deux notions caractéristiques que sont la variation d'incertitude et l'entropie (« désordre » au sens d'absence d'ordre et donc d'information dans l'ensemble considéré, d'où l'indétermination). Déclinant ces principes et ceux d'autres sciences dures, les technologies s'occupent de la façon d'implémenter, d'agencer et de réaliser des solutions pour répondre aux besoins des sociétés humaines.


Certains chercheurs tentent de tirer des parallèles entre les concepts d'[[entropie (thermodynamique)|entropie]] en [[physique]] et d'[[entropie de Shannon|entropie]] en [[informatique]] afin d'obtenir une formulation [[informatique]] de la [[cosmologie]] et de la réalité [[physique]] de notre monde qui, selon certains, pourraient trouver des clés dans des outils mathématiques que sont les [[automate cellulaire|automates cellulaires]].
Certains chercheurs tentent de tirer des parallèles entre les concepts d'[[entropie (thermodynamique)|entropie]] en [[physique]] et d'[[entropie de Shannon|entropie]] en [[informatique]] afin d'obtenir une formulation [[informatique]] de la [[cosmologie]] et de la réalité [[physique]] de notre monde qui, selon certains, pourraient trouver des clés dans des outils mathématiques que sont les [[automate cellulaire|automates cellulaires]].


=== Informatique et information, un problème de terminologie ===
=== Informatique et information, un problème de terminologie ===
Certains ne voient dans l'informatique qu'une déclinaison technologique de l'automatisation des traitements (incluant la transmission et le transport) d'information et considèrent l'usage des termes « sciences de l'informatique » comme incorrects, ces mêmes préfèrent donc l'appellation « technologies de l'information et de la communication » parce qu'ils disent qu'elle recouvre mieux les différents composants (systèmes de traitements, réseaux, etc.) de l'informatique au sens large. Cette vision très restrictive du terme « informatique » n'est pas partagée par tout le monde et d'ailleurs {{Référence nécessaire|beaucoup d'anglo-saxons envient la richesse du mot « informatique » et commencent à l'emprunter}}.
Certains ne voient dans l'informatique qu'une déclinaison technologique de l'automatisation des traitements (incluant la transmission et le transport) d'information et considèrent l'usage des termes « sciences de l'informatique » comme incorrects, ces mêmes préfèrent donc l'appellation « technologies de l'information et de la communication » parce qu'ils disent qu'elle recouvre mieux les différents composants (systèmes de traitements, réseaux, etc.) de l'informatique au sens large. Cette vision très restrictive du terme « informatique » n'est pas partagée par tout le monde et d'ailleurs beaucoup d'anglo-saxons envient la richesse du mot « informatique » et commencent à l'emprunter<ref>{{lien web | titre= ACM Europe: Informatics education report | url = http://europe.acm.org/iereport/informatics-3.html}}</ref>{{,}}<ref group="note">L'association qui regroupe les départements de recherche et d'enseignement des universités en Europe s'appelle {{Lien web | titre = Informatics Europe | url = http://www.informatics-europe.org/}}</ref>.


== Théorie des graphes ==
== Théorie des graphes ==
{{détail|Théorie des graphes}}
{{article détaillé|Théorie des graphes}}
La théorie des graphes permet de modéliser de nombreux problèmes discrets : calculs de trajets, allocations de ressource, [[problème SAT|problèmes SAT]]... On peut citer le [[théorème des quatre couleurs]] comme résultat classique de cette branche de l'informatique.
La théorie des graphes permet de modéliser de nombreux problèmes discrets : calculs de trajets, allocations de ressource, [[problème SAT|problèmes SAT]]... On peut citer le [[théorème des quatre couleurs]] comme résultat classique de cette branche de l'informatique.


== Théorie de la complexité ==
== Théorie de la complexité ==
{{détail|Théorie de la complexité (informatique théorique)}}
{{article détaillé|Théorie de la complexité (informatique théorique)}}
La théorie de la complexité permet de classifier les algorithmes selon leur temps d'exécution asymptotique. C'est-à-dire selon leur comportement lorsqu'ils sont utilisés sur de très grandes données. C'est dans cette branche de l'informatique que se situe le célèbre problème [[Théorie de la complexité des algorithmes#Le probl.C3.A8me ouvert P.3DNP|P=NP]] par exemple.
La théorie de la complexité permet de classifier les algorithmes selon leur temps d'exécution asymptotique. C'est-à-dire selon leur comportement lorsqu'ils sont utilisés sur de très grandes données. C'est dans cette branche de l'informatique que se situe le célèbre problème [[Théorie de la complexité des algorithmes#Le problème ouvert P.3DNP|P=NP]] par exemple.


== Théorie de la calculabilité ==
== Théorie de la calculabilité ==
{{détail|Théorie de la calculabilité}}
{{article détaillé|Théorie de la calculabilité}}
La théorie de la calculabilité a pour objet la caractérisation des fonctions qu'un algorithme peut calculer. En effet, il est possible de montrer qu'il existe des fonctions qui ne sont pas calculables par un ordinateur, et il est dès lors intéressant de savoir lesquelles le sont. Le problème du [[castor affairé]] ou la [[fonction d'Ackermann]] sont des exemples classiques d'objets étudiés dans ce domaine.
La théorie de la calculabilité a pour objet la caractérisation des fonctions qu'un algorithme peut calculer. En effet, il est possible de montrer qu'il existe des fonctions qui ne sont pas calculables par un ordinateur, et il est dès lors intéressant de savoir lesquelles le sont. Le problème du [[castor affairé]] ou la [[fonction d'Ackermann]] sont des exemples classiques d'objets étudiés dans ce domaine.


== Théorie des langages ==
== Théorie des langages ==
{{détail|Théorie des langages}}
{{article détaillé|Théorie des langages}}
La théorie des langages, souvent liée à la théorie des automates, s'intéresse à la reconnaissance d'ensemble de mots sur un vocabulaire donné. Elle est utilisée dans les algorithmes de traitement de la langue naturelle par exemple : [[traduction automatique]], [[indexation automatique de documents]], etc. ainsi que dans ceux des langues artificielles comme les langages de programmation : compilation, interprétation.
La théorie des langages, souvent liée à la théorie des automates, s'intéresse à la reconnaissance d'ensemble de mots sur un vocabulaire donné. Elle est utilisée dans les algorithmes de traitement de la langue naturelle par exemple : [[traduction automatique]], [[indexation automatique de documents]], etc. ainsi que dans ceux des langues artificielles comme les langages de programmation : compilation, interprétation.

== Logique pour l'informatique ==
La [[logique mathématique|logique formelle]] est un outil fondamental de l'informatique, on y trouve notamment la [[théorie des types]], le [[lambda calcul]] et la [[Réécriture (informatique)|réécriture]] comme outils de base de la [[programmation fonctionnelle]] et des [[Assistant de preuve|assistants de preuve]].

== Périodiques et journaux d'information (sélection) ==
* ''[[Discrete Mathematics and Theoretical Computer Science]]''
* ''[[Information and Computation]]''
* ''[[Theory of Computing]]'' ([[accès ouvert]])
* ''[[Journal of the ACM]]''
* ''[[SIAM Journal on Computing]]'' (SICOMP)
* ''[[Special Interest Group on Algorithms and Computation Theory|SIGACT News]]''
* ''[[Theoretical Computer Science]]''
* ''[[Theory of Computing Systems]]''
* ''[[International Journal of Foundations of Computer Science]]''
* ''{{Lien|Foundations and Trends in Theoretical Computer Science}}''
* ''[[Journal of Automata, Languages and Combinatorics]]''
* ''[[Acta Informatica]]''
* ''[[Fundamenta Informaticae]]''
* ''[[ACM Transactions on Algorithms]]''
* ''[[Information Processing Letters]]''
* [https://www.degruyter.com/view/j/comp Open Computer Science] (journal en [[accès ouvert]])


== Notes et références ==
== Notes et références ==
=== Notes ===
{{Notes}}
=== Références ===
{{Références}}
{{Références}}


Ligne 57 : Ligne 131 :
| wikiversity titre = Département:Informatique théorique
| wikiversity titre = Département:Informatique théorique
}}
}}
* {{Ouvrage
|auteur1= [[Richard J. Lipton|Lipton, Richard J.]] |auteur2 = Regan, Kenneth W.
|titre= People, problems, and proofs.
|sous-titre= Essays from Gödel’s lost letter: 2010
|éditeur= Springer
|lieu= Berlin
|année= 2013
|pages totales= {{XVIII}}-333
|passage=
|isbn= 978-3-642-41421-3
|lire en ligne=
|zbl =  1305.68025
}}.


* [[Liste de publications importantes en informatique théorique]]
{{Palette|Informatique théorique}}
{{Palette|Informatique théorique}}
{{Portail|informatique théorique|logique|mathématiques|informatique}}

{{Portail|informatique|logique|Informatique théorique}}


[[Catégorie:Informatique théorique|*]]
[[Catégorie:Informatique théorique|*]]

Dernière version du 7 novembre 2023 à 23:15

Une représentation artistique d'une machine de Turing. Les machines de Turing sont un modèle de calcul.

L'informatique théorique est l'étude des fondements logiques et mathématiques de l'informatique. C'est une branche de la science informatique et la science formelle. Plus généralement, le terme est utilisé pour désigner des domaines ou sous-domaines de recherche centrés sur des vérités universelles (axiomes) en rapport avec l'informatique. L'informatique théorique se caractérise par une approche par nature plus mathématique et moins empirique de l'informatique et ses objectifs ne sont pas toujours directement reliés à des enjeux technologiques.

De nombreuses disciplines peuvent être regroupées sous cette dénomination diffuse dont :

Dans cette section, nous donnons une histoire de l'informatique théorique en nous appuyant sur différentes sources :

Années 1940

[modifier | modifier le code]
Alan Turing à l'âge de 16 ans.

Les logiciens Bertrand Russel, David Hilbert et George Boole furent des précurseurs de l'informatique théorique. Mais cette branche de l'informatique a surtout vu le jour à partir des travaux d'Alan Turing et Alonzo Church en 1936, qui ont introduit les modèles formels de calculs (les machines de Turing et le lambda calcul). Ils ont montré l'existence de machines universelles capables de simuler toutes les machines du même type, par exemple les machines de Turing universelles. En 1938, Claude Shannon montre que l'algèbre booléenne explique le comportement des circuits avec des relais électromécaniques. En 1945, John von Neumann introduit la notion d'architecture de von Neumann à la base des ordinateurs. En 1948, Claude Shannon publie A Mathematical Theory of Communication, fondateur de la théorie de l'information. En 1949, il annonce les fondements de la théorie de la complexité des circuits booléens.

Années 1950

[modifier | modifier le code]
L'ENIAC (photo prise entre 1947 et 1955).

La programmation des ordinateurs de l'époque était difficile. Par exemple, il était nécessaire de brancher ou débrancher une centaine de câbles sur l'ordinateur ENIAC afin de réaliser une simple opération.

Une contribution importante des années 1950 est la création de langages de programmation comme FORTRAN, COBOL et LISP, qui offrent des constructions de haut-niveau pour écrire :

La théorie des langages et des automates est un sujet important dans les années 1950, car il permet de comprendre l'expressivité des langages informatiques et leur mise en œuvre. Les machines à états finis et les automates à pile sont formellement définis. Puis Michael Oser Rabin et Dana Stewart Scott étudient mathématiquement le pouvoir expressif et les limites de ces modèles.

Années 1960

[modifier | modifier le code]

En 1964, Noam Chomsky définit la hiérarchie de Chomsky. Plusieurs classes de langages (langages rationnels, langages algébriques, langages avec contextes, langages récursivement énumérables) correspondent à des types de machines théoriques différentes (automates finis, automates à pile, machine de Turing à mémoire linéaire, machine de Turing). Différentes variantes de ces classes de langages et machines sont étudiés.

Hartmanis, Lewis et Stearns et d'autres classifient les langages selon le temps et/ou la mémoire qu'il faut pour les calculer. Ce sont les balbutiements de la théorie de la complexité.

Années 1970

[modifier | modifier le code]

Durant les années 1970, la théorie de la complexité se développe. Les classes de complexité P et NP sont définis ; la NP-complétude est définie indépendamment par Stephen Cook et Leonid Levin. Richard Karp a démontré l'importance des langages NP-complets. La question P = NP est posée et les chercheurs conjecturaient que l'on pourrait la résoudre via la correspondance entre machines de Turing et circuits.

Se développent aussi les méthodes formelles pour vérifier les programmes. On définit des sémantiques formelles aux langages de programmation.

Se développent aussi des connexions entre le modèle de base de données relationnelles et le calcul des relations, afin de réaliser des requêtes dans des bases de données de manière efficace.

Ces années ont été florissantes également en algorithmique. Donald Knuth a beaucoup influencé le développement de l'algorithmique ainsi que Aho, Hopcroft et Ullman.

Années 1980 et 1990

[modifier | modifier le code]

Les années 1980 et 1990 sont propices au développement du calcul parallèle et des systèmes distribués.

Portée du domaine

[modifier | modifier le code]

Il n'est pas facile de cerner précisément ce que l'on entend par « informatique théorique »[note 1]. Le terme renvoie plutôt à une façon d'aborder les questions informatiques sous un angle plus mathématique et formel, en faisant souvent abstraction des aspects plus pratiques de l'informatique. En ce sens, l'informatique théorique est parfois considérée comme une branche des mathématiques discrètes[note 2]. Ses objectifs se caractérisent généralement par une volonté d'identifier en principe les possibilités et les limites des ordinateurs.

Le Special Interest Group on Algorithms and Computation Theory (SIGACT), regroupement affilié à l'Association for Computing Machinery (ACM) et voué au soutien à la recherche en informatique théorique en donne une définition assez large[4] qui comprend des domaines aussi divers que l'algorithmique et les structures de données, la théorie de la complexité, le parallélisme, le VLSI, l'apprentissage automatique, la bio-informatique, la géométrie algorithmique, la théorie de l'information, la cryptographie, l'informatique quantique, la théorie algorithmique des nombres et de l'algèbre, la sémantique des langages de programmation, les méthodes formelles, la théorie des automates et l'étude de l'aléatoire en informatique.

Les chercheurs en informatique théorique français sont regroupés au sein du GdR Informatique Mathématique[5] et adhèrent à l'Association française d'informatique fondamentale, membre de la Société informatique de France au niveau français et membre de l'EATCS au niveau européen.

La définition donnée par ACM SIGACT est à la fois trop restreinte en ce que la liste n'est pas exhaustive[note 3] et trop large puisque plusieurs des domaines mentionnés ne sont pas uniquement axés sur des enjeux purement théoriques.

Algorithmique

[modifier | modifier le code]

Cette discipline tente de découvrir, d'améliorer et d'étudier de nouveaux algorithmes permettant de résoudre des problèmes avec une plus grande efficacité.

Méthodes formelles

[modifier | modifier le code]

Certains programmes sensibles nécessitent une parfaite fiabilité et de ce fait des outils mathématiques à mi-chemin entre l'algorithmique, la modélisation et l'algèbre sont développés afin de permettre de vérifier formellement les programmes et algorithmes.

Théorie de l'information

[modifier | modifier le code]

La théorie de l'information résulte initialement des travaux de Ronald A. Fisher. Ce statisticien théorise l'information dans sa théorie des probabilités et des échantillons. Techniquement, « l'information » est égale à la valeur moyenne du carré de la dérivée du logarithme de la loi de probabilité étudiée. À partir de l'inégalité de Cramer, la valeur d'une telle « information » est proportionnelle à la faible variabilité des conclusions résultantes. En d'autres termes, Fisher met l'information en relation avec le degré de certitude. D'autres modèles mathématiques ont complété et étendu de façon formelle la définition de l'information.

Claude Shannon et Warren Weaver renforcent le paradigme. Ingénieurs en télécommunication, leurs préoccupations techniques les ont conduits à vouloir mesurer l'information pour en déduire les fondamentaux de la Communication (et non une théorie de l'information). Dans Théorie Mathématique de la Communication en 1948, ils modélisent l'information pour étudier les lois correspondantes : bruit, entropie et chaos, par analogie générale aux lois d'énergétique et de thermodynamique.

Leurs travaux complétant ceux d'Alan Turing, de Norbert Wiener et de Von Neuman (pour ne citer que les principaux) constituent le socle initial des « Sciences de l'information ». La théorie de l'information s'appuie principalement sur deux notions caractéristiques que sont la variation d'incertitude et l'entropie (« désordre » au sens d'absence d'ordre et donc d'information dans l'ensemble considéré, d'où l'indétermination). Déclinant ces principes et ceux d'autres sciences dures, les technologies s'occupent de la façon d'implémenter, d'agencer et de réaliser des solutions pour répondre aux besoins des sociétés humaines.

Certains chercheurs tentent de tirer des parallèles entre les concepts d'entropie en physique et d'entropie en informatique afin d'obtenir une formulation informatique de la cosmologie et de la réalité physique de notre monde qui, selon certains, pourraient trouver des clés dans des outils mathématiques que sont les automates cellulaires.

Informatique et information, un problème de terminologie

[modifier | modifier le code]

Certains ne voient dans l'informatique qu'une déclinaison technologique de l'automatisation des traitements (incluant la transmission et le transport) d'information et considèrent l'usage des termes « sciences de l'informatique » comme incorrects, ces mêmes préfèrent donc l'appellation « technologies de l'information et de la communication » parce qu'ils disent qu'elle recouvre mieux les différents composants (systèmes de traitements, réseaux, etc.) de l'informatique au sens large. Cette vision très restrictive du terme « informatique » n'est pas partagée par tout le monde et d'ailleurs beaucoup d'anglo-saxons envient la richesse du mot « informatique » et commencent à l'emprunter[6],[note 4].

Théorie des graphes

[modifier | modifier le code]

La théorie des graphes permet de modéliser de nombreux problèmes discrets : calculs de trajets, allocations de ressource, problèmes SAT... On peut citer le théorème des quatre couleurs comme résultat classique de cette branche de l'informatique.

Théorie de la complexité

[modifier | modifier le code]

La théorie de la complexité permet de classifier les algorithmes selon leur temps d'exécution asymptotique. C'est-à-dire selon leur comportement lorsqu'ils sont utilisés sur de très grandes données. C'est dans cette branche de l'informatique que se situe le célèbre problème P=NP par exemple.

Théorie de la calculabilité

[modifier | modifier le code]

La théorie de la calculabilité a pour objet la caractérisation des fonctions qu'un algorithme peut calculer. En effet, il est possible de montrer qu'il existe des fonctions qui ne sont pas calculables par un ordinateur, et il est dès lors intéressant de savoir lesquelles le sont. Le problème du castor affairé ou la fonction d'Ackermann sont des exemples classiques d'objets étudiés dans ce domaine.

Théorie des langages

[modifier | modifier le code]

La théorie des langages, souvent liée à la théorie des automates, s'intéresse à la reconnaissance d'ensemble de mots sur un vocabulaire donné. Elle est utilisée dans les algorithmes de traitement de la langue naturelle par exemple : traduction automatique, indexation automatique de documents, etc. ainsi que dans ceux des langues artificielles comme les langages de programmation : compilation, interprétation.

Logique pour l'informatique

[modifier | modifier le code]

La logique formelle est un outil fondamental de l'informatique, on y trouve notamment la théorie des types, le lambda calcul et la réécriture comme outils de base de la programmation fonctionnelle et des assistants de preuve.

Périodiques et journaux d'information (sélection)

[modifier | modifier le code]

Notes et références

[modifier | modifier le code]
  1. Par exemple, la présentation du journal « Théoretical computer science » ne décrit pas la discipline mais en donne simplement des caractéristiques et des objectifs.
  2. Comme cela se voit dans l'intitulé du groupe de recherche (GdR) du CNRS, « Informatique mathématique »
  3. La théorie des types, les assistants de preuve et la logique formelle n'y figurent pas
  4. L'association qui regroupe les départements de recherche et d'enseignement des universités en Europe s'appelle « Informatics Europe »

Références

[modifier | modifier le code]
  1. Pierre-Louis Curien, « Maurice Nivat, une grande figure », 1024 -- Bulletin de la Société Informatique de France, no 12,‎ , p. 87 -107 (lire en ligne)
  2. Claude Pair, « CRIN: The History of a Laboratory », IEEE Annals of the History of Computing, vol. 12, no 3,‎ , p. 159-166
  3. John E. Savage, Models of Computation : Exploring the Power of Computing, Addison-Wesley Longman Publishing Co., Inc., , 672 p. (ISBN 978-0-201-89539-1, lire en ligne)
  4. ACM SIGACT.
  5. GdR Informatique Mathématique
  6. « ACM Europe: Informatics education report »

Sur les autres projets Wikimedia :