La pile de crêpes.

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Explorer un espace d’états
Tris.
PoBot – Club de Robotique de Sophia Antipolis – La vision sur un robot Afin de pouvoir se déplacer correctement et savoir où aller,
DECLARATION DE VARIABLES
GEF 435 Principes des systèmes d’exploitation
Les Algorithmes de tri.
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.
(Classes prédéfinies – API Java)
Les nouveaux programmes de seconde
5. Les structures répétitives
8. Les tableaux P. Costamagna – ISEN N1.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
12 novembre 2012 Grégory Petit
Par Clément en vacances sur la Côte d’Azur Le 15 Avril 2012
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
Utilisation des tableaux
La Kessamo « » (Caisse à mots)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Créer une animation simple Gif avec ImageReady.
Algorithmique et Programmation
Collège Pierre-Auguste Renoir Ferrières-en-Gâtinais
Quelques algorithmes sur calculatrices
Le codage des nombres en informatique
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Les structure d’un programme :
Algorithme de Bellman-Ford
Ensembles Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et ajout d’éléments d’un ensemble. Fonctions permettant de manipuler.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Algorithmes d ’approximation
Recherche Opérationnelle
Module 2 : Préparation de l'analyse des performances du serveur
Chapitre 9 Les sous-programmes.
COLLÈGE BOURGET         Titre du laboratoire souligné         Par: Nom 1 Nom 2 Nom 3 20_         Travail présenté à: Mme Bussières Sciences et technologies.
Structures de données IFT-2000
Pour le chemin le plus court pour tous les couples
L’essentiel du langage C
Dans la barre des messages, cliquez sur Activer la modification,
Algorithmes de tri et de recherche
Un survol du language C.
La Kessamo « » (Caisse à mots)
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.
Cours LCS N°4 Présenté par Mr: LALLALI
Cours D’arbitre regional.
1. Ook Christophe Delagarde, septembre 1999 I.U.T., Université de la Méditerrainée 2.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Réalisation d’un logiciel de Chiffrement RSA.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Chapitre 4 La représentation des nombres.
Algorithmique Tableaux de données
Définition Un algorithme est l’énoncé d’une séquence d’actions primitives réalisant un traitement pouvant être exécuté par un processeur bien défini dans.
Utilisation des formules de base
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmique Boucles et Itérations
Guide d’Étude des Modes de Marche et d’Arrêt.
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
ECHANTILLONAGE ET ESTIMATION
Ajouter plusieurs fichiers sur la même section. Pour l’instant ces fichiers ne sont affectés à aucun groupe. Ils portent juste le nom que vous leur avez.
TD N°5: Une GPAO pour l’usine Odyssée. Lancement du logiciel Logiciel « Usine Odyssée 7 » disponible dans … Entrer votre nom et un nom d’entreprise de.
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.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Transcription de la présentation:

La pile de crêpes

1 3 2 1 3 4 4 2 Le sujet est le rangement d’un pile de crêpes de la plus petite à la plus grande avec une seule opération permise : couper la pile en deux et retourner la partie du dessus. Ce problème vient d’une question d’optimisation de traitement de données sur un ordinateur. J’ai commencé par une l’étude de différentes méthodes de rangement manuel puis j’ai crée un programme capable de ranger les crêpes selon la méthode imposée. 1 3 2 1 3 4 4 2 1 étape=1coupe+1retournement 2

Première méthode: crêpe après crêpe 2 4 3 1 4 2 3 1 1 3 2 4 3 1 2 4 2 1 3 4 1 2 3 4 Pour ranger une crêpe, il faut couper le tas juste en dessous pour remonter la crêpe au sommet puis retourner toute la partie qui n’est pas encore rangée. On répète ces opération jusqu’à ce que la totalité de la liste soit rangée. Dans le pire des cas, il faut faire passer toutes les crêpes en haut de la pile puis les redescendre à leur place sauf les deux dernières qu’il faut juste inverser. Il faut donc, pour n le nombre de crêpes, au maximum 2n-3 étapes. 3

Configurations longues Ce sont les configurations qui nécessitent un maximum d’étapes de rangement. Nombre de crêpes Possibilités de départ Configurations longues Pourcentage de configurations longues 1 100,000 2 50,000 3 6 16,667 4 24 8,333 5 120 5,000 720 3,333 7 5040 2,381 8 40320 1,786 9 362880 1,389 10 3628800 1,111 L’opération étant répétée pour chaque crêpe, le nombre de configurations longues peut s’obtenir par le calcul : (n-2)x(n-3)x(n-4)x…x1. Les configurations longues ont quelques caractères remarquables : -Aucune des deux plus grandes crêpes n’est en bas de la pile. -La plus grande crêpes n’est jamais en haut de la pile. -Les premières crêpes à ranger ne sont jamais groupées et dans l’ordre. On peut placer chaque crêpe entre sa place d’origine et la première place. Il y a donc, pour n le numéro de la crêpe, n-2 possibilités. On peut produire des configurations longues en dérangeant une pile : on passe chaque crêpe, de la plus petite à la plus grande, au sommet de la pile puis ailleurs qu’à sa place. 4

Deuxième méthode: rangement par blocs 2 4 3 1 3 4 2 1 4 3 2 1 1 2 3 4 -Cette méthode est souvent plus rapide que la première même si ce n’est pas toujours le cas. -Elle est plus compliquée que la première car elle nécessite d’avoir l’œil si on range la pile manuellement ou un programme capable de détecter les opérations à faire. -Elle consiste à former un ou plusieurs groupes de crêpes classées puis à les place. 5

PROGRAMME SUR CALCULATRICE 6

Cliquez pour l’explication du programme retour :Input «CREPES» ,L1 :dim(L1)→C Fin du rangement. Si P n’est pas rangé, alors le faire passer au sommet de la pile puis le redescendre à sa place. Afficher le nombre d’étapes nécessaires pour ranger cette liste manuellement. Début du rangement, à chaque tour de cette boucle une crêpe supplémentaire est rangée. Initialisation de N, indice permettant de naviguer dans la liste. Définir la taille de la liste qui correspond au nombre de crêpes à ranger. On appelle ce nombre C. :max(L1) P Ajouter une étape au compteur. Vérification que P n’est pas encore à sa place, au sommet de la partie de la liste qui est déjà rangée. Recherche de la crêpe suivante à ranger. On enlève 1 à P, puis on cherche ce nombre dans la liste. S’il n’y est pas on recommence jusqu'à trouver le P à ranger suivant. Initialisation de E, il correspond au nombre d’étapes nécessaires pour ranger la pile manuellement avec cette méthode. Recherche de la position de P , la crêpe à ranger, dans la liste. Demande de la pile de crêpes à ranger. Elles sont représentées par des nombres entiers mis dans la liste L1. Fin de la boucle principale. Afficher la liste pour montrer les modifications. Il y a une crêpe de moins à ranger soit parce qu’elle était déjà rangée, soit parce qu’elle vient d’être rangée. Trouver la plus grande crêpe (le plus grand nombre de la liste L1). C’est elle que l’on va ranger en premier. :0→E Pause pour analyser les résultats. :While C>0 :1→N :While L1(N)<P :N+1→N :End :If L1(C)≠P :Then :Prgm RETOUR :C→N :E+1→E :Disp “CREPES”, L1 :End :C-1→C :While L1(N)≠P et P>0 :C→N :P-1→P :While N>1 et L1(N)≠P :N-1→N :End Cliquez pour l’explication du programme retour :Pause :End :Disp “ETAPES”, E

Nombre d’étapes maximal A propos du programme Nombre d’étapes maximal Pour n le nombre de crêpes et p la somme des écarts de valeur entre les crêpes il faut au maximum 6+((n-3)*(1.5n+7+p*(1+c/2))). Fin La valeur de C, nombre de crêpes à ranger, diminue forcement de 1 à chaque tour donc le programme s’arrête toujours après un nombre de tour égal au nombre e de crêpes.

Crêpe à ranger: RETOUR RETOUR 1 1 retourné 2 2 non non rangée rangé Retour vers programme