Algorithmique (Introduction)

Slides:



Advertisements
Présentations similaires
Chapitre annexe. Récursivité
Advertisements

Algorithmes et structures de données avancés
Structures de données et complexité
Introduction à l’Algorithmique
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Optimisation dans les télécommunications
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
INTRODUCTION.
Présentation Unité de codage
Conception et analyse des algorithmes
Références Bibliographiques
UNIVERSITE DES SCIENCES ET DE LA TECHNOLOGIE D’ORAN
Récursivité.
Introduction à l’algorithmique
Démarche de résolution de problèmes
Heuristiques A. Introduction B. Recherche d ’une branche
Methode de Tri efficace
Rappel... Solution itérative de systèmes linéaires (suite et fin).
Algorithmique et Programmation
Les fichiers indexés (Les B-arbres)
Introduction à l’algorithmique
Semaine #1 INF135 par Frédérick Henri.
IFT Complexité et NP-complétude
IFT Chapitre 1 Classes de complexité fondamentales:
STRUCTURES DE DONNÉES Maxime CROCHEMORE

Algorithmes d ’approximation
Algorithmes probabilistes
Efficacité des algorithmes
Mise en oeuvre des MMCs L'utilisation des MMCs en reconnaissance des formes s'effectue en trois étapes : définition de la topologie de la chaîne de Markov,
Les Algorithmes de Tri Introduction Tri par Sélection
Programmation dynamique
Programmation non procédurale Le projet ECOLE 2000
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Programmation linéaire en nombres entiers : les méthodes de troncature
Analyse des Algorithmes
III. Récursivité Principe et exemples
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Analyse d’algorithmes

Conception et analyse des algorithmes
RAPPEL Qu’est ce qu’une structure de contrôle itérative ?
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Diviser pour résoudre A. Principe général B. Applications
Introduction à l’algorithmique et aux structures de données
Elaboré par : Seif MESDOUA Mme M.DRIDI
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Paradigmes des Langages de Programmation
Le chiffrement asymétrique
D.E ZEGOUR Ecole Supérieure d’Informatique
INTRODUCTION.
TD0 - Rappels. Acquis du programme 1 ère année Analyser et modéliser : un problème, une situation ; Imaginer et concevoir : une solution algorithmique.
Algorithmes et Programmation
III. Récursivité Principe et exemples
Algorithmes Branch & Bound
Arbres binaires et tables de hachage
Pr BELKHIR Abdelkader USTHB
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.
Initiation à la conception des systèmes d'informations
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
Recherches locales et méta-heuristiques
Introduction et Généralités sur l’Algorithmique
La Récursivité.
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
1/16 Chapitre 3: Représentation des systèmes par la notion de variables d’état Contenu du chapitre 3.1. Introduction 3.2. Les variables d’état d’un système.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Réalisation d’un logiciel de Chiffrement RSA.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Abder Alikacem Semaines 1-4 Synthèse
GdR MoMaS Novembre 2003 Conditions d’interface optimales algébriques pour la vibro-élasticité. François-Xavier Roux (ONERA) Laurent Sériès (ONERA) Yacine.
Transcription de la présentation:

Algorithmique (Introduction) 8INF433 Algorithmique (Introduction)

Définition informelle Algorithme: Procédure ou ensemble fini de règles permettant de résoudre un problème Exemple: programme en C. Structures de données: Méthodes permettant d'organiser de grandes quantités de données. Il y a plusieurs algorithmes possibles pour un même problème.

Exemple 1 Multiplication: algorithme standard 45 × 19 ------ 405 (9 × 45) + 45 (1 × 45) 855

Exemple 2 Multiplication à la russe 45 19 19 22 38 11 76 76 5 152 152 2 304 1 608 608 ------- 855

Exemple 2 (suite) Multiplication à la russe 19 45 45 9 90 90 4 180 2 360 1 720 720 ------- 855

Objectifs principaux du cours Apprendre certaines techniques permettant de concevoir des algorithmes efficaces Être en mesure d'analyser et de comparer l'efficacité de différents algorithmes.

Origine Le mot algorithme dérive du nom: Abû Abdullah Muhammad Ibn Mûsâ Al-Khawarizmî Vers 825 après J.C. il écrit un ouvrage de mathématique où il décrit la façon d'effectuer l'addition, la multiplication, etc. Premier algorithme non trivial connu (295 avant J.C.): Algorithme d'Euclide pour calculer le plus grand commun multiple de deux nombres entiers.

Algorithme naïf PGCD(m,n) i = min(n,m) + 1 répéter i=i-1 jusqu'à ce que i divise m et n retourner i

Algorithme d'Euclide (version moderne) PGCD(m,n) tant que m>0 faire t=m m=n mod m n=t retourner n t m n 15 21 15 6 15 6 3 6 3 0 3

Problèmes On est intéressé par les problèmes algorithmiques seulement: Doit pouvoir se résoudre sur un ordinateur: Par exemple le problème de trouver une juste sentence pour une personne reconnu coupable d'un délit fait appel à des considérations culturelle et philosophiques et ne peut donc pas être résolu par un ordinateur. L'ensemble des solutions correctes doit être non ambiguë: Par exemple la traduction d'un texte de l'anglais au français peut être réalisée par un ordinateur mais il n'est pas clair ce que l'on doit considérer comme une traduction correcte.

Problèmes algorithmiques Un problème algorithmique est défini par: La description de l'ensemble des entrées possibles (chaque entrée est une séquence finie de caractères). La description d'une fonction qui associe à chaque entrée un ensemble de résultats corrects (chaque résultat est aussi une séquence finie de caractères)

Exemples de problèmes algorithmiques Multiplication (problème d'évaluation): Entrée: Deux entiers binaires x et y (de longueur arbitraire) Sortie: Le produit de x par y en binaire Test de primalité (problème de décision): Entrée: Un entier binaire positif n Sortie: 1 si n est premier, 0 sinon. Problème du plus court chemin (problème d'optimisation): Entrée: Un graphe pondéré, donné sous la forme d'une matrice d'adjacence, ainsi que deux noeuds particuliers s et t Sortie: Une suite de noeuds représentant un plus court chemin du noeud s au noeud t

Le choix de l'algorithme L'analyse d'un algorithme se fait selon les critères suivants: Rectitude Complexité (temps d'exécution, espace mémoire, etc.) Facilité de maintenance Nous nous intéresserons principalement au deux premiers critères.

Quelques problèmes étudiés dans ce cours (1) Problèmes de nature mathématique: Plus grand commun diviseur test de primalité multiplication exponentiation factorisation multiplication matricielle Grande utilité en cryptologie (commerce électronique)

Cryptologie à clef publique (RSA) 1) Choisir 2 grands nombres premiers p et q 2) Calculer n=pq 3) Calculer m=(p-1)(q-1) 4) Trouver e et d tels que ed mod m = 1 Clef privée: (d, n) Clef publique: (e, n)

Comment Alice et Bernard utilisent RSA Bernard cherche la clef publique d’Alice (e, n) dans un annuaire. Bernard encode son message M avec cette clef: C=Me (mod n) Alice reçoit C et utilise sa clef privée (d, n) pour le décrypter : M= Cd (mod n)

Quelques problèmes étudiés dans ce cours (2) Problèmes de graphes: Plus court chemin Arbre couvrant Problème du commis voyageur Coloration de graphes Parcours de graphes Utilité dans plusieurs domaines (jeux, réseaux, etc.)

Quelques problèmes étudiés dans ce cours (3) Traitement de séquences de caractères: Plus longue sous-séquence commune Mise en forme de textes Recherche de chaînes de caractères Compression de texte Applications en bio-informatique, base de données, traitement de texte.

Quelques problèmes étudiés dans ce cours (4) Géométrie algorithmique: Déterminer si deux segments de droite se coupent Recherche de l'enveloppe convexe Recherche des points les plus rapprochés Application en infographie.

Techniques de conception d'algorithmes (1) Algorithmes voraces (ou gloutons): Méthode itérative utilisée pour résoudre des problèmes d'optimisation. Exemples d'applications: Chemin le plus court dans un graphe Arbre couvrant minimal Compression de texte Souvent utilisé pour trouver une solution initiale afin résoudre un problème d'optimisation (e.g. branch and bound)

Techniques de conception d'algorithmes (2) Algorithmes diviser-pour-régner: Approche récursive: On divise le problème en plusieurs sous problèmes et on combine les résultats pour obtenir la solution globale. Exemples d'applications: Tri par fusion Quicksort Multiplication de grand entiers Exponentiation Trouver les points les plus rapprochés

Techniques de conception d'algorithmes (3) Programmation dynamique: Utilisé lorsqu'une solution récursive est inefficace parce que beaucoup d'appels identiques sont effectués Exemples d'applications: Calcul des nombres de Fibonacci Formatage de texte en paragraphe Produit de plusieurs matrices Plus longue sous séquence commune

Techniques de conception d'algorithmes (4) Algorithmes probabilistes: L'algorithme a accès à un générateur de bits aléatoires. Deux principaux types: Faible probabilité que le temps d'exécution soit long. Faible probabilité de ne pas trouver la bonne réponse. Exemples d'applications: Test de primalité Factorisation Approximation de problèmes complexes Hachage universel

Techniques de conception d'algorithmes (5) Algorithmes parallèles: L'algorithme peut utiliser plusieurs processeurs pour accélérer les calculs. Exemples d'applications: Multiplication matricielle Tri par fusion

Outils mathématiques Notation asymptotique: Pour comparer et analyser les algorithmes indépendamment de la machine ou du langage Résolution de récurrence: Pour analyser l'efficacité des algorithmes récursifs Éléments de base de la théorie des probabilité: Pour analyser les algorithmes probabilistes.