Problème de 8 reines Sachant que dans un jeu d'échecs, une dame peut pendre toute pièce se trouvant sur la même colonne ou sur la même ligne ou sur une.

Slides:



Advertisements
Présentations similaires
Échanger, sʼexprimer en ligne
Advertisements

Portail Sdin Méthodes pour la contribution du portail SDIN Mars 2013.
Créer un lien 1-Sélectionner le texte 2-Choisir l'outil « lien »
Explorer un espace d’états
Tris.
Chapitre annexe. Récursivité
Réservation des courts couverts
Initiation à la programmation et algorithmique cours 2
Algorithmes et structures de données avancées Cours 6 Patrick Reuter
Algorithmes et structures de données avancés
Portée des variables VBA & Excel
DECLARATION DE VARIABLES
But de lexercice 3.1 PREPARER UN ALGORITHME QUI EFFECTUE DEUX TACHES IMPORTANTES : PREMIERE TACHE : Grâce à la fonction aléatoire, un nombre compris entre.
Les Algorithmes de tri.
3- Déclaration et accès aux objets
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Applications sur les algorithmes récurrents avec Les Matrices
Cours d’Algorithmique
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
Diffusion Nationale TOULOUSE -Avril 2006 STS Web Services libres Créer un service libre.
Séminaire Florin Périer Alain Gély LIMOS
Paramètres et pointeurs
La fonction Style Permet de créer des types de texte, par exemple
le nom du logiciel et le nom du fichier s’appelle la barre des titres
5. Les structures répétitives
Section VIII Modularité Partie II
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Programmes de calculs en 3ème
Utilisation des tableaux
Firebug Dévermineur Debugger.
Simulation Commande WEB
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
La structure conditionnelle simple
Récursivité.
Heuristiques A. Introduction B. Recherche d ’une branche
Projet informatique : optimisation du déplacement d’un robot
Pr ZEGOUR Djamel Eddine
Les structure d’un programme :
FICHIERS : Définition : Algorithme général:
Algorithme de Bellman-Ford
Code des opérateurs Appartenance à une liste ( appartient_l ) –Prototype: Bool appartient_l(type_el x, liste L) –Pré-conditions: aucunes. –Post-conditions:
Une nouvelle structure de données : les tableaux
Programmation dynamique
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-10541
Exploration systématique de graphes
Traitements Donne accès  Aux bordereaux de remises en banque  Aux remises d'espèces en banque  Calcul des commissions de CB  À la gestion des écritures.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Réaliser par : Moh Fakhri Slama
Fabienne BUSSAC CALCUL LITTÉRAL – INITIATION AU TABLEUR 1. DÉFINITION
Chapitre 6 Les traitements avancés
5 – Application: gestion de polynômes
Algorithmes de tri et de recherche
Thème 2 : Les personnes et les choses de son environnement
Programmation linéaire en nombres entiers
Thème 2 : Les personnes et les choses de son environnement
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
TABLEAUX CROISES.
Thème 4 : Les éléments naturels. Cours 2 : L’eau dans la nature et chez les êtres vivants. Français Guide du Maître Thème 3 : Localiser un endroit et le.
Dr. MOKEDDEM République Algérienne Démocratique et Populaire
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Algorithmique Tableaux de données
compléter la feuille de contrôle des libéros R6-F DIRECTIVESpour 2015CCA1.
Les Structures simples
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
Résolutions et réponses
Projet Théorie des graphes
Utilisation de la plateforme DomoLeaf en mode Démo 1.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Problème de 8 reines Sachant que dans un jeu d'échecs, une dame peut pendre toute pièce se trouvant sur la même colonne ou sur la même ligne ou sur une même diagonale de la case qu’elle occupe, le problème consiste à trouver toutes les solutions possibles pour placer 8 dames sur un échiquier sans qu’aucune dame ne peut prendre une autre comme dans l'exemple ci-contre 11/04/2017

Indications Sur une ligne i, on ne peut placer qu'une et une seule dame dans une case libre. Pour qu'une case soit libre il faut qu'aucune dame parmi celles déjà placées ne soit sur la même colonne ou sur une même diagonale. Deux case (L1, C1) et (L2, C2) appartiennent à une même colonne si C1 = C2. Deux cases (L1, C1) et (L2, C2) appartiennent à une même diagonale si abs(L1 –L2) = abs(C1-C2) 1 D 2 3 4 5 6 7 8 D Exemple Pour la case (5, 4), les cases appartenant à la même diagonale droite sont : (4, 5) (3, 6) (2, 7) et (1, 8)

Abs(5 - 4) = abs(4 - 5) Abs(5 - 3) = abs(4 - 6) Abs(5 - 2) = abs(4 - 7) Abs(5 - 1) = abs(4 – 8) Les cases appartenant à la même diagonale gauche de la case (5, 4) sont : (4, 3) (3, 2) (2, 1) 1 D 2 3 4 5 6 7 8 Abs(5 - 4) = abs(4 - 3) Abs(5 - 3) = abs(4 - 2) Abs(5 - 2) = abs(4 –1) Pour vérifier si une case (L, C) est libre ou non, il faut voir est ce la colonne C a été occupée ou non dans les lignes de 1 à L -1. Même chose pour le deux diagonale. Pour cela un tableau de 8 cases est largement suffisant . Le numéro d'un élément représente le numéro de la ligne à remplir et le contenu de l'élément représente le numéro de la colonne ou a été placée la dame. D Exemple 1 3 5 2 4 6 7 8 Remplissage de la ligne 5 11/04/2017

Pour la ligne 5 nous remarquons que : La colonne 1 est occupée par la ligne 1 La colonne 2 est occupée par la ligne 4 La colonne 3 est occupée par la ligne 2 La colonne 4 est libre Remarques Pour rechercher toutes les solutions possibles nous devons fixer des points de retour que ce soit pour rechercher une autre solution si on a trouvé une ou pour choisir un autre chemin si celui choisi ne mène pas à une solution. Et ça sera la tache de la récursivité. Donc pour chaque ligne nous devons faire un parcours complet de toutes les colonnes si on a trouvé une case libre, on passe à la ligne suivante car la récursivité va le fixer pour y revenir par la suite ceci tant qu'on n'a pas atteint la 8ème ligne. Si la 8ème ligne est remplit, on affiche la solution. Vue que le nombre de solutions est important (92) ainsi que le nombre d'essais à faire, l'affichage ne peut pas se faire à la fin mais doit se faire au fur et à mesure après avoir trouvé chaque solution. Pour cela nous utiliserons une procédure récursive PLACER_DAMES qui cherche les solutions en plaçant les dames une à une sur l'échiquier . Lorsqu'elle trouve une solution elle l'affiche. 11/04/2017& Diapositive 4

Analyse du programme principal La procédure doit commencer par placer la première dame puis elle continu à placer les autres dames une à une. Analyse du programme principal Résultat = Proc Placer_dames (T, 1) Fin T.D.O. Globaux Objet Type/Nature T Placer_Dames TAB Procédure T.D.N. T Type TAB = tableau de 8 octets 11/04/2017 Diapositive 5

Analyse de la procédure Placer_Dames DEF PROC Placer_Dames (VAR T : TAB ; i : Entier ) Résultat = Il faut faire un parcours complet pour fixer des points de retour nécessaire à la recherche d'autres solutions. 1 [ ] SI i < = 8 Alors Pour j de 1 à 8 Faire SI FN LIBRE (T, i, j) ALORS T[i]  j Proc Placer_dames (T, i+ 1) Fin SI Fin Pour SINON Proc Affiche_Solution (T, i-1) FIN SI 2 Fin Placer_Dames T.D.O. locaux à Placer_dames Objet Type/Nature j Affiche_Solution LIBRE Entier Procédure Fonction 11/04/2017 Diapositive 6

Analyse de la fonction LIBRE DEF FN LIBRE (T : TAB ; L , C : Entier) : Booléen Résultat = LIBRE  R 1 R = [ R VRAI] Pour i de 1 à L – 1 Faire SI (T[i] = C) OU (ABS(L – i) = ABS(C – T[i])) ALORS R  FAUX Fin SI FIN POUR LIBRE  R 2 Fin LIBRE T.D.O. locaux à LIBRE Objet Type/Nature i R Entier Booléen 11/04/2017 Diapositive 7

خــيب الله ضن من خــيب ضني Analyse de la procédure Affiche_Solution DEF PROC Affiche_Solution (T : TAB ; N : Entier) Résultat = 1 Pour i de 1 à n Faire Pour j de 1 à n Faire SI T[i] = j Alors Ecrire(" R ") SINON Ecrire (" ") Fin SI Fin Pour EcrireNL خــيب الله ضن من خــيب ضني 2 Fin Affiche_Solution T.D.O. locaux à Affiche_Solution Objet Type/Nature i, j Entier 3 1 7 5 8 2 4 6 11/04/2017 Diapositive 8

Traduction en Pascal 11/04/2017 Diapositive 9

Problème du voyageur de commerce 1) Présentation (voir page 226) La stratégie de la solution est donc : à partir de la ville en cours on cherche la ville la plus proche qui n'est pas encore visitée. Cette stratégie va donner une solution mais pas la meilleure. EXEMPLE 1 2 3 4 5 Villes V1 V2 V3 V4 V5 Pour n = 5 et Ville de départ = V3 Le Chemin est : V3-V4-V2-V1-V5-V3 Remarques D(V1, V2) = D(V2, V1) donc éviter la saisie de la même distance deux fois comme dans la solution du livre 2) D(V1, V1) = 0 donc c'est inutile de lui faire la saisie D 1 2 3 4 5 20 10 50 30 25 40 15 11/04/2017 Diapositive 10

Sujet 1 11/04/2017 Diapositive 11