Lecture 9 Algorithmes Le Bon, la Brute et le Truand

Documents pareils
Chapitre 7. Récurrences

Optimisation Discrète

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

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)

Programmation linéaire

Polynômes à plusieurs variables. Résultant

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

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Résolution de systèmes linéaires par des méthodes directes

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Corrigé des TD 1 à 5

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

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

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

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Initiation à l algorithmique

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Les arbres binaires de recherche

Quelques Algorithmes simples

Algorithmes pour la planification de mouvements en robotique non-holonome

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

= constante et cette constante est a.

1 Recherche en table par balayage

Les structures de données. Rajae El Ouazzani

I. Polynômes de Tchebychev

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Cours 7 : Utilisation de modules sous python

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

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


Représentation d un entier en base b

Feuille TD n 1 Exercices d algorithmique éléments de correction

Rappels sur les suites - Algorithme

Cryptographie et fonctions à sens unique

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques. Laurent Canet

Recherche dans un tableau

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

Quelques tests de primalité

Algorithmique I. Algorithmique I p.1/??

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

Cours de Master Recherche

Objets Combinatoires élementaires

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

Résolution d équations non linéaires

Introduction à MATLAB R

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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

Licence Sciences et Technologies Examen janvier 2010

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

Simulation de variables aléatoires

Quatrième partie IV. Test. Test 15 février / 71

Principes d implémentation des métaheuristiques

Algorithmique, Structures de données et langage C

Théorie et codage de l information

Introduction à l étude des Corps Finis

MIS 102 Initiation à l Informatique

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

CARTE DE VOEUX À L ASSOCIAEDRE

Chp. 4. Minimisation d une fonction d une variable

Cours 1 : La compilation

STAGE IREM 0- Premiers pas en Python

LES MÉTHODES DE POINT INTÉRIEUR 1

Le calcul formel dans l enseignement des mathématiques

Continuité d une fonction de plusieurs variables

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

Organigramme / Algorigramme Dossier élève 1 SI

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

Algorithmique et Programmation

Représentation des Nombres

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

V- Manipulations de nombres en binaire

Extrait du poly de Stage de Grésillon 1, août 2010

Chapitre 10. Les interfaces Comparable et Comparator 1

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

as Architecture des Systèmes d Information

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Bases de programmation. Cours 5. Structurer les données

Initiation à la programmation en Python

Programmation par contraintes. Laurent Beaudou

Partie 1 - Séquence 3 Original d une fonction

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

Probabilités sur un univers fini

Chapitre 6. Fonction réelle d une variable réelle

Logique. Plan du chapitre

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

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

Comment démontrer des formules sans effort? exposé de maîtrise

Fonction inverse Fonctions homographiques

UE C avancé cours 1: introduction et révisions

Raisonnement par récurrence Suites numériques

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

Objets et Programmation. origine des langages orientés-objet

Transcription:

Lecture 9 Algorithmes Le Bon, la Brute et le Truand Cours Optimisation Discrète 21 avril 2011 Friedrich Eisenbrand EPFL 123

Notation grand O Motivation Les algorithmes nécessitent un certain nombre d opérations de base et donc de temps. Plus l entrée est grande, plus il faut d opérations. Comment évaluer la qualité d un algorithme? Exemple Un algorithme A effectue 4 n + 100 opérations de base sur une entrée de longueur n. Un algorithme B effectue 2 n 2 opérations de base sur une entrée de longueur n. L algorithme B est plus rapide pour les petites entrées. L algorithme A est plus rapide dès que la longueur de l entrée dépasse 9. 124

Graphe des deux fonctions 125

Notation grand O Définition Soient f, g : N R 0 des fonctions. On écrit f = O(g) s il existe une constante c R et un nombre N N tels que On écrit f = Ω(g) if g = O(f ). f (n) c g(n) si n N. Exemple 5n 3 + n + 7 = O(n 3 ) sin(n) =O(1) n k = O(2 n ) pour tout k N 126

Analyse des algorithmes de tri Trier une liste de nombres Entrée : n entiers naturels a 1,..., a n But : Réordonner les nombres (c est-à-dire trouver une permutation π S n ) de telle façon que a π(1) a π(n). Modèle de calcul Nous supposons que les opérations de base incluent la comparaison de deux nombres (opération en temps constant). 127

La brute Tri à bulles def bubble ( L i s t, i ): k = i while k>=1 and L i s t [ k ]<List [ k 1] : L i s t [ k 1:k +1] = reversed ( L i s t [ k 1:k + 1 ] ) k = k 1 def b u b b l e sort ( L i s t ): for k in range ( l e n ( L i s t ) ) : bubble ( L i s t, k ) 128

Analyse du tri à bulles Théorème Pour trier n nombres, le tri à bulle nécessite O(n 2 ) opérations de base. Il existe une famille de listes L n, chacune de longueur n, sur lesquelles le tri à bulles effectue Ω(n 2 ) opérations. 129

Le bon Tri fusion def mergesort ( L i s t ): if l e n ( L i s t ) < 2 : return L i s t else : m = l e n ( L i s t ) / 2 L e f t = mergesort ( L i s t [:m]) Right = mergesort ( L i s t [m: ] ) return merge ( L e ft, Right ) 130

Le bon Procédure de fusion def merge ( L e ft, Right ): L i s t = [ ] L, R = 0, 0 while L<=len ( L e f t ) 1 and R <= l e n ( Right ) 1 : if L e f t [ L ] <= Right [R] : L i s t. append( L e f t [ L ]) L = L+1 else : L i s t. append( Right [R ]) R = R+1 L i s t += L e f t [ L :] L i s t += Right [R :] return L i s t 131

Analyse du tri fusion Théorème Pour trier n nombres, le tri fusion nécessite O(n log n) opérations de base. Théorème Un algorithme qui n obtient de l information sur les nombres de l entrée qu en comparant deux nombres (modèle par comparaisons) nécessite Ω(n log n) comparaisons pour trier une suite de n nombres. 132

Le truand Code spaghetti 133

Algorithmes en temps polynômial Définition (Algorithme en temps polynômial) Un algorithme s exécute en temps polynômial s il existe une constante k telle que le nombre d opérations de base que l algorithme effectue est majoré par O(n k ), où n est la longueur de l entrée de l algorithme. Exemple Le tri fusion et le tri à bulles sont des algorithmes en temps polynômial. Mais le tri fusion est meilleur en pire cas, et aussi en pratique. Exercice de 5 minutes L algorithme suivant est-il en temps polynômial? Entrée : Entier naturel k en notation unaire s = 2 Répéter k fois : s = s 2 Supposer que s est stocké en notation binaire! 134

L algorithme du simplexe est-il en temps polynômial? Nombre d opérations arithmétiques Chaque itération de l algorithme du simplexe nécessite un nombre polynômial d opérations arithmétiques. On peut montrer que si les nombres rationnels sont sans facteurs communs (c est-à-dire que leurs numérateur et dénominateur sont premiers entre eux) pendant l élimination de Gauss-Jordan, alors tous les nombres sont de longueur polynômiale durant les étapes intermédiaires de l élimination de Gauss-Jordan. On ne sait pas s il existe une variante de l algorithme du simplexe qui n effectue qu un nombre polynômial (en n et m) d opérations. 135

L algorithme du simplexe est-il en temps polynômial? Taille de l entrée Taille de l entier a : log( a + 1) Taille du nombre rationnel p/q avec gcd(p, q) =1: taille(p)+taille(q) Taille de la matrice A Q m n : m n taille(u), où U est un majorant des numérateurs et dénominateurs des entrées. Taille du vecteur v Q n : n taille(u), où U est un majorant des numérateurs et dénominateurs des entrées. 136

Algorithme en temps polynômial pour la programmation linéaire Théorème (Khachiyan 79) Il existe un algorithme pour résoudre le programme linéaire max{c T x : x R n, Ax b} qui effectue un nombre polynômial d opérations arithmétiques sur des nombres rationnels de taille polynômiale. Polynômial signifie ici O(n k ) pour une constante k, et n est un majorant des tailles de A, b et c. 137