algo avancée

This commit is contained in:
gwen
2017-10-17 16:23:38 +02:00
parent 2edd0ea2f1
commit 05e68b4d5e
4 changed files with 238 additions and 86 deletions

View File

@ -468,6 +468,7 @@ Les piles
- FIFO : "first in first out"
Traduction d'une structure de données dans une autre
-----------------------------------------------------
@ -730,8 +731,10 @@ On les appelle enregistrements, dictionnaires ou tables de hachage.
- les types sommes (constructeurs) : modélisation de domaines finis
les types sommes
~~~~~~~~~~~~~~~~
appelés aussi type construits, ou types algébriques
.. code-block:: ocaml
@ -748,12 +751,83 @@ On les appelle enregistrements, dictionnaires ou tables de hachage.
Ent of int | Reel of float | Cplx of float × float
Ent, Reel, Cplx sont les constructeurs du type.
Les arbres
----------
Structure de données construite sur un type somme récursif.
arbre binaire :
.. code-block:: ocaml
type arbre = Vide | Noeud of int * arbre * arbre
let a =
Noeud(10,
Noeud(2,Noeud(8,Vide,Vide),Vide),
Noeud(5,Noeud(11,Vide,Vide),Noeud(3,Vide,Vide)));;
arbre binaire polymorphe :
.. code-block:: ocaml
type a arbre = Vide | Noeud of a * a arbre * a arbre;;
let b = Noeud(10,Noeud(5,Vide,Vide),Vide);;
let c = Noeud(f,Vide,Noeud(a,Vide,Noeud(g,Vide,Vide)));;
- parcours dun arbre binaire
- itérateurs sur un arbre binaire
- taille d'un arbre
arbre n-aire::
type a arbre = Vide | Noeud of a * a arbre list;;
- transformation d'un arbre en un autre
- arbre ordonné (arbre de recherche)
- équilibrage des arbres de recherche
Un arbre binaire est ordonné (ou de recherche) par rapport à une relation
dordre quelconque si :
- cest larbre vide (Vide)
- cest un arbre non-vide Noeud(x,g,d) et
1. les éléments du sous-arbre gauche g sont inférieurs à la racine x
2. la racine x est inférieure aux éléments du sous-arbre droit d
3. les sous-arbres g et d sont eux-mêmes ordonnés
::
let a1 =
Noeud(5, Noeud(2, Vide, Vide),
Noeud(20, Noeud(10, Noeud(6, Vide, Vide),
Noeud(14,Vide, Vide)),
Noeud(21,Vide,Vide)));;
.. image:: _static/AbreOrdonne.png
Recherche d'un élément dans un arbre ordonné
---------------------------------------------
La structure ordonnée des arbres binaires de recherche permet deffectuer
la recherche dun élément avec une compléxité en moyenne de O(log n)
::
let rec recherche elt abr =
match abr with
| Vide -> false
| Noeud (x,_,_) when x = elt -> true
| Noeud (x,g,_) when elt < x -> recherche elt g
| Noeud (_,_,d) -> recherche elt d
;;
Autres structures de données complexes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- arbres
- graphes
- dates
- le parcours de graphes
- les calculs de dates

View File

@ -3,6 +3,20 @@
Définitions par filtrage
--------------------------
::
type formule = Vrai | Faux | Conjonction of formule * formule
le fitrage permet un examen par cas sur les valeurs construites::
let rec evalue = function
| Vrai -> true
| Faux -> false
| Conjonction (Faux, _) | Conjonction (_, Faux) -> false
| Conjonction (f1, f2) -> evalue f1 && evalue f2;;
Lorsqu'un argument est passé à un ensemble de clauses :
- la première clause qui filtre l'argument est exécutée, les autres sont