Professional Documents
Culture Documents
Nous avons vu quun programme peut tre considr comme la dcomposition de la tche raliser en une squence dinstructions lmentaires (manipulant des donnes lmentaires) comprhensibles par lautomate programmable que lon dsire utiliser.
Cependant, chaque automate programmable (en pratique chaque processeur) se caractrise par un jeu dinstructions lmentaires qui lui est propre. Dans la pratique, cette diversit est rsolue par lexistence de compilateurs ou dinterprteurs qui traduisent les instructions du langage (volu) mis disposition des programmeurs en les instructions lmentaires (langage machine) du processeur utilis. Cependant, cette solution nest pas suffisante pour les besoins de linformatique thorique, qui require une reprsentation unifie de la notion dautomate programmable, permettant de dmontrer des rsultats gnraux (dcidabilit, complexit, ...) vrais pour lensemble des automates programmables concrets que lon peut envisager.
A cette fin a t dveloppe la notion de machine de Turing, qui constitue une abstraction (et une formalisation) de la notion dautomate programmable.
Informatique II
Algorithmique
...
...
0
(1,0,+) (2,0,-)
1
(1,0,+) (2,0,-)
(2,,-) (3,,+)
1 2
Informatique II
Algorithmique
le nombre tester, sous forme binaire Sortie: 1 si le nombre est pair, 0 sinon
dplace droite jusqu la n dtecte la n droite, revient sur le dernier caractre
1 0
efface et gauche
caractre tat
0
(1,0,+) (3,,-) (3,,-) (4,,-) x
1
(1,1,+) (4,,-) (3,,-) (4,,-) x
1 2 3 4 5
0 1
rsultat et droite
0 2
Informatique II
Algorithmique
Si lon impose de coder les entres et les sorties sous forme binaire et dindiquer labsence de caractre dans une cellule par le caractre , on obtient une reprsentation uniforme des machines de Turing, appele reprsentation canonique.
Dautres choix sont possibles pour la dfinition des machines de Turing (plusieurs bandes, autres oprations lmentaires, autres alphabets de caractres, ...) mais on peut montrer que les rsultats thoriques obtenus avec de telles machines sont quivalents ceux obtenus laide dune machine de Turing canonique.
Informatique II
Algorithmique
Si lon dsire quune machine de Turing constitue une abstraction pour la notion dautomate programmable, il faut donc que sa table de transitions soit fixe, et que le conditionnement de son fonctionnement soit entirement impos par ses donnes dentres.
mais comment construire une telle machine, alors appele machine de Turing universelle ?
Informatique II
Algorithmique
2.
Informatique II
Algorithmique
tat courant de T
caractre de T
(1) transfert du caractre courant (2) recherche de la conguration courante de T dans sa table (3) transfert du nouvel tat courant de T position courante de To
Informatique II
Algorithmique
Informatique II
Algorithmique
elles permettent de donner une base thorique solide aux notions importantes de dcidabilit et de complexit (notions voques plus en dtails plus loin dans ce cours);
Informatique II
Algorithmique
10
Algorithme: (dnition informelle) un algorithme, pour une tche donne, est la dcomposition de cette tche en une squence finies dtapes lmentaires permettant de la raliser.
Si la tche peut tre formalise sous la forme dune association entre des entres et des sorties, alors produire une machine de Turing permettant de raliser cette association peut tre vu comme une faon possible de rsoudre la tche.
La table de transitions de la machine produite est donc une reprsentation particulire possible de lalgorithme de rsolution associ.
Informatique II
Algorithmique
11
Lide sous-jacente est que les machines de Turing, malgr leur apparente simplicit, possdent en fait une puissance suffisante pour permettre de rsoudre tout problme pouvant tre trait de faon automatique. une formulation savante de la thse de Church est doc:
Informatique II
Algorithmique
12
Algorithmique
Un algorithme est: une suite finie de rgles appliquer, dans un ordre dtermin, un nombre fini de donnes, pour arriver, en un nombre fini dtapes, un rsultat, et cela quelque soit les donnes traites. [Encyclopedia Universalis]
Un algorithme correspond donc la partie conceptuelle dun programme, indpendante du langage de programmation. Le programme est alors limplmentation de lalgorithme, dans un langage de programmation (et sur un systme) particulier.
Informatique II
Algorithmique
13
Approche descendante
Mthode de rsolution: (laboration de solutions algorithmiques)
On rsoud gnralement un problme par une analyse descendante, cest--dire une analyse du plus gnral au plus spcifique. Cette analyse se fait laide de blocs imbriqus, 1 correspondant des traitements de plus en plus spcifiques, eux aussi dcrits laide dalgorithmes. 2
1. Notons le parallle vident avec limplmentation du programme dcompos en fonctions 2. La mthode de rsolution est donc itrative: on rsoud par analyses successives, des niveaux de dtails de plus en plus prcis.
Informatique II
Algorithmique
14
1 2 3 4 6 5
Informatique II
Algorithmique
15
tri insertion
entre: un tableau dentiers quelconque sortie: un tableau dentiers tri (mmes lments que lentre)
chercher un lment mal plac tant quun tel lment existe: chercher sa bonne place dplacer llment vers sa bonne place chercher un lment mal plac n tant que
Informatique II Algorithmique 16
Le bloc mal plac prend en entre un tableau tab, et donne en sortie lindice du premier lment de tab de prdcesseur strictement plus grand. Par convention, siil nexiste pas dlment admettant un tel sucesseur, la sortie sera MAX, la taille du tableau.
Comme le 1 er lment de tab ne peut tre mal plac (puisque sans prdcesseur), le bloc mal plac doit donc parcourir les lments de tab, la recherche dun lment mal plac, en partant du second lment.
Le bloc mal plac correspond donc une itration sur les lments de tab, du deuxime lment au dernier (dindice MAX-1).
Informatique II
Algorithmique
17
mal plac
entre: un tableau dentiers sortie: lindice du premier lment mal plac pour chaque lment du tableau, partir du deuxime: comparer cet lment au prcdent sil est plus petit, alors il est mal plac: retourner lindice de cet lment (et terminer) n si n pour retourner MAX, la taille du tableau (et terminer)
Informatique II Algorithmique 18
Le bloc bonne place prend en entre un tableau tab et lindice pos dun lment mal plac, et donne en sortie lindice newpos de la bonne place de llement dans le tableau.
La bonne place correspond la position dindice newpos ( <pos) le plus grand tel que tab[newpos-1] <= tab[pos], o 0 si cette relation nest pas satisfaite pour newpos = 1.
Le bloc bonne place doit donc parcourir les positions de tab, entre le premier lment et (au maximum) pos, la recherche de la bonne position
Le bloc bonne place correspond donc une itration sur les lments de tab, du premier lment celui dindice pos.
Informatique II
Algorithmique
19
bonne place
entre: un tableau dentiers tab, lindice pos dun lment mal plac sortie: lindice de la bonne place de llment pour chaque lment du tableau, de 0 pos: si llment est plus grand que tab[pos]: retourner lindice de cet lment (et terminer) n si n pour
3. Lalgorithme correspond une interprtation (quivalente en terme de rsultat) de la description du transparent prcdent !
Informatique II
Algorithmique
20
Le bloc dplacer prend en entre un tableau tab, lindice pos dorigine dun lment, et lindice newpos de destination de cet lment, et doit dplacer ledit lment de sa position dorigine sa positition de destination.
On peut effectuer cette opration par dcalages successifs (en utilisant un stockage temporaire tmp)
tmp
tab
...
newpos newpos+1
...
pos
...
Informatique II
Algorithmique
21
dplacer
entre: un tableau, un indice dorigine pos, un indice nal newpos sortie: le tableau dans lequel llement dindice dorigine t dplac et
possde maintenant lindice nal (lordre des autres lments est conserv)
mmoriser llment dindice pos pour chaque lment du tableau entre pos-1 et newpos copier cet lment la position dindice courant+1 n pour copier llment mmoris la position dindice newpos
Informatique II
Algorithmique
22
Il nexiste pas de mthode miracle pour fabriquer les solutions algorithmiques requises pour les problmes auxquels linformaticien peut tre confront.
Parmi ces schmas, on peut citer le paradigme diviser pour rsoudre (divide and conquer), qui est frquemment utilis.
Informatique II
Algorithmique
23
Le schma gnral dune approche diviser pour rsoudre de rsolution dun problme P appliqu des donnes X est le suivant:
P(X): si X est suffisement simple ou petit, appliquer adhoc(X), sinon: dcomposer X en instances plus petites, x 1 , ..., x n puis pour tout x i (1 <= i <= n): rsoudre P(x i ) pour obtenir une solution partielle y i recombiner les y i pour obtenir une solution globale Y pour P(X) adhoc(X) est un algorithme permettant de rsoudre P pour des donnes X simples.
Informatique II
Algorithmique
24
Informatique II
Algorithmique
25
Informatique II
Algorithmique
26