exemples d'algorithmes sur des structures de données simples

This commit is contained in:
gwen 2017-04-21 10:50:53 +02:00
parent 9cdfc16cc5
commit 32376db319
3 changed files with 52 additions and 11 deletions

View File

@ -18,3 +18,45 @@ Exemple : les algorithmes de tri, de recherche dans un arbre, un graphe...
- la cryptologie - la cryptologie
- les stratégies de jeux - les stratégies de jeux
Tirés du monde réel
--------------------
Le voyageur de commerce
~~~~~~~~~~~~~~~~~~~~~~~~
Le problème du voyageur de commerce, consiste en la recherche dun trajet minimal permettant à un
voyageur de visiter n villes. En règle générale on cherche à minimiser le temps de parcours total ou la
distance totale parcourue.
Résolution par
- algorithme de parcours de graphes
- algorithmes génétiques
Les algorithmes génétiques sappuient sur un principe de sélection des individus dune population qui présen-
tent des caractéristiques se rapprochant au mieux de ce que lon recherche; cette population évoluant par
ailleurs selon des critères dévolution génétique à choisir. Dans le contexte du problème du voyageur de
commerce, un individu est une tournée, un chemin et une population un ensemble de tournées. Il sagit
maintenant de dé...nir un critère de sélection ainsi que des règles dévolution de la population.
- approches métaheuristiques (exemples: colonies de fourmis)
Exemple de résolution
.. raw:: latex
\begin{algorithm}
\caption{Algorithme du voyageur de commerce}\label{commerce}
\begin{algorithmic}[1]
\BState \emph{Données} : $L$ \Comment{Liste des villes à parcourir avec les distances entre les villes}
\BState \emph{Données} : $L'$ \Comment{Liste du parcours des villes à effectuer}
\State \emph{début}
\BState ...
\State \emph{fin}
\end{algorithmic}
\end{algorithm}

View File

@ -73,20 +73,19 @@ Modification de la structure de données
.. code-block:: python .. code-block:: python
>>> l = [('host1', '10.1.2.3', '6E:FF:56:A2:AF:18'), ('host2', '10.1.2.4', '6E:FF:56:A2:AF:17'), ('host3', '10.1.2.5', '6E:FF:56:A2:AF:19')] >>> l = [('host1', '10.1.2.3', '6E:FF:56:A2:AF:18'), ('host3', '10.1.2.5', '6E:FF:56:A2:AF:19')]
>>> result = [] >>> result = []
>>> for hostname, ip, macaddress in l: >>> for hostname, ip, macaddress in l:
... result.append(dict(hostname=hostname, ip=ip, macaddress=macaddress)) ... result.append(dict(hostname=hostname, ip=ip, macaddress=macaddress))
... ...
>>> result >>> result
[{'hostname': 'host1', 'ip': '10.1.2.3', 'macaddress': '6E:FF:56:A2:AF:18'}, [{'hostname': 'host1', 'ip': '10.1.2.3', 'macaddress': '6E:FF:56:A2:AF:18'},
{'hostname': 'host2', 'ip': '10.1.2.4', 'macaddress': '6E:FF:56:A2:AF:17'},
{'hostname': 'host3', 'ip': '10.1.2.5', 'macaddress': '6E:FF:56:A2:AF:19'}] {'hostname': 'host3', 'ip': '10.1.2.5', 'macaddress': '6E:FF:56:A2:AF:19'}]
>>> >>>
Structures de données complexes Structures de données complexes
================================ -------------------------------
- graphes - graphes
- arbres - arbres
@ -107,7 +106,7 @@ Structures de données complexes
pire cas. pire cas.
Les types produits Les types produits
~~~~~~~~~~~~~~~~~~~~ -------------------
Les types construits permettent de structurer linformation. Les types construits permettent de structurer linformation.
@ -157,7 +156,7 @@ est renvoyée.
- : int list = [4 ;1 ;5 ;8 ;1] - : int list = [4 ;1 ;5 ;8 ;1]
Algorithme de la longueur d'une liste Algorithme de la longueur d'une liste
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --------------------------------------
.. code-block:: ocaml .. code-block:: ocaml
@ -170,7 +169,7 @@ Cette fonction est prédéfinie en Ocaml : `List.length`
Algorithmes de tri Algorithmes de tri
~~~~~~~~~~~~~~~~~~~ ------------------
On désigne par "tri" l'opération consistant à ordonner un ensemble d'éléments en fonction de clés sur lesquelles est définie une relation d'ordre. On désigne par "tri" l'opération consistant à ordonner un ensemble d'éléments en fonction de clés sur lesquelles est définie une relation d'ordre.
@ -179,8 +178,8 @@ Ils sont fondamentaux dans certains domaines (exemples : map-reduce en database
L'étude du tri est également intéressante en elle-même, c'est un des domaines de l'algorithmique très étudié et connu. L'étude du tri est également intéressante en elle-même, c'est un des domaines de l'algorithmique très étudié et connu.
Algorithme de tri par insertion Tri par insertion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
Cet algorithme de tri suit de manière naturelle la structure récursive des Cet algorithme de tri suit de manière naturelle la structure récursive des
listes. Soit l une liste à trier : listes. Soit l une liste à trier :
@ -203,8 +202,8 @@ Description de l'algorithme
# inserer 5 [3 ;7 ;10];; # inserer 5 [3 ;7 ;10];;
- : int list = [3 ; 5 ; 7 ; 10] - : int list = [3 ; 5 ; 7 ; 10]
Algorithme de tri rapide Tri rapide
~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~
soit une liste l à trier : soit une liste l à trier :

View File

@ -205,7 +205,7 @@ Il est possible de communiquer de la manière suivante avec un programme :
Exemple de lecture d'une entrée utilisateur Exemple de lecture d'une entrée utilisateur
.. block-code:: python .. code-block:: python
# coding: utf-8 # coding: utf-8
prenom = raw_input("quel est ton prénom ? \n") prenom = raw_input("quel est ton prénom ? \n")