support de cours algo avancée - correction unicode

This commit is contained in:
gwen 2017-10-16 16:27:16 +02:00 committed by Benjamin Bohard
parent a04519ca4a
commit bf45ad7859
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 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

View File

@ -1,10 +1,10 @@
Notion de complexité d'un algorithme 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 consommées par lalgorithme lors de lexé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 lalgorithme est appliqué. taille des données sur lesquelles lalgorithme 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 dun algorithme - si f est la fonction caractérisant exactement le coût dun algorithme
- et n la taille des données - et n la taille des données
- on sinté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 quune autre fonction g(n) - 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 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

View File

@ -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::