diff --git a/2-InformationTheory/2InformationTheory.md b/2-InformationTheory/2InformationTheory.md index 8121a1b..7cff2d1 100644 --- a/2-InformationTheory/2InformationTheory.md +++ b/2-InformationTheory/2InformationTheory.md @@ -43,6 +43,17 @@ Note that JFLAP proposes an activity for this construction. There is also an inverse transformation from automaton to regexp, also available on JFLAP. This shows that languages defined by a regexp and languages recognized by a finite automaton form the same class of languages, commonly known as regular languages. +#### Les ingrédients. + +Constructions qu'on doit détailler. +1. comment construire un automate pour le langage a +1. comment construire un automate pour L1.L2 si on connaît un automate A1 pour L1 et un automate A2 pour L2 +1. comment construire un automate pour L1+L2 si on connaît un automate A1 pour L1 et un automate A2 pour L2 +1. comment construire un automate pour L* si on connaît un automate A pour L +1. comment décrire sans ambiguité l'ordre des opérations dans une expression régulière + (écrire l'expression sous forme d'un arbre) +1. comment combiner toutes ses idées. + ### grep diff --git a/2-InformationTheory/2InformationTheoryExoRegexp.md b/2-InformationTheory/2InformationTheoryExoRegexp.md new file mode 100644 index 0000000..ba80f27 --- /dev/null +++ b/2-InformationTheory/2InformationTheoryExoRegexp.md @@ -0,0 +1,106 @@ +# Exercices REGEXP + +REGEXP. abb britannique de Regular Expression. + + +## Exo 1 + +L'alphabet de travail est a,b + +Pour chaque description en français, proposez une expression régulière. +* tous les mots sur l'alphabet qui sont de longueur 2. +(a+b).(a+b) + +On peut faire le calcul. +(a+b).(a+b) = a.(a+b)+b.(a+b) +avec +a.(a+b) = a.a + a.b +et +b.(a+b) = b.a + b.b + +Donc +(a+b).(a+b) = a.a + a.b + b.a + b.b + +En général on n'écrit pas les . qui sont implicites : +(a+b).(a+b)= aa+ab+ba+bb + +* tous les mots qui sont de longueur 1. +a+b + +* N'importe quel mot +(a+b)* += epsilon + (a+b) + (a+b)(a+b) + (a+b)(a+b)(a+b) + ... + +* attention +a+b* +ça signifie le langage qui contient +a+ epsilon + b + bb + bbb + bbbb etc + +* tous les mots qui commencent par un a. +a.(a+b)* + +* tous les mots qui terminent par un b. +(a+b)*.b + +* tous les mots qui commencent par un a et terminent par un b. +a.(a+b)*.b + +* les mots qui commencent et terminent par la même lettre. +(idée c'est soit je commence et termine par a, soit je commence et termine par b). + +a.(a+b)*.a + b.(a+b)*.b + +selon l'interprétation du français de la consigne, on peut considérer que le mot +a +commence et termine par a. +donc il devrait être accepté. + +Avec interprétation, on va écrire directement +a + b + a.(a+b)*.a + b.(a+b)*.b + +* les mots qui contiennent deux a consécutifs. +informellement : +... aa ... +en regexp +(a+b)*.a.a.(a+b)* + +* les mots qui contiennent consécutivement bab + +(a+b)*.b.a.b.(a+b)* + +* les mots de longueur paire +On peut regrouper les lettres par paquet de 2. +epsilon + ((a+b).(a+b))* + +* les mots avec un nombre pair de a + +cette question sur l'alphabet {a} +epsilon + (a.a)* + +maintenant sur l'alphabet {a,b}, je dois autoriser des b un peu partout. +epsilon + (b*.a.b*.a.b*)* + +## Exo 2 + +On souhaite fabriquer un automate à partir d'une expression régulière. + +Exemple de a.(a+b)* + + + + + + + + + + + + + + + + + + + diff --git a/Brevets/US5732138.pdf b/Brevets/US5732138.pdf new file mode 100644 index 0000000..e9a0310 Binary files /dev/null and b/Brevets/US5732138.pdf differ