Recherche de motifs ATTENTION!

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

Représentation des Nombres

Initiation à la programmation en Python

Compression Compression par dictionnaires

Alarme domestique- Présentation

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

Plus courts chemins, programmation dynamique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

chapitre 4 Nombres de Catalan

Recherche dans un tableau

V- Manipulations de nombres en binaire

La Clé informatique. Formation Excel XP Aide-mémoire

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Programmation Linéaire - Cours 1

Initiation à LabView : Les exemples d applications :

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

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

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

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

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

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

Algorithmique avec Algobox

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Indications pour une progression au CM1 et au CM2

Représentation d un entier en base b

Optimisation for Cloud Computing and Big Data

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

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

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

Correction TD algorithmique

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

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

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Transmission d informations sur le réseau électrique

Chapitre 1 : Évolution COURS

Cours d initiation à la programmation en C++ Johann Cuenin

Quelques algorithmes simples dont l analyse n est pas si simple

ASR1 TD7 : Un microprocesseur RISC 16 bits

TEPZZ A_T EP A1 (19) (11) EP A1 (12) DEMANDE DE BREVET EUROPEEN. (51) Int Cl.: G07F 7/08 ( ) G06K 19/077 (2006.

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

1 Recherche en table par balayage

Encryptions, compression et partitionnement des données

Comment utiliser WordPress»

Styler un document sous OpenOffice 4.0

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)

Cours d Analyse. Fonctions de plusieurs variables

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

ÉPREUVE COMMUNE DE TIPE Partie D

Exercice 6 Associer chaque expression de gauche à sa forme réduite (à droite) :

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

techniques de tirs a l avant - partie 2

GUIDE Excel (version débutante) Version 2013

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

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


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

TP 1. Prise en main du langage Python

Cours d algorithmique pour la classe de 2nde

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

Algorithmique et Programmation, IMA

La gestion de données dans le cadre d une application de recherche d alignement de séquence : BLAST.

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

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

Ordonnancement temps réel

Chapitre 2 Le problème de l unicité des solutions

LES GENERATEURS DE NOMBRES ALEATOIRES

La question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient

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

Programmation linéaire

Jean-Philippe Préaux

Chapitre 3. Les distributions à deux variables

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

Introduction à MATLAB R

Relation entre deux variables : estimation de la corrélation linéaire

Probabilités sur un univers fini

Les indices à surplus constant

Guide de l Administrateur

Algorithmes récursifs

Année Universitaire 2009/2010 Session 2 de Printemps

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

Quelques Algorithmes simples

Manuel d utilisation

Cours 1 : Qu est-ce que la programmation?

Annexe 6. Notions d ordonnancement.

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

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

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

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Cours IV Mise en orbite

Suites numériques 4. 1 Autres recettes pour calculer les limites

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

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

MODE D EMPLOI

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Gestion électronique des procurations

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Objectifs. Clustering. Principe. Applications. Applications. Cartes de crédits. Remarques. Biologie, Génomique

Transcription:

Recherche de motifs Épreuve pratique d algorithmique et de programmation Concours commun des écoles normales supérieures Durée de l épreuve: 3 heures 30 minutes Juin/Juillet 2010 ATTENTION! N oubliez en aucun cas de recopier votre u 0 à l emplacement prévu sur votre fiche réponse Important. Sur votre table est indiqué un numéro u 0 qui servira d entrée à vos programmes. Les réponses attendues sont généralement courtes et doivent être données sur la fiche réponse fournie à la fin du sujet. À la fin du sujet, vous trouverez en fait deux fiches réponses. La première est un exemple des réponses attendues pour un ũ 0 particulier (précisé sur cette même fiche et que nous notons avec un tilde pour éviter toute confusion!). Cette fiche est destinée à vous aider à vérifier le résultat de vos programmes en les testant avec ũ 0 au lieu de u 0. Vous indiquerez vos réponses (correspondant à votre u 0 ) sur la seconde et vous la remettrez à l examinateur à la fin de l épreuve. En ce qui concerne la partie orale de l examen, lorsque la description d un algorithme est demandée, vous devez présenter son fonctionnement de façon schématique, courte et précise. Vous ne devez en aucun cas recopier le code de vos procédures! Quand on demande la complexité en temps ou en mémoire d un algorithme en fonction d un paramètre n, on demande l ordre de grandeur en fonction du paramètre, par exemple: O(n 2 ), O(n log n),... Il est recommandé de commencer par lancer vos programmes sur de petites valeurs des paramètres et de tester vos programmes sur des petits exemples que vous aurez résolus préalablement à la main ou bien à l aide de la fiche réponse type fournie en annexe. Enfin, il est recommandé de lire l intégralité du sujet avant de commencer afin d effectuer les bons choix de structures de données dès le début.

1 Génération de phrases Considérons la suite d entiers (u k ) k définie par u k+1 = 15091 u k mod 64007. On s assurera de précalculer et stocker suffisamment de valeurs de u k de manière à pouvoir y accéder en temps constant par la suite. Une phrase P n est une séquence de n lettres (α k+1 ) 0 k<n prises dans l alphabet A = {A, B, C, D, E}. La lettre α k est choisie en fonction de la valeur v k = u k mod 16 : A si v k = 0 B si 1 v k < 2 α k = C si 2 v k < 4 D si 4 v k < 8 E si v k 8 La phrase Q n est la séquence de n lettres (α k+2 ) 0 k<n. Question 1 Quelles sont les phrases P 5 et Q 5? Dans la suite de cette épreuve, la séquence (m i ) 0 i<l désignera le motif et la séquence (t i ) 0 i<n désignera le texte où ce motif est recherché. Une fenêtre à la position i est une portion du texte (t j ) i j<i+l ayant la longueur du motif. Un algorithme de recherche va déplacer une fenêtre le long du texte jusqu à ce que le contenu de la fenêtre corresponde exactement au motif : un motif m de longueur l se trouve à la position i (0 i < n l) d un texte t si on a t i+j = m j pour tout j tel que 0 j < l. Le nombre d occurrences d un motif dans un texte est le nombre de positions où se trouve ce motif. En particulier, il est possible que des occurrences se recouvrent partiellement. Par exemple, le motif ABAB apparaît deux fois dans le texte ABABAB. Question 2 Combien y a-t-il d occurrences du motif ECEEDEED dans les textes P 10000, P 20000 et P 30000? L objectif des algorithmes de recherche présentés ci-dessous sera de compter le nombre d occurrences d un motif dans un texte, tout en essayant de minimiser le nombre de lettres lues dans ce texte. Les motifs considérés seront ECEEDEED et EDDCEED. 2 Coût de recherche Un algorithme de recherche va généralement lire des lettres du texte et les comparer à celle du motif. Potentiellement, certaines lettres du texte ne seront pas lues du tout lors de la recherche d un motif particulier. On s intéresse au nombre de positions accédées dans le texte. Si une lettre est lue une ou plusieurs fois à la position i du texte, alors cette position est considérée comme accédée. Question 3 Considérons un algorithme qui accède aux k positions d indices (u i mod k) 1 i k. Combien de positions différentes sont accédées pour les valeurs suivantes? k = 10, k = 100, k = 1000, k = 10000. 1 / 5

Le coût de recherche est défini comme le nombre de positions différentes accédées pour compter le nombre d occurrences d un motif dans un texte. Considérons un algorithme naïf R 1 qui, pour chaque entier i entre 0 et n l, teste si la fenêtre à la position i correspond au motif. Ce test s effectue en comparant de droite à gauche les lettres de la fenêtre et du motif. Si une des lettres ne correspond pas, la comparaison s arrête (les lettres plus à gauche sont ignorées), la fenêtre est décalée d un cran vers la droite, et la comparaison reprend à la lettre la plus à droite de la fenêtre. Question à développer pendant l oral : Justifier que, dans le meilleur des cas, le nombre de lettres accédées par l algorithme R 1 est n l + 1. Quel est ce cas? Question 4 Quel est le coût de la recherche des motifs suivants dans le texte Q 10000? P 2000, P 5000, P 8000? 3 Accélération par la dernière lettre Si la dernière lettre ω de la fenêtre n apparaît pas en avant-dernière position (l 2) du motif, la décaler d un cran vers la droite est inefficace. En effet, la nouvelle fenêtre ne peut pas contenir le motif ; lancer une comparaison ne sert donc à rien. La position i de la fenêtre aurait pu directement être augmentée de 2 lors de la recherche des occurrences. Similairement, si ω n apparaît ni en position l 2 ni en position l 3, la position de la fenêtre peut être incrémenté de 3 : aucune des fenêtres intermédiaires ne peut contenir le motif. Et ainsi de suite. Considérons donc un algorithme R 2, variante de R 1 qui déplace la fenêtre en fonction de la dernière lettre contenue dans celle-ci. Question 5 Supposons que le motif recherché soit P 100 et que la fenêtre en position i ait déjà été traitée. Quel est le plus grand incrément de i que l on peut appliquer sans risquer de rater une occurrence si la lettre du texte en position i + 99 est un A? un B? un C? un D? e) un E? Question à développer pendant l oral : Quelle complexité temporelle a la création d une table contenant ces valeurs en fonction de la taille de l alphabet et de la taille du motif? Peut-on l améliorer? Question 6 Quel est le coût de la recherche des motifs suivants dans la phrase P 30000 pour l algorithme R 2? ECEEDEED, EDDCEED. Question à développer pendant l oral : Pour un texte donné et une longueur de motif l donnée, certains motifs favorisent particulièrement l algorithme R 2, c est-à-dire qu ils ont un faible coût de recherche. Donner des exemples de tels couples motif/texte. Quel est alors le coût de la recherche en fonction de la taille du texte et de la taille du motif? Pour ces couples motif/texte particuliers, qu en est-il de la complexité temporelle totale de R 2 (création de la table puis nombre de comparaisons de lettres lors de la recherche des occurrences)? 2 / 5

Les valeurs stockées dans la table sont correctes et optimales. Elles sont correctes parce qu en effectuant les incréments correspondants, on ne risque jamais de dépasser un motif contenu dans un texte. Elles sont optimales parce que des incréments plus grands seraient incorrects. Par exemple, si la table ne contenait que des 1 (ce qui revient à l algorithme R 1 ), toutes les valeurs seraient correctes mais une seule d entre elles au plus serait optimale. On dit d un incrément qu il est approché si sa valeur est correcte mais pas forcément optimale. Question à développer pendant l oral : Quelles approximations peut-on introduire dans les valeurs de la table pour réduire la complexité temporelle de sa création tout en limitant le surcoût de la recherche? 4 Accélération par le plus long suffixe Repartons de l algorithme R 1 et calculons les déplacements de la fenêtre d une autre façon. Supposons que la comparaison du motif et de la fenêtre ait passé en revue k lettres avant de s arrêter. Autrement dit, les k 1 dernières lettres de la fenêtre correspondent. Par contre, celle en position l k ne correspond pas (si k est strictement plus petit que la longueur l du motif). Dans ces conditions, déplacer la fenêtre de δ lettres n est utile que si les k 1 dernières lettres déjà connues se trouvent aux positions l δ k +1... l δ 1 du motif et si la lettre en position l k ne se trouve pas en position l δ k. Dans ce qui précède, les positions négatives dans le motif sont ignorées. Par exemple, si le motif est CCBABABA et si k = 3, la fenêtre termine par xba avec x A. La position i de la fenêtre peut donc être incrémentée de δ = 4 pour aligner xba avec CBA. Les incréments plus petits ne respectent pas la présence des lettres BA (δ = 1, 3) ou la contrainte x A (δ = 2). Remarque : l incrément δ = 4 n est optimal que si x = C. Prendre en compte la valeur précise de la dernière lettre lue sera le sujet de la Section 5. Pour l instant, la seule chose qui importe est qu elle est différente d une certaine valeur. Pour traiter le cas où toutes les lettres de la fenêtre ont été comparées, on prendra comme convention que, si k = l, la première lettre de la fenêtre ne correspond pas, et si k = l +1, la fenêtre contient le motif. Question 7 Supposons que le motif recherché soit P 100 et que la fenêtre en position i ait déjà été traitée. Quel est le plus grand incrément de i que l on peut appliquer sans risquer de rater une occurrence quand le nombre de lettres comparées a été k = 1? k = 2? k = 3? k = 4? e) k = 99? Question à développer pendant l oral : Quelle complexité temporelle a la création de la table contenant tous les incréments pour 0 k l en fonction de la taille l du motif? Peut-on l améliorer? Quelles approximations peut-on introduire dans les valeurs de la table pour réduire la complexité temporelle de sa création? Question 8 Quel est le coût de la recherche des motifs suivants dans le texte P 30000 pour un algorithme R 3 utilisant cette deuxième table? ECEEDEED, EDDCEED. 3 / 5

Les algorithmes R 2 et R 3 sautent tous deux les fenêtres pour lesquels ils sont sûrs qu elles ne contiennent pas le motif. Il est possible de les combiner en un algorithme R 4 qui choisit toujours le plus grand des décalages proposés par R 2 et R 3 pour incrémenter la position de la fenêtre. Question 9 Quel est le coût de la recherche des motifs suivants dans le texte P 30000 pour l algorithme R 4 utilisant les deux tables à la fois? ECEEDEED, EDDCEED. 5 Automate de recherche Il existe d autres façons de combiner les approches R 2 et R 3. L une d elle est l utilisation d une machine à états. À chaque étape, cette machine lit une lettre à une certaine position de la fenêtre. En fonction de son état courant et de cette lettre, elle choisit alors quel sera son prochain état, de combien déplacer la fenêtre, et à quelle position dans la fenêtre lire la prochaine lettre. En d autres termes, cette machine est caractérisée par un ensemble fini S d états et une fonction de transition δ : S A S N [0, l 1] B. Cette fonction prend en entrée un état et une lettre ; elle renvoie un état, un décalage de fenêtre, une position dans la fenêtre, et un booléen indiquant si la fenêtre courante (avant décalage) contient le motif entier. Ainsi, si la fenêtre est en position i et si la fonction de transition renvoie (s, δ, j, V ), alors le motif a été trouvé en position i du texte, la prochaine fenêtre sera en i = i + δ, la position absolue de la prochaine lettre lue sera i + j. Dans un premier temps, un état de la machine représentera le nombre de lettres à la fin du motif dont on sait qu elles correspondent au contenu de la fenêtre courante. Il y aura donc l états avec l la longueur du motif. La machine partira de l état 0 (pas d information sur le contenu de la fenêtre courante, donc 0 lettres en correspondance) avec une fenêtre en position 0 et la première lettre sera lue en position l 1. Remarque : cette machine à états sert à compter des occurrences ; en particulier elle ne doit pas s arrêter quand elle trouve un motif. C est pourquoi un l + 1-ème état qui signifierait que les l lettres de la fenêtre correspondent à celle du motif ne sert à rien. Cette information est fournie par la fonction de transition et la fenêtre est nécessairement déplacée en sortant de l état l 1. Question 10 Supposons que le motif recherché soit P 100 et que l état courant de la machine soit 2 (les 2 dernières lettres de la fenêtre correspondent au motif). Quel est le résultat de la fonction de transition quand la lettre lue est un A? un B? un C? un D? e) un E? Question 11 Quel est le coût de la recherche des motifs suivants dans la phrase P 30000 pour un algorithme R 5 utilisant cette machine à états? ECEEDEED, EDDCEED. 6 États à deux blocs La machine à états R 5 se sert de l information des k dernières lettres de la fenêtre uniquement pour incrémenter la position i de la fenêtre. Une fois celle-ci incrémentée, l informa- 4 / 5

tion est perdue puisqu elle n est pas stockée dans les états. Par conséquent, la machine relira plusieurs fois les mêmes lettres. Pour éviter ce problème, on peut concevoir une machine R 6 utilisant un plus grand nombre d états. Un état sera maintenant un triplet d entiers (p, q, r) avec 0 p < q r. Ces entiers représentent deux blocs de lettres du motif dont on sait qu elles sont dans les positions correspondantes de la fenêtre courante. Le premier bloc s étend des positions 0 à p 1, le second de q à r 1. Par convention, on prendra p = 0 si le bloc de gauche n est pas connu et q = r = l si le bloc de droit ne l est pas. La machine part de l état (0, l, l) avec une fenêtre en position 0 et la première lettre sera lue en position l 1. La fonction de transition est construite de telle sorte que, à chaque étape, la position de la prochaine lettre lue soit r si r < l et q 1 sinon, c est-à-dire que l on cherche à faire grossir le bloc de droite, de préférence du côté de la fin de la fenêtre. Question à développer pendant l oral : Justifier les propriétés suivantes : Il est possible d écrire la fonction de transition de telle sorte qu aucune lettre connue du texte ne se trouve en dehors des blocs 0... p 1 et q... r 1 pour la fenêtre courante. Chaque lettre du texte n est parcourue qu une seule fois par R 6. Question 12 Quel est le coût de la recherche des motifs suivants dans la phrase P 30000 pour l algorithme R 6 utilisant des états à deux blocs? ECEEDEED, EDDCEED. La création de la fonction de transition étant un processus coûteux, il est important de se limiter aux états qui sont effectivement atteignables étant donné un motif. Par exemple, les états de la forme (p, q, r) avec p 2 sont impossibles à atteindre pour le motif ABCDE. Ils sont donc inutiles. Question 13 Combien y a-t-il d états utiles pour les motifs suivants? P 10, P 20, P 30? Question à développer pendant l oral : Comment effectuer la génération de la machine à états pour éviter de construire les états inutiles? 5 / 5

ũ 0 : 178 Fiche réponse type: Recherche de motifs Question 1 DECCE ECCEE Question 2 3 6 9 Question 3 7 61 634 6586 Question 4 8004 5008 2001 Question 5 2 51 1 5 e) 3 Question 6 13684 14739 Question 7 1 3 11 100 e) 100 Question 8 15193 18701 Question 9 11041 13857 Question 10 I / II

(3, 0, 96, F) (0, 100, 99, F) (0, 11, 99, F) Question 12 9789 11282 Question 13 (0, 52, 99, F) 55 e) (0, 45, 99, F) 176 Question 11 9964 442 13432 II / II

Fiche réponse: Recherche de motifs Nom, prénom, u 0 :......................................... Question 1 Question 2 Question 3 Question 4 Question 5 e) Question 6 Question 7 e) Question 8 Question 9 Question 10 I / II

e) Question 11 Question 12 Question 13 II / II