support de cours algo avancée - correction unicode
This commit is contained in:
parent
6a50f7f261
commit
75bb842bb6
|
@ -1,11 +1,3 @@
|
||||||
définitions récursives
|
|
||||||
une fonction est
|
|
||||||
récursive
|
|
||||||
si elle fait appel à elle même dans sa propre
|
|
||||||
définition
|
|
||||||
|
|
||||||
récursivité mutuelle
|
|
||||||
|
|
||||||
les types structurés
|
les types structurés
|
||||||
- le produit cartésien
|
- le produit cartésien
|
||||||
- le n-uplet
|
- le n-uplet
|
||||||
|
@ -23,20 +15,6 @@ val a : complexe = {re = 1.4; im = 0.5}
|
||||||
les types sommes : modélisation de domaines finis
|
les types sommes : modélisation de domaines finis
|
||||||
# type couleur = Pique | Coeur | Carreau | Trefle;;
|
# type couleur = Pique | Coeur | Carreau | Trefle;;
|
||||||
type couleur = Pique | Coeur | Carreau | Trefle
|
type couleur = Pique | Coeur | Carreau | Trefle
|
||||||
# let a = Trefle ;;
|
# let a = Trefle ;;
|
||||||
val a : couleur = Trefle
|
val a : couleur = Trefle
|
||||||
|
|
||||||
définition par cas
|
|
||||||
(match-with)
|
|
||||||
|
|
||||||
let points v =
|
|
||||||
match v with
|
|
||||||
Pique -> 1
|
|
||||||
| Trefle -> 2
|
|
||||||
| Coeur -> 3
|
|
||||||
| Carreau -> 4;;
|
|
||||||
# points a ;;
|
|
||||||
- : int = 2
|
|
||||||
#
|
|
||||||
constructeurs avec arguments
|
|
||||||
type num = Int of int | Float of float
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 594 KiB |
|
@ -1,10 +1,10 @@
|
||||||
Notion de complexité d'un algorithme
|
Notion de complexité d'un algorithme
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
définition
|
Définition
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
l’analyse de la complexité d’un algorithme consiste à évaluer les ressources
|
L’analyse de la complexité d’un algorithme consiste à évaluer les ressources
|
||||||
consommées par l’algorithme lors de l’exécution
|
consommées par l’algorithme lors de l’exécution
|
||||||
|
|
||||||
deux critères d’évaluation
|
deux critères d’évaluation
|
||||||
|
@ -17,7 +17,7 @@ principes de base
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
Caractériser la quantité de ressources consommées en fonction de la
|
Caractériser la quantité de ressources consommées en fonction de la
|
||||||
taille des données sur lesquelles l’algorithme est appliqué.
|
taille des données sur lesquelles l’algorithme est appliqué.
|
||||||
|
|
||||||
Evaluer le coût exact est difficile, on exprimera donc seulement un
|
Evaluer le coût exact est difficile, on exprimera donc seulement un
|
||||||
ordre de grandeur
|
ordre de grandeur
|
||||||
|
@ -27,17 +27,18 @@ définition mathématique
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
|
||||||
- si f est la fonction caractérisant exactement le coût d’un algorithme
|
- si f est la fonction caractérisant exactement le coût d’un algorithme
|
||||||
- et n la taille des données
|
- et n la taille des données
|
||||||
- on s’intéresse à la façon dont croı̂t f(n) lorsque n croı̂t
|
- on s'intéresse à la façon dont croît f(n) lorsque n croît
|
||||||
- on va montrer que f (n) ne croı̂t pas plus vite qu’une autre fonction g(n)
|
- on va montrer que f (n) ne croît pas plus vite qu’une autre fonction g(n)
|
||||||
|
|
||||||
Du point de vue mathématique, on dit que la fonction f est dominée
|
Du point de vue mathématique, on dit que la fonction f est dominée
|
||||||
asymptotiquement par la fonction g ce qui se note f= O(g)
|
asymptotiquement par la fonction g ce qui se note f= O(g)
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
f = O(g) ssi ∃k, ∃n 0 , ∀n, n > n 0 ⇒ f (n) ≤ k.g (n)
|
f = O(g) ssi il existe k, il existe n 0 , pour tout n, n > n 0 implique
|
||||||
|
f(n) inférieur ou egal k.g (n)
|
||||||
|
|
||||||
|
|
||||||
exemples
|
exemples
|
||||||
|
|
|
@ -3,14 +3,25 @@
|
||||||
Définitions par filtrage
|
Définitions par filtrage
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
Lorsqu'un argument est passé à un ensemble de clauses::
|
Lorsqu'un argument est passé à un ensemble de clauses :
|
||||||
|
|
||||||
p1 -> e1 ∣ … ∣ pn -> en
|
|
||||||
|
|
||||||
- la première clause qui filtre l'argument est exécutée, les autres sont
|
- la première clause qui filtre l'argument est exécutée, les autres sont
|
||||||
ignorées.
|
ignorées.
|
||||||
- si aucune clause ne filtre l'argument, une exception est levée.
|
- si aucune clause ne filtre l'argument, une exception est levée.
|
||||||
|
|
||||||
|
exemple de définition par cas
|
||||||
|
::
|
||||||
|
|
||||||
|
let points v =
|
||||||
|
match v with
|
||||||
|
Pique -> 1
|
||||||
|
| Trefle -> 2
|
||||||
|
| Coeur -> 3
|
||||||
|
| Carreau -> 4;;
|
||||||
|
|
||||||
|
# points a ;;
|
||||||
|
- : int = 2
|
||||||
|
|
||||||
|
|
||||||
Définitions récursives
|
Définitions récursives
|
||||||
-----------------------
|
-----------------------
|
||||||
|
@ -31,13 +42,14 @@ On peut imprimer leur valeurs pour qques valeurs::
|
||||||
|
|
||||||
begin
|
begin
|
||||||
for i = 1 to 15 do
|
for i = 1 to 15 do
|
||||||
printf "%d " (f (i)) done;
|
printf "%d " (f(i)) done;
|
||||||
printf "\n"
|
printf "\n"
|
||||||
end ;;
|
end ;;
|
||||||
|
|
||||||
f, g sont les fonctions de Fibonacci et factorielles. C'est la même notation que pour les suites récurrentes. Que valent h et m?
|
f, g sont les fonctions de Fibonacci et factorielles. C'est la même notation que pour les suites récurrentes. Que valent h et m ?
|
||||||
|
|
||||||
La récursivité est très puissante. Invention de Kleene (1935). Théorie des fonctions récursives, comme moyen général de calcul. On peut montrer qu'il existe toujours des fonctions récursives partielles (qui ne terminent pas pour tte valeur de leurs arguments), si on veut un modèle général. La sous théorie des fonctions récursives primitives correspond aux programmes sans boucles, sans appels récursifs, et l'instruction for. Ces programmes terminent toujours. (cf Introduction to Metamathematics, S. Kleene; Recursive Functions Theory and Logic, A. Yasuhara).
|
La récursivité est très puissante. Invention de Kleene (1935). Théorie des fonctions récursives, comme moyen général de calcul.
|
||||||
|
On peut montrer qu'il existe toujours des fonctions récursives partielles (qui ne terminent pas pour tte valeur de leurs arguments), si on veut un modèle général. La sous théorie des fonctions récursives primitives correspond aux programmes sans boucles, sans appels récursifs, et l'instruction for. Ces programmes terminent toujours. (cf Introduction to Metamathematics, S. Kleene; Recursive Functions Theory and Logic, A. Yasuhara).
|
||||||
|
|
||||||
Church et les autres logiciens des années 30 ont montré que systèmes de Post, les fonctions récursives de Kleene, les machines de Turing, sont tous équivalentes. Il a émis la thèse suivante: tous les modèles de la calculabilité sont équivalents.
|
Church et les autres logiciens des années 30 ont montré que systèmes de Post, les fonctions récursives de Kleene, les machines de Turing, sont tous équivalentes. Il a émis la thèse suivante: tous les modèles de la calculabilité sont équivalents.
|
||||||
|
|
||||||
|
@ -53,8 +65,7 @@ Fonctions récursives
|
||||||
dans le prompt::
|
dans le prompt::
|
||||||
|
|
||||||
utop # let rec fact n = if n > 1 then n * fact (n -1) else 1;;
|
utop # let rec fact n = if n > 1 then n * fact (n -1) else 1;;
|
||||||
val fact : int -> int = <fun>
|
utop # fact 5;;
|
||||||
counter: 0 }─utop # fact 5;;
|
|
||||||
- : int = 120
|
- : int = 120
|
||||||
|
|
||||||
et mutuellement récursives::
|
et mutuellement récursives::
|
||||||
|
|
Loading…
Reference in New Issue