Diviser pour résoudre

Documents pareils
1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Algorithmes récursifs

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

CORRECTION EXERCICES ALGORITHME 1

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Chapitre 7. Récurrences

Calculateur quantique: factorisation des entiers

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Quelques algorithmes simples dont l analyse n est pas si simple

EBS 204 E C B S. Publication : Novembre 96

Structures algébriques

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

C f tracée ci- contre est la représentation graphique d une

Groupe symétrique. Chapitre II. 1 Définitions et généralités

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours de Probabilités et de Statistique

Le théorème de Thalès et sa réciproque

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Licence Sciences et Technologies Examen janvier 2010

Initiation à l algorithmique

Recherche dans un tableau

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Architecture des Systèmes d Information Architecture des Systèmes d Information

Structure fonctionnelle d un SGBD

Initiation à la programmation en Python

CH.6 Propriétés des langages non contextuels

Définitions. Numéro à préciser. (Durée : )

1S Modèles de rédaction Enoncés

ÉPREUVE COMMUNE DE TIPE Partie D

Programmation C++ (débutant)/instructions for, while et do...while

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Programmation linéaire

ARBRES BINAIRES DE RECHERCHE

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Corrigé des TD 1 à 5

Informatique Générale

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Installation de Cisco Unified Call Manager

Activités numériques [13 Points]

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Systemes d'exploitation des ordinateurs

Problèmes de dénombrement.

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Introduction à la théorie des graphes. Solutions des exercices

Compression de Données - Algorithme de Huffman Document de Conception

Chapitre 1 I:\ Soyez courageux!

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Gestion de photos avec Picasa

Représentation d un entier en base b

Quelques Algorithmes simples

L ALGORITHMIQUE. Algorithme

Conventions d écriture et outils de mise au point

Les opérations binaires

Conversion d un entier. Méthode par soustraction

Cryptographie et fonctions à sens unique

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Résolution de systèmes linéaires par des méthodes directes

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

315 et 495 sont dans la table de 5. 5 est un diviseur commun. Leur PGCD n est pas 1. Il ne sont pas premiers entre eux

Algorithmique et programmation : les bases (VBA) Corrigé

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Sauvegarde et restauration d'un système d'exploitation Clonezilla

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Probabilités sur un univers fini

Application 1- VBA : Test de comportements d'investissements

4. Les structures de données statiques

Algorithmes de recherche

Algorithmique, Structures de données et langage C

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Thème 17: Optimisation

Exercices de dénombrement

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Encryptions, compression et partitionnement des données

LES BIBLIOTHEQUES DE WINDOWS 7

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Création de maquette web

Plan. 5 Actualisation. 7 Investissement. 2 Calcul du taux d intérêt 3 Taux équivalent 4 Placement à versements fixes.

Cours Informatique 1. Monsieur SADOUNI Salheddine

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

TEXT MINING von 7

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

Cours d Informatique

Bases de données documentaires et distribuées Cours NFE04

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Examen optimisation Centrale Marseille (2008) et SupGalilee (2008)

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

Travaux Dirigés n 1 : chaînes de caractères

1. Aménagements technologiques 2. Installation de Microsoft SQL Server 2012

Les arbres binaires de recherche

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

PUBLIPOSTAGE DANS WRITER

= constante et cette constante est a.

Rapport financier électronique

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Transcription:

A. Principe général B. Applications. Tri par fusion. Multiplication de grands nombres. Organisation d'un tournoi. Tour de Hanoi C. Recommandations

Principe général Diviser le problème de taille n en sous-problèmes plus petits de manière que la solution de chaque sous-problème facilite la construction du problème entier.(analyse descendante) Division progressive jusqu' a l'obtention d'un sous-problème de taille 1.

Schéma général DPR(x) : Si x est suffisamment petit ou simple :. Retourner A(x) Sinon. Décomposer x en sous exemplaires x1,x2...xk. Pour i=1, k : yi := DPR(xi) Finpour. Retourner les yi pour obtenir une solution à x Retourner y Fsi

Applications 1 : Tri par fusion d'une liste L de n éléments avec n = 2 k. Une technique "diviser pour résoudre" peut être la suivante: Pour trier une liste de n éléments, il faut trier deux listes de n/2 éléments chacune puis de faire l'interclassement entre ces deux listes. De la même façon, pour trier une liste de n/2 éléments il faut trier deux listes de n/4 éléments chacune puis de faire leur interclassement. Et ainsi de suite jusqu'à l'obtention de listes d'un seul élément.

Applications 1 : Tri par fusion d'une liste L de n éléments avec n = 2 k. Énoncé de manière récursive : Tri(L, n) Si n = 1 : Tri := L Sinon Fsi L1 := L [1..n/2] L2 := L [n/2+1..n] Tri := Fusion( Tri(L1, n/2), tri(l2, n/2))

Applications 1 : Tri par fusion d'une liste L de n éléments avec n = 2 k. Équation de récurrence associée : T(n) = a si n =1 = 2T(n/2) +dnsinon Solution O(nLogn).

Applications 1 : Tri par fusion d'une liste L de n éléments avec n = 2 k. Si nous voulons construire une solution non récursive, en remontant dans les appels récursifs, on arrive à l'algorithme de VON-NEUMANN suivant : Ca revient donc à considérer au départ n sous listes de 1 élément, donc triées. Ensuite on fusionne deux à deux, puis quatre en quatre. ect...

Applications 2 : Multiplication des grands entiers X, Y ayant n chiffres binaires.( n suffisamment grand) Une solution " Diviser pour résoudre" de ce problème est de scinder X et Y en deux entiers de n/2 chiffres binaires chacun. Méthode habituelle : O(n 2 ) X = A B Y = C D X = A 2 n/2 + B Y = C 2 n/2 + D

Applications 2 : Multiplication des grands entiers X Y = AC 2 n + (AD + BC)2 n/2 + BD 4 multiplications de n/2 chiffres (AC, AD, BC, BD) 3 additions 2 décalages(multiplication par 2 n et 2 n/2 ) Équation : T(n) = 4T(n/2) + cn T(1) = 1 On peut trouver la solution par substitution ou bien en utilisant la technique des équations différentielles en posant par exemple n = 2 k, ce qui donne l'équation de récurrence T(n) - T(n-1) = cn dont la solution est connue ). Solution T(n) = O(n 2 )

Applications 2 : Multiplication des grands entiers En diminuant le nombre de multiplications, on peut diminuer la complexité. X Y = AC2 n + [ (A-B)(D-C) + AC + BD]2 n/2 + BD 3 multiplications ( AC, BD, (A-B)(D-C) ), 6 additions, 2 décalages Équation : T(n) = 3T(n/2) + cn Solution O(n 1,59 ), avec 1,59 = log 23, ce qui est meilleur. Remarques : Méthode asymptotiquement plus efficace mais beaucoup moins limpide de point de vue pédagogique. Efficace pour les grands nombres( >500 chiffres)

Applications 2 : Multiplication des grands entiers Algorithme récursif: Fonction Mult(X, Y, n) Si n = 1 Si X=1 et Y=1 Retourner(1) Sinon retourner(0) Fsi Sinon A := n/2 premiers bits de X; B := n/2 derniers bits de X C := n/2 premiers bits de Y D := n/2 derniers bits de Y m1 := Mult(A,C, n/2); m2 = Mult(A-B,D-C, n/2) m3 := Mult(B,D, n/2) ; P1 := Décalage(m1, n) P2 := Decalage(m1 + m2 + m3) Retourner(P1 + P2 + m3) Fsi

Applications 2 : Multiplication des grands entiers Remarque : on peut aussi essayer de construire l'algorithme non récursif en remontant dans les appels.

Applications 3 : Organisation d'un tournoi circulaire : Organisation d'un tournoi comprenant n=2 k joueurs ( ou équipe). Chaque joueur doit affronter chaque autre joueur une seule fois à raison d'un match par jour. Donc la durée du tournoi est de (n-1) jours. Pour élaborer une solution pour n joueurs, on essaie d'élaborer une solution pour n/2 joueurs. De la même façon pour élaborer une solution pour n/2 joueurs, on essaie d'élaborer une solution pour n/4. Et ainsi de suite, jusqu'a atteindre 2 joueurs où la solution est triviale.

Applications 3 : Organisation d'un tournoi circulaire : n = 2 1 1! 2 2! 1

Applications 3 : Organisation d'un tournoi circulaire n = 4 = 2 2 1 2 3 1! 2! 3 4 2! 1! 4 3 -------------- 3! 4! 1 2 4! 3! 2 1

Applications 3 : Organisation d'un tournoi circulaire n = 8 = 2 3 1 2 3 4 5 6 7 1! 2 3 4! 5 6 7 8 2! 1 4 3! 6 7 8 5 3! 4 1 2! 7 8 5 6 4! 3 2 1! 8 5 6 7 --------------------------------- 5! 6 7 8! 1 4 3 2 6! 5 8 7! 2 1 4 3 7! 8 5 6! 3 2 1 4 8! 7 6 5! 4 3 2 1

Applications 3 : Organisation d'un tournoi circulaire : Technique : Pour k = 1 ( ou n=2), la construction de la table est triviale. A l'étape k : Partie supérieure gauche : Table de l'étape k-1. Partie inférieure gauche : Ajouter 2 k-1 à chaque élément de la partie supérieure gauche. Partie supérieure droite : Au (k+1)i-ème jour mettre les indices 2 k + 1, 2 k + 2,... Avec permutation circulaire de gauche à droite. Partie inférieure droite : Au (k+1)i-ème jour mettre les indices 1, 2,... Avec permutation circulaire de droite à gauche.

Applications 4 : Tour de Hanoi On dispose de 3 tours A, B et C. Initialement, n disques de diamètres différents sont placés sur A. Un disque plus grand ne doit jamais se trouver sur un disque plus petit. Le problème est de transférer les n disques de A vers C, en utilisant B comme intermédiaire en respectant les deux règles suivantes : à un moment donné, seul le disque au sommet d'un piquet peut être transféré vers un autre. un disque plus grand ne doit pas se trouver sur un disque plus petit.

Applications 4 : Tour de Hanoi Solution récursive simple et élégante. Supposons que nous avons une solution pour n-1 disques. Nous pourrons alors définir une solution pour n disques au moyen de la solution de n-1 disques. n=1 constitue le cas trivial : transférer le disque unique de A vers C. Pour transférer n disques de A vers C, en utilisant B comme auxiliaire, on procède comme suit: 1.Si n=1, alors transférer l'unique disque de A vers C. 2.Transférer les n-1 disques au sommet de A vers B vers C comme auxiliaire. 3.Transférer le disque restant de A vers C. 4.Transférer les n-1 disques de B vers C avec A comme auxiliaire.

Applications 4 : Tour de Hanoi Algorithme : Procedure TourdeHanoi( n : integer; de, vers, aux : char); Si n = 1 { cas trivial } : "transfert du disque 1 de", de, "vers", vers) Sinon { Transférer les n-1 disques au sommet de A vers B avec C comme auxiliaire } TourdeHanoi(n-1, de,aux,vers) { transférer le disque restant de A vers C } "transférer le disque", n,"de",de,"vers", vers) { Transférer les n-1 disques de B vers C, utilisant A comme auxiliaire } TourdeHanoi(n-1, aux, vers, de) Fsi

Applications 4 : Tour de Hanoi Remarque : Si nous voulons construire un algorithme non récursif, en remontant dans les appels, on aboutit à l'algorithme suivant : Imaginons que les piquets sont disposés en triangle. A tous les coups de rang impair, on déplace le plus petit disque sur le piquet suivant dans le sens des aiguilles d'une montre. A tous les coups de rang pair, on effectue le seul déplacement possible permis n'impliquant pas le plus petit disque.

Recommandations Cas général : Découper le problème en sous problèmes. Cas de récursion : Ou bien donner une solution récursive, ou bien descendre jusqu'au cas trivial et en remontant dans l'arbre, on essaie de construire une solution non récursive.

Recommandations : Équilibrer les sous-problèmes Considérer le tri par insertion. On suppose T[1..K] trié et on insère T[K+1] par décalage Tri(L, n) : Si n = 1 : retourner(l) Sinon Retourner(Insère[Tri(n-),T(n)) Fsi Division du problème en deux sous problèmes de taille différente, l'un de taille 1 et l'autre de taille n-1. Équation : T(n) = c si n=1 = T(n-1) + n Ce qui conduit à O(n 2 ) ( inférieur à O(nLog(n) )

Recommandations Le tri par fusion subdivise le problème en deux sous problème de taille n/2. Ce qui donne une complexité égale à O( n Log(n) ). La division d'un problème en sous problème de taille sensiblement égales contribue de manière cruciale à l efficacité de l'algorithme. Minimiser le nombre de sous problèmes