2.1 Comment implanter en C un reconnaisseur de mots? Aut2 q 0 q 1



Documents pareils
STI2D Logique binaire SIN. L' Algèbre de BOOLE

L'algèbre de BOOLE ou algèbre logique est l'algèbre définie pour des variables ne pouvant prendre que deux états.

Algorithmes sur les mots (séquences)

Notes de révision : Automates et langages

Module 2 : Déterminant d une matrice

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

Introduction à la modélisation et à la vérication p. 1/8

Guide d'utilisation Easy Interactive Tools Ver. 2

Statuts ASF Association Suisse Feldenkrais

Techniques d analyse de circuits

Avant d utiliser l appareil, lisez ce Guide de référence rapide pour connaître la procédure de configuration et d installation.

Commencer DCP-7055W / DCP-7057W /

Synthèse de cours (Terminale S) Calcul intégral

LANGAGES - GRAMMAIRES - AUTOMATES

Portiers audio et vidéo ABB-Welcome et ABB-Welcome M

SYSTEME DE TELEPHONIE

Correction de l épreuve CCP 2001 PSI Maths 2 PREMIÈRE PARTIE ) (

Séquence 8. Probabilité : lois à densité. Sommaire

Chapitre 11 : L inductance

Toyota Assurances Toujours la meilleure solution

Turbine hydraulique Girard simplifiée pour faibles et très faibles puissances

/HVV\VWqPHVFRPELQDWRLUHV

Pour développer votre entreprise LES LOGICIELS EN LIGNE, VOUS ALLEZ DIRE OUI!

3- Les taux d'intérêt

Recherche dans un tableau

Théorème de Poincaré - Formule de Green-Riemann

INFORMATIONS TECHNIQUES

Tout ce qu il faut savoir en math

ManSafe. pour les Utilitiés. La Protection antichute pour les Industries de l'energie. Français. TowerLatch LadderLatch

Influence du milieu d étude sur l activité (suite) Inhibition et activation

Chapitre VI Contraintes holonomiques

Partie 4 : La monnaie et l'inflation

Réalisation de sites Internet PME & Grandes entreprises Offre Premium. Etude du projet. Webdesign. Intégration HTML. Développement.

LICENCE DE MATHÉMATIQUES DEUXIÈME ANNÉE. Unité d enseignement LCMA 4U11 ANALYSE 3. Françoise GEANDIER

LITE-FLOOR. Dalles de sol et marches d escalier. Information technique

ANALYSE NUMERIQUE NON-LINEAIRE

semestre 3 des Licences MISM annnée universitaire

Guide des bonnes pratiques

Classeur courtier d assurance. Comment organiser son activité et se préparer à un contrôle

Université Paris-Dauphine DUMI2E. UFR Mathématiques de la décision. Notes de cours. Analyse 2. Filippo SANTAMBROGIO

Conseils et astuces pour les structures de base de la Ligne D30

Pour développer votre entreprise. Compta LES LOGICIELS EN LIGNE, VOUS ALLEZ DIRE OUI!

Thèse Présentée Pour obtenir le diplôme de doctorat en sciences En génie civil Option : structure

l'appareil et vérifiez les composants Cartouches d'encre incluses [x4] CD-ROM d'installation CD-ROM de documentation

- Phénoméne aérospatial non identifié ( 0.V.N.I )

Compte rendu de la validation d'un observateur cascade pour la MAS sans capteurs mécaniques sur la plate-forme d'essai de l'irccyn

Guide de l'utilisateur

Probabilités sur un univers fini

FONDATION CLEMENTINE ET MAURICE ANTILLE

Intégrale et primitives

La spirale de Théodore bis, et la suite «somme=produit».

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

La paye. La comptabilité. Comparez et choisissez votre logiciel. Comparez et choisissez votre logiciel. Paye Bâtiment Paye Agricole 2013

Electrovanne double Dimension nominale Rp 3/8 - Rp 2 DMV-D/11 DMV-DLE/11

La pratique institutionnelle «à plusieurs»

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. Licence d Informatique, première. Laurent Michel

La plateforme Next Generation Mini guide

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

Sommaire. 6. Tableau récapitulatif Sophos NAC intégré Vs. NAC Advanced - 17 Février

Baccalauréat S Asie 19 juin 2014 Corrigé

Le prototype de la fonction main()

A11 : La représentation chaînée (1ère partie)

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Chapitre 1 : Fonctions analytiques - introduction

Sciences Industrielles Précision des systèmes asservis Papanicola Robert Lycée Jacques Amyot

Programmation système de commandes en C

Cours 14 Les fichiers

Cours Langage C/C++ Programmation modulaire


Commencer MFC-J4410DW

Chapitre 2 : Vecteurs

l appareil et vérifier les composants Module tambour-cartouche de toner (pré-installé)

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

EnsEignEmEnt supérieur PRÉPAS / BTS 2015

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Les processus légers : threads. Système L3, /31

Licence M.A.S.S. Cours d Analyse S4

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Solutions électriques VELUX

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Le canal étroit du crédit : une analyse critique des fondements théoriques

Cours de Systèmes d Exploitation

Magister en : Génie Mécanique

Solutions IHM. Gammes Graphite et G3 Outils pour l'usine connectée

INSTALLATION DE DETECTION INCENDIE

RadioCommunications CDMA

INSTRUCTIONS POUR L INSTALLATION ET LE FONCTIONNEMENT DES SERRURES À POIGNÉE BÉQUILLE

CH.6 Propriétés des langages non contextuels

Titrages acidobasiques de mélanges contenant une espèce forte et une espèce faible : successifs ou simultanés?

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTENTION LES PROCESSUS MATHÉMATIQUES

Cours Programmation Système

LOGICIEL FONCTIONNEL EMC VNX

Par : Abdel YEZZA, Ph.D. Date : avril 2011 / mise à jour oct (ajout de la section 3 et augmentation de la section 1)

ANALYSE : FONCTIONS D UNE VARIABLE RÉELLE

CTC Generic LITHO FLEXO. PANTONE a mm/dd/yy xxxxxx. PANTONE a mm/dd/yy xxxxxx PANTONE a mm/dd/yy xxxxxx.

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

Transcription:

Lngges Automtes Non-déterminisme Grmmires Attiuées et Génértives Expressions régulières Correction Prtielle de Progrmmes Ceci n'est ps un cours de Lngge C++ 2.1 Comment implnter en C un reconnisseur de mots? Pr groupe de 4, envoyez pr emil votre progrmme à michel.perin@img.fr et eric.gscrd@img.fr. Votre progrmme doit être conforme à l spéciction. Ensuite, pour voir une chnce de ggner : il doit être lisile, le plus clir et le plus simple possile, être fcile à mintenir et à fire évoluer, être ecce et enn être élégnt. ) Donnez un progrmme C qui ccepte un mot écrit sur l'lphet {,, entré u clvier, s'il pprtient u lngge L 1 des mots formés d'une succession d'un nomre pirs de entrecoupées d'un nomre quelconque de. Pr exemple, les mots {ɛ,,,,,,,,,, doivent être reconnu mis ps les mots {,,,,,,. ) Donnez une progrmme C qui ccepte un mot s'il pprtient u lngge L 1.{() n n N 2.1.1 Une première implnttion en C d'un reconnisseur de mots Solution du ) L'utomte qui reconnît L 1 est codé sous l forme d'un tleu Aut q 0 q 1 ccept true f lse '' q 1 q 0 '' q 0 où l'étt initil est l'étt et les étts ccepteurs sont indiqués pr true sur l ligne du symole réservé ccept. Ainsi q i est ccepteur si et seulement si Aut[q i ][ccept] = true. L'implnttion en C est présenté en Figure 1. Solution du ) Soit on construit sur ppier l'utomte déterministe qui reconnît le lngge L et on le code sous forme d'un tleu Aut. Soit on code l'utomte qui reconnît L 1 sous l forme d'un tleu Aut1. On code l'utomte qui reconnît {() n n N sous l forme d'un tleu Aut2. Aut2 q 0 q 1 ccept true f lse '' q 1 '' q 0 Ensuite on construit Aut à l'ide des opértions d'une iliothèque sur les utomtes. 1

#include <stdio.h> #define ENTER 10 // L touche ENTER porte le numéro 10 #define ACCEPT ''-1 // pour que ACCEPT corresponde à l ligne 0 du tleu Aut #define NE 6 // nomre d'étts #define NS 3 // nomre de symoles de l'lphet + le symole réservé ACCEPT // codge des utomtes int Aut1[NS][NE] = { // utomte de l question ) {1, 0, // codge des étts ccepteurs {1, 0, // trnsitions sur '' {0,-1 // trnsitions sur '': l'sence de trnsition est indiqué pr -1 ; int Aut[NS][NE] = { // utomte de l question ) { 1, 0, 1, 0, 1, 0, // codge des étts ccepteurs { 1, 2, 3, 2, 5, -1, // trnsitions sur '' { 2,-1, 4, 4,-1, 4 // trnsitions sur '' ; // Fonctionnement d'un utomte (1 ligne!) int trnsition(int ec, chr c, int Aut[NS][NE]){ return Aut[ 1+ c-'' ][ec]; // Exemple d'utilistion : reconnissnce d'un mot entré u clvier int min(){ chr c; int q; q = 0; c = getchr(); while(c!=enter && q>=0){ q = trnsition(q,c,aut); c = getchr(); if ( c==enter && trnsition(q,accept,aut)==1 ) printf(":ccept\n"); else printf(":reject\n"); return 0 ; Fig. 1 Implnttion en C d'un ef pr un tle de trnsitions 2

conctention(aut1,aut2,aut) ; Aut = q 0 q 1 ɛ q 0 q 1 elimintion-epsilon(aut) ; Aut = q 0 q 0 q 1 deterministion(aut) ; Aut = minimistion(aut) ; q 0 Détils de l déterministion q 1 q 1 q 2 q 3 q 4 q 5 on otient le même utomte, il étit miniml {q 0 {q 1 {q 0, q 0 {q 1, q 1 {q 0 {q 1 Aut q 0 q 1 q 2 q 3 q 4 q 5 ccept true f lse true f lse true f lse '' {q 1 = q 1 {q 0, q 0 = q 2 {q 1, q 1 = q 3 {q 0, q 0 = q 2 {q 1 = q 5 '' {q 0, q 0 = q 2 {q 0 = q 4 {q 0 = q 4 {q 0 = q 4 On otient l'utomte déterministe miniml Aut réprésenté pr le tleu : Aut q 0 q 1 q 2 q 3 q 4 q 5 ccept true f lse true f lse true f lse '' q 1 q 2 q 3 q 2 q 5 '' q 2 q 4 q 4 q 4 On réutilise l'implnttion de l Figure 1 vec le tleu Aut insi otenu. 2.2 Autre implnttion en C d'un reconnisseur de mots On présente une utre solution qui représente l'ensemles des étts cournts d'un utomte nondéterministe pr un vecteur de ooléens. L Figure 2 présente l'implnttion en C de l'exercices (). Principe : Considérons un utomte non-déterministe à qutre étts {q 1,..., q 4 et supposons qu'il it tteint l'ensemle d'étts {q 1, q 3, on représente cette sitution pr le vecteur de ooléens : o 1, o 2, o 3, o 4 = {{ 1, {{ 0, {{ 1, {{ 0 qui indique les étts occupés : en q 1? en q 2? en q 3? en q 4? o i = vri si et seulement si l'utomte est dns l'étt q i. Plusieurs ooléens peuvent être à vri simultnément puisqu'un utomte non déterministe peut être dns plusieurs étts à l fois. À chque trnsition de l'utomte on met à jour le vecteur de ooléens. Soit crlu l vrile qui correspond à l lettre cournte. On psse dns l'étt q j (utrement dit o j psse à vri) si crlu correspond à une trnsition qui mène en q j et si on étit 3

L'implnttion utilise deux vecteurs de ooléens : o 0,..., o N qui représente les étts occupés vnt l trnsition o 0,..., o N qui représente les étts cournts, c'est-à-dire ceux occupés près l trnsition Pour représenter ces vecteurs on utilise un tleu O de tille 2 N et un ooléen c qui indique sur quelle ligne est le vecteur cournt (l'utre ligne correspond u vecteur vnt l trnsition). L'utilistion du ooléen c évite l recopie des N ooléens o i dns les o i vnt l mise à jour ; en eet, il sut de fire c :=!c pour échnger les vleurs nciennes vec les vleurs courntes. 0 1... n O[!c] o 0 o 1... o n O[c] o 0 o 1... o n #include <stdio.h> #define ENTER 10 #define N 4 int non_loque(int O[2][N], int c){ // l'utomte est non loque si l'un des etts de l'utomte est occupé. int i, s=0; for(i=0 ; i<n ; i++){ s = s O[c][i] ; return s; int min(){ int O[2][N] = {0 ; int c=0; chr crlu; O[c][0]=1; // Au deprt l'utomte occupe l'ett initil q0 O[c][2] = O[c][2] O[c][0]; // tritement des epsilon-trnsitions crlu=getchr(); while( crlu!=enter && non_loque(b,c) ){ c=!c; // les vleurs courntes deviennent les nciennes vleurs // specifiction de l'utomte sous forme d'equtions ooleennes O[c][0] = (O[!c][0] && crlu=='') (O[!c][1] && crlu=='') ; O[c][1] = (O[!c][0] && crlu=='') ; O[c][2] = (O[!c][3] && crlu=='') ; O[c][3] = (O[!c][2] && crlu=='') ; O[c][2] = O[c][2] O[c][0]; // tritement des epsilon-trnsitions crlu = getchr(); // lecture d'une lettre if (crlu==enter && O[c][2] ) // O[c][2] est l'étt ccepteur { printf(":ccept\n") ; else { printf(":reject\n") ; return 0; Fig. 2 Implnttion en C d'un 4ef pr des équtions ooléennes

précédemment dns l'étt source de l trnsition. Pr exemple, considérons l'utomte de l question () et toutes les trnsitions qui mènent dns l'étt q 0 : q 0 q 0 et q 1 q 0. L lettre cournte crlu fit psser dns l'étt q 0 (utrement dit o 0 psse à vri) si on emprunte l'une de ces 2 trnsitions. Les ooléens o 0 et o 1 désignent les vleurs des ooléens vnt l trnsition. o 0 := ( o ) ( 0 crlu = o ) 1 crlu = {{ {{ on étit en q 0 on étit en q 1 ɛ Une ɛ-trnsition telle que q 0 q 2 permet d'ller en q 2 dès qu'on est en q 0 sns lire de lettre. Pour en rendre compte, il fut jouter l'éqution o 2 := o 2 o 0. Autrement dit, on conserve le résultt du clcul précédent uquel on joute l nouvelle possiilité due à l'ɛ-trnsition. On indique que l'exécution de l'utomte commence dns son étt initil q i en ssignnt u ooléen o i l vluer vri. L'utomte est loqué si tous les ooléens o i vlent fux. Le mot est ccepté si lorsqu'on consommé toutes ses lettres, on se trouve sur un étt ccepteur (c'est-à-dire que l'un des ooléens du vecteur qui correspond à un étt ccepteur vut vri). Avntge / inconvénient de cette implnttion Cette implnttion permet d'exécuter un utomte non-déterministe sns qu'on it esoin de le déterminiser, ni d'éliminer les ɛ-trnsitions. Les ensemles d'étts sont codés pr le vecteur de ooléens o 1,..., o n où le ooléen o i indique si l'utomte est dns l'étt q i. n (ou 2n) ooléens susent pour coder l'étt d'un utomte non-déterministe tndis qu'vec l'implnttion précédente il fut déterminiser l'utomte et l'on sit que cette opértion peut conduire à un utomte à 2 n étts. n 5 10 15 20 25 30 35... 2 n 32 1024 32768 1048576 33554432 1073741824 34359738368... À chque trnsition de l'utomte on lit une lettre et on met à jour le vecteur de ooléens, ce qui nécessite n (ou 2n) ecttion, tndis que l précédente implnttion nécessitit seulement une ecttion. 2.2.1 Conclusion : quelle implnttion choisir? Considérons un utomte non-déterministe à N étts. Si s version déterministe comporte un petit nomre d'étts (de l'ordre de N), on préfer l première implnttion pour son eccité (1 ecttion pr trnsition) mlgré s représenttion (consomtrice de mémoire). Si l version déterministe comporte un nomre d'étts très supérieure à N et que l mémoire disponile est limitée, on préfer l seconde implnttion pour s représenttion compcte (N ooléens) mlgré son mnque d'eccité (N ecttions pr trnsition). 5