Vous êtes sur la page 1sur 28

Outils Mathématiques pour

l’Informatique
Cours de 3GI/ENSP
Georges Edouard KOUAMOU
Positionnement
• L’informatique ne peut se réduire à la programmation. Elle ne peut pas non
plus se limiter au génie logiciel
• L’informatique est la résolution des problèmes (P).
• Les mathématiques sont au cœur de la résolution de problème (Q).
• PQR
• Donner la forme littérale de R
• Définir un problème nécessite bien souvent la rigueur des mathématiques
• Le bon usage et l’analyse des modèles, des structures de données et des
algorithmes nécessitent une base solide en mathématiques
• Edsger Dijkstra: « L’informatique n’est pas plus la science des ordinateurs
que l’astronomie n’est celle des télescopes »
Cours de Mathématiques pour l'Informatique 2
Objectifs
• Justifier pourquoi une façon particulière de résoudre le problème est
correct ou efficace
• nécessite une analyse basée sur un modèle mathématique bien défini
• Abstraire le problème est nécessaire afin de réutiliser les
connaissances
• Il est rare de rencontrer un problème dans un cadre abstrait
• Votre patron ne vous demandera pas de trouver un arbre couvrant de poids
minimum. Cela va être plutôt votre tâche de modéliser le problème pour le
ramener à une solution connue.

Cours de Mathématiques pour l'Informatique 3


Sujets connexes
• Théorie des ensembles, Relations et fonctions:
− Vu en MSP
• Logique prépositionnelle
− Introduit en IA
− L’application à la conception des circuits: algèbre de Boole/architecture des
ordinateurs
• Science de l’information: fondements mathématiques de la sécurité
informatique
− Codage
− Cryptographie et chiffrements

Cours de Mathématiques pour l'Informatique 4


Contenu
• Relations, ensembles ordonnés, treillis
• Constructions par induction
• Raisonnement par récurrence
• Automates à états finis
• Automate fini déterministe
• Automate canonique
• Langages rationnels
• Expression rationnelle
• Langages réguliers
• Grammaire algébrique
Cours de Mathématiques pour l'Informatique 5
Chapitre 1
Systèmes d’inférence, induction, récursion

Cours de Mathématiques pour l'Informatique 6


Récurrence sur les entiers
• La règle logique générale que nous avons donnée pour prouver ∀ x,P(x) consiste à
introduire une variable x arbitraire et à montrer P(x). Il est rare que l’on puisse
démontrer la propriété P(x) sans s’appuyer sur la forme possible des objets que
représente la variable x.
• Dans le cas des entiers, au lieu de montrer directement P(x) on va fournir deux
objets :
• une preuve de P(0) (le cas de base, appelé aussi initialisation)
• une preuve de ∀ n, P(n) ⇒ P(n+1) c’est-à-dire un moyen de transformer une preuve de P(n)
en preuve de P(n+1) et ce pour un n arbitraire (le cas d’hérédité)
• Le principe de récurrence dit que ces deux éléments sont suffisants pour justifier
que ∀ x∈ℕ, P(x) est vrai.
• En effet si on prend un entier quelconque, par exemple x=45 alors on part de la
preuve P(0) qui nous est donnée par le cas 1, puis on utilise une fois la propriété
2, ce qui permet d’avoir une preuve de P(1) puis encore une fois pour avoir une
preuve de P(2) et enfin à la 45ème application, on a bien une preuve de P(45).
Cours de Mathématiques pour l'Informatique 7
Définition de relation par clôture
• En informatique, on utilise souvent un procédé de définition de
relation dit par clôture. On rappelle qu’une relation R sur A1×⋯ × Ak
est un ensemble de n-uplets (x1,…,xk) et que l’on écrit R(x1,…,xk) au
lieu de (x1,…,xk)∈ R
• Pour définir une relation R sur des objets, on se donne des propriétés
que doit vérifier la relation R, puis on définit R comme la plus petite
relation qui vérifie ces propriétés. D’un point de vue mathématique,
la relation R est définie, lorsque c’est possible (c’est-à-dire quand il en
existe au moins une), comme l’intersection de toutes les relations qui
vérifient les propriétés données.

Cours de Mathématiques pour l'Informatique 8


Exemple 1
• Supposons que l’on cherche à définir l’ensemble des entiers relatifs qui
peuvent se calculer en utilisant juste l’addition à partir des entiers 3 et
5
• On peut le faire en caractérisant une relation S(x) qui représente que x
est obtenu ainsi. On identifie 3 propriétés de la relation : la relation
contient 3 et 5
• si la relation contient x et y, elle contient aussi x+y
• Cela peut se traduire par les trois formules suivantes :
S(3) S(5) ∀ x y, S(x) ∧ S(y) ⇒ S(x+y)
• Si veut autoriser en plus la soustraction, on ajoutera la propriété :
• ∀ x y, S(x) ∧ S(y) ⇒ S(x−y)

Cours de Mathématiques pour l'Informatique 9


Exercices
• Montrer par récurrence sur n que σ𝑛𝑖=1 2𝑖 − 1 = 𝑛2
• Donner des propriétés qui caractérisent une relation P(x,y)
représentant les positions sur un plan d’un pion qui part de l’origine
(0,0) et qui peut seulement se déplacer de deux manières :
• 1 case à droite et 2 cases vers le haut
• 2 cases à droite et 1 case vers le haut

Cours de Mathématiques pour l'Informatique 10


Système d’inférence
• Définition constructive ou encore système d’inférence
• C’est le processus de définition par clôture utilisé pour des propriétés
de la relation à définir ayant une forme particulière
• Exemple 4: Règles d’inférences pour la définition de l’ordre sur les
entiers
𝑥≤1 𝑦
1. 𝑥≤1 𝑥 𝑥≤1 (𝑦+1) Pour définir l’ordre sur les
entiers, on peut se donner
l’un des deux systèmes de
𝑥≤2 𝑦 règles d’inférence suivantes
2. 0≤2 𝑥 (𝑥+1)≤2 (𝑦+1)

Cours de Mathématiques pour l'Informatique 11


Règle d’inférence
• Définition: Une règle d’inférence pour définir une relation R(x1,…,xk)
se présente sous la forme 𝑇1 … 𝑇𝑛
𝑅(𝑡1 , . . . , 𝑡𝑘 )
• chaque Ti est une formule logique qui peut contenir la formule R.
• Les règles d’inférence peuvent contenir des variables libres x1,…,xp
qui sont implicitement quantifiées universellement.
• La règle d’inférence est interprétée comme la formule:
∀ x1,…,xp, T1 ⇒ ⋯ ⇒ Tn ⇒ R(t1,…,tk)

Cours de Mathématiques pour l'Informatique 12


Chapitre 2
Mots et langages

Cours de Mathématiques pour l'Informatique 13


Définitions
• Définition (alphabet): Un alphabet est un ensemble fini non vide dont
les éléments sont appelés des lettres.
• Exemple
• B = {0, 1} l’alphabet binaire
• A = {a, b, c}
• L = {a · · · , z} l’alphabet français.
• Définition (mot vide): Le symbole ε dénote ce qu’on appelle le mot
0
vide. Pour tout ensemble A, on considère par convention que A = {ε},
l’ensemble contenant uniquement le mot vide.
• Remarque: 𝜀 ≠ 𝜙
Cours de Mathématiques pour l'Informatique 14
Mots

• Pour tout alphabet , on pose  l’ensemble défini par:
Σ∗ = ራ Σ𝑛
𝑛≥0

• Un élément de  est appelé un mot sur l’alphabet .
• Un mot est donc soit le mot vide, soit un n-uplet d’éléments de .
• Exemple
• u = (a, a, b, c, a) est un mot de {a, b, c}∗
• Par simplification, on va l’écrire u = aabca. C’est juste un changement
d’écriture, les propriétés des mots sont les mêmes que celles des n-uplets

Cours de Mathématiques pour l'Informatique 15


Définition des mots par recursion
• Terminologie
•  est le mot vide: “”
•  est l’ensemble des lettres : { a, b, c, …, z }
• Cet ensemble peut varier en function du problème
• Nous pouvons définir un ensemble de mots * comme il suit
• Etape de base:   *
• Si w  * et x  , alors wx  *
• Ainsi, * est l’ensemble des mots possibles qui peuvent être générés avec
l’alphabet
• Est-ce dénombrablement infini ou indénombrablement infini?

Cours de Mathématiques pour l'Informatique 16


Longueur d’un mot
• Définition (longueur): Soit u ∈ *. La longueur de u est l’unique l tel que u
∈ l. On note 𝑢 la longueur de u.
• Pour tout n ∈ N , on note  l’ensemble des mots de longueur n.
n

• Tout symbole (ou lettre) de l’alphabet  est un mot de longueur 1


• Le mot vide est le mot de longueur 0
• Théorème (égalité des mots):
• Deux mots 𝑢 = 𝑢1 … 𝑢𝑛 𝑒𝑡 𝑣 = 𝑣1 … 𝑣𝑚 sont égaux si et seulement si n = m et pour
tout i ∈ {1, . . . , n}, 𝑢𝑖 = 𝑣𝑖 .
• Définition (longueur en a): Pour toute lettre a ∈  et pour tout mot u∈
*, on note 𝑢 𝑎 la longueur en a de u, qui est le nombre d’occurrences de
la lettre a dans le mot u.
• Exercice: Donner la définition récursive de la longueur d’un mot.

Cours de Mathématiques pour l'Informatique 17


Opérations sur les mots
• Concaténation
• Définition (concaténation): Soient 𝑢 = 𝑢1 𝑢2 … 𝑢𝑛 et v = 𝑣1 𝑣2 … 𝑣𝑚 deux mots sur l’alphabet
. On note 𝑢 ∙ 𝑣 (ou bien 𝑢𝑣) la concaténation de u et de v, qui est le mot de taille n + m
défini par : 𝑢𝑣 = 𝑢1 𝑢2 … 𝑢𝑛 𝑣1 … 𝑣𝑚
• Théorème: La concaténation sur * est associative et admet pour élément neutre le mot
vide ε. Elle n’est pas commutative.
• Théorème: Pour tout u, v∈ * on a :
• |uv| = |u| + |v| ; et ∀𝑎 ∈ 𝐴, 𝑢𝑣 𝑎 = 𝑢 𝑎+ 𝑣 𝑎.
• Simplification
• Théorème (simplification): Si u, v, w sont trois mots tels que uw = vw alors u = v. de
même, si wu = wv alors u = v. On dit qu’on peut simplifier à gauche et à droite
• Miroir
• Définition (miroir): Le miroir d’un mot 𝑢 = 𝑢1 … 𝑢𝑛 , noté 𝑢෤ est le mot 𝑢෤ = 𝑢෤ 1 … 𝑢෤ 𝑛 vérifiant:
∀𝑖 ∈ 1, … , 𝑛 𝑢෤ 𝑖 = 𝑢෤ 𝑛+1−𝑖 .
• Exemple: 𝑢 = 𝑏𝑜𝑛𝑗𝑜𝑢𝑟 on a 𝑢෤ = 𝑟𝑢𝑜𝑗𝑛𝑜𝑏.
• Théorème: Pour tout u ∈ *, 𝑢෤ = 𝑢 et 𝑢෨෤ = 𝑢. Pour tout u, v ∈ *, 𝑢෦𝑣 = 𝑣෤ 𝑢.

Cours de Mathématiques pour l'Informatique 18


Découpage des mots
• Définition (préfixe): On dit qu’un mot v est un préfixe d’un mot u
s’il existe un mot w ∈ * tel que u = vw.
• Définition (suffixe): On dit qu’un mot v est un suffixe d’un mot u sur 
s’il existe un mot w ∈ * tel que u = wv.
• Définition (facteur): On dit qu’un mot v est un facteur d’un mot u sur
 s’il existe deux mots w, w’ ∈ * tel que u = wvw’.
• Attention
• Dans les définitions ci-dessus, on peut très bien prendre w =ε et/ou w’= ε.

Cours de Mathématiques pour l'Informatique 19


Découpage des mots
• Définition (sous-mot): Soit 𝑢 = 𝑢1 … 𝑢𝑛 un mot de *. Un sous-mot
v de u est un mot de longueur m tel qu’il existe une injection
strictement croissante 𝜙: 1, … , 𝑚 → 1, … , 𝑛 tel que: 𝑣 =
𝑢𝜙(1) 𝑢𝜙(2) … 𝑢𝜙(𝑛)
• Informellement on obtient un sous-mot de u en supprimant des
lettres de u et en ne changeant pas l’ordre de celles qui restent. Si
u =informatique, v = faq est un sous-mot de u, mais pas w = fini.
• Théorème. Pour tout 𝑢 ∈ Σ ∗ , u et ε sont toujours des préfixes, des
suffixes, des facteurs et des sous-mots de u.

Cours de Mathématiques pour l'Informatique 20


Ordre sur les mots
• Hypothèse: L’alphabet  est totalement ordonné (on donne un ordre
sur les lettres).
• Définition (ordre lexicographique): Soient u et v deux mots de , on
dit que u est plus petit que v pour l’ordre lexicographique, noté u ≤ v
ou encore u ≤ lex v quand :
• ou bien u est préfixe de v ;
• ou bien il existe a < b dans  (pour l’ordre sur l’alphabet), il existe des mots w,
u’, v’ dans *, tels que u = wau’ et v=wbv’.
• C’est l’ordre utilisé pour les dictionnaires.

Cours de Mathématiques pour l'Informatique 21


Langages (1)
• Définition (langage): Un langage est un ensemble de mots. C’est donc un
élément de 𝒫(Σ ∗ ).
• Définition (concaténation de langages): Soient X et Y deux langages, la
concaténation de X et de Y, notée XY est l’ensemble des concaténations des
mots de X par les mots de Y:
𝑋𝑌 = 𝑥. 𝑦|𝑥 ∈ 𝑋, 𝑦 ∈ 𝑌
• Théorème.
• La concaténation des langages est associative mais pas commutative.
• L’élément neutre est le langage réduit au mot vide {ε}.
• Définition (miroir d’un langage): Soit X un langage, le miroir noté 𝑋෨ est
l’ensemble des miroirs des mots de X : 𝑋෨ = 𝑥෤ 𝑥 ∈ 𝑋 .

Cours de Mathématiques pour l'Informatique 22


Langages (2)
• Définition (puissances): Par convention, pour tout langage X on pose
X0= {ε}. On définit les puissances d’un langage X, pour tout n ≥ 1 par
Xn= Xn−1X.
• Pour n ≥ 1, u ∈ Xn si et seulement si il peut s’écrire comme
concaténation de n mots de X.
• Définition (étoile) Soit X un langage, l’étoile de X (on dit aussi l’étoile
de Kleene de X) est le langage 𝑋 ∗ = ‫≥𝑛ڂ‬0 𝑋 𝑛 .
• Le langage X∗ contient toujours le mot vide.

Cours de Mathématiques pour l'Informatique 23


Chapitre 3: automates et
langages reconnaissables
Un langage est dit reconnaissable s'il est reconnu par un automate fini. On introduit la notion d'automate fini et celle
d'automate généralisé. On montre que tout langage reconnaissable peut être reconnu par un automate fini
déterministe mais que cette transformation peut, dans le pire cas, accroitre de façon exponentielle la taille de
l'automate. On étudie les propriétés de clôture des langages reconnaissables : cette famille de langage est close par
les opérations booléennes (union, intersection, complémentaire et donc aussi différence ensembliste) ainsi que par
l'opération de concaténation et d'itération, elle est close également par image miroir et par images directes et
inverses par substitutions (d'un mot à une lettre).

Cours de Mathématiques pour l'Informatique 24


Automate fini
• Un automate fini A = (Q,q0,, d,F) consiste en
• un ensemble fini Q d'états, q0 Q est l'état initial,
•  est un ensemble fini appelé alphabet de l'automate,
• d: Q×→(Q) est la fonction de transition. ((Q) = {X  Q} désigne
l'ensemble des parties de Q.)
• F  Q est l'ensemble des états finals de l'automate.
• Représentation de la fonction de transition

Cours de Mathématiques pour l'Informatique 25


Automate fini
• Table de transition de l'automate, dont les lignes sont associées aux états de l'automate, les
colonnes sont associées aux lettres de l'alphabet, et la case correspondant à l'état q et à la lettre a
contient les états qd(q,a), c'est à dire les états atteints à partir de q par lecture de la lettre a .
• Diagramme sagittale qui est un graphe dont les sommets sont les états et dans lequel on dispose
d'un arc étiqueté a de q vers q lorsque qd(q,a). Si u * est un mot construit sur l'alphabet,
on note q -- u → q s'il existe un chemin dans le graphe allant de q à q étiqueté u, ce qui est
défini inductivement par:
• q --  → q pour tout état q
• q -- a → q lorsque q d(q,a)
• q -- au → q s'il existe un état q  tel que q -- a → q et q -- u → q
• Un mot u  * est reconnu par l'automate s'il existe un chemin étiqueté u partant
de l'état initial et conduisant à un état final, le langage reconnu par l'automate est
donc défini par
L(A)={u*|$qF q0--u→q}
Cours de Mathématiques pour l'Informatique 26
Exercices
• Construire un automate reconnaissant chacun des langages suivants
sur l'alphabet ={a;b}
1. L1 = {u* |$ v* u = vaaa ou u = vbb}, c'est à dire les mots se terminant
par a3 ou b2.
2. L2 = { u * | #a(u) est paire et #b(u) est impaire} où #a(u) désigne le
nombre d'occurrences de la lettre a dans le mot u.
3. L3 = *aba*
• Construire un automate fini qui accepte les suites binaires qui
représentent des nombres divisibles par 3

Cours de Mathématiques pour l'Informatique 27


Cours de Mathématiques pour l'Informatique 28

Vous aimerez peut-être aussi