Algorithmique Avancée et Complexité Chap3:Diviser pour Régner

Slides:



Advertisements
Présentations similaires
Algorithmique Avancée II
Advertisements

CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
APPROXIMATION DE PI   : Battre 3,14 ?. LE SUJET Trouver des méthodes permettant de trouver des valeurs approchées de pi les plus fines possibles et.
D.Enselme : VARI-NFP 135 cours n°5 1 Chapitre 5 : conception de programmes Décomposition par raffinements successifs Décomposition itérative Décomposition.
Transformation de Laplace - Mr.Retima Abderaouf - Mr.Ghandjoui abderahmane Université 20 aout 1955 Skikda.
Révision – mathématiques 8
Premier Degré.
Analyse, Classification,Indexation des Données ACID
Les Instructions Itératives (Les Boucles)
Multiplier, diviser des nombres relatifs
Pierre Joli Cours de Mathématique Pierre Joli
A propos des équations... Un premier exemple simpliste :
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Techniques de décomposition
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
L’ algorithme de dichotomie réalisait cela :
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap5: Les méthodes de résolution exactes.
CALCUL MENTAL SÉRIE 2.
VI Graphes probabilistes
Dimitri Zuchowski et Marc-Élie Lapointe
Algorithmiques Abdelbasset KABOU
Information, Calcul, Communication
Programmation Numération Compétences visées Période
Algorithme de Dichotomie
Exercice 2 Soit la série statistique
Simulation des nanostructures à base de nanorubans de graphène
Initiation à la programmation impérative et algorithmique
Algorithme de Dichotomie
Le point de partage d’un segment
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Information, Calcul, Communication
Calcul littéral 2.
Routage S 3 - Questionnaire N°1
Information, Calcul, Communication
Programmation créative – Les vecteurs
Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap7: Les méthodes de résolution exactes.
République Algérienne Démocratique et Populaire Ministère de l'Enseignement Supérieur et de la Recherche Scientifique Université Saad.
C1 – Interpolation et approximation
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Les tableaux.
La méthode du simplexe. 1) Algorithme du simplexe  Cet algorithme permet de déterminer la solution optimale, si elle existe, d’un problème de programmation.
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
1 UMLV  Université de Marne-la-Vallée STRUCTURES DE DONNÉES Maxime CROCHEMORE
Dérivation et intégration
ACP Analyse en Composantes Principales
Royaume de Maroc Université Hassan Premier Settat Faculté des Sciences et Techniques de Settat LA CLASSIFICATION K-MEANS SOUS R /MATLAB Master :Automatique.
OPTIMISATION 1ère année ingénieurs
Algorithmique Avancée et Complexité
Révision – mathématiques 8
Arbres de décision.
2.4 La loi de vitesse d’une réaction chimique
CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I.
Produit vectoriel Montage préparé par : André Ross
Information, Calcul, Communication
l’algorithme du simplexe
CSI 3505 Algorithmes Voraces
Systèmes de deux équations à deux inconnues
RABAH M ed Ali 2018/2019
Recherche de zero d'une fonction MARMAD ANAS MPSI -2.
Encadré par : M. Mohammad EL GHABZOURI Elaboré par : - AZEGAMOUT Mohamed - ABOULKACEM abdelouahed - GOUN Ayoub EXPOSÉ Sous le thème : SER 2018 Parallélisme.
Révision – mathématiques 8
CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I.
Question 1 Développer 5(x + 3).
Encadrée par: - Mr. Abdallah ALAOUI AMINI Réalisée par : -ERAOUI Oumaima -DEKKAR Amal - ES-SAHLY Samira -Houari Mohammed PROGRAMMATION MULTIOBJECTIFS.
Préambule avec l'équation:
Système de Numération : Décimal, Binaire, Octal et Hexadécimal
Codification et représentation de l’information Enseignant: Mahseur mohammed Groupe FB: mi2016ua1 Chaine YT: Cours informatique.
Tableaux : Algorithmes de recherches
Transcription de la présentation:

Algorithmique Avancée et Complexité Chap3:Diviser pour Régner Université Abou Bakr Belkaid Faculté des Sciences Département d’informatique Algorithmique Avancée et Complexité Chap3:Diviser pour Régner RSD -GL 2015-2016 1

Principe Diviser : le problème en un certain nombre de sous-problèmes . Régner : sur les sous-problèmes en les résolvant récursivement , si la taille d’un sous-problème est assez réduite,le résoudre directement ; Combiner : les solutions des sous-problèmes en une solution complète du problème initial. 2

Exemple Algorithme Classique MULTIPLIER-MATRICES(A, B) Soit n la taille des matrices carrés A et B Soit C une matrice carré de taille n Algorithme Classique Pour i =1 à n faire Pour j= 1 à n faire cij:= 0 Pour k =1 à n faire cij:= cij+ aik bkj renvoyer C La complexité de cet algorithme est θ(n3) .

Exemple :multiplication naïve de matrices Algorithme « diviser pour régner » on suppose que n est une puissance exacte de 2. on décompose les matrices A, B et C en sous-matrices de taille n/2*n/2. L’équation C = A*B peut être ecrit: aprés développement de cette équation, nous obtenons : Puisque l’addition des matrices carrés de taille n/2 est Q(n2). 4

Complexité La complexité d’un algorithme « diviser pour régner » se décompose suivant les trois étapes du paradigme de base : 1. Si la taille du problème est suffisamment réduite, n  c pour une certaine constante c, la résolution est directe et consomme un temps constant Q (1) 2. Sinon, on divise le problème en a sous-problèmes chacun de taille 1/b de la taille du problème initial. Le temps d’exécution total se décompose alors en trois parties : (a) D(n) : le temps nécessaire à la division du problème en sous-problèmes. (b) aT(n/b) : le temps de résolution des a sous-problèmes. (c) C(n) : le temps nécessaire pour construire la solution finale à partir des solutions aux sous-problèmes.

Complexité La relation de récurrence prend alors la forme : où l’on interprète n/b soit comme ,soit comme

Complexité

Exemple1 multiplication naïve de matrices a=8,b=2 f(n) =θ(n²) Appliquons le théorème précédent: log ba=3  cas 1 ξ =1  T(n)= θ(n3) donc rien ne change

Exemple1 Donc  meilleur que l’algorithme classique Algorithme de Strassen pour la multiplication de matrices p1 = a(g – h) p2 = (a + b)h p3 = (c + d)e p4 = d(f - e) p5 = (a + d)(e + h) p6 = (b - d)(f + h) p7 = (a - c)(e + g) r = p5 + p4 - p2 + p6 s = p1 + p2 t = p3 + p4 u = p5 + p1-p3 - p7 7 multiplication et 18 addition T(n) = 7T(n/2)+θ(n²). T(n)= θ (nlog27) ~ θ (n2.8 ) Donc  meilleur que l’algorithme classique

Exemple Tri par fusion Principe L’algorithme de tri par fusion est construit suivant le paradigme « diviser pour régner » : 1. Il divise la séquence de n nombres à trier en deux sous-séquences de taille n/2. 2. Il trie récursivement les deux sous-séquences. 3. Il fusionne les deux sous-séquences triées pour produire la séquence complète triée. La récursion termine quand la sous-séquence à trier est de longueur 1 car une telle séquence est toujours triée.

Exemple Tri par fusion Diviser Fusionner

Exemple Tri par fusion FUSIONNER(A, p, q, r) i :=p j :=q+1 Soit C un tableau de taille r- p+1 K:= 1 tant que i≤ q et j ≤ r faire si A[i] < A[ j] alors C[k] :=A[i] i :=i+1 sinon C[k] :=A[ j] J:= j+1 K:= k+1 tant que i ≤ q faire C[k]:= A[i] tant que j ≤ r faire C[k] :=A[ j] j :=j+1 k :=k+1 pour k :=1 à r- p+1 faire A[p+k-1] :=C[k]

Exemple Tri par fusion Étudions les différentes étapes de l’algorithme : – les initialisations ont un coût constant θ(1) ; – la boucle tant que de fusion s’exécute au plus r- q fois, chacune de ses itérations étant de coût constant, d’où un coût total en θ(r-q) ; – les deux boucles tant que complétant C ont une complexité respective au pire de q- p+1 et de r-q, ces deux complexités étant en θ(r- p) ; – la recopie finale coûte θ(r- p+1). Par conséquent, l’algorithme de fusion a une complexité en θ(n)

Complexité Tri par fusion Pour déterminer la formule de récurrence qui nous donnera la complexité de l’algorithme TRI-FUSION, nous étudions les trois phases de cet algorithme « diviser pour régner » : Diviser : cette étape se réduit au calcul du milieu de l’intervalle [p..r] sa complexité est donc en θ(1). Régner : l’algorithme résout récursivement deux sous-problèmes de tailles respectives n/2 Combiner : la complexité de cette étape est celle de l’algorithme de fusion qui est de θ(n) pour la construction d’un tableau solution de taille n.

Complexité Tri par fusion Par conséquent, la complexité du tri par fusion est donnée par la récurrence : Pour déterminer la complexité du tri par fusion, nous utilisons de nouveau le théorème. Ici a=2 et b=2 donc logba =1, et nous nous trouvons dans le deuxième cas du théorème par conséquent :

Complexité Tri par fusion Pour des valeurs de n suffisamment grandes, le tri par fusion avec son temps d’exécution en Q(nlogn)est nettement plus efficace que le tri par insertion dont le temps d’exécution est en Q(n2).

AVANTAGES ET INCONVÉNIENTS L'avantage  résolution des pièces plus réduites du même problème par le même code. dépassement des ressources autorisées. Le temps d'exécution est plus long à cause de sauvegarde et de récupération des tâches sur la pile.