Vous êtes sur la page 1sur 14

ICC: Partie Théorique

Semaine 1/2:
- Informatique : sur ordi
• La simulation de modèles + opti de solutions
• Automatisation d’un certain nb de taches
• Orga, transfert, recherche d’infos

- Ordinateur :
• Ensemble d’automates programmables
• Automate = dispositif capable d’assurer sans intervention humaine, un
enchainement d’opérations correspondant à la réalisation d’une tache donnée
(montre, “ramasse-quilles”)
- Automate programmable = la nature deal tâche qu’il est capable de réaliser peut
être modifié à volonté => grâce à un
programme
• Machine de Turing universelle
• Doit permettre la description des différents
traitement que l’on veut automatiser =>
combinaison de données + opérations

- Programmation :
• Décomposer la tache à automatiser sous la forme d’une séquence d’instructions
• La formalisation des traitements passe par les algorithmes (distinguent les bons
des mauvais traitements)
• La formalisation des données se fait à travers des structures de données
abstraites (distinguer les bonnes des mauvaises structures)
• La conception consiste à choisir les bons traitements et les bonnes structures
- Algo ≠ Programme
• Un algo est indep du langage de prog dans lequel on va l’exprimer
• Algo = partie conceptuelle —> moyen pour un humain de repr senter (pour un
autre humain ou une machine) la r solution d’un probl me donn
• Prog = réalisation d’un algorithme dans un langage de prog spécifique
- Algo : Méthodologie
• Bien identifier le problème (entrées/sorties/quelle question)
• Trouver un algo correct
• Trouver l’algo le plus efficace possible
• Exemple d’algol résoudre une
équation du second degré:
- Instruction élémentaire :
• Une instruction l mentaire est
une instruction dont le co t
d’ex cution est constant








(négligeable devant la taille des données manipulées par les algo écrits avec ce
jeu d’instructions)
- Complexité d’un algo :
• Nombre d’instructions
l mentaires n cessaires un
algorithme pour donner la r ponse
dans le pire des cas.
• Les tris sont très importantes en
pratique (interviennent souvent
dans bcp d’algos)
• Complexité de types de
tris

- Problèmes de plus court


chemin :
• Une troisi me famille
classique de probl mes
tr s r pandus est celle des
plus court chemins
• « plus court » en un certain
sens qui peut aussi tre « moins cher », « plus rapide », ... —> notion de fonction
de co t / pond ration

Semaine 3:
- Conception d’algo :
• Une premi re d marche consiste rechercher une ressemblance avec des
probl mes d j connus (recherche tri plus court chemin)
• Sinon, il existe plusieurs m thodes de r solution, c’est- -dire des sch mas
d’ laboration de solutions
- Approche descendante :
• Décomposer le problème
général en sous
problèmes plus
spécifiques qui seront
eux memes décomposés
en sous sous problèmes
etc.

• “Divide and conquer” =>


diviser/regrouper les données pour
résoudre des (sous-)problèmes plus
simples —> algorithmes récursifs
• Recursion :
- Ramener le probl me r soudre un
sous-probl me, version simplifi e du





























probl me d’origine
- Pour qu’un algo récursif soit correct il lui faut une condition de terminaison
sinon on risque une boucle infinie
- Ex du calcul des n premiers
entiers pairs :

- La solution r cursive n’est pas


toujours la seule solution et
rarement la plus efficace mais
elle est parfois beaucoup plus
simple/pratique mettre en
œuvre
- Programmation dynamique :
• La programmation dynamique est
une m thode de r solution permettant de traiter des probl mes ayant une
structure s quentielle r p titive
• M moriser les calculs interm diaires pour viter de les effectuer plusieurs fois
• Probl mes de plus courts chemins => complexit polynomiale : Θ(n3), Θ(n2)
ou Θ(n) en fonction de la nature du probl me (nombre de villes de d part/
d’arriv e fix es)


















Semaine 4:
- Qu’est ce qu’une instruction élémentaire:
• Lamba-calcul (Church)
• Les fonctions récursives (Gödel, Church, Kleene)
• Machine de Turing
- Machine de Turing :
• Automate abstrait (=objet mathématique)
• Donnée d’une bande et d’une tête de lecture (capable de lire, d’écrire ou de se
déplacer), d’un ensemble d’états (tt état pas dans la table marque la fin/ ça
arrête), et une table de transitions (nouvel état, nouveau caractère, déplacement)
comme ceci :
• La bande est initialisée avec la séquence de caractères correspondant aux
données entrées
• La tête de lecture/écriture est positionnée sur la première cellule de l’entrée, et
l’état interne est positionné à sa valeur initiale
• Tant que l’état interne courant n’est pas un état final, le triplet (nouvel état
interne, nouveau caractère, déplacement) est utilisé pour mettre à jour l’état
interne, le caractère courant, puis le déplacement de la tête de lecture/écriture
est effectué
• Si l’état interne est un état final, la machine s’arrête. Le contenu de la bande à
ce moment la est considéré comme le résultat du traitement
• Remarques:
- Forme canonique (Turing en binaire)
- Il y a plein de machines de Turing pour un problème donné => mais LA
machine de Turing universelle est capable de tourner n’importe quel
algorithme
• Intérêt des machines de Turing :
- Constituent une notion centrale en informatique, car elles permettent de donner :
• Une définition précise à la notion d’algorithme (un algo = une table de
transitions d’une machine de Turing)
• Une base théorique solide aux notions importantes que sont la calculabilité, la
décidabilité et la complexité

- Une question et des données :


• Diff entre problème et instance => un algorithme répond à chaque fois à la même
question (si on fait tourner l’algo une fois il va nous résoudre une instance du
problème)
• Problème = une question et un ensemble d’instances
• Solution = pour un problème, un algorithme qui répond correctement à la question
pour chaque instance possible
• Seuls les ensembles infinis d’instance sont intéressant d’un pov théorique

- La théorie du calcul :
• Un ensemble S est dénombrable si et seulement si il existe une surjection
f: N* —> S. La fonction f fait le numérotage de S
• Ex: Les entiers Z =…, -3, -2, -1, 0, 1, 2, 3,…., forment un ensemble
dénombrable. On peut prendre la fonction f: N —> Z comme suit :
• Si i est pair, alors f(i) = i/2
• Si i est impair, alors f(i) = -(i-1)/2
• Est ce que N² est dénombrable ? => OUI
• Les algorithmes sont dénombrables :
-Un algo est simplement un texte écrit à l’aide
d’un alphabet choisi. Il est facile d’énumérer
(numéroter) tous les textes possibles dans un ordre
lexicographique :
•Commençons par énumérer les textes d’un seul
élément (a,b,c,d,e,f,…)
•Continuons avec les textes de deux caractères
(aa, ab, ac, ad, ae,…)
•Y a-t-il des fonctions non dénombrables?
-Les fonctions booléennes ne sont pas
dénombrables => bcp plus de fonctions
booléennes que d’algorithmes
• Problème de l’arrêt :
- Existe-t-il un algorithme A qui étant donné un autre algorithme P et des données
x, décide si P, appliquée à x, s’arrête ou non ?
- Théorème: Il n’existe pas d’algorihtme pour résoudre le problème d’arrêt
(preuve par l’absurde, voir transparent)
- Complexité de Kolmogorov de n (notée K(n)) est la longueur minimale d’un
algorithme qui produise n
- Théorème: La complexité de Kolmogorov n’est pas calculable => il
n’existe pas d’algo pour déterminer K(n)

- Théorie de la complexité :
• Prendre la mesure d’un problème :
- Comment savoir si un algo est le plus efficace possible ? => c’est une
caractéristique d’un problème pas d’un algo
- Le théorie du calcul partage les problèmes entre ceux qui peuvent et ceux qui ne
peuvent pas être résolus par le calcul.
• La théorie de la complexité n’étudie que les problèmes pour lesquels un
algorithme de solution existe et partage ces problèmes en fonction de
demandes de temps ou d’espace de l’algorithme le plus efficace possible pour
chaque problème. Il y a une hiérarchie de classes de complexité
- Algorithme “pratique”
• En général, un algorithme “pratique” prend au plus un temps de calcul
cubique (rappel : la mesure est en fct de la taille de l’entrée), que l’on va
généraliser à temps polynomial
• Résoudre en tps polynomial : P
- Tps polynomial => espace polynomial
- Oracles, certificats et vérifications:
• Oracle = algo qui est capable de résoudre en θ(1)
Réponse d’un oracle va être vérifié avec un certificat = prouve que la rep est
correcte, NP = vérifiable en un temps polynomial
- La plupart des problèmes d'optimisation, de vérification, et de prédiction sont
dans NP, mais apparemment pas dans P. Pourtant il faut tout de même bien
produire des algorithmes et des réponses (en un temps raisonnable).
- Alors que faire?
• solutions exactes qui ne marchent que pour des cas particuliers
• solutions inexactes, mais avec
certaines garanties par exemple, le
débit maximum sera au pire 20% de
moins que la valeur optimale
• solutions heuristiques, souvent
excellentes, mais sans garanties par
exemple, solutions dites « gloutonnes
»
• solutions probabilistes, à l'aide d'un
générateur de nombres aléatoires, qui
donnent des garanties en moyenne

Semaine 5:
- Représenter des nombres est une convention, pour faciliter l’activité d’un gré
utilisateur —> il n’y a pas de représentation universelle
- Quel est l’unité élémentaire utilisé dans l’information ? Quel est l’alphabet minimum
qui permettrait de représenter efficacement tous les nombres (entiers)?
• Le système binaire est le système de signes le plus simple our
représenter les nombres efficacement (en log(n) symboles)
- Par convention on utilise 0, et 1 comme éléments binaires
- “Binary digit” est abrégé
bit
- Un octet, 2⁸= 256
informations
- Représentation des nombres
entiers
• Positifs et nuls :
- Convention d’interprétation notation positionnelle en base 2
• Poids forts à gauche et poids faibles à droite
• Du binaire vers le décimal : additionner les puissances de 2 dans le motif
binaire
• Du décimal vers le binaire : décomposer un nombre entier X en une somme
de puissances de 2 par des divisions entières successives tant que le quotient
>=2
• Les calculs sur les entiers sont exactes si le résultat est un entier et appartient
au domaine recouvert
- Causes de dépassement de capacité :
- Division => perte de partie fractionnelle (résultat n’est pas un entier)
- Multiplication, addition, soustraction => sortie du domaine couvert
(ex: pour les entiers sur
32 bits, quand le résultat
n’est pas compris entre 0
et 2³²-1)

• Entiers négatifs :
- Le motif binaire de (2^n -1) est une bonne représentation de -1 car on obtient 0
quand il est ajouté à 1
- Propriétés à vérifier :
• a+b=0
• -(-a)=a
- Avec n bits, on pose que l’opposé d’un nombre, x, est donné par 2^n -x, appelé
complément de 2 à x
- Comment calculer l’opposé (2^n-x) d’un nombre x ?
• Une transformation est nécessaire pour:
• Faire apparaitre des quantités représentables sur n bits
• Les manipuler à l’aide d’opérations simples
• Cas particulier :
• Il est très facile de calculer ((2^n-1)-x).
• Il suffit d’inverser chaque bit de x 0—>1 et 1—>0
• Cette valeur est appelée complémentaire à 1 de x
• Complémentaire à 2 de x = (complémentaire à 1 de x) + 1
• ATTENTION : il s’agit bien
d’une nouvelle convention : de
fait, le bit de poids fort est utilis
pour le signe :10000001 ne
s’interpr te plus comme 129,
mais bien comme −127
• Domaine couvert : de (−2^n−1)
(2^(n−1) − 1)
- Représentation des nombres décimaux :
• La virgule flottante : Pourquoi ?
Comment ?
- En repr sentation virgule fixe sur
n bits, les 2n valeurs repr sent es sont uniform ment r parties dans un intervalle
[MIN, MAX] fix et s par es par la quantit α :
- Erreur relative sur le domaine couvert :













• L’erreur relative décrit l’importance relative de l’erreur de discrétisation δx
par rapport au nombre à représenter x.
• ⎮δx⎮/ ⎮x⎮ n’est pas uniforme sur le domaine couvert
- Erreur relative uniforme ?
• Le compromis retenu: garantir une erreur relative uniforme veut dire accepter
une croissance de l’erreur de discrétisation au sein du domaine couvert
- Représentation en virgule flottante => notation scientifique en base 2
• Comporte 3 parties qui se partagent le nombre de bits à disposition: le signe,
l’exposant de la base 2 et le nombre normalisé en base 2.
• La partie fractionnaire du nombre normalisé est appelé la mantisse
• Particularité d la base 2 : le chiffre le plus significatif du nombre normalisé est
constant et toujours égal à 1. Il est donc
implicite.
• Erreur relative maximum est définie par la
puissance la plus faible de la mantisse

• On appelle aussi erreur d’arrondi l’ cart entre un nombre x et sa repr sentation


approch e en virgule flottante.
• On ne peut pas représenter un dixième en binaire ;
- Ce probl me existe dans toutes les bases, pensez « un tiers » en base 10.
- M me si l’erreur d’arrondi est in vitable pour la majorit des nombres, on
peut garantir qu’elle se situe en dessous d’un seuil d fini par les besoins du
probl me trait , en choisissant une repr sentation adapt e.

• Tester l’ galit de r sultats en virgule flottante est une absurdit .


• Le test d’ galit de valeur de r sultats en virgule flottante doit tre fait avec
tolérance autour de la valeur th orique : ⎮résultat - valeur_théorique⎮<
• Les résultats sont différents selon l’ordre des calculs => l’addition n’est plus
associative (a + b) + c ̸ = a + (b + c)






















𝛕
• Bonne pratique : d’abord additionner les petits nombres entre eux, avant de les
additionner aux plus grands.
• Pour un probl me donn et son algorithme de r solution, il est important de se
poser les questions suivantes :
• De quelle pr cision ai-je besoin pour mes r sultats ?
• Quelle est l’influence de l’algorithme sur la pr cision des r sultats ?
• Quelle est la pr cision maximum disponible sur la machine cible ?
- Résumé :
• Existe-t-il une repr sentation universelle de l’information ?
- Une repr sentation est une convention humaine d’interpr tation d’un ensemble
de signes. Sa force est directement li e au nombre de personnes qui la partage,
d’o l’importance des standards (ex : code ASCII, UTF).
• Par quels moyens peut on repr senter des symboles et des nombres ?
- La repr sentation binaire suffit pour repr senter de fa on efficace (log) un
nombre arbitrairement grand de signes.
- Par convention nous utilisons les symboles 0 et 1.
• Est il possible de construire une repr sentation exacte du monde r el ?
- Les calculs avec la repr sentation positionnelle enti re donnent des r sultats
exacts pour autant qu’on reste dans le domaine couvert.
- Pour la repr sentation virgule flottante, il faut se poser la question de la
pr cision dont on a besoin. La repr sentation peut tre adapt e pour garantir une
pr cision relative d sir e.

Semaine 6 (Module 2)

- Signaux, fréquences et bande passante:


• Un signal est une fonction (ex onde sonore, onde électromagnétique, une photo noir et
blanc), dans ce cours de R —> R + somme de sinusoïdes (finie)
- Sinusoïde pure: X(t) = a sin(2πf t +δ), t ∈ R, (a=amplitude, f=fréquence,
δ=déphasage)
- Ex de signaux :
• Fréquence, f, contenue dans la
sinusoïde pure X(t) = a sin(2πf t +δ)
s’exprime en Hertz =Hz = 1/sec
- Bande passante : B = fmax =
max{f1,…,fn}
- Spectre : autre représentation
graphique dans “l’espace des
fréquences”, axe horizontal =































fréquences présentes ; axe vertical = amplitude correspondante

- Filtrage d’un signal


• De manière générale, lorsque’un signal (X(t), t ∈ R) passe par un filtre, il en ressort
une version déformée (X’(t), t ∈ R)
- On utilise un filtre pour supprimer le bruit présent (en général ce sont les hautes
fréquences)
• Filtre “passe bas”
- Filtre passe bas idéal, filtre qui supprime toutes les fréquences supérieures à une
fréquence de coupure (càd supprime les hautes fréquences)

- Échantillonnage d’un signal


- Soit X(t) une sinusoïde pure dont la fréquence est plus petite ou égale à f. Pour
pouvoir reconstruire cette sinusoïde, à partir de sa version échantillonnée à la
fréquence fe > 2f
- Sinon si fe< 2fmax —> effet stroboscopique

Semaine 8:

- Reconstruction d’un signal


• Formule d’interpolation pour X(t) s’écrit :
• Théorème d’échantillonnage :
- Soit X(t) un signal de bande passante fmax ; X(nTe) le même signal échantillonné
à la fréquence d’échantillonnage fe ; XI(t) donné par la formule d’interpolation
comme ci-dessus
- Alors :
• Si fe > fmax, alors XI(t) = X(t) pour tout t ∈ R
• Si XI(t) = X(t) pour tout t ∈ R alors fe ≥fmax
- Càd, si fe < 2fmax, alors il existe t0 ∈ R t.q. XI(t) X(t0)
• Dans le cas d’égalité, on ne peut pas conclure
• Sous échantillonnage d’un signal, comment éviter l’effet stroboscopique ?
- On applique un filtre passe bas avant d’échantillonner, avec une fréquence de
coupure fc juste un peu plus petite que fe/2
- Puis on échantillonne à fréquence fe
- Pour reconstruire le signal, on utilise la formule d’interpolation

Semaine 9:
- Entropie
• L’entropie est un nombre moyen de questions nécessaires pour deviner une lettre
choisie au hasard dans une séquence.
• Soit X une distribution de probabilités pj (par construction 0 ≤ pj ≤ 1 pour tout j, et p1
+… + pn =1)
• L’entropie est définie par :

- Théorie de l’information (entropie selon Shannon)


• H(X) ≥ 0
• H(X) =0 ⇔ X est déterministe
• H(X) ≤ log2(n)
• H(X) = log2(n) ⇔ X est uniforme
- Compression sans perte :
• Redondance : R(X) = 1 - (H(X)/log2(n))
• Comprime les messages mais de sorte que l’on puisse reconstruire complètement les
messages —> minimiser le nombre de bits (avant l’envoi du message, l’expéditeur et
le destinataire se sont mis d’accord sur le code commun)
• Utiliser le moins de bits pour les lettres les plus probables
• Algorithme de Shannon-Fano:
• Pour attribuer une séquence de bits à chaque lettre, nous suivons les deux règles
suivantes:
- Le nombre de bits attribués à chaque lettre est égal au nombre de questions
nécessaires pour la deviner
- Les bits 0 ou 1 sont attribués en fonction des réponses obtenues aux questions.
Plus précisément, le bit n°j est égal à 1 ou 0 selon que la réponse à la jème
question était oui ou non
• Aucun mot de code n’est préfixe d’un autre
• En pratique :
• Pour décode, il faut avoir le même arbre
• On applique l’algorithme de calcul des codes à un très gros texte de référence
(plusieurs milliers de romans) pour trouver l’arbre que l’on utilise ensuite dans les
algorithmes de codage et de décodage de toute séquence

Semaine 10:
- Généralisation de l’algorithme de Shannon-Fano

• On peut faire de sorte de minimiser la différence entre le nombre d’apparitions à


gauche et à droite
• Un code binaire est un ensemble C dont les éléments c1, …, cn sont des suites de O et
de 1 de longueur finie (par exemple: {11, 10, 011, 010, 001, 0001, 0000}
• On note lj la longueur d’un mot de code cj (ex: l5=3)
• Un code binaire C est dit sans préfixe si aucun mot de code n’est le préfix d’un autre.
Ceci garantit :
- Que tous les mots de code sont différents
- Que tout message formé de ces mots de code peut être décodé au fur et à
mesure de le lecture
- Avec le code ci-dessus, 1101010011 se lit 11, 010, 10, 011
• Le code C={c1,…,cn} peut être utilisé pour représenter une séquence X formée avec
des lettres triées d’un alphabet A={a1,…,an}, chaque lettre aj est représenté pas le mot
de code cj de longueur lj
- Si les lettres a1,…,an apparaissent avec des probabilités p1,…,pn dans la
séquence X, alors la longueur moyenne du code est donné pas L(C(X))=p1l1+…
+pnln
• Théorème de Shannon:
- Quel que soit le code binaire c sans préfixe (et sans perte) utilisé pour
représenter une séquence X donnée, l’inégalité suivante est toujours vérifiée:
L(C) ≥ H(X)
- On voit donc également ici apparaitre un seuil :
• En dessous de ce seuil, il n’est pas possible de comprimer des données (de
façon non ambiguë) sans faire de perte
• On peut montrer également qu’avec l’algorithme de Shannon-Fano,
L(Shannon-Fano(X)) < H(X) +1, et donc que la performance de celui-ci est
proche de la meilleure performance qu’on puisse espérer ⇒ L(Shannon-
Fano(X))-1 < H(X) ≤ L(Shannon-Fano(X))
• Codes de Huffman:
- Du pov du taux de compression l’algorithme de Shannon-Fano n’est pas garanti
être optimal, mais il offre cependant une tri bonne performance dans la majorité
des cas, du pov du temps de calcul non plus (il n’est pas très optimal)
- C’est donc un algorithme similaire qui est implémenté en pratique, l’algorithme
de Huffman
- Les codes de Huffman sont optimaux: pour une compression sans perte, on
ne peut pas faire plus court
- L’idée est vraiment très simple: affecter les codes les plus longs aux lettres les
moins fréquentes
- Comme l’algo de Shannon-Fano, on part des lettres et de leur nb d’apparitions
• L’algo procède comme ceci :
• Trouver les 2 lettres les moins fréquentes et les regrouper sous une
“question” qui les distingue
• Dans le tableau des nombres d’apparition des lettres, supprimes les 2
dernières lettres considérées et les regrouper comme une seule nouvelle
lettre, avec comme nombre d’apparitions la somme des deux nombres
• Recommencer en 1 tant qu’il y a des “lettres”
• Ex :
- Compression avec pertes :
• Pour comprimer des données sans perte et avec un code non ambigu, on ne
peut donc les descendre en dessous de la borne de Shannon(=entropie)
• On est parfois obligé de comprimer en faisant des pertes :
• Lorsqu’on désire représenter un nombre réel avec un nombre fixé de bits
(l’information comprise dans un nombre réel est “infinie”)
• Lorsqu’on désire échantillonner un signal dont la plus grande fréquence
est “infinie”
• Lorsqu’on désire télécharger sur un site web l’intégralité de ses photos
de vacances
• Images :
• Comment filtrer les hautes fréquences (spatiales) dans une image ?
• Une façon simple de faire : moyenner les couleurs sur des zones de plus
ou moins grande taille
- C’est un filtre à moyenne mobile
• On voit apparaitre un compromis :
- Plus on utilise des pixels de grande taille, moins on a besoin d’espace
mémoire pour stocker l’image…
- Mais plus le signal d’origine est déformé : on parle de distorsion
• Son :
• Le format MP3 permet d’énoncer cette information sur 128 Kib
seulement, ce qui correspond à un réduction de 90% de la taille d’un
fichier (sans déformation sensiblement audible au son)
- Conclusion :

Vous aimerez peut-être aussi