Télécharger la présentation
1
La pile de crêpes
2
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
3
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
4
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 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
5
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
6
PROGRAMME SUR CALCULATRICE 6
7
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
8
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.
9
Crêpe à ranger: RETOUR RETOUR 1 1 retourné 2 2 non non rangée rangé
Retour vers programme
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.