Quelques pistes d’algorithmes possibles au lycée

Slides:



Advertisements
Présentations similaires
Tris.
Advertisements

Chapitre annexe. Récursivité
Algorithmes et structures de données avancées Cours 7
Algorithmique (suite)
Algorithmes et structures de données avancés
Fonctions & procédures
Efficient Simplification of Point-Sampled Surfaces
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Inférence statistique
Comparaison de deux pourcentages observés
Comparaison de plusieurs moyennes observées
4 Les Lois discrètes.
Moyenne, écart type et incertitude de mesure.
Probabilités et statistiques en première S, ES, L
FONCTIONS EXPONENTIELLES ET LOGARITHMES
Fonction Logarithme Népérien John Napier, dit Neper.
Nouveau programme rentrée 2012.
Utilisation des tableaux
Chapitre IV. Structures linéaires (piles, files, listes chaînées)
Programmes du cycle terminal
2. Expériences aléatoires et modélisation
Continuité Introduction Continuité Théorème des valeurs intermédiaires
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Septième étape : travailler avec des graphes probabilistes
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Algorithmes sur les images dans Excel
Atelier Fonctions.
On procède comme on peut le voir sur le dessin ci-contre en effectuant
Les structures de données arborescentes
Quelques algorithmes sur calculatrices
Fractales sur Scilab.
Équations différentielles.
Groupe 1: Classes de même intervalle
Comprendre la variation dans les données: Notions de base
STATISTIQUES – PROBABILITÉS
Algorithme de Bellman-Ford
IFT Chapitre 1 Classes de complexité fondamentales:
Génération d’un segment de droite
Recherche Opérationnelle
Conception et analyse des algorithmes Les algorithmes probabilistes
Algorithmes probabilistes
Des épreuves pratiques aux TP Des exemples en probabilités
Texture 2D en PGC++.
PROBABILITÉS.
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
La géométrie tropicale
Programmation linéaire en nombres entiers
Flocon de Von Koch Cette « courbe » s'obtient en appliquant à chaque côté d'un triangle équilatéral une transformation simple : on remplace le 1/3 central.
TD4 : « Lois usuelles de statistiques »
STATISTIQUES – PROBABILITÉS
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Septembre Semaines du 2 au 13 septembre DATECOURSEXERCICESEXERCICES à fairePOUR le Jeudi 4 Prise de contact Rappels sur les suites 2 exemples donnés pour.
Les fonctions de référence
Recherche de motifs par projections aléatoires
ALGORITHMES CHEZ LES BABYLONIENS
ASI 3 Méthodes numériques pour l’ingénieur
Rappels Variables nominales :
Primalité et génération de nombres premiers
Chapitre 4 Variables aléatoires discrètes
Post-optimisation, analyse de sensibilité et paramétrage
Résolution des équations différentielles
LOIS COURANTES DE PROBABILITES
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
ECHANTILLONAGE ET ESTIMATION
Introduction aux statistiques Intervalles de confiance
UED SIM – Département OLCI Année Arts & Métiers ParisTech CER ANGERS Probabilités et statistiques Cours n° 2.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Complexité algorithmique
Transcription de la présentation:

Quelques pistes d’algorithmes possibles au lycée

Calcul d’aire

Calcul d’aire Le problème. Le problème est de déterminer l’aire « sous la courbe » représentative d’une fonction convenable. Par exemples, calculer une valeur approchée de l’aire de : {M(x,y), 0  y  x² , 0  x  1} (seconde, première) {M(x,y), 0  y  1/x – E(1/x) , 0 < x  1} (Terminale)

Calcul d’aire Première méthode: une grille régulière. On fabrique une grille régulière qui quadrille le carré en n² points. On admet que aire du carré * nb de points en dessous / n² est une valeur approchée de l’aire sous la courbe.

Calcul d’aire Première méthode: une grille régulière. Algorithme de calcul: Début Variable: n,x,y,s lire n x=0; s=0 répéter tant que x  1 x=x+1/n; y=0 répéter tant que y  1 y=y+1/n si y  x² Alors s=s+1 fin répéter fin répéter afficher s/n² Fin algorithme

Calcul d’aire Deuxième méthode: Monte-Carlo. On choisis au hasard n points de ]0;1[² . De la même façon, on a: aire du carré * nb de points en dessous / n est une valeur approchée de l’aire sous la courbe.

Calcul d’aire Deuxième méthode: Monte-Carlo. Algorithme de calcul: Début Variable: k,n,x,y,s lire n k=0; s=0 répéter tant que k < n x= nb aléatoire dans ]0;1[ y= nb aléatoire dans ]0;1[ k = k+1 si y < x² alors s=s+1 fin répéter afficher s/n Fin algorithme

Calcul d’aire Comparaison des 2 méthodes.

Calcul d’aire Monte-Carlo: ce qu’il y a en-dessous sur cet exemple... X est la variable aléatoire qui, à chaque point M(x,y) du carré ]0;1[ associe 1 si le point M est sous la courbe (y<x²) et 0 sinon. X suit une loi de Bernouilli avec p=aire sous la courbe = 1/3 Quand on réalise n expériences indépendantes (on choisit au hasard n points M), la variable aléatoire Yn = somme (Xi) suit une loi binômiale B(n,p) d’espérance np =n/3, variance npq. Quand n « devient grand », B(n,p) est « proche» de la loi normale d’espérance np et variance npq. Pour: n=10000 et p=1/3 et n=20 et p=1/3

Calcul d’aire Si Zn = Yn / n, Z suit une loi très proche de la loi normale d’espérance np/n = p et de variance npq/n² = pq/n, d’écart type s=(p(1-p))/(n). Or (p(1-p))  0,5 quand p est dans [0;1], on a donc s  0,5/n . Pour une loi normale, 95% de l’effectif est entre E-2 s et E+2 s , Donc ici, on a environ 95% de l’effectif entre p - 1/n et p+1/n Si on réalise 2500 échantillons de taille n=10000, on trouve que 95% des échantillons ont une moyenne qui est une valeur approchée de l’aire p à 0,01 près. Il en résulte que la méthode de Monte-Carlo, pour un calcul d’aire, donne (pour un nombre de points de 10 000) une valeur approchée de l’aire à 0,01 près avec un risque d’erreur de 5%.

Calcul d’aire Deuxième exemple: une fonction pathologique... F(x) = 1/x-E(1/x) sur ]0;1] est discontinue, n’admet pas de primitive sur ]0;1] Cette fonction est particulièrement pathologique au voisinage de 0. La méthode Monte-Carlo est plus efficace que la méthode par la grille.

Calcul d’aire Deuxième exemple: une fonction pathologique... Le problème est de savoir ce domaine {M(x,y), 0<x  1, 0  y < f(x)} est mesurable. Sur chaque intervalle ]1/(k+1) ; 1/k] (k entier > 0), l’aire sous la courbe est : Donc l’aire sous la courbe sur l’intervalle ]1/(n+1) ; 1] est: Or la série (1+1/2+1/3+… 1/n –ln(n)) converge vers g (constante d’Euler). Donc la série de terme général Sk converge vers 1- g L’aire sous la courbe est donc 1- g  0,422 784 335 098 468. La méthode Monte-Carlo a donné (pour n=108): 0,422 759

Nombres premiers: test probabiliste

Test probabiliste de primalité Le problème: La cryptologie RSA nécessite de très grands nombres premiers (de l’ordre de 108). L’algorithme le plus simple pour savoir si un nombre est premier est: début lire n 2  i tant que i < racine(n)+1 si n mod i = 0 alors retourner faux i+1i fin tant que retourner vrai Fin Mais cet algorithme est très gourmand en division : de l’ordre de n. Aussi a-t-on cherché d’autres algorithmes pour savoir si un nombre est premier ou non. En particulier l’algorithme de Miller-Rabin qui utilise un calcul faisant intervenir l’aléatoire…

Test probabiliste de primalité L’algorithme de Miller-Rabin: L’algorithme repose sur 2 propriétés: Si n est premier impair alors: Pour tout entier a de [2;n], a n-1 = 1 [n] Dans Z/nZ, 1 n’a que deux racines carrées triviales 1 et n-1. Si on trouve un entier a qui ne vérifie pas l’une ou l’autre des propriétés, alors a est un témoin de la non primalité de n. L’idée est donc de chercher au hasard k témoins de non primalité. Si on n’en trouve pas, il y a de très fortes chances que n soit premier… Il se trouve que, si n est composé, environ 3/4 des nombres < n sont des témoins de non primalité. La probabilité que n soit composé et que k entiers au hasard soient des témoins de primalité est supérieure à 1- 1/4k. Pour k=7, la probabilité qu’un entier n ayant passé le test soit premier est 0,99994. Si on réitère le test, cette probabilité passe à 1 - 4.10-9 . Le coût de cet algorithme est de l’ordre de k.ln(n) au lieu de n pour l’algorithme classique. Pour un entier n de l’ordre de 108: 7ln(108)  129  108 = 10 000

Test probabiliste de primalité L’algorithme de Miller-Rabin: Fonction temoin(a,n) ‘renvoie 0 si a est un témoin de non primalité, 1 sinon n-1m; 1  y; a  x ‘ initialisation du calcul de a m = an-1 Répéter tant que m>0 ‘ Calcul de a m - méthode des puissances successives Si m [2] = 1 alors ‘cas m impair x*y [n]  y; m-1  m sinon ‘cas m pair x  b; x²[n]  x;m/2  m Si (x=1 et b1 et b n-1) Alors retourner 0 ‘ cas où 1 admet une racine carrée non triviale fin de si donc n est composé fin répéter Si y=1 Alors retourner 1 ‘ cas où an-1 = 1: n est probablement premier sinon retourner 0 ‘ cas où an-1  1: n est composé fin si Fin de fonction Fonction millerrabin(n,k) ’ renvoie 0 si n est composé, 1 si n est très probablement premier Répéter k fois entier aléatoire de [2;n-1] a Si temoin(a,n) = 0 alors retourner 0 ‘ a est un témoin de non primalité: n est composé fin de répéter retourner 1 ‘ on n’a pas trouvé de témoin de non primalité: n est très probablement premier Fin de fonction

Test probabiliste de primalité L’algorithme de Miller-Rabin sur Xcas: Le calcul de primalité de 1234567891 par Miller Rabin est instantané, par l’algorithme classique cela dure 225 secondes (presque 4 minutes)

Dichotomie

Dichotomie Le problème: Il s’agit de trouver un encadrement de longueur donné e de la solution de f(x)=0 sur [a;b] où f est strictement croissante et f(a)<0 et f(b)>0. Algorithme non récursif Algorithme récursif

Dessin en logo

Flocon de Koch Un algorithme récursif: Flocon de Koch sur Xcas en logo

Dessins aléatoires

Dessins aléatoires sur Xcas: profil montagne Algorithme : On part d’un triangle : (-4,0), (0,4),(4,0) On déplace aléatoirement les milieux des 2 côtés non horizontaux. Puis on itère la méthode …

Dessins aléatoires sur Xcas: profil montagne Les n sommets du polygone sont des complexes mis dans une matrice (1 ligne, n colonnes) Au départ la matrice est [-4,4i,4]. La fonction mont : x est la matrice des n sommets; mont(x) est la même matrice augmentée des n-1 milieux déplacés de manière aléatoire en longueur (0,5*rand(0,1) = nb aléatoire entre 0 et 0,5) et en direction ( eit avec t aléatoire autour de p/2). La fonction récursive montagne(x,k) itère k fois la fonction mont. Les fonctions tracemontagne et tracemontagneremplie tracent le polygone vide ou rempli en noir. Dessins aléatoires sur Xcas: profil montagne

Dessins aléatoires sur Xcas: arbres Sans aléa Avec aléa

Fractales

L’ensemble de Mandelbrot: Dans le plan complexe, on considère la suite (zn) définie par zn+1 = zn²+ c et z0 = 0. L’ensemble de Mandelbrot est l’ensemble des c pour lesquels la suite converge (en module). S’il existe n pour lequel ∣ zn ∣>2 alors la suite diverge. Il est nécessaire que ∣c∣< 2 pour que la suite converge. Algorithme: On cherche pour chaque point d’un maillage d’une partie du plan, l’entier n (<255) à partir duquel ∣ zn ∣>2. La couleur de ce point sera n. Ainsi un point blanc (n=255) sera un c pour lequel la suite semble converger et plus un point est foncé, plus la suite diverge vite… un point noir (n=1) est un point c où la suite diverge immédiatement. L’intérêt de l’ensemble de Mandelbrot est sa frontière. Fractales sur scilab

x[-0,25 ; 0,05] , y[0,6 ; 0,9] x[-2 ; 1] , y[-1,5 ; 1,5]

Les ensembles de Julia: Dans le plan complexe, on considère la suite (zn) définie par zn+1 = zn²+ c. Cette fois-ci, c est fixé (complexe situé à la frontière de l’ensemble de Mendelbrot: il y a autant d’ensemble de Julia que l’on veut) et c’est z0 qui varie. Un ensemble de Julia est l’ensemble des z0 pour lesquels la suite converge (en module). S’il existe n pour lequel ∣ zn ∣>2 alors la suite diverge. Même algorithme que précédemment: Fractales sur scilab c = -0,414 -0.612 i , x[-1,3 ; 1,3] , y[-1 ; 1]

Les ensembles de Julia: Fractales sur scilab c = -0,414 -0.612 i , x[-1,3 ; 1,3] , y[-1,3 ; 1,3] x[-0,15 ; -0,075] , y[-1 ; -0,925]