Entraînement au concours ACM-ICPC

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

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

Entraînement au concours ACM-ICPC

Quelques Algorithmes simples

Représentation d un entier en base b

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Formats d images. 1 Introduction

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

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Cours 1 : Qu est-ce que la programmation?

Chapitre 10. Les interfaces Comparable et Comparator 1

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

ARBRES BINAIRES DE RECHERCHE

Codage d information. Codage d information : -Définition-


Chapitre 7. Récurrences

UTILISER UN SITE COLLABORATIF

UE Programmation Impérative Licence 2ème Année

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

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

Comment reproduire les résultats de l article : POP-Java : Parallélisme et distribution orienté objet

MIS 102 Initiation à l Informatique

Mesurer les performances (CPU) sous Linux

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

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

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Differential Synchronization

Python - introduction à la programmation et calcul scientifique

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Manuel de validation Fascicule v4.25 : Thermique transitoire des structures volumiques

Objets Combinatoires élementaires

Algorithmique, Structures de données et langage C

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TD3 - Facturation avec archivage automatisé

Initiation au binaire

Algorithmes sur les mots (séquences)

1 Recherche en table par balayage

Cours de Programmation 2

Algorithmique et Programmation Fonctionnelle

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Évaluation des logiciels et autres réalisations

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

Initiation à l algorithmique

Dossier de presse. L Anses lance son nouveau site Internet

Rappels Entrées -Sorties

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

CHAPITRE VIII : Les circuits avec résistances ohmiques

Informatique Générale

données en connaissance et en actions?

CORRECTION EXERCICES ALGORITHME 1

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

4D v11 SQL Release 5 (11.5) ADDENDUM

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

Cours 1 : La compilation

Le code à barres EAN 13 mes premiers pas...

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

Création de maquette web

Conception de circuits numériques et architecture des ordinateurs

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

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

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

Algorithme. Table des matières

Machines virtuelles Cours 1 : Introduction

Les chaînes de caractères

CONTRAT DE LICENCE D UTILISATION DU LOGICIEL MORPH M SOUS LA FORME MORPH M PYTHON

1 Introduction au codage

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Mode d Emploi. Résult Arc Logiciel de Gestion de Compétitions. Droits d utilisation Informations Générales. 1/. Présentation de Résult Arc

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

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

Solution logicielle pour le pilotage et l ERM. Journées d études IARD 26 mars mars 2010

1.6- Génération de nombres aléatoires

as Architecture des Systèmes d Information

Probabilités sur un univers fini

Connecteur Zimbra pour Outlook 2007 et 2010 (ZCO) w

Algorithmique et Programmation, IMA

UML (Paquetage) Unified Modeling Language

ALGORITHMIQUE ET PROGRAMMATION En C

Jeux de caracte res et encodage (par Michel Michaud 2014)

Cours de Master Recherche

Historique des versions

Théorie des Langages

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

Qualité du logiciel: Méthodes de test

Glossaire des nombres

Procédure de sauvegarde pour AB Magique

Chapitre 1 I:\ Soyez courageux!

Les arbres binaires de recherche

Big data et sciences du Vivant L'exemple du séquençage haut débit

Outils pour les réseaux de neurones et contenu du CD-Rom

Transcription:

Entraînement au concours ACM-ICPC Algorithmes de texte PAGE 1 / 17

Plan Recherche de (sous-)chaîne Expressions rationnelles et automates Conclusion PAGE 2 / 17

Trouver toutes les occurrences d une souschaîne dans une chaîne Algorithme naïf // s est la chaîne, p le motif for ( int i=0,j;i<s. size () -p. size ()+1;++ i) { for (j =0;j<p. size () && s[i+j ]== p[j ];++ j) ; } if(j==p. size ()) cout << " Match à la position " << i << endl ; En général, similaire à l implémentation native du langage ( strstr, string::find, String.indexOf() ), fortement optimisée Complexité O( s p ) Peut-on mieux faire? PAGE 3 / 17

Knuth Morris Pratt : idée p motif, s chaîne Pour chaque préfixe p de p, maintenir la taille du préfixe maximal de p qui est un suffixe strict de p p = abcabd 00120 Tableau constructible en temps linéaire en le motif p s = abcababcabd abcabd PAGE 4 / 17

Knuth Morris Pratt : idée p motif, s chaîne Pour chaque préfixe p de p, maintenir la taille du préfixe maximal de p qui est un suffixe strict de p p = abcabd 00120 Tableau constructible en temps linéaire en le motif p s = abcababcabd abcabd PAGE 4 / 17

Knuth Morris Pratt : idée p motif, s chaîne Pour chaque préfixe p de p, maintenir la taille du préfixe maximal de p qui est un suffixe strict de p p = abcabd 00120 Tableau constructible en temps linéaire en le motif p s = abcababcabd abcabd PAGE 4 / 17

Knuth Morris Pratt : idée p motif, s chaîne Pour chaque préfixe p de p, maintenir la taille du préfixe maximal de p qui est un suffixe strict de p p = abcabd 00120 Tableau constructible en temps linéaire en le motif p s = abcababcabd abcabd PAGE 4 / 17

Knuth Morris Pratt : idée p motif, s chaîne Pour chaque préfixe p de p, maintenir la taille du préfixe maximal de p qui est un suffixe strict de p p = abcabd 00120 Tableau constructible en temps linéaire en le motif p s = abcababcabd abcabd PAGE 4 / 17

Knuth Morris Pratt : interprétation comme automate Peut-être vu comme l automate déterministe des mots ayant pour suffixe p : a a a a a c a a b c a b d 1 2 3 4 5 6 7 a, b a, c a a, b a, c, d a PAGE 5 / 17

Recherche d un mot parmi un ensemble de mots Dictionnaire D de n mots Pour rechercher si un mot est dans cet ensemble : Vecteur ou liste chaînée : O(n) Arbre binaire équilibré : O(log n) Table de hachage : O(1) ; possibilités de collision, O(n) dans le pire des cas Trie (ou arbre préfixe) : O(1) PAGE 6 / 17

Trie (arbre préfixe) to o t t e te A A 15 7 a d n n 5 tea ted ten inn 3 4 12 9 i i 11 n in Arbre de tous les préfixes des mots de D Arêtes étiquetées par les lettres de l alphabet On indique sur chaque nœud de l arbre si ce préfixe forme un des mots de D Permet de rechercher efficacement l ensemble des continuations d un mot m dans D (l ensemble des mots de D dont m est préfixe) L ordre lexicographique est préservé PAGE 7 / 17

Arbre radix (trie Patricia) CC-BY Claudio Rochini, Wikimedia Raffinement des tris Fusion d un nœud avec son nœud fils s il est unique Espace mémoire considérablement réduit dans certaines applications Le branchement peut se faire bit par bit (quand on stocke des entiers), lettre par lettre, ou groupe de bits par groupe de bits (le nombre de bits par branchement est le radix) PAGE 8 / 17

Chercher les occurrences d un ensemble de sous-chaînes dans une chaîne Dictionnaire D de taille n contenant des mots de taille k, chaîne de taille l Applications répétées de Knuth Morris Pratt? O(n (k + l)) On peut faire mieux : généraliser l algorithme de Knuth Morris Pratt à un trie arbitraire (et non une séquence de caractères) : O(n k + l) PAGE 9 / 17

Aho Corasick a b c b a c a b a a CC-BY Dllu, Wikimedia On construit un trie du dictionnaire (en noir, les mots du dictionnaire sont sur fond bleu) On ajoute des pointeurs vers le plus grand suffixe strict présent dans le trie (en bleu) On ajoute la clôture transitive de ces pointeurs restreinte aux mots du dictionnaire Exemple : abccab donne successivement les mots a (parcours normal), ab (parcours normal), bc (après suivi du pointeur), c (clôture), c (après suivi du pointeur), a (clôture), ab (après suivi du pointeur) PAGE 10 / 17

Arbre des suffixes 5 3 1 PAGE 11 / 17 A NA BANANA$ $ NA $ $ 0 NA$ 4 2 NA$ Trie Patricia des suffixes d un mot donné (ici, BANANA, suivi d un symbole spécial $) Facilement constructible en temps O(n 2 ) de droite à gauche Possible de le construire en temps O(n) de gauche à droite, avec un mécanisme similaire aux pointeurs de Aho Corasick Permet d indexer une chaîne pour pouvoir ensuite efficacement rechercher des sous-chaînes Nombreuses autres applications : p. ex., plus longue sous-chaîne commune

Plan Recherche de (sous-)chaîne Expressions rationnelles et automates Conclusion PAGE 12 / 17

Expressions rationnelles Langage permettant de décrire des motifs à rechercher dans une chaîne de caractères Par exemple : (a b)*#(a b)*(#(a b #)*)? Généralise la recherche de sous-chaînes, de mots d un dictionnaire, de préfixes, de suffixes, etc. Processeurs d expressions rationnelles dans la bibliothèque standard de Java ( java.util.regex ) et dans la bibliothèque standard de C++ 2011 ( std::regex ) PAGE 13 / 17

Automates Une expression rationnelle peut être traduite en un automate fini nondéterministe en temps linéaire (algorithme de Thompson, résulte en des transitions spontanées) ou quadratique (algorithme de Glushkov, plus petit nombre d états) Reconnaître si une chaîne de caractères de longueur n est acceptée par un automate nondéterministe à m états est en O(n m) Un automate nondéterministe à m états peut être transformé en automate déterministe à O(2 m ) états en temps O(2 m ) Reconnaître si une chaîne de caractères de longueur n est acceptée par un automate déterministe à m états est en O(n) PAGE 14 / 17

Expressions rationnelles et expressions rationnelles Ce que Java ou C++ appellent expression rationnelle n est pas une expression rationnelle : Références arrières (permettant d indiquer qu une sous-chaîne se répète) Opérateur * glouton et *? réticent Du coup, les implémentations des expressions rationnelles n utilisent pas des automates, mais du backtracking Souvent beaucoup moins efficaces! Exponentiel en la taille de l expression rationnelle dans les cas pathologiques PAGE 15 / 17

Plan Recherche de (sous-)chaîne Expressions rationnelles et automates Conclusion PAGE 16 / 17

PAGE 17 / 17 En résumé Déterminer si une chaîne est dans un ensemble de chaînes : table de hachage Déterminer les chaînes d un ensemble dont une chaîne est préfixe : trie, arbre radix Recherche d une petite sous-chaîne d une chaîne : implémentation native du langage de programmation Recherche d une sous-chaîne de taille non négligeable d une longue chaîne : Knuth Morris Pratt (ou Boyer Moore, non traité ; KMP est meilleur quand l alphabet est petit, p. ex., ACTG de l ADN) Recherche d un ensemble de sous-chaînes dans une chaîne : Aho Corasick ou arbre des suffixes (Aho Corasick indexe les sous-chaînes, l arbre des suffixes indexe la chaîne) Recherche d un motif complexe dans une chaîne : expression rationnelle ou parfois automate déterministe/nondéterminste compilé à partir du motif

Contexte public } avec modifications Par le téléchargement ou la consultation de ce document, l utilisateur accepte la licence d utilisation qui y est attachée, telle que détaillée dans les dispositions suivantes, et s engage à la respecter intégralement. La licence confère à l utilisateur un droit d usage sur le document consulté ou téléchargé, totalement ou en partie, dans les conditions définies ci-après et à l exclusion expresse de toute utilisation commerciale. Le droit d usage défini par la licence autorise un usage à destination de tout public qui comprend : le droit de reproduire tout ou partie du document sur support informatique ou papier, le droit de diffuser tout ou partie du document au public sur support papier ou informatique, y compris par la mise à la disposition du public sur un réseau numérique, le droit de modifier la forme ou la présentation du document, le droit d intégrer tout ou partie du document dans un document composite et de le diffuser dans ce nouveau document, à condition que : L auteur soit informé. Les mentions relatives à la source du document et/ou à son auteur doivent être conservées dans leur intégralité. Le droit d usage défini par la licence est personnel et non exclusif. Tout autre usage que ceux prévus par la licence est soumis à autorisation préalable et expresse de l auteur : sitepedago@telecom-paristech.fr PAGE 18 / 17