0% ont trouvé ce document utile (0 vote)
25 vues40 pages

Chapitr 2

Le document présente les paradigmes classiques et techniques de conception d'algorithmes, en se concentrant sur la récursivité et le principe de 'Diviser pour régner'. Il explique les différents types de récursivité, leur utilisation, ainsi que les étapes de la méthode 'Diviser pour régner' pour résoudre des problèmes complexes. Des exemples d'algorithmes illustrent ces concepts, tels que la fonction factorielle et le tri par fusion.

Transféré par

hamdijedidi4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues40 pages

Chapitr 2

Le document présente les paradigmes classiques et techniques de conception d'algorithmes, en se concentrant sur la récursivité et le principe de 'Diviser pour régner'. Il explique les différents types de récursivité, leur utilisation, ainsi que les étapes de la méthode 'Diviser pour régner' pour résoudre des problèmes complexes. Des exemples d'algorithmes illustrent ces concepts, tels que la fonction factorielle et le tri par fusion.

Transféré par

hamdijedidi4
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ch2: Paradigmes classiques et

techniques de conception
d’algorithmes

Classe : M1SIAD
Dr. Hana RABBOUCH
Plan
I. Algorithme: Rappel
II. Paradigmes classiques et techniques de conception d’algorithmes
1. Récursivité ( Simple, Multiple, Mutuelle, Imbriquée)
2. Récursivité terminale et non terminale
3. Dérécursivation
4. Diviser pour régner

2
1

Algorithmique
Rappel
Un peu d’histoire
Al-Khawarizmi
né vers 783 à Ouzbékistan, et
783
décédé vers 850 à Bagdad, est un
mathématicien, géographe,
astrologue et astronome perse,
membre des Maisons de la sagesse
dont les écrits, rédigés en langue
arabe, ont permis l’introduction de
l’algèbre en Europe. Il est à
l’origine des mots «algorithme » et
« algèbre » ou encore de
l’utilisation des chiffres arabes.
source: [Link]

4
Algorithme
Définition:
Un algorithme est une suite ordonnée d’instructions qui indique la
démarche à suivre pour résoudre un problème.

Instruction 1
Instruction 2
Donnée en entrée Instruction 3 Donnée en sortie
Instruction 4
……….

5
La représentation d’un algorithme
Il existe deux façons pour représenter un algorithme:

1. Organigrame:
- Représentation graphique avec des symboles
(carrés, losanges, etc.)
- Offre une vue d’ensemble de l’algorithme
- Représentation quasiment abandonnée
aujourd’hui.

Organigramme pour faire bouillir de l’eau


6
La représentation d’un algorithme
Il existe deux façons pour représenter un algorithme:

2. Pseudo-Code:
- Représentation textuelle avec une série de conventions ressemblant à un
langage de programmation.
- Plus pratique pour écrire un algorithme.
- Représentation largement utilisée.

7
Les étapes d’un algorithme
Préparation du traitement
• données nécessaires à la résolution du problème
Traitement
• résolution pas à pas,
• après décomposition en sous-problèmes si nécessaire
Edition des résultats
• impression à l’écran,

8
Les étapes d’un algorithme
Exemple:

Algorithme Calcul_Carré
Variables A,C : Entier
Début
Ecrire("Veuillez saisir la valeur de A: ")
Lire(A)
C ← A*A
Ecrire("le carré de ", A, "est :", C)
Fin

9
Les éléments d’un algorithme
 Les variables:
La déclaration de variables est effectuée par la forme suivante :
Variables liste_identificateurs : type
 Exemple:
Variables i, j, k : entier
x, y : réel
ok : booléen
ch1, ch2 : chaîne de caractères

10
Les éléments d’un algorithme
 Les constantes:
La déclaration des constantes est effectuée par la forme suivante :
Constante nom_identificateur=valeur : type

 Exemple:
Constantes
PI=3.14 : réel
MAXI=32 : entier

(par convention, les noms de constantes sont en majuscules)

11
Les éléments d’un algorithme
 Les opérations:
• Affectation: variable ⟵ valeur
• Elévation à la puissance : ^
• Opérateurs de calcul:
 Entiers : + , – , * , div , mod
 Réels : + , – , * , /
 Booléens : and ; or ; not
• Opérateurs de comparaison (le résultat est un booléen)
 Entiers, réels, caractères : = ; <= ; < ; >= ; > ; <>
 Booléens : = ; <>
12
Les éléments d’un algorithme
 Instructions conditionnelles
• Instructions conditionnelles: Si Alors Sinon
• Syntaxe:
SI < condition >
ALORS < action _alors >
SINON < action _SINON >
FINSI

13
Les éléments d’un algorithme
 Instructions itératives
• Boucle: Pour
• Exemple:
Algorithme CompteJusqueCent
Variable i : entier
Début
Pour i ← 1 à 100 faire
Écrire(i)
Fin Pour
Fin

14
Les éléments d’un algorithme
 Instructions itératives
• Boucle: Tant que
• Exemple:
Algorithme CompteJusqueCentVersionTQ
Variable i : entier
Début
i←1
Tant que (i ≤ 100) faire
Écrire(i)
i ← i+1
Fin tant que
Fin
15
Les éléments d’un algorithme
 Instructions itératives
• Boucle: Répéter
• Exemple:
Algorithme CompteJusqueCentVersionRepeter
Variable i : entier
Début
i←1
Répéter
Écrire(i)
i ← i+1
Jusqu'à (i < 100)
Fin
16
Les éléments d’un algorithme
 Structure à choix multiple
• La structure SELONQUE
• Exemple:
Algorithme MentionSelonNote
Variable note : réel
Début
SELONQUE
note ≥ 16 : ECRIRE (‘'TB’’)
note ≥ 14 : ECRIRE (‘'B’’)
note ≥ 12 : ECRIRE (‘'AB’’)
note ≥ 10 : ECRIRE (‘'Passable’’)
SINON : ECRIRE (‘'ajourné’’)
FINSELONQUE
Fin
17
Les éléments d’un algorithme
 Fonctions
• Syntaxe:
Fonction <nom_fonction> ( <liste des paramètres> ) : <type de résultat>
< déclaration des objets locaux à la fonction>
Début
{ corps de la fonction}
RETOURNER (résultat)
Fin

18
Les éléments d’un algorithme
 Fonctions
• Exemple:

Fonction perimetre_rectangle (largeur, longueur : Entier) : Entier


Debut
Retourner (2*(largeur+longueur))
Fin

19
2
Paradigmes classiques et techniques
de conception d’algorithmes
Récursivité
La récursivité
 Définition
• Un algorithme est dit récursif lorsqu’il est défini en fonction de lui-même.

 Principe:
• Une fonction récursive est une fonction qui s'appelle elle-même jusqu’à
Trouver une condition d’arrêt.

21
La récursivité
 Exemple:
Algorithme de la fonction factorielle

Algorithme Fact (n : entier)


Début:
Si n = 0 ou n=1 retourner 1
SINON retourner n * Fact(n-1)
Fin

22
La récursivité
 Exemple: Algorithme de la fonction factorielle

23
Les types de la récursivité
Il y a différents types de récursivité:

 Récursivité simple
 Récursivité multiple
 Récursivité mutuelle
 Récursivité imbriquée

24
La récursivité simple
 Principe
La récursivité simple est basé sur un seul appel de la fonction récursive.

1푠 �=0
Exemple
La fonction puissance définie comme suit : � n =
� × ��_1
l’algorithme correspondant s’écrit:
PUISSANCE (x, n)

Sinon renvoyer � ×PUISSANCE(x, n−1)


Si n = 0 alors renvoyer 1

Exécution: Calcul de 43
4 ×PUISSANCE(4, 2)-> 4×4 ×PUISSANCE(4, 1) -> 4×4×4×PUISSANCE(4, 0)-> 4×4×4×1

25
La récursivité multiple
 Principe
Une définition récursive peut contenir plus d’un appel récursif
Exemple
Le calcul des combinaisons en se servant de la relation de Pascal :

l’algorithme correspondant s’écrit:

COMBINAISON (n, p)
Si p = 0 ou p = n alors renvoyer 1
sinon renvoyer COMBINAISON (n−1, p) + COMBINAISON (n−1, p−1)
26
La récursivité mutuelle
 Principe
Des définitions sont dites mutuellement récursives si elles dépendent les unes
des autres. Ça peut être le cas pour la définition de la parité :

Les algorithmes correspondants s’écrivent:

PAIR (n) IMPAIR (n)


Si n = 0 alors renvoyer vrai Si n = 0 alors renvoyer faux
sinon renvoyer IMPAIR (n−1) sinon renvoyer PAIR (n−1)

27
La récursivité imbriquée
 Principe
Une récursivité imbriquée consiste à faire l’appel de la fonction récursive à
l’intérieur d’un autre appel récursif.

Exemple:
La fonction d’Ackermann

L’algorithme correspondant s’écrit:

ACKERMANN(m, n)
si m = 0 alors n+1
sinon si n = 0 alors ACKERMANN(m−1, 1)
sinon ACKERMANN(m−1, ACKERMANN(m, n−1))
28
La récursivité terminale
 Principe
Un module récursif est dit terminal si aucun traitement n'est effectué à la
remontée d’un appel récursif (sauf le retour du module).

Exemple: reste de la division entière de a par b ( a mod b=(a-b) mod b)


L’algorithme correspondant s’écrit:

Reste (a,b: entier): entier


si a<b alors retourner (a)
Sinon retourner Reste (a-b, b)

29
La récursivité non terminale
 Principe
Un module récursif est dit non terminal si le résultat de l'appel récursif est
utilisé pour réaliser un traitement (en plus du retour du module).

Exemple:
Algorithme de la fonction factorielle

30
Dérécursivation
 Définition
Dérécursiver, c’est transformer un algorithme récursif en un algorithme
équivalent ne contenant pas d’appels récursifs.
Exemple: Algorithme de la fonction factorielle:

Version récursive Version itérative


Algorithme FactRecursif Algorithme FactIteratif
Variable n : entier Factorielle (Variables n : entier): entier
Début: Déclaration F, i: entier
Si n = 0 retourner 1 Début:
SINON retourner n * Fact(n-1) F← 1
Fin Pour i allant de 1 à n faire
F←F*i
Retourner F
Fin

31
Récursif vs Itératif

 Une mise au point


Les programmes itératifs sont souvent plus efficaces, mais les
programmes récursifs sont plus faciles à écrire. Les compilateurs savent, la
plupart du temps, reconnaître les appels récursifs terminaux, et ceux-ci
n’engendrent pas de surcoût par rapport à la version itérative du même
programme. Il est toujours possible de dérécursiver un algorithme récursif.

32
“ Exercice:
1. Ecrivez un algorithme récursif terminal pour la
fonction factorielle

33
Solution

Algorithme FactorielleTerminale
resultat ⟵1
Procédure Facto ( n: entier, Var resultat: entier)
Si (n<=1) retourner resultat
Sinon retourner Facto (n-1, n * resultat);
Fin
Exécution:
Fact(4,1)➝Fact(3,4∗1) ➝ Fact(2, 3 ∗ 4) ➝ Fact(1, 2 ∗12) ➝ Fact(1, 24)

34
2
Paradigmes classiques et techniques
de conception d’algorithmes
Diviser pour Régner
Le paradigme "Diviser pour régner"
 Principe
Diviser pour régner est une méthode algorithmique basée sur le
principe suivant :
• On divise un problème qui est généralement complexe à résoudre en
une multitude de "petits problèmes"
• Les "petits problèmes" seront plus simples à résoudre que le problème
original.
• Une fois les petits problèmes résolus, on recombine les
"petits problèmes résolus" afin d'obtenir la solution du problème de
départ.

36
Le paradigme "Diviser pour régner"
 Etapes
Le paradigme "diviser pour régner" repose donc sur 3 étapes :
 DIVISER : le problème d'origine est divisé en un certain nombre de
sous-problèmes
 RÉGNER : on résout les sous-problèmes (les sous-problèmes sont plus
faciles à résoudre que le problème d'origine)
 COMBINER : les solutions des sous-problèmes sont combinées afin
d'obtenir la solution du problème d'origine.

37
"Diviser pour régner": Tri par fusion
9 7 1 4 3 8

9 7 1 4 3 8

9 7 1 4 3 8

9 7 4 3

7 9 1 3 4 8

1 7 9 3 4 8

1 3 4 7 8 9

38
Le paradigme "Diviser pour régner"
 Algorithme
fonction triFusion(T, debut, fin):
Si debut < fin alors faire
# Trouvez le point milieu pour diviser le tableau en deux moitiés
milieu = (debut+fin)/2
# Appelez triFusion pour la première moitié du tableau:
triFusion(T, debut, milieu)
# Appelez triFusion pour la deuxième moitié du tableau:
triFusion(T, milieu+1, fin)
# Fusionnez les deux moitiés triées
fusion(T, debut, milieu, fin)

39
Le paradigme "Diviser pour régner"
 Algorithme
fonction triFusion(T, debut, fin):
Si debut < fin alors faire
# Trouvez le point milieu pour diviser le tableau en deux moitiés
milieu = (debut+fin)/2
# Appelez triFusion pour la première moitié du tableau:
triFusion(T, debut, milieu)
# Appelez triFusion pour la deuxième moitié du tableau:
triFusion(T, milieu+1, fin)
# Fusionnez les deux moitiés triées
fusion(T, debut, milieu, fin)

40

Vous aimerez peut-être aussi