Les algorithmes avancés

  • 2,658 views
Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,658
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
295
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 1) Tours de Hanoï 2) Tri rapide 3) Huit dames (voir p234-240) 4) Voyageur de commerce (voir livre p226-233) I. Introduction Ce chapitre traite des problèmes un peu plus complexes que les problèmes classiques déjà vus comme de nouvelles méthodes de recherche, de tri, dapproximation ou doptimisation. Les algorithmes avancés utilisent le principe "diviser pour régner (divide to conquer) ". II. Tours de Hanoï1) Activité Charger l’URL : http://www.toupty.com/jeutourshanoi.html Charger l’URL : http://javaboy.free.fr/tourdehanoi/index.htm Ouvrir le fichier C:avancéhanoi.exe2) Principe :Le but du problème est de passer en un minimum de déplacements ces N disques du piquet 1 sur le piquet3 en saidant du piquet 2 qui peut servir à des stockages intermédiaires de disques. Les règles suivantesdoivent être respectées : • on ne peut déplacer quun seul disque à la fois, • un disque peut être déplacé dun des trois piquets sur lun des deux autres, • un disque ne peut être placé que sur le sol ou sur un disque de diamètre supérieur. 1 2 3 1
  • 2. 3) ApplicationEcrire un programme modulaire en PASCAL, qui saisit N disques (1<=N<=64), affiche les déplacementseffectués.  Analyse du programme principal : 2) Résultat = Proc Hanoi (n, 1, 3, 2) 1) N = proc saisie (n)  Analyse de la procédure Hanoi : DEF PROC Hanoi (n, depart, but, inter: entier) Résultat= Hanoi 1) Hanoi =[ ] Si N =1 alors Ecrire (déplacer un disque de ,depart , en , but) sinon Proc hanoi ( n-1, depart, inter, but ) Ecrire (déplacer un disque de , depart , en , but) Proc hanoi ( n-1, inter, but, depart ) Fin Si 2
  • 3. III. Tri rapide1. Activité2. principeC’est un algorithme considéré comme lun des plus rapides, et des plus efficaces. C’est une méthode detri récursive basée sur la méthode de conception "diviser pour régner". L’idée de l’algorithme est très simple ;Etant donné un vecteur d’éléments à trier :1. Choisir un élément arbitraire du tableau, que nous appelons élément pivot.2. Réorganiser les éléments du tableau de sorte que tous les éléments inférieurs au pivot soient à gauchedu pivot, les éléments supérieurs au pivot soient à droite du pivot, ceux qui sont égaux soit à gauche soit àdroite et le pivot choisi entre les deux. Cette opération s’appelle partition.3. Trier récursivement la partie gauche et la partie droite du tableau jusqu’à obtenir uniquement des soustableaux à un seul élément.Comment choisir le pivot ?Nous pouvons choisir comme pivot l’élément situé au milieu de la partie à trier. Comme on peut choisir lepremier élément. 3) ApplicationEcrire un programme modulaire en Pascal qui remplit un vecteur T, par N entiers aléatoirement(-100<=T[i]<=100; 5<=N<=50), le trier selon la méthode de tri rapide puis l’afficher.  Analyse du programme principal : 3) Résultat= Proc affiche (T, n) 2) T= Proc tri_rapide (T, 1, n) 1) (T, n) = Proc remplir (T, n)  Analyse de la procédure Tri_rapide DEF PROC Tri_rapide (var T: Tab; g , d: entier) Résultat = T 1) T= [ ] Si g<d alors proc partition (T, g, d, indpivot) proc tri_rapide (T , g , indpivot-1) proc tri_rapide (T , indpivot+1 , d) Fin Si 3
  • 4.  Analyse de la procédure Partition DEF PROC Partition (var T: Tab; g, d : entier ; var indpivot: entier) 1) T, indpivot= i  g+1 Répéter pivot  T[g] Tant que (i < indpivot) et (t[i] < pivot) Faire indpivot  d ii+1 Fin tant que Tant que (i <=indpivot) et (pivot <= T[indpivot]) Faire indpivot  indpivot - 1 Fin tant que Si i<indpivot alors proc Permut (T[i], T[indpivot]) ii+1 Indpivot  indpivot - 1 Fin si Jusqu’à (indpivot<=i) Proc Permut (T[g], T[indpivot]) 4
  • 5. IV. Huit dames1. Activité 1. Charger le fichier C:avancéhuitdames.exe 2. Fixer le nombre de dames à 4, chercher une distribution possible des dames sur l’échiquier. 3. Charger la page web: http://jellevy.yellis.net/Classes/Activite/recree_8reines.htm 4. Charger la page web: http://www.echecsetmaths.com/echec/prob/8reines/8reines.htm2. Principe Le problème des huit dames (dit aussi problème des huit reines), consiste à placer huit reines d’un jeu d’échecs sur un échiquier de 8x8 cases sans que les dames ne puissent se menacer mutuellement.  Deux dames ne devraient jamais partager la même ligne ou la même colonne ou la même diagonale.3. Constatations Principe du Backtracking Je peux tomber dans un cas de blocage !!! (Retour sur trace)4. Définition Le Backtracking, ou retour sur trace consiste à revenir en arrière sur des décisions prises à fin de sortir d’une situation de blocage.5. Application Tester la solution proposée dans le livre page 239V. Voyageur de commerce 1. Activité Charger l’URL : http://interstices.info/jcms/c_37686/le-probleme-du-voyageur-de-commerce 2. Principe : Étant donné n points (des « villes ») et les distances séparant chaque point, trouver un chemin de longueur totale minimale qui passe exactement une fois par chaque point et revienne au point de départ. 3. Application Tester la solution proposée dans la livre page 231 5