diff --git a/lessons/contenu_cours_struct_pile.md b/lessons/contenu_cours_struct_pile.md new file mode 100644 index 0000000000000000000000000000000000000000..95633cf60980852edbcaa2d2e84fbbec1e7e2b9a --- /dev/null +++ b/lessons/contenu_cours_struct_pile.md @@ -0,0 +1,35 @@ +# Algorithmes et structures de données + +# Structure de piles + +***** + +## 1. Définition +Une pile est une structure de données dans laquelle la dernière information entrée, est la première à ressortir (en anglais : LIFO, Last In First Out) + +On envisage deux types d'implémentation de piles: + +1. l'une à capacité limitée (piles dénommées statiques); +2. l'autre à capacité « infinie » (piles dénommées dynamiques dont la capacité limite dépend en réalité de la mémoire disponible). + +## 2. Spécification de la structure +Le type des éléments qu'on empile, n'étant pas précisé, on parle de spécification générique. + +Les opérations possibles sur une pile en définissent l'interface : + +* Opérations de manipulation + * Empiler un nouvel élément sur la pile + * Dépiler l'élément au sommet de la pile (i.e. le dernier élément introduit) + +* Fonctions de consultation + * Lire l'élément au sommet de la pile + * Tester si la pile est vide + * Tester si la pile a atteint la capacité maximale, seulement dans le cas d'une pile statique + * L'interface de la pile est l'ensemble des fonctionnalités offertes à l'utilisateur pour interagir avec une pile + +## 3. Quelques applications des piles +* Gérer les mécanismes internes de mise en œuvre de la récursivité +* Traiter les structures imbriquées +* Implémenter les machines abstraites +* Passer les paramètres aux procédures +* Sauver l'état d'un processus \ No newline at end of file diff --git a/lessons/tris/figures/stack_sort_expl.eps b/lessons/tris/figures/stack_sort_expl.eps new file mode 100644 index 0000000000000000000000000000000000000000..c3725d45cbb7fb6794306affe8771b1c57b73bdd --- /dev/null +++ b/lessons/tris/figures/stack_sort_expl.eps @@ -0,0 +1,447 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: exemple.fig +%%Creator: fig2dev Version 3.2 Patchlevel 4 +%%CreationDate: Fri Jan 27 14:34:17 2006 +%%For: lazeyras@eig2 (LAZEYRAS Michel - EIG prof) +%%BoundingBox: 0 0 470 325 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 325 moveto 0 0 lineto 470 0 lineto 470 325 lineto closepath clip newpath +-35.3 342.0 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06000 0.06000 sc +% +% Fig objects follow +% +% +% here starts figure with depth 50 +% Polyline +7.500 slw +n 600 2400 m 1200 2400 l 1200 2100 l 600 2100 l + cp gs col0 s gr +% Polyline +n 600 2100 m 1200 2100 l 1200 1800 l 600 1800 l + cp gs col0 s gr +% Polyline +n 600 1800 m 1200 1800 l 1200 1500 l 600 1500 l + cp gs col0 s gr +% Polyline +n 600 1500 m 1200 1500 l 1200 1200 l 600 1200 l + cp gs col0 s gr +% Polyline +n 600 1200 m 1200 1200 l 1200 900 l 600 900 l + cp gs col0 s gr +% Polyline +n 600 900 m 1200 900 l 1200 600 l 600 600 l + cp gs col0 s gr +% Polyline +n 600 600 m 1200 600 l 1200 300 l 600 300 l + cp gs col0 s gr +% Polyline +n 1800 2400 m 2400 2400 l 2400 2100 l 1800 2100 l + cp gs col0 s gr +% Polyline +n 1800 2100 m 2400 2100 l 2400 1800 l 1800 1800 l + cp gs col0 s gr +% Polyline +n 1800 1800 m 2400 1800 l 2400 1500 l 1800 1500 l + cp gs col0 s gr +% Polyline +n 1800 1500 m 2400 1500 l 2400 1200 l 1800 1200 l + cp gs col0 s gr +% Polyline +n 1800 1200 m 2400 1200 l 2400 900 l 1800 900 l + cp gs col0 s gr +% Polyline +n 1800 900 m 2400 900 l 2400 600 l 1800 600 l + cp gs col0 s gr +% Polyline +n 1800 600 m 2400 600 l 2400 300 l 1800 300 l + cp gs col0 s gr +% Polyline +n 600 2400 m + 2400 2400 l gs col0 s gr +% Polyline +n 3600 2400 m 4200 2400 l 4200 2100 l 3600 2100 l + cp gs col0 s gr +% Polyline +n 3600 2100 m 4200 2100 l 4200 1800 l 3600 1800 l + cp gs col0 s gr +% Polyline +n 3600 1800 m 4200 1800 l 4200 1500 l 3600 1500 l + cp gs col0 s gr +% Polyline +n 3600 1500 m 4200 1500 l 4200 1200 l 3600 1200 l + cp gs col0 s gr +% Polyline +n 3600 1200 m 4200 1200 l 4200 900 l 3600 900 l + cp gs col0 s gr +% Polyline +n 3600 900 m 4200 900 l 4200 600 l 3600 600 l + cp gs col0 s gr +% Polyline +n 3600 600 m 4200 600 l 4200 300 l 3600 300 l + cp gs col0 s gr +% Polyline +n 4800 2400 m 5400 2400 l 5400 2100 l 4800 2100 l + cp gs col0 s gr +% Polyline +n 4800 2100 m 5400 2100 l 5400 1800 l 4800 1800 l + cp gs col0 s gr +% Polyline +n 4800 1800 m 5400 1800 l 5400 1500 l 4800 1500 l + cp gs col0 s gr +% Polyline +n 4800 1500 m 5400 1500 l 5400 1200 l 4800 1200 l + cp gs col0 s gr +% Polyline +n 4800 1200 m 5400 1200 l 5400 900 l 4800 900 l + cp gs col0 s gr +% Polyline +n 4800 900 m 5400 900 l 5400 600 l 4800 600 l + cp gs col0 s gr +% Polyline +n 4800 600 m 5400 600 l 5400 300 l 4800 300 l + cp gs col0 s gr +% Polyline +n 3600 2400 m + 5400 2400 l gs col0 s gr +% Polyline +n 6600 2400 m 7200 2400 l 7200 2100 l 6600 2100 l + cp gs col0 s gr +% Polyline +n 6600 2100 m 7200 2100 l 7200 1800 l 6600 1800 l + cp gs col0 s gr +% Polyline +n 6600 1800 m 7200 1800 l 7200 1500 l 6600 1500 l + cp gs col0 s gr +% Polyline +n 6600 1500 m 7200 1500 l 7200 1200 l 6600 1200 l + cp gs col0 s gr +% Polyline +n 6600 1200 m 7200 1200 l 7200 900 l 6600 900 l + cp gs col0 s gr +% Polyline +n 6600 900 m 7200 900 l 7200 600 l 6600 600 l + cp gs col0 s gr +% Polyline +n 6600 600 m 7200 600 l 7200 300 l 6600 300 l + cp gs col0 s gr +% Polyline +n 7800 2400 m 8400 2400 l 8400 2100 l 7800 2100 l + cp gs col0 s gr +% Polyline +n 7800 2100 m 8400 2100 l 8400 1800 l 7800 1800 l + cp gs col0 s gr +% Polyline +n 7800 1800 m 8400 1800 l 8400 1500 l 7800 1500 l + cp gs col0 s gr +% Polyline +n 7800 1500 m 8400 1500 l 8400 1200 l 7800 1200 l + cp gs col0 s gr +% Polyline +n 7800 1200 m 8400 1200 l 8400 900 l 7800 900 l + cp gs col0 s gr +% Polyline +n 7800 900 m 8400 900 l 8400 600 l 7800 600 l + cp gs col0 s gr +% Polyline +n 7800 600 m 8400 600 l 8400 300 l 7800 300 l + cp gs col0 s gr +% Polyline +n 6600 2400 m + 8400 2400 l gs col0 s gr +% Polyline +n 600 5400 m 1200 5400 l 1200 5100 l 600 5100 l + cp gs col0 s gr +% Polyline +n 600 5100 m 1200 5100 l 1200 4800 l 600 4800 l + cp gs col0 s gr +% Polyline +n 600 4800 m 1200 4800 l 1200 4500 l 600 4500 l + cp gs col0 s gr +% Polyline +n 600 4500 m 1200 4500 l 1200 4200 l 600 4200 l + cp gs col0 s gr +% Polyline +n 600 4200 m 1200 4200 l 1200 3900 l 600 3900 l + cp gs col0 s gr +% Polyline +n 600 3900 m 1200 3900 l 1200 3600 l 600 3600 l + cp gs col0 s gr +% Polyline +n 600 3600 m 1200 3600 l 1200 3300 l 600 3300 l + cp gs col0 s gr +% Polyline +n 1800 5400 m 2400 5400 l 2400 5100 l 1800 5100 l + cp gs col0 s gr +% Polyline +n 1800 5100 m 2400 5100 l 2400 4800 l 1800 4800 l + cp gs col0 s gr +% Polyline +n 1800 4800 m 2400 4800 l 2400 4500 l 1800 4500 l + cp gs col0 s gr +% Polyline +n 1800 4500 m 2400 4500 l 2400 4200 l 1800 4200 l + cp gs col0 s gr +% Polyline +n 1800 4200 m 2400 4200 l 2400 3900 l 1800 3900 l + cp gs col0 s gr +% Polyline +n 1800 3900 m 2400 3900 l 2400 3600 l 1800 3600 l + cp gs col0 s gr +% Polyline +n 1800 3600 m 2400 3600 l 2400 3300 l 1800 3300 l + cp gs col0 s gr +% Polyline +n 600 5400 m + 2400 5400 l gs col0 s gr +% Polyline +n 3600 5400 m 4200 5400 l 4200 5100 l 3600 5100 l + cp gs col0 s gr +% Polyline +n 3600 5100 m 4200 5100 l 4200 4800 l 3600 4800 l + cp gs col0 s gr +% Polyline +n 3600 4800 m 4200 4800 l 4200 4500 l 3600 4500 l + cp gs col0 s gr +% Polyline +n 3600 4500 m 4200 4500 l 4200 4200 l 3600 4200 l + cp gs col0 s gr +% Polyline +n 3600 4200 m 4200 4200 l 4200 3900 l 3600 3900 l + cp gs col0 s gr +% Polyline +n 3600 3900 m 4200 3900 l 4200 3600 l 3600 3600 l + cp gs col0 s gr +% Polyline +n 3600 3600 m 4200 3600 l 4200 3300 l 3600 3300 l + cp gs col0 s gr +% Polyline +n 4800 5400 m 5400 5400 l 5400 5100 l 4800 5100 l + cp gs col0 s gr +% Polyline +n 4800 5100 m 5400 5100 l 5400 4800 l 4800 4800 l + cp gs col0 s gr +% Polyline +n 4800 4800 m 5400 4800 l 5400 4500 l 4800 4500 l + cp gs col0 s gr +% Polyline +n 4800 4500 m 5400 4500 l 5400 4200 l 4800 4200 l + cp gs col0 s gr +% Polyline +n 4800 4200 m 5400 4200 l 5400 3900 l 4800 3900 l + cp gs col0 s gr +% Polyline +n 4800 3900 m 5400 3900 l 5400 3600 l 4800 3600 l + cp gs col0 s gr +% Polyline +n 4800 3600 m 5400 3600 l 5400 3300 l 4800 3300 l + cp gs col0 s gr +% Polyline +n 3600 5400 m + 5400 5400 l gs col0 s gr +% Polyline +n 6600 5400 m 7200 5400 l 7200 5100 l 6600 5100 l + cp gs col0 s gr +% Polyline +n 6600 5100 m 7200 5100 l 7200 4800 l 6600 4800 l + cp gs col0 s gr +% Polyline +n 6600 4800 m 7200 4800 l 7200 4500 l 6600 4500 l + cp gs col0 s gr +% Polyline +n 6600 4500 m 7200 4500 l 7200 4200 l 6600 4200 l + cp gs col0 s gr +% Polyline +n 6600 4200 m 7200 4200 l 7200 3900 l 6600 3900 l + cp gs col0 s gr +% Polyline +n 6600 3900 m 7200 3900 l 7200 3600 l 6600 3600 l + cp gs col0 s gr +% Polyline +n 6600 3600 m 7200 3600 l 7200 3300 l 6600 3300 l + cp gs col0 s gr +% Polyline +n 7800 5400 m 8400 5400 l 8400 5100 l 7800 5100 l + cp gs col0 s gr +% Polyline +n 7800 5100 m 8400 5100 l 8400 4800 l 7800 4800 l + cp gs col0 s gr +% Polyline +n 7800 4800 m 8400 4800 l 8400 4500 l 7800 4500 l + cp gs col0 s gr +% Polyline +n 7800 4500 m 8400 4500 l 8400 4200 l 7800 4200 l + cp gs col0 s gr +% Polyline +n 7800 4200 m 8400 4200 l 8400 3900 l 7800 3900 l + cp gs col0 s gr +% Polyline +n 7800 3900 m 8400 3900 l 8400 3600 l 7800 3600 l + cp gs col0 s gr +% Polyline +n 7800 3600 m 8400 3600 l 8400 3300 l 7800 3300 l + cp gs col0 s gr +% Polyline +n 6600 5400 m + 8400 5400 l gs col0 s gr +/Times-Roman ff 180.00 scf sf +825 2325 m +gs 1 -1 sc (17) col0 sh gr +/Times-Roman ff 180.00 scf sf +825 2700 m +gs 1 -1 sc (Traitement de 17) col0 sh gr +/Times-Roman ff 180.00 scf sf +6825 2700 m +gs 1 -1 sc (Traitement de 20) col0 sh gr +/Times-Roman ff 180.00 scf sf +825 5700 m +gs 1 -1 sc (Traitement de 40) col0 sh gr +/Times-Roman ff 180.00 scf sf +3900 5700 m +gs 1 -1 sc (Traitement de 25) col0 sh gr +/Times-Roman ff 180.00 scf sf +3825 2700 m +gs 1 -1 sc (Traitement de 34) col0 sh gr +/Times-Roman ff 180.00 scf sf +7125 5700 m +gs 1 -1 sc (Etat final) col0 sh gr +/Times-Roman ff 180.00 scf sf +3825 2325 m +gs 1 -1 sc (34) col0 sh gr +/Times-Roman ff 180.00 scf sf +5025 2325 m +gs 1 -1 sc (17) col0 sh gr +/Times-Roman ff 180.00 scf sf +6825 2325 m +gs 1 -1 sc (34) col0 sh gr +/Times-Roman ff 180.00 scf sf +6825 2025 m +gs 1 -1 sc (20) col0 sh gr +/Times-Roman ff 180.00 scf sf +8025 2325 m +gs 1 -1 sc (17) col0 sh gr +/Times-Roman ff 180.00 scf sf +825 5325 m +gs 1 -1 sc (40) col0 sh gr +/Times-Roman ff 180.00 scf sf +2025 5325 m +gs 1 -1 sc (17) col0 sh gr +/Times-Roman ff 180.00 scf sf +2025 5025 m +gs 1 -1 sc (20) col0 sh gr +/Times-Roman ff 180.00 scf sf +2025 4725 m +gs 1 -1 sc (34) col0 sh gr +/Times-Roman ff 180.00 scf sf +3825 5325 m +gs 1 -1 sc (40) col0 sh gr +/Times-Roman ff 180.00 scf sf +3825 5025 m +gs 1 -1 sc (34) col0 sh gr +/Times-Roman ff 180.00 scf sf +3825 4725 m +gs 1 -1 sc (25) col0 sh gr +/Times-Roman ff 180.00 scf sf +4950 5325 m +gs 1 -1 sc ( 17) col0 sh gr +/Times-Roman ff 180.00 scf sf +4950 5025 m +gs 1 -1 sc (20) col0 sh gr +/Times-Roman ff 180.00 scf sf +6825 5325 m +gs 1 -1 sc (40) col0 sh gr +/Times-Roman ff 180.00 scf sf +6825 5025 m +gs 1 -1 sc (34) col0 sh gr +/Times-Roman ff 180.00 scf sf +6825 4425 m +gs 1 -1 sc (20) col0 sh gr +/Times-Roman ff 180.00 scf sf +6825 4125 m +gs 1 -1 sc (17) col0 sh gr +/Times-Roman ff 180.00 scf sf +6750 4725 m +gs 1 -1 sc ( 25) col0 sh gr +% here ends figure; +$F2psEnd +rs +showpage diff --git a/lessons/tris/stack_sort.tex b/lessons/tris/stack_sort.tex new file mode 100755 index 0000000000000000000000000000000000000000..615ba40454fcc8f0210dacd22badbab025962a82 --- /dev/null +++ b/lessons/tris/stack_sort.tex @@ -0,0 +1,97 @@ +\documentclass[a4paper,11pt,dvips]{article} +\usepackage{epsfig} +\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} +\usepackage{amsmath} + +\pagestyle{myheadings} +%\markright{Tri � deux piles} +\advance\voffset by -0.5in +\textheight=230mm +\textwidth=165mm +\oddsidemargin=0pt +\evensidemargin=0pt +\topmargin=0pt +\headheight=0pt +\parindent=0cm + +\date{} +\title{ + \vspace*{-2cm} + \begin{tabular}{|l|} + \hline \\ + {\fontsize{16}{25} \bf Algorithmique et structures de donn�es} \\ + \vspace*{-0.5cm}\\ + \hline + {\bf\it \quad Tri � deux piles}\\ + \hline + {\tiny ISC - HEPIA - HES-SO//Gen�ve} \\ + \hline + \end{tabular} +} + +\begin{document} + +\maketitle +\smallskip +\thispagestyle{empty} +\renewcommand{\labelitemi}{$\bullet$} + +\vspace*{-2cm} +\section*{Description} + +\medskip +\begin{itemize} +\item Le tableau est parcouru �l�ment par �l�ment. +\item Une premi�re pile (celle de gauche dans l'exemple de la figure~\ref{fig1}) +contient toujours des �l�ments tri�s en ordre croissant en partant du sommet. +\item Une seconde pile (celle de droite dans l'exemple de la figure~\ref{fig1}) +contient toujours des �l�ments en ordre d�croissant en partant du sommet. +\item A chaque �tape, on d�pile les �l�ments d'une des piles pour les empiler +dans l'autre, jusqu'� ce que l'�l�ment trait� soit empilable dans la pile de +gauche en respectant l'ordre dans chacune des deux piles. +\item En fin de tri, tous les �l�ments se trouvent dans la premi�re pile; on +termine donc le tri en vidant cette pile dans le tableau de d�part. +\end{itemize} + +\section*{Exemple} +L'exemple d�crit ci-dessous est illustr� � la figure~\ref{fig1}. +Soit le tableau � trier suivant: +\begin{center} +\begin{tabular}{|c|c|c|c|c|} +\hline + 17 & 34 & 20 & 40 & 25 \\ +\hline +\end{tabular} +\end{center} +Le tableau est parcouru de gauche � droite. + +\medskip +\begin{itemize} +\item 17 est plac� dans la pile de gauche. +\item 34 est plus grand que 17: 17 est d�pil� de la pile de gauche pour �tre +empil� dans la pile de droite; 34 est plac� dans la pile de gauche. +\item 20 est plus petit que 34 et plus grand que 17: il est empil� dans la pile +de gauche. +\item 40 est compar� avec 20 et 34: ceux-ci sont d�pil�s de la pile de gauche +pour �tre empil�s dans la pile de droite; 40 est empil� � gauche. +\item 25 est plus petit que 34: celui-ci est d�pil� de droite pour �tre empil� � +gauche; 25 est empil� � gauche. +\item Il n'y a plus d'�l�ment � traiter: la pile de droite est vid�e, chacun de +ces �l�ments �tant empil� dans la pile de gauche; cette pile contient au final +tous les �l�ments en ordre croissant en partant du sommet. +\item Il ne reste plus qu'� vider la premi�re pile dans le tableau. +\end{itemize} + +\begin{center} +\begin{figure}[ht] +\begin{center} +\epsfig{file=figures/stack_sort_expl.eps, width=12cm, height=9cm} +\end{center} +\caption{Utilisation des deux piles pour le tri} +\label{fig1} +\end{figure} +\end{center} + +\end{document} +