exemples d'algorithmes sur des structures de données simples
This commit is contained in:
parent
b8bf37cafb
commit
11b2b9f935
|
@ -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 d’un 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 s’appuient sur un principe de sélection des individus d’une population qui présen-
|
||||||
|
tent des caractéristiques se rapprochant au mieux de ce que l’on 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 s’agit
|
||||||
|
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}
|
||||||
|
|
|
@ -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 l’information.
|
Les types construits permettent de structurer l’information.
|
||||||
|
|
||||||
|
@ -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 :
|
||||||
|
|
||||||
|
|
|
@ -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")
|
||||||
|
|
Loading…
Reference in New Issue