ISN Nice TP algorithmes 2012-2013 1 int recherche_par_balayage
Transcription
ISN Nice TP algorithmes 2012-2013 1 int recherche_par_balayage
ISN Nice TP algorithmes 2012-2013 Objectifs : • • • Etudier plusieurs algorithmes classiques Implémenter certains de ces algorithmes avec un langage de programmation Avoir des notions sur la complexité des algorithmes Logiciel utilisé : JavaScool Consignes : On nommera chacun des programmes demandés selon la nomenclature suivante : TP_{MALHERBE}_Algo_II_b : programme de la question II b) pour l’élève MALHERBE . I Recherche par dichotomie 1) Décrire le principe d’un algorithme de recherche par dichotomie. 2) La proglet JavaScool « Dichotomie » permet de faire une recherche du drapeau d’un pays à partir de son nom. Se documenter sur cette proglet. Utiliser les fonctions length() et compare(pays, index) pour écrire le programme suivant : • Ecrire une fonction qui effectue la recherche d’un pays donné par une méthode de balayage et retourne le nombre de pages feuilletées du livre. int recherche_par_balayage(String pays) • Ecrire une fonction qui effectue la recherche d’un pays donné par une méthode de dichotomie et retourne le nombre de pages feuilletées du livre. int recherche_par_dichotomie(String pays) 3) Notion de complexité : a) Combien d’étapes maximum le programme par balayage effectue-t-il ? b) Même question pour le programme par dichotomie. c) Si la taille de l’échantillon à analyser est N, quel est le nombre maximum d’étapes pour l’algorithme de balayage et pour celui de dichotomie. d) Pour aller plus loin : (question bonus) Ecrire un programme qui détermine le nombre moyen d’étapes pour rechercher un entier compris entre 1 et N avec les deux méthodes (balayage et dichotomie). Tester ce programme pour N = 10, 100, 1000, 10 000 et 100 000. Représenter les résultats avec un tableur sous la forme d’un nuage de points avec en abscisse une échelle logarithmique pour N. (On sauvegardera le fichier du tableur.) 1 ISN Nice TP algorithmes 2012-2013 II Algorithmes de tri Un algorithme de tri permet de trier des données numériques ou alphabétiques. Nous traiterons des données numériques stockées dans un tableau à une dimension. 1) a) Proposer une idée d’algorithme de tri avec la possibilité d’utiliser un ou plusieurs autres tableaux (dont un contiendra les données triées). b) Coder cet algorithme avec JavaScool et le tester c) Montrer que si la taille du tableau est n alors le nombre de boucles effectuées est n(n + 1) . 2 2) Notion de tri en place. Il est possible de trier les données à partir d’un seul tableau. On dit alors qu’on effectue un tri sur place. Il existe plusieurs algorithmes de tri en place qui ont des efficacités différentes. Nous allons en étudier plusieurs. 3) Tri par insertion Le tri par insertion est un algorithme de tri classique dont le principe est très simple. C'est le tri que la plupart des personnes utilisent naturellement pour trier des cartes : prendre les cartes mélangées une à une sur la table, et former une main en insérant chaque carte à sa place. Voici un algorithme de tri par insertion en pseudo-code : procédure tri_insertion(tableau T, entier n) pour i de 1 à n-1 x ← T[i] j ← i tant que j > 0 et T[j - 1] > x T[j] ← T[j - 1] j ← j - 1 fin tant que T[j] ← x fin pour fin procédure Les éléments du tableau T sont numérotés de 0 à n – 1. 2 ISN Nice TP algorithmes 2012-2013 a) Le faire tourner « à la main » pour T = {2 ;5 ;8 ;3} en complétant le tableau suivant : i Tableau T avant l’itération sur i Tableau T après l’itération sur i 1 2 3 b) Coder cet algorithme en Java et le tester avec différents jeux de tests. c) Complexité : • • Quel est le tableau en entrée qui présente le cas le plus favorable en termes de nombre de boucles effectuées ? Quel est le tableau en entrée qui présente le cas le plus défavorable en termes de nombre de boucles effectuées ? On montre (avec des maths !!) qu’en moyenne le nombre de boucles effectuées pour n² un tableau de taille n est . 4 4) Des algorithmes de tri plus efficaces Rechercher sur Internet des informations sur les algorithmes suivants : • • • • Tri à bulles (bubble sort) Tri par sélection (selection sort) Tri fusion (merge sort) Tri rapide (quick sort) On pourra visualiser graphiquement le principe de ces algorithmes de tri sur le site WEB suivant : http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html 3 ISN Nice TP algorithmes 2012-2013 5) Complexité des algorithmes de tri a) Se renseigner sur Internet pour compléter le tableau suivant : Méthode de tri Complexité en moyenne pour un tableau de taille N. Tri par insertion Tri par sélection Tri à bulles Tri fusion Tri rapide a) A l’aide d’un tableur, présenter à l’aide d’un graphique en nuage des points la complexité de ces différents algorithmes de tri en fonction de la taille N du tableau à trier pour N = 16, 64, 256, 1024 et 4096. (On sauvegardera le fichier du tableur.) On utilisera deux graphiques : • • Un avec une échelle logarithmique en base 2 pour l’axe des abscisses uniquement Un autre avec deux échelles logarithmiques en base 2 pour les deux axes. b) Conclusion : classer les algorithmes de tri par ordre croissant de leur complexité moyenne. 4