Quelques algorithmes simples dont l analyse n est pas si simple



Documents pareils
Algorithmes récursifs

Chapitre 2. Eléments pour comprendre un énoncé

Les nombres entiers. Durée suggérée: 3 semaines

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

ARBRES BINAIRES DE RECHERCHE

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Logiciel Libre Cours 3 Fondements: Génie Logiciel

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Calculateur quantique: factorisation des entiers

Groupe symétrique. Chapitre II. 1 Définitions et généralités

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Leçon 01 Exercices d'entraînement

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Architecture des Systèmes d Information Architecture des Systèmes d Information

Problème : Calcul d'échéanciers de prêt bancaire (15 pt)

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Par combien de zéros se termine N!?

Logique. Plan du chapitre

Résolution d équations non linéaires

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

ÉPREUVE COMMUNE DE TIPE Partie D

Programmation C++ (débutant)/instructions for, while et do...while

La fonction exponentielle

La persistance des nombres

Qu est-ce qu une probabilité?

Programmation Linéaire - Cours 1

Tâche complexe produite par l académie de Clermont-Ferrand. Mai 2012 LE TIR A L ARC. (d après une idée du collège des Portes du Midi de Maurs)

Chapitre 5 : Flot maximal dans un graphe

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Exercices - Polynômes : corrigé. Opérations sur les polynômes

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Évaluation et implémentation des langages

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

LES GENERATEURS DE NOMBRES ALEATOIRES

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

MIS 102 Initiation à l Informatique

I. Cas de l équiprobabilité

Cours d algorithmique pour la classe de 2nde

Licence Sciences et Technologies Examen janvier 2010

Utilisation des tableaux sémantiques dans les logiques de description

Optimisation for Cloud Computing and Big Data

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Programmation linéaire

Raisonnement par récurrence Suites numériques

4. Les structures de données statiques

5.3. Bande numérique cartes numération et cartes à points pour apprendre les nombres de 0 à 99

Programmation linéaire

Calculabilité Cours 3 : Problèmes non-calculables.

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Synthèse «Le Plus Grand Produit»

Fonctions homographiques

Cours 1 : Qu est-ce que la programmation?

C f tracée ci- contre est la représentation graphique d une

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Compter à Babylone. L écriture des nombres

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

LA BATTERIE DU PORTABLE

Machines virtuelles Cours 1 : Introduction

Les contes de la forêt derrière l école.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

La demande Du consommateur. Contrainte budgétaire Préférences Choix optimal

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Resolution limit in community detection

OPTION SCIENCES BELLE-ISLE-EN-TERRE

6. Les différents types de démonstrations

Définitions. Numéro à préciser. (Durée : )

Entraînement au concours ACM-ICPC

Chapitre 7. Récurrences

Initiation à l algorithmique

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Comparaison de fonctions Développements limités. Chapitre 10

Les indices à surplus constant

Sujet 4: Programmation stochastique propriétés de fonction de recours

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

1 Recherche en table par balayage

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Probabilités conditionnelles Loi binomiale

Le chiffre est le signe, le nombre est la valeur.

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Conversion d un entier. Méthode par soustraction

«Est-ce que mon enfant est à risques?» Sécurité sur la rue

Quelques tests de primalité

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

MÉTHODOLOGIE PROJET SYSTÈME D INFORMATION DÉCISIONNEL BI - BUSINESS INTELLIGENCE. En résumé :

Ordonnancement. N: nains de jardin. X: peinture extérieure. E: électricité T: toit. M: murs. F: fondations CHAPTER 1

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

PG208, Projet n 3 : Serveur HTTP évolué

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Cours de Probabilités et de Statistique

Transcription:

Quelques algorithmes simples dont l analyse n est pas si simple Michel Habib habib@liafa.jussieu.fr http://www.liafa.jussieu.fr/~habib Algorithmique Avancée M1 Bioinformatique, Octobre 2008

Plan Histoire d une grenouille Le crêpier maladroit Des algorithmes Les fonctions de Collatz La fonction très récursive Tak

Histoire d une grenouille La pauvre grenouille... Une grenouille tombe au fond d un puits de 50 mètres de profondeur.

Histoire d une grenouille La pauvre grenouille... Une grenouille tombe au fond d un puits de 50 mètres de profondeur. Pour s en sortir chaque jour elle monte de 3 mètres, mais chaque nuit elle glisse de 2 mètres...

Histoire d une grenouille La pauvre grenouille... Une grenouille tombe au fond d un puits de 50 mètres de profondeur. Pour s en sortir chaque jour elle monte de 3 mètres, mais chaque nuit elle glisse de 2 mètres... Au bout de combien de jours la grenouille va-t-elle sortir du puits?

Histoire d une grenouille Réponses possibles : 50 jours?

Histoire d une grenouille Réponses possibles : 50 jours? ou plutôt 48 jours

Le crêpier maladroit Histoire d une grenouille Le crêpier maladroit Des algorithmes Les fonctions de Collatz La fonction très récursive Tak

Le crêpier maladroit Le crêpier débutant Un crêpier débutant n a pas réussi a faire des crêpes de même taille, et il se retrouve devant un tas de crêpes de tailles différentes.

Le crêpier maladroit Le crêpier débutant Un crêpier débutant n a pas réussi a faire des crêpes de même taille, et il se retrouve devant un tas de crêpes de tailles différentes. Il veut les ranger en ordre de taille décroissante, les plus petites en haut.

Le crêpier maladroit Le crêpier débutant Un crêpier débutant n a pas réussi a faire des crêpes de même taille, et il se retrouve devant un tas de crêpes de tailles différentes. Il veut les ranger en ordre de taille décroissante, les plus petites en haut. Pour ce faire il ne dispose que d une opération : retourner le haut du tas de crêpes en insérant son palet en bois entre deux crêpes.

Le crêpier maladroit Comment aider le crêpier? 1. Est-ce toujours possible?

Le crêpier maladroit Comment aider le crêpier? 1. Est-ce toujours possible? 2. Comment le faire avec le moins de mouvements possibles?

Le crêpier maladroit Avec 2n 1 opérations c est possible!

Le crêpier maladroit Avec 2n 1 opérations c est possible! Gates et Papadimitriou on montré : 17 16 n Optimum 5 3 n

Le crêpier maladroit Avec 2n 1 opérations c est possible! Gates et Papadimitriou on montré : 17 16 n Optimum 5 3 n Et si chaque crêpe a une face brulée, est-ce toujours possible?

Des algorithmes Histoire d une grenouille Le crêpier maladroit Des algorithmes Les fonctions de Collatz La fonction très récursive Tak

Des algorithmes Algorithmes Définition Ensemble de règles opératoires dont l application permet de résoudre un problème au moyen d un nombre fini d opérations.

Des algorithmes Algorithmes Définition Ensemble de règles opératoires dont l application permet de résoudre un problème au moyen d un nombre fini d opérations. Origine de ce mot Abu Ja far Mohamed Ibn Al-Khowârizmi (Père de Ja far, fils de Mohamed, né à Khowârizimi) Mathématicien persan IX ème siècle qui a écrit le premier recueil d algorithmes.

Des algorithmes Surtout ne pas écrire Algorythme!!!

Histoire d une grenouille Le crêpier maladroit Des algorithmes Les fonctions de Collatz La fonction très récursive Tak

Un algorithme très simple de V. Chvàtal Donnعees : σ une permutation de [1,n] Rعesultat : une permutation σ telle que σ (1) = 1 tant que σ(1) 1 faire Renverser l ordre des σ(1) premiers éléments nمح

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4 7 1 3 2 5 6 4

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4 7 1 3 2 5 6 4 4 6 5 2 3 1 7

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4 7 1 3 2 5 6 4 4 6 5 2 3 1 7 2 5 6 4 3 1 7

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4 7 1 3 2 5 6 4 4 6 5 2 3 1 7 2 5 6 4 3 1 7 5 2 6 4 3 1 7

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4 7 1 3 2 5 6 4 4 6 5 2 3 1 7 2 5 6 4 3 1 7 5 2 6 4 3 1 7 3 4 6 2 5 1 7

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4 7 1 3 2 5 6 4 4 6 5 2 3 1 7 2 5 6 4 3 1 7 5 2 6 4 3 1 7 3 4 6 2 5 1 7 6 4 3 2 5 1 7

Un algorithme très simple de V. Chvàtal Considérons σ une permutation de [1,7] 6 3 1 7 2 5 4 5 2 7 1 3 6 4 3 1 7 2 5 6 4 7 1 3 2 5 6 4 4 6 5 2 3 1 7 2 5 6 4 3 1 7 5 2 6 4 3 1 7 3 4 6 2 5 1 7 6 4 3 2 5 1 7 1 5 2 3 4 6 7 OUF!

À vous de faire sur la permutation : 3 1 5 7 4 6 2 Combien de retournements?

Conséquences : Cela doit toujours s arrêter!!

Un algorithme très simple de V. Chvàtal Terminaison On peut montrer que l algorithme précédent termine en un nombre fini d étapes.

Ebauche de preuve 6 3 1 7 2 5 4

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4 0 1 0 0 0 0 0

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4 0 1 0 0 0 0 0 3 1 7 2 5 6 4

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4 0 1 0 0 0 0 0 3 1 7 2 5 6 4 0 0 0 0 1 1 0

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4 0 1 0 0 0 0 0 3 1 7 2 5 6 4 0 0 0 0 1 1 0 7 1 3 2 5 6 4

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4 0 1 0 0 0 0 0 3 1 7 2 5 6 4 0 0 0 0 1 1 0 7 1 3 2 5 6 4 0 0 1 0 1 1 0

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4 0 1 0 0 0 0 0 3 1 7 2 5 6 4 0 0 0 0 1 1 0 7 1 3 2 5 6 4 0 0 1 0 1 1 0 4 6 5 2 3 1 7

Ebauche de preuve 6 3 1 7 2 5 4 0 0 0 0 0 0 0 5 2 7 1 3 6 4 0 1 0 0 0 0 0 3 1 7 2 5 6 4 0 0 0 0 1 1 0 7 1 3 2 5 6 4 0 0 1 0 1 1 0 4 6 5 2 3 1 7 0 0 0 0 0 0 1...

Complexité On peut borner par O(2 n ) on considérant que l on va de 0 0 0 0 0 0 0 à 1 1 1 1 1 1 1

Complexité On peut borner par O(2 n ) on considérant que l on va de 0 0 0 0 0 0 0 à 1 1 1 1 1 1 1 Conjecture de Chvàtal L algorithme est en O(n 2 )?

Des exemples difficiles : 6 2 1 10 11 8 12 3 4 7 9 5 nécessite 172 retournements

Des exemples difficiles : 6 2 1 10 11 8 12 3 4 7 9 5 nécessite 172 retournements 2 8 11 12 4 1 10 9 3 6 7 5 nécessite 171 retournements

Des exemples difficiles : 6 2 1 10 11 8 12 3 4 7 9 5 nécessite 172 retournements 2 8 11 12 4 1 10 9 3 6 7 5 nécessite 171 retournements Les plus mauvais cas avec 12 éléments

Moralité Il n est pas si facile d analyser la complexité (le comportement) d un algorithme possédant une seule instruction. Ces opérations de retournement interviennent dans la nature sur les genômes et sont étudiées en bioinformatique (tri par inversion de permutations).

Tout ce que l on sait à ce jour... Il existe un exemple en O(n 2 ) En moyenne c est O(n)

Les fonctions de Collatz Histoire d une grenouille Le crêpier maladroit Des algorithmes Les fonctions de Collatz La fonction très récursive Tak

Les fonctions de Collatz Prenez un entier positif; s il est pair, divisez-le par 2 ; s il est impair, multipliez-le par 3 et ajoutez lui 1? Réitérez ce processus sur plusieurs exemples que semble-t-il se passer?

Les fonctions de Collatz Prenez un entier positif; s il est pair, divisez-le par 2 ; s il est impair, multipliez-le par 3 et ajoutez lui 1? Réitérez ce processus sur plusieurs exemples que semble-t-il se passer? Partons de l entier 7, et regardons la suite alors construite : 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1. Dès qu on tombe sur 1 le calcul s arrête.

Les fonctions de Collatz Essayons avec les entiers : 8, 9, 10

Les fonctions de Collatz Le problème de Syracuse : f(n) : si n = 1 alors retourner 1 sinon si n est pair alors retourner f(n/2) sinon retourner f(3n + 1) nمح nمح

Les fonctions de Collatz Le problème de Syracuse : f(n) : si n = 1 alors retourner 1 sinon si n est pair alors retourner f(n/2) sinon retourner f(3n + 1) nمح nمح Expérimentalement (i.e. en programmant cette fonction) pour tout entier n fixé, f (n) = 1 (c.a.d. le calcul s arrête en un temps fini).

Les fonctions de Collatz Il est conjecturé que ce programme s arrête pour toute valeur de n. Ce problème dont l énoncé est très simple, a été posé en 1930 par Lothar Collatz, puis transmis par Helmutt Hasse puis enfin par Stanislas Ulam et a passionné tous les mathématiciens qui l ont considéré. On le connaît aussi sous le nom du problème 3x + 1

Les fonctions de Collatz Que sait-on aujourd hui? Plus d une centaine d articles publiés sur la question

Les fonctions de Collatz Que sait-on aujourd hui? Plus d une centaine d articles publiés sur la question Pour 75 % des entiers la conjecture a été démontrée.

Les fonctions de Collatz Que sait-on aujourd hui? Plus d une centaine d articles publiés sur la question Pour 75 % des entiers la conjecture a été démontrée. Mais pour le reste?????

La fonction très récursive Tak Histoire d une grenouille Le crêpier maladroit Des algorithmes Les fonctions de Collatz La fonction très récursive Tak

La fonction très récursive Tak Un dernier exercice une simple fonction récursive : la fonction Tak Pour i,j, k entiers on définit la fonction Tak proposée par Takeuchi pour le test des implémentations de la récursivité dans des langages fonctionnels de type Lisp (cf. R.P. Gabriel) : Tak(i,j,k) : si i j alors retourner j sinon Tak(Tak(i 1,j,k),Tak(j 1,k,i),Tak(k 1,i,j)) nمح

La fonction très récursive Tak Un dernier exercice une simple fonction récursive : la fonction Tak Pour i,j, k entiers on définit la fonction Tak proposée par Takeuchi pour le test des implémentations de la récursivité dans des langages fonctionnels de type Lisp (cf. R.P. Gabriel) : Tak(i,j,k) : si i j alors retourner j sinon Tak(Tak(i 1,j,k),Tak(j 1,k,i),Tak(k 1,i,j)) nمح Montrer que cet algorithme doublement récursif s arrête pour tout triplet d entiers (i, j, k) et trouver ce qu il calcule.