diff --git a/algo/AlgoApprofondie/algo.txt b/algo/AlgoApprofondie/algo.txt index b0637d2..fea3fbd 100644 --- a/algo/AlgoApprofondie/algo.txt +++ b/algo/AlgoApprofondie/algo.txt @@ -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 diff --git a/algo/AlgoApprofondie/cours/_static/pascal.jpg b/algo/AlgoApprofondie/cours/_static/pascal.jpg new file mode 100644 index 0000000..dfd4c33 Binary files /dev/null and b/algo/AlgoApprofondie/cours/_static/pascal.jpg differ diff --git a/algo/AlgoApprofondie/cours/complexite.txt b/algo/AlgoApprofondie/cours/complexite.txt index 17c2ae4..cf2ad19 100644 --- a/algo/AlgoApprofondie/cours/complexite.txt +++ b/algo/AlgoApprofondie/cours/complexite.txt @@ -1,10 +1,10 @@ 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 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 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 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 -- 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 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) 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 diff --git a/algo/AlgoApprofondie/cours/fonctions.txt b/algo/AlgoApprofondie/cours/fonctions.txt index a5acd7c..90340ae 100644 --- a/algo/AlgoApprofondie/cours/fonctions.txt +++ b/algo/AlgoApprofondie/cours/fonctions.txt @@ -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 = - counter: 0 }─utop # fact 5;; + utop # fact 5;; - : int = 120 et mutuellement récursives::