• Aucun résultat trouvé

Langages formels et analyse syntaxique CM7 : Automate LR - Analyse tabulaire/CYK

N/A
N/A
Protected

Academic year: 2022

Partager "Langages formels et analyse syntaxique CM7 : Automate LR - Analyse tabulaire/CYK"

Copied!
85
0
0

Texte intégral

(1)

Langages formels et analyse syntaxique

CM7 : Automate LR - Analyse tabulaire/CYK

Timothée Bernard 06 novembre 2020

Université de Paris

(2)

Construction de l’automate LR

(3)

À lire

• Fin de la section 8.2.2,Analyseur LR(0), du polycopié d’Yvon et Demaille (2016).

1

(4)

À lire

• Fin de la section 8.2.2,Analyseur LR(0), du polycopié d’Yvon et Demaille (2016).

1

(5)

Petite transformation de la grammaire

• Nouveau symbole non-terminalZ(axiome), nouveau symbole terminal#.

• Nouvelle règleZ→S#(Sest l’axiome original).

• On ajoute#à la fin de tout mot avant de l’analyser.

• L’analyse est réussie ssi la pile ne contient queZ.

2

(6)

Petite transformation de la grammaire

• Nouveau symbole non-terminalZ(axiome), nouveau symbole terminal#.

• Nouvelle règleZ→S#(Sest l’axiome original).

• On ajoute#à la fin de tout mot avant de l’analyser.

• L’analyse est réussie ssi la pile ne contient queZ.

2

(7)

Petite transformation de la grammaire

• Nouveau symbole non-terminalZ(axiome), nouveau symbole terminal#.

• Nouvelle règleZ→S#(Sest l’axiome original).

• On ajoute#à la fin de tout mot avant de l’analyser.

• L’analyse est réussie ssi la pile ne contient queZ.

2

(8)

Petite transformation de la grammaire

• Nouveau symbole non-terminalZ(axiome), nouveau symbole terminal#.

• Nouvelle règleZ→S#(Sest l’axiome original).

• On ajoute#à la fin de tout mot avant de l’analyser.

• L’analyse est réussie ssi la pile ne contient queZ.

2

(9)

Petite transformation de la grammaire

• Nouveau symbole non-terminalZ(axiome), nouveau symbole terminal#.

• Nouvelle règleZ→S#(Sest l’axiome original).

• On ajoute#à la fin de tout mot avant de l’analyser.

• L’analyse est réussie ssi la pile ne contient queZ.

2

(10)

Construction de l’automate LR

1. Construction d’un automate non-déterministe. 2. Déterminisation.

Règle pointée

A→a B C d E

B→ •a B C d

C→a B C d E F•

3

(11)

Construction de l’automate LR

1. Construction d’un automate non-déterministe.

2. Déterminisation.

Règle pointée

A→a B C d E

B→ •a B C d

C→a B C d E F•

3

(12)

Construction de l’automate LR

1. Construction d’un automate non-déterministe.

2. Déterminisation.

Règle pointée

A→a B C d E

B→ •a B C d

C→a B C d E F•

3

(13)

Construction de l’automate LR

1. Construction d’un automate non-déterministe.

2. Déterminisation.

Règle pointée

A→a B C d E

B→ •a B C d

C→a B C d E F•

3

(14)

Construction de l’automate LR

1. Construction d’un automate non-déterministe.

2. Déterminisation.

Règle pointée

A→a B C d E

B→ •a B C d

C→a B C d E F•

3

(15)

Construction de l’automate LR

1. Construction d’un automate non-déterministe.

2. Déterminisation.

Règle pointée

A→a B C d E

B→ •a B C d

C→a B C d E F•

3

(16)

Construction de l’automate LR

1. Construction d’un automate non-déterministe.

2. Déterminisation.

Règle pointée

A→a B C d E

B→ •a B C d

C→a B C d E F•

3

(17)

Automate LR non-déterministe

• États :{A→α• β |A→α β∈P}(toutes les règles pointées obtenues à partir de toutes les règles de la grammaires).

• État initial :Z→ •S#.

• États finals :{A→α• |A→α∈P}.

• Transitions :

δ(A→α •Xβ,X) =A→αX•β;

δ(A→α •Xβ, ϵ) =X→ •γ.

4

(18)

Automate LR non-déterministe

• États :{A→α β |A→α β∈P}(toutes les règles pointées obtenues à partir de toutes les règles de la grammaires).

• État initial :Z→ •S#.

• États finals :{A→α• |A→α∈P}.

• Transitions :

δ(A→α •Xβ,X) =A→αX•β;

δ(A→α •Xβ, ϵ) =X→ •γ.

4

(19)

Automate LR non-déterministe

• États :{A→α β |A→α β∈P}(toutes les règles pointées obtenues à partir de toutes les règles de la grammaires).

• État initial :Z→ •S#.

• États finals :{A→α• |A→α∈P}.

• Transitions :

δ(A→α •Xβ,X) =A→αX•β;

δ(A→α •Xβ, ϵ) =X→ •γ.

4

(20)

Automate LR non-déterministe

• États :{A→α β |A→α β∈P}(toutes les règles pointées obtenues à partir de toutes les règles de la grammaires).

• État initial :Z→ •S#.

• États finals :{A→α• |A→α∈P}.

• Transitions :

δ(A→α •Xβ,X) =A→αX•β;

δ(A→α •Xβ, ϵ) =X→ •γ.

4

(21)

Automate LR non-déterministe

• États :{A→α β |A→α β∈P}(toutes les règles pointées obtenues à partir de toutes les règles de la grammaires).

• État initial :Z→ •S#.

• États finals :{A→α• |A→α∈P}.

• Transitions :

δ(A→α •Xβ,X) =A→αX•β;

δ(A→α •Xβ, ϵ) =X→ •γ.

4

(22)

Automate LR non-déterministe

• États :{A→α β |A→α β∈P}(toutes les règles pointées obtenues à partir de toutes les règles de la grammaires).

• État initial :Z→ •S#.

• États finals :{A→α• |A→α∈P}.

• Transitions :

δ(A→α •Xβ,X) =A→αX•β;

δ(A→α •Xβ, ϵ) =X→ •γ.

4

(23)

Automate LR non-déterministe

• États :{A→α β |A→α β∈P}(toutes les règles pointées obtenues à partir de toutes les règles de la grammaires).

• État initial :Z→ •S#.

• États finals :{A→α• |A→α∈P}.

• Transitions :

δ(A→α •Xβ,X) =A→αX•β;

δ(A→α •Xβ, ϵ) =X→ •γ.

4

(24)

S→A B

A→a A|b

B→b B|a

Z→S#

Z→ •S#

start

ZS# Z→S#•

S→ •A B SAB S→A B•

A→ •a A

AaA Aa A•

A→ •b A→b•

B→ •b B

B→bB Bb B•

B→ •a Ba•

S

# A

a A b B b

B

a

ϵ ϵ

ϵ

ϵ ϵ

ϵ ϵ

ϵ ϵ

5

(25)

S→A B

A→a A|b

B→b B|a

Z→S#

Z→ •S#

start

Z→S# ZS#•

S→ •A B SAB S→A B•

A→ •a A

AaA Aa A•

A→ •b A→b•

B→ •b B

BbB Bb B•

B→ •a Ba•

S

# A

a A b B b

B

a

ϵ ϵ

ϵ

ϵ ϵ

ϵ ϵ

ϵ ϵ

5

(26)

S→A B

A→a A|b

B→b B|a

Z→S#

Z→ •S#

start

Z→S# ZS#•

S→ •A B SAB S→A B•

A→ •a A

AaA Aa A•

A→ •b A→b•

B→ •b B

BbB Bb B•

B→ •a Ba•

S

# A

a A b B b

B

a

ϵ ϵ

ϵ

ϵ ϵ

ϵ ϵ

ϵ ϵ

5

(27)

S→A B

A→a A|b

B→b B|a

Z→S#

Z→ •S#

start

Z→S# ZS#•

S→ •A B SAB S→A B•

A→ •a A

AaA Aa A•

A→ •b A→b•

B→ •b B

BbB Bb B•

B→ •a Ba•

S

# A

a A b B b

B

a

ϵ ϵ

ϵ

ϵ ϵ

ϵ ϵ

ϵ ϵ

5

(28)

a b A B S # (1){Z→ •S# (2){AaA (3){Ab•} (4){SAB (5){ZS#}

S→ •A B A→ •a A B→ •b B

A→ •a A A→ •b} B→ •a}

A→ •b}

(2) (2) (3) (6){Aa A•}

(3)

(4) (7){Ba•} (8){BbB (9){SA B•}

B→ •b B B→ •a}

(5) (10){ZS#•}

(6)

(7)

(8) (7) (8) (11){Bb B•}

(9)

(10)

(11)

6

(29)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(30)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(31)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1

s 2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(32)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s

2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(33)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2

3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(34)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3

4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(35)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3 4

5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(36)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(37)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(38)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(39)

1 start

2 6 Aa A

3 Ab

4 5

8

9 SA B

10

7 Ba

11 Bb B

a b

A S

A b

b a B

#

B a a

b

État Shift Goto

Action a b # A B S

1 s 2 3 4 5

2 s 2 3 6

3 r(Ab)

4 s 7 8 9

5 s 10

6 r(Aa A) 7 r(Ba)

8 s 7 8 11

9 r(SA B) 10 accept 11 r(Bb B)

7

(40)

Analyse tabulaire

(41)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(42)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(43)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(44)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(45)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(46)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(47)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(48)

• Pour la plupart des grammaires, et notamment les grammaires ambiguës, les algorithmes de type LL/LR sont loin d’être optimaux.

• Vocabulaire : le span(i,j)d’une séquenceu1· · ·unest la sous-séquenceui· · ·uj.

• En analyse tabulaire, on va remplir un tableau bidimensionnel où la cellule(i,j)contient des informations relatives à l’analyse du span(i,j−1).

• Ce tableau va permettre d’éviter les calculs redondants, d’encoder de manière compacte l’ensemble des analyses possibles et éventuellement même guider l’analyse.

• Remarque : le nombre d’analyses d’un mot donné est potentiellement exponentiel en la longueur du mot.

• Deux (familles d’)algorithmes classiques de complexitéO(n3):

• CYK ;

• Earley.

8

(49)

Algorithme CYK

(50)

À lire

• Chapitre 14 du polycopié d’Yvon et Demaille (2016), jusqu’à la fin de la section 14.1,Analyser des langages ambigus avec CYK.

9

(51)

À lire

• Chapitre 14 du polycopié d’Yvon et Demaille (2016), jusqu’à la fin de la section 14.1,Analyser des langages ambigus avec CYK.

9

(52)

• Le nom de l’algorithme CYK est dérivé des noms de (certains de) ses découvreurs (Cocke, Younger, Kasami).

• Nécessite une grammaire en CNF (règlesA→B CouA→a).

• Dans la cellule(i,j), on enregistre l’ensemble des non-terminaux qui peuvent se réécrire enui· · ·uj−1(pouri<j).

• Exemple :

4 {P} {V, SV}

3 {SN} {N} 2 {DET}

1 2 3

ma sœur mange

1 DETma 2 Nsœur 3

Vmange, SV→mange4 SN→DET N

P→SN SV

10

(53)

• Le nom de l’algorithme CYK est dérivé des noms de (certains de) ses découvreurs (Cocke, Younger, Kasami).

• Nécessite une grammaire en CNF (règlesA→B CouA→a).

• Dans la cellule(i,j), on enregistre l’ensemble des non-terminaux qui peuvent se réécrire enui· · ·uj−1(pouri<j).

• Exemple :

4 {P} {V, SV}

3 {SN} {N} 2 {DET}

1 2 3

ma sœur mange

1 DETma 2 Nsœur 3

Vmange, SV→mange4 SN→DET N

P→SN SV

10

(54)

• Le nom de l’algorithme CYK est dérivé des noms de (certains de) ses découvreurs (Cocke, Younger, Kasami).

• Nécessite une grammaire en CNF (règlesA→B CouA→a).

• Dans la cellule(i,j), on enregistre l’ensemble des non-terminaux qui peuvent se réécrire enui· · ·uj−1(pouri<j).

• Exemple :

4 {P} {V, SV}

3 {SN} {N} 2 {DET}

1 2 3

ma sœur mange

1 DETma 2 Nsœur 3

Vmange, SV→mange4 SN→DET N

P→SN SV

10

(55)

• Le nom de l’algorithme CYK est dérivé des noms de (certains de) ses découvreurs (Cocke, Younger, Kasami).

• Nécessite une grammaire en CNF (règlesA→B CouA→a).

• Dans la cellule(i,j), on enregistre l’ensemble des non-terminaux qui peuvent se réécrire enui· · ·uj−1(pouri<j).

• Exemple :

4 {P} {V, SV}

3 {SN} {N}

2 {DET}

1 2 3

ma sœur mange

1 DETma 2 Nsœur 3

Vmange, SV→mange4 SN→DET N

P→SN SV

10

(56)

• Le nom de l’algorithme CYK est dérivé des noms de (certains de) ses découvreurs (Cocke, Younger, Kasami).

• Nécessite une grammaire en CNF (règlesA→B CouA→a).

• Dans la cellule(i,j), on enregistre l’ensemble des non-terminaux qui peuvent se réécrire enui· · ·uj−1(pouri<j).

• Exemple :

4 {P} {V, SV}

3 {SN} {N}

2 {DET}

1 2 3

ma sœur mange

1 DETma 2 Nsœur 3

Vmange, SV→mange4 SN→DET N

P→SN SV

10

(57)

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

(58)

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

(59)

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

(60)

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

(61)

Remplir la table

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

AB C

B...

C...

12

(62)

Remplir la table

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

AB C

B...

C...

12

(63)

Remplir la table

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

AB C

B... C...

12

(64)

Remplir la table

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

AB C B...

C...

12

(65)

Remplir la table

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

AB C B...

C...

12

(66)

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

(67)

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

(68)

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

(69)

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

(70)

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

(71)

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

(72)

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

(73)

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

(74)

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

(75)

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

(76)

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

(77)

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

(78)

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

(79)

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

Références

Documents relatifs

Etant donné que nous allons travailler sur les matrices : étudier la convergence de suites de ma- trices, mesurer des erreurs, etc., il est important de donner quelques résultats

Donner les deux premiers intervalles obtenus en utilisant la méthode, de dichotomie et de Lagrange et préciser l'erreur dans chaque itération.. la base

• En section 4.4 L’automate canonique, vous pouvez vous concentrer sur l’algorithme de minimisation (en 4.4.3 ; nécessite de connaître aussi la définition de

• On peut supprimer les productions et symboles inutiles sans affecter le langage généré.. • Algorithme en deux

Acceptation par état final : un peu comme pour les automates finis, on accepte si on se retrouve dans un état final après avoir lu tout le mot, et ce quelque soit le contenu de

• On suppose une capacité de mémoire infinie afin de pouvoir étudier la régularité (au sens usuel) des phénomènes syntaxiques et rendre la notion de structure syntaxique

• si ce n’est pas possible (parce qu’il s’agit d’un terminal ou parce que les différentes réécritures ne mènent à rien), c’est que la branche n’est pas viable.. •

À chaque étape, soit on sait qu’il faut s’arrêter (réussite ou échec), soit on sait quelle action effectuer pour continuer