expressions r guli res et hash tables l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Expressions régulières et hash tables PowerPoint Presentation
Download Presentation
Expressions régulières et hash tables

Loading in 2 Seconds...

play fullscreen
1 / 28

Expressions régulières et hash tables - PowerPoint PPT Presentation


  • 151 Views
  • Uploaded on

Expressions régulières et hash tables. Expressions rationnelles/régulières Hash Tables. Expressions rationnelles. Qu'est-ce une expression rationnelle (régulière)? Définition et propriétés Exercices . Définitions : alphabet, mot, langage.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Expressions régulières et hash tables' - walker


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
expressions r guli res et hash tables
Expressions régulières et hash tables

Expressions rationnelles/régulières

Hash Tables

expressions rationnelles
Expressions rationnelles

Qu'est-ce une expression rationnelle (régulière)?

Définition et propriétés

Exercices

d finitions alphabet mot langage
Définitions : alphabet, mot, langage

Définition Un alphabetΣ est un ensemble fini de symboles, comme par exemple de lettres, de chiffres ou d'autres sigles.

ExemplesΣ = {a,b,c} Σ = {0,1}

Définition Un mot w défini sur un alphabet est une suite ou séquence finie de symboles appartenant à Σ.

Exemples Si Σ = {a,b,c}, w = abc est un mot défini sur Σ.

La séquence de 0 symboles est nommée le mot vide et s’écrit : ε.

Définition Un langage L défini sur un alphabet Σ est un ensemble de mots définis sur l'alphabet en question. Cet ensemble de mots peut être infini.

Exemple Soit l'alphabet Σ = {a,b,c}, le langage L = {acbb, accbb, acccbb, …} est le langage de tous le mots qui débutent par le symbole a, suivi d'au moins un symbole c et qui se terminent par deux symboles b.

op rations sur les langages
Opérations sur les langages

Union L'union L1U L2 de deux langages L1 et L2 définis sur un alphabetΣ correspond exactement à l'union d'ensembles.

Exemple

Soient Σ= {a,b,c}, L1 ={a,b} et L2 ={bac,b, c}, on a L1 U L2 = {a,b,bac,c}

Concaténation Soient L1 et L2 deux langages définis sur un alphabetΣ, l'opération de concaténation est définie comme suit

L1 . L2 = {w1.w2 , t.q. w1 appartient à L1 et w2 appartient à L2 }

L'élément neutre est donc l'ensemble Lε = {ε} (L. Lε = L, Lε .L = L)

Exemple

Soient Σ= {a,b,c}, L1 ={a,b} et L2 ={bac,b,a}, on a L1 . L2 = {abac,bbac,ab,bb,aa,ba}

op rations sur les langages5
Opérations sur les langages

Puissance La puissance d'un langage L, notée Ln où n >= 0, est définie par

1) L0 = {ε}

2) Ln+1 = Ln . L

Kleene star ou fermeture itérative La fermeture itérative (ou de Kleene) d'un langage L, notée L*, est l'ensemble de mots résultant d'une concaténation d'un nombre fini de mots de L. Formellement :

L* = L0 U L1 U L2U L3 …

Le mot vide appartient donc à L* mais pas à L+ qui est défini comme suit :

L+ = L1 U L2U L3 … = L . L*

Exemples

Soient Σ= {a}, L = {a}. Alors L0 ={ε}, L1={a}, L2 ={aa}, L3={aaa},…,

L+ = {a,aa,aaa,aaaa,aaaaa,…..},

L* = {ε, a,aa,aaa,aaaa,aaaaa,…..}.

formalisme de sp cification des langages
Formalisme de spécification des langages

Pour spécifier (décrire formellement) un langage, différents formalismes sont à notre disposition. La première solution serait d’énumérer de manière exhaustive les composants du langage.

Cela est une définition extensionnelle. C'est irréalisable si le langage est infini.

Pour décrire un langage infini on utilise des formalismes plus riches, comme les grammaires, les machine de Turing, etc.

Le formalisme le plus simple est celui des expressions rationnelles ou régulières.

qu est ce une expression rationnelle r guli re
Qu'est-ce une expression rationnelle (régulière)?

Définition Soit un alphabet Σ. Une expression régulière définie sur Σ, ainsi que les ensembles qu'elle dénote, sont définis récursivement comme suit :

1) Ø est une expression régulière dénotant l'ensemble vide,

2) ε est une expression régulière dénotant l'ensemble {ε},

3) pour tous a dans Σ, a est une expression régulière dénotant l'ensemble {a},

4) si r et s sont des expressions régulières dénotant respectivement les ensembles R et S, alors (r + s), (rs), (r*) sont des expressions régulières dénotant respectivement les ensembles R U S, R . S, et R*,

5) Rien d'autre n'est considéré comme une expression régulière.

Le langage que dénote une expression régulière r s’écrit L(r).

Note terminologique: expression régulière = expression rationnelle.

expressions rationnelles exemples
Expressions rationnelles - exemples

Soit l'alphabet Σ = {a,b} et l'expression régulière r = (a(a+b)*), alors le langage généré par r est L(r) ={a} . {a,b}*

Son extension contient donc {a,aa,aaa,aaaa,…,ab,aba,abbaaababa, …}.

C’est le langage de toutes les chaînes de a et de b commençant par un a.

Soit l'alphabet Σ = {0,1}, l'expression régulière s= (0*1)* dénote l'ensemble

L(s) = {{0}*. {1}}* ou bien

L(s) = {x t.q. x appartient à {0,1}* et x est vide ou représente un nombre impair}

Son extension contient donc {ε,1,01,010101, 100001, … }.

exercices expressions rationnelles
Exercices : expressions rationnelles

Exercice 1 Vrai ou faux?

baa appartient à (a*b*a*b*)

b* a* intersection a* b* = a* U b*

abcd appartient à (a(cd)*b*)

exercices expressions rationnelles10
Exercices : expressions rationnelles

Exercice 2

Français  Expressions régulières

Écrire les expressions régulières sur Σ = {a,b,c} dénotant les langages suivants :

tous les mots contenant a

tous les mots ne contenant pas ac

solutions
Solutions

Soit Σ = {a,b,c} ,

tous les mots contenant a

tous les mots ne contenant pas ac

solutions12
Solutions

Soit Σ = {a,b,c} ,

tous les mots contenant a

(a|b|c)* a (a|b|c)*

tous les mots ne contenant pas ac

c* (a | (bc*))*

solutions13
Solutions

Décrire en français le langage dénoté par les expressions régulières suivantes :

(a|b)*b(a|b)*a(a|b)*

b*(abb*)*aa(bb*a)*b*

exercices expressions rationnelles14
Exercices : expressions rationnelles

Exercice 3 Expressions régulières  Français

Décrire en français le langage dénoté par les expressions régulières suivantes :

(a|b)*b(a|b)*a(a|b)*

Toutes les chaînes de a et de b qui ne correspondent pas à a*b*.

Ou : toutes les chaînes de a et de b où au moins un b précède un a.

b*(abb*)*aa(bb*a)*b*

Toutes les chaînes de a et de b où la sous-chaîne « aa » apparaît exactement une fois.

exercices expressions rationnelles15
Exercices : expressions rationnelles

Exercice 4

Français  Expressions régulières

Écrire les expressions régulières sur Σ = {a,b} dénotant les langages suivants :

tous les mots de longueur 2

tous les mots de longueur paire

tous les mos contenant un nombre impair de b

tous les mots ne contenant pas plus que deux a consécutifs

tous les mots ne contenant pas aba

solutions16
Solutions

Écrire les expressions régulières sur Σ = {a,b} dénotant les langages suivants:

tous les mots de longueur 2

(aa|ab|ba|bb)

tous les mots de longueur paire

(aa|ab|ba|bb) *

tous les mos contenant un nombre impair de b

a*ba*(ba*ba*)*

tous les mots ne contenant pas plus que deux a consécutifs

(b|ab|aab)*(ε|a|aa)

tous les mots ne contenant pas aba

b* (aa*bbb*)* a* (ε|b)

exercices expressions rationnelles17
Exercices : expressions rationnelles

Exercice 5 Expressions régulières  Français

Décrire en français les langages dénotés par les expressions régulières suivantes :

(11+0)*(00+1)*

(1+01+001)*(ε+0+00)

0*(10*10*10*)*

solutions18
Solutions

Décrire en français les langages dénotés par les expressions régulières suivantes :

(11+0)*(00+1)*

(1+01+001)*(ε+0+00)

0*(10*10*10*)*

solutions19
Solutions

Décrire en français les langages dénotés par les expressions régulières suivantes:

(11+0)*(00+1)*

L(x) ={ x t.q x ne contient pas la séquence 1010}

(1+01+001)*(ε+0+00)

tous les mots ne contenant pas plus que deux 0 consécutifs

0*(10*10*10*)*

tous les mots contenant un nombre de 1 multiple de 3

hash tables
Hash Tables

Plusieurs applications informatiques, et parmi eux, celle qui intéressent le TALN, nécessitent seulement les opérations INSERT, DELETE et SEARCH.

Par exemple, les compilateurs maintient une table des symboles, qu’ils consultent pour vérifier les noms et les types des variables.

Les hash tables (tableaux d’hashage) sont des structures des données très appropriées pour mettre en place un dictionnaire et le consulter.

tableaux d acc s direct
Tableaux d’accès direct

La techniques des tableaux à accès direct marche assez bien si l’ensemble m des clés uniques est petit.

On utilise un tableau T[0..m-1] où chaque position correspond à une clé.

0

1

2

3

4

5

6

7

8

  • 3 5
  • 7
tableaux d acc s direct22
Tableaux d’accès direct

Les opérations sont très simples et exécutées en temps constant O(1).

Recherche(T,k)

return T[k]

Insert(T,x)

T[key(x)] <- x

Delete(T,x)

T[key(x)] <- NIL

tableaux d hashage
Tableaux d’hashage

Désavantage de l’adresse directe

Si l’ensemble des clés possibles U est grand, il y a des problèmes de mémoire

Si l’ensemble des clés réellement utilisées est beaucoup plus petit que U, une grande partie de la mémoire est gaspillée.

tableaux d hachage
Tableaux d’hachage

Avec l’adresse directe, un élément à clé k est placé en position k.

Avec hashage, il est stocké en position h(k).

Le seul problème avec cette technique sont les collisions.

H(k1)

H(k5)

H(k3)=h(k7)

0

1

2

3

4

5

6

7

8

  • 3 5
  • 7
tableaux d hashage25
Tableaux d’hashage

Collision: lorsque deux éléments ayant clés différentes ont la même valeur d’hashage.

Solution (partielle):

fonctions d’hashage pseudo-aléatoire

(random-looking hash functions).

Chaining: les éléments sont associés à la même position dans une

liste chaînée.

la complexité de recherche, insertion et effacement est

proportionnelle à la longueur de cette liste.

fonction d hashage
Fonction d’hashage

Une bonne fonction d’hashage satisfait (approximativement) la présupposition d’hashage uniforme:

pour toutes positions, une clé a la même probabilité d’être associé à cette position

En général, une bonne technique consiste à développer une fonction indépendante de toutes régularités des distribution dans les données.

fonctions d hashage
Fonctions d’hashage

Hashage par divisions: h(k) = k mod m

m est choisi tel que le résultat de la division

dépend de toute les chiffres de k

(pas puissance de 2 ou de 10, m=prime)

Hashage par multiplication: h(k) = floor(m(k A mod 1))

en général, on choisit une puissance de 2

Hashage universel= hashage aléatoire

open addressing
Open addressing

Open addressing est une techniques autre que chaining pour résoudre les collisions

On n’utilise aucune structure externe, mais on relie les cases disponibles par double hashage.

h(k,i) = (h1(k) + ih2(k)) mod m

Cela évite les clusters des valeurs dans le tableau qui surgissent avec d’autres techniques.

0

1

2

3

4

5

6

7

8

79

69

98