support de cours algo avancée - correction unicode

This commit is contained in:
gwen 2017-10-16 16:27:16 +02:00
parent 6a50f7f261
commit 75bb842bb6
4 changed files with 29 additions and 39 deletions

View File

@ -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
- le produit cartésien
- le n-uplet
@ -23,20 +15,6 @@ val a : complexe = {re = 1.4; im = 0.5}
les types sommes : modélisation de domaines finis
# type couleur = Pique | Coeur | Carreau | Trefle;;
type couleur = Pique | Coeur | Carreau | Trefle
# let a = Trefle ;;
# let a = 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

View File

@ -1,10 +1,10 @@
Notion de complexité d'un algorithme
====================================
définition
Définition
-----------
lanalyse de la complexité dun algorithme consiste à évaluer les ressources
Lanalyse de la complexité dun algorithme consiste à évaluer les ressources
consommées par lalgorithme lors de lexécution
deux critères dévaluation
@ -17,7 +17,7 @@ principes de base
-----------------
Caractériser la quantité de ressources consommées en fonction de la
taille des données sur lesquelles lalgorithme est appliqué.
taille des données sur lesquelles lalgorithme est appliqué.
Evaluer le coût exact est difficile, on exprimera donc seulement un
ordre de grandeur
@ -27,17 +27,18 @@ définition mathématique
-----------------------
- si f est la fonction caractérisant exactement le coût dun algorithme
- si f est la fonction caractérisant exactement le coût dun algorithme
- et n la taille des données
- on sinté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 quune autre fonction g(n)
- 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 quune autre fonction g(n)
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)
::
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

View File

@ -3,14 +3,25 @@
Définitions par filtrage
--------------------------
Lorsqu'un argument est passé à un ensemble de clauses::
p1 -> e1 pn -> en
Lorsqu'un argument est passé à un ensemble de clauses :
- 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.
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
-----------------------
@ -31,13 +42,14 @@ On peut imprimer leur valeurs pour qques valeurs::
begin
for i = 1 to 15 do
printf "%d " (f (i)) done;
printf "%d " (f(i)) done;
printf "\n"
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.
@ -53,8 +65,7 @@ Fonctions récursives
dans le prompt::
utop # let rec fact n = if n > 1 then n * fact (n -1) else 1;;
val fact : int -> int = <fun>
counter: 0 }─utop # fact 5;;
utop # fact 5;;
- : int = 120
et mutuellement récursives::