• Aucun résultat trouvé

• Les cellules(i,i+1)se remplissent en utilisant les règles lexicales (A→a).

• Sinon, on aA∈T[i,j]ssi(A→B C)∈G,∃k∈Ji+1,j−1K, B∈T[i,k],C∈T[k,j].

i · · · k · · · j

AB C

B... C...

11

Remplir la table

• Les cellules(i,i+1)se remplissent en utilisant les règles lexicales (A→a).

• Sinon, on aA∈T[i,j]ssi(A→B C)∈G,∃k∈Ji+1,j−1K, B∈T[i,k],C∈T[k,j].

i · · · k · · · j

AB C

B... C...

11

Remplir la table

• Les cellules(i,i+1)se remplissent en utilisant les règles lexicales (A→a).

• Sinon, on aA∈T[i,j]ssi(A→B C)∈G,∃k∈Ji+1,j−1K, B∈T[i,k],C∈T[k,j].

i · · · k · · · j

AB C

B... C...

11

Remplir la table

• Les cellules(i,i+1)se remplissent en utilisant les règles lexicales (A→a).

• Sinon, on aA∈T[i,j]ssi(A→B C)∈G,∃k∈Ji+1,j−1K, B∈T[i,k],C∈T[k,j].

i · · · k · · · j

AB C

B... C...

11

Remplir la table

i i+1 · · · k · · · j−1 j

AB C

B...

C...

12

Remplir la table

i i+1 · · · k · · · j−1 j

AB C

B...

C...

12

Remplir la table

i i+1 · · · k · · · j−1 j

AB C

B... C...

12

Remplir la table

i i+1 · · · k · · · j−1 j

AB C B...

C...

12

Remplir la table

i i+1 · · · k · · · j−1 j

AB C B...

C...

12

Remplir la table

j A C

C C C C

j-1

B

...

B

k

B

...

B

i+1 B

i i+1 ... k ... j-1

13

Remplir la table

j A

C

C

C C C

j-1

B

...

B

k

B

... B i+1

B

i i+1 ... k ... j-1

13

Remplir la table

j A

C C

C

C C

j-1

B

...

B

k B

...

B

i+1

B

i i+1 ... k ... j-1

13

Remplir la table

j A

C C C

C

C

j-1

B

... B k

B

...

B

i+1

B

i i+1 ... k ... j-1

13

Remplir la table

j A

C C C C

C j-1 B

...

B

k

B

...

B

i+1

B

i i+1 ... k ... j-1

13

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.

Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

Remplir la table

• On peut remplir une cellule(i,j)ssi on a déjà rempli le dessous de sa colonne (jusque(i,i+1)) et la droite de sa ligne (jusque (j−1,j)).

• Plusieurs ordres possibles :

• en diagonale (de la plus grande vers la plus petite) ;

• par ligne (de droite à gauche, des lignes du bas vers le haut) ;

• par colonne (de bas en haut, des colonnes de la droite vers la gauche).

• Dans le polycopié : en diagonale.Bon exercice : modifier l’algorithme pour effectuer un remplissage par ligne, ou par colonne.

• Réussite :S∈T[1,n+1].

• Complexité :O(n3).

14

• Pour être capable de facilement reconstruire les arbres

syntaxiques, il faut stocker pour chaqueA∈T[i,j](avecj>i+1) les origines possibles de ce constituant :

(A→B C)∈G,k∈Ji+1,j−1K,B∈T[i,k],C∈T[k,j], (B,k,C)∈T[i,j,A].

• On peut alors lister les analyses en un coût linéaire en le nombre de celles-ci (potentiellement exponentiel en la longueur de la phrase).

• Vous pouvez ignorer la section 14.1.4,Du test d’appartenance à l’analyse.Bon exercice : modifier l’algorithme afin de construire la tableTen même temps queT, puis écrire l’algorithme listant toutes les analyses.

15

• Pour être capable de facilement reconstruire les arbres

syntaxiques, il faut stocker pour chaqueA∈T[i,j](avecj>i+1) les origines possibles de ce constituant :

(A→B C)∈G,k∈Ji+1,j−1K,B∈T[i,k],C∈T[k,j], (B,k,C)∈T[i,j,A].

• On peut alors lister les analyses en un coût linéaire en le nombre de celles-ci (potentiellement exponentiel en la longueur de la phrase).

• Vous pouvez ignorer la section 14.1.4,Du test d’appartenance à l’analyse.Bon exercice : modifier l’algorithme afin de construire la tableTen même temps queT, puis écrire l’algorithme listant toutes les analyses.

15

• Pour être capable de facilement reconstruire les arbres

syntaxiques, il faut stocker pour chaqueA∈T[i,j](avecj>i+1) les origines possibles de ce constituant :

(A→B C)∈G,k∈Ji+1,j−1K,B∈T[i,k],C∈T[k,j], (B,k,C)∈T[i,j,A].

• On peut alors lister les analyses en un coût linéaire en le nombre de celles-ci (potentiellement exponentiel en la longueur de la phrase).

• Vous pouvez ignorer la section 14.1.4,Du test d’appartenance à l’analyse.Bon exercice : modifier l’algorithme afin de construire la tableTen même temps queT, puis écrire l’algorithme listant toutes les analyses.

15

• Pour être capable de facilement reconstruire les arbres

syntaxiques, il faut stocker pour chaqueA∈T[i,j](avecj>i+1) les origines possibles de ce constituant :

(A→B C)∈G,k∈Ji+1,j−1K,B∈T[i,k],C∈T[k,j], (B,k,C)∈T[i,j,A].

• On peut alors lister les analyses en un coût linéaire en le nombre de celles-ci (potentiellement exponentiel en la longueur de la phrase).

• Vous pouvez ignorer la section 14.1.4,Du test d’appartenance à l’analyse.

Bon exercice : modifier l’algorithme afin de construire la tableTen même temps queT, puis écrire l’algorithme listant toutes les analyses.

15

• Pour être capable de facilement reconstruire les arbres

syntaxiques, il faut stocker pour chaqueA∈T[i,j](avecj>i+1) les origines possibles de ce constituant :

(A→B C)∈G,k∈Ji+1,j−1K,B∈T[i,k],C∈T[k,j], (B,k,C)∈T[i,j,A].

• On peut alors lister les analyses en un coût linéaire en le nombre de celles-ci (potentiellement exponentiel en la longueur de la phrase).

• Vous pouvez ignorer la section 14.1.4,Du test d’appartenance à l’analyse.Bon exercice : modifier l’algorithme afin de construire la tableTen même temps queT, puis écrire l’algorithme listant toutes les analyses.

15

Références i

Références

Yvon, François et Akim Demaille (2016). « Théories des langages ».

notes de cours. URL :

https://www.lrde.epita.fr/~akim/thl/lecture-notes/theorie-des-langages-2.pdf.

16

Documents relatifs