Алгоритм Кока-Янгера-Касами разбора грамматики в НФХ — различия между версиями
Kabanov (обсуждение | вклад) (→Пример работы) |
Kabanov (обсуждение | вклад) (→Пример работы) |
||
Строка 76: | Строка 76: | ||
<tex>\begin{array}{l l} | <tex>\begin{array}{l l} | ||
− | A \rightarrow \varepsilon|BB|CD\\ | + | A \rightarrow \varepsilon | BB | CD\\ |
− | B \rightarrow BB|CD\\ | + | B \rightarrow BB | CD\\ |
C \rightarrow (\\ | C \rightarrow (\\ | ||
− | D \rightarrow BE|)\\ | + | D \rightarrow BE | )\\ |
E \rightarrow )\\ | E \rightarrow )\\ | ||
\end{array}</tex> | \end{array}</tex> | ||
Строка 88: | Строка 88: | ||
Инициализация массива <tex>d</tex>. | Инициализация массива <tex>d</tex>. | ||
− | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" | |
− | {| border="1" style="width: 150px; height: 150px; float: left;" | ||
! colspan="7" style="background:#ffdead;"|A | ! colspan="7" style="background:#ffdead;"|A | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 108: | Строка 107: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 116: | Строка 115: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 124: | Строка 123: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 132: | Строка 131: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 140: | Строка 139: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 148: | Строка 147: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|B | ! colspan="7" style="background:#ffdead;"|B | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 167: | Строка 166: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 175: | Строка 174: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 183: | Строка 182: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 191: | Строка 190: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 199: | Строка 198: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 207: | Строка 206: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|C | ! colspan="7" style="background:#ffdead;"|C | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| align="center"| ● | | align="center"| ● | ||
| | | | ||
Строка 226: | Строка 225: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 234: | Строка 233: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 242: | Строка 241: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 250: | Строка 249: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 258: | Строка 257: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 266: | Строка 265: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|D | ! colspan="7" style="background:#ffdead;"|D | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 285: | Строка 284: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 293: | Строка 292: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 301: | Строка 300: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 309: | Строка 308: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 317: | Строка 316: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 325: | Строка 324: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; " | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|E | ! colspan="7" style="background:#ffdead;"|E | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 344: | Строка 343: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 352: | Строка 351: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 360: | Строка 359: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 368: | Строка 367: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 376: | Строка 375: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 384: | Строка 383: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | + | <div style="clear:both;"></div> | |
Заполнение массива <tex>d</tex>. | Заполнение массива <tex>d</tex>. | ||
− | |||
− | |||
Итерация <tex>m = 1</tex>. | Итерация <tex>m = 1</tex>. | ||
− | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" | |
− | {| border="1" style="width: 150px; height: 150px; float: left;" | ||
! colspan="7" style="background:#ffdead;"|A | ! colspan="7" style="background:#ffdead;"|A | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 413: | Строка 409: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 421: | Строка 417: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 429: | Строка 425: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 437: | Строка 433: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 445: | Строка 441: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 453: | Строка 449: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|B | ! colspan="7" style="background:#ffdead;"|B | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 472: | Строка 468: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 480: | Строка 476: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 488: | Строка 484: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 496: | Строка 492: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 504: | Строка 500: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 512: | Строка 508: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|C | ! colspan="7" style="background:#ffdead;"|C | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| align="center"| ● | | align="center"| ● | ||
| | | | ||
Строка 531: | Строка 527: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 539: | Строка 535: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 547: | Строка 543: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 555: | Строка 551: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 563: | Строка 559: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 571: | Строка 567: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|D | ! colspan="7" style="background:#ffdead;"|D | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 590: | Строка 586: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 598: | Строка 594: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 606: | Строка 602: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 614: | Строка 610: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 622: | Строка 618: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 630: | Строка 626: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; " | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|E | ! colspan="7" style="background:#ffdead;"|E | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 649: | Строка 645: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 657: | Строка 653: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 665: | Строка 661: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 673: | Строка 669: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 681: | Строка 677: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 689: | Строка 685: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | + | <div style="clear:both;"></div> | |
Итерация <tex>m = 2</tex>. | Итерация <tex>m = 2</tex>. | ||
− | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" | |
− | {| border="1" style="width: 150px; height: 150px; float: left;" | ||
! colspan="7" style="background:#ffdead;"|A | ! colspan="7" style="background:#ffdead;"|A | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 713: | Строка 708: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 721: | Строка 716: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 729: | Строка 724: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 737: | Строка 732: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 745: | Строка 740: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 753: | Строка 748: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|B | ! colspan="7" style="background:#ffdead;"|B | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 772: | Строка 767: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 780: | Строка 775: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 788: | Строка 783: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 796: | Строка 791: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 804: | Строка 799: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 812: | Строка 807: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|C | ! colspan="7" style="background:#ffdead;"|C | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| align="center"| ● | | align="center"| ● | ||
| | | | ||
Строка 831: | Строка 826: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 839: | Строка 834: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 847: | Строка 842: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 855: | Строка 850: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 863: | Строка 858: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 871: | Строка 866: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|D | ! colspan="7" style="background:#ffdead;"|D | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 890: | Строка 885: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 898: | Строка 893: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 906: | Строка 901: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 914: | Строка 909: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 922: | Строка 917: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 930: | Строка 925: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; " | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|E | ! colspan="7" style="background:#ffdead;"|E | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 949: | Строка 944: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 957: | Строка 952: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 965: | Строка 960: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 973: | Строка 968: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 981: | Строка 976: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 989: | Строка 984: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | + | <div style="clear:both;"></div> | |
Итерация <tex>m = 3</tex>. | Итерация <tex>m = 3</tex>. | ||
− | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" | |
− | {| border="1" style="width: 150px; height: 150px; float: left;" | ||
! colspan="7" style="background:#ffdead;"|A | ! colspan="7" style="background:#ffdead;"|A | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1013: | Строка 1007: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1021: | Строка 1015: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1029: | Строка 1023: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1037: | Строка 1031: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1045: | Строка 1039: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1053: | Строка 1047: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|B | ! colspan="7" style="background:#ffdead;"|B | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1072: | Строка 1066: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1080: | Строка 1074: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1088: | Строка 1082: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1096: | Строка 1090: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1104: | Строка 1098: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1112: | Строка 1106: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|C | ! colspan="7" style="background:#ffdead;"|C | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| align="center"| ● | | align="center"| ● | ||
| | | | ||
Строка 1131: | Строка 1125: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1139: | Строка 1133: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1147: | Строка 1141: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1155: | Строка 1149: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1163: | Строка 1157: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1171: | Строка 1165: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|D | ! colspan="7" style="background:#ffdead;"|D | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 1190: | Строка 1184: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1198: | Строка 1192: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1206: | Строка 1200: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1214: | Строка 1208: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1222: | Строка 1216: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1230: | Строка 1224: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; " | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|E | ! colspan="7" style="background:#ffdead;"|E | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 1249: | Строка 1243: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1257: | Строка 1251: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1265: | Строка 1259: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1273: | Строка 1267: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1281: | Строка 1275: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1289: | Строка 1283: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | + | <div style="clear:both;"></div> | |
Итерация <tex>m = 4</tex>. | Итерация <tex>m = 4</tex>. | ||
− | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" | |
− | {| border="1" style="width: 150px; height: 150px; float: left;" | ||
! colspan="7" style="background:#ffdead;"|A | ! colspan="7" style="background:#ffdead;"|A | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1313: | Строка 1306: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1321: | Строка 1314: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1329: | Строка 1322: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1337: | Строка 1330: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1345: | Строка 1338: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1353: | Строка 1346: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|B | ! colspan="7" style="background:#ffdead;"|B | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1372: | Строка 1365: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1380: | Строка 1373: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1388: | Строка 1381: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1396: | Строка 1389: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1404: | Строка 1397: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1412: | Строка 1405: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|C | ! colspan="7" style="background:#ffdead;"|C | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| align="center"| ● | | align="center"| ● | ||
| | | | ||
Строка 1431: | Строка 1424: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1439: | Строка 1432: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1447: | Строка 1440: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1455: | Строка 1448: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1463: | Строка 1456: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1471: | Строка 1464: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|D | ! colspan="7" style="background:#ffdead;"|D | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 1490: | Строка 1483: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1498: | Строка 1491: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1506: | Строка 1499: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1514: | Строка 1507: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1522: | Строка 1515: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1530: | Строка 1523: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; " | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|E | ! colspan="7" style="background:#ffdead;"|E | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 1549: | Строка 1542: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1557: | Строка 1550: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1565: | Строка 1558: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1573: | Строка 1566: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1581: | Строка 1574: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1589: | Строка 1582: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | + | <div style="clear:both;"></div> | |
Итерация <tex>m = 5</tex>. | Итерация <tex>m = 5</tex>. | ||
− | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" | |
− | {| border="1" style="width: 150px; height: 150px; float: left;" | ||
! colspan="7" style="background:#ffdead;"|A | ! colspan="7" style="background:#ffdead;"|A | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1613: | Строка 1605: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1621: | Строка 1613: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1629: | Строка 1621: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1637: | Строка 1629: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1645: | Строка 1637: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1653: | Строка 1645: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|B | ! colspan="7" style="background:#ffdead;"|B | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1672: | Строка 1664: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1680: | Строка 1672: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1688: | Строка 1680: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1696: | Строка 1688: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1704: | Строка 1696: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1712: | Строка 1704: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|C | ! colspan="7" style="background:#ffdead;"|C | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| align="center"| ● | | align="center"| ● | ||
| | | | ||
Строка 1731: | Строка 1723: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| | | | ||
Строка 1739: | Строка 1731: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1747: | Строка 1739: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1755: | Строка 1747: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1763: | Строка 1755: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1771: | Строка 1763: | ||
| | | | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; float: left;" | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|D | ! colspan="7" style="background:#ffdead;"|D | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 1790: | Строка 1782: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1798: | Строка 1790: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1806: | Строка 1798: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1814: | Строка 1806: | ||
| align="center"| ● | | align="center"| ● | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1822: | Строка 1814: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1830: | Строка 1822: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | {| border="1" style="width: 150px; height: 150px; " | + | {| border="1" class="wikitable" style="width: 150px; height: 150px; float: left;" |
! colspan="7" style="background:#ffdead;"|E | ! colspan="7" style="background:#ffdead;"|E | ||
|- | |- | ||
− | ! | + | ! |
− | ! | + | ! 1 |
− | ! | + | ! 2 |
− | ! | + | ! 3 |
− | ! | + | ! 4 |
− | ! | + | ! 5 |
− | ! | + | ! 6 |
|- | |- | ||
− | ! | + | ! 1 |
| | | | ||
| | | | ||
Строка 1849: | Строка 1841: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 2 |
| | | | ||
| align="center"| ● | | align="center"| ● | ||
Строка 1857: | Строка 1849: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 3 |
| | | | ||
| | | | ||
Строка 1865: | Строка 1857: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 4 |
| | | | ||
| | | | ||
Строка 1873: | Строка 1865: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 5 |
| | | | ||
| | | | ||
Строка 1881: | Строка 1873: | ||
| | | | ||
|- | |- | ||
− | ! | + | ! 6 |
| | | | ||
| | | | ||
Строка 1889: | Строка 1881: | ||
| align="center"| ● | | align="center"| ● | ||
|} | |} | ||
− | + | <div style="clear:both;"></div> | |
== См. также == | == См. также == |
Версия 20:48, 5 ноября 2014
Задача: |
Пусть дана контекстно-свободная грамматика в нормальной форме Хомского и слово . Требуется выяснить, выводится ли это слово в данной грамматике. |
Содержание
Контекстно-свободная грамматика
Определение: |
Контекстно-свободная грамматика (КС-грамматика, бесконтекстная грамматика) — способ описания формального языка, представляющий собой четверку
, где:
|
Пример
Терминалы
.Нетерминалы
.Правила вывода
:
Данная грамматика задает язык правильных скобочных последовательностей. Например, последовательность может быть выведена следующим образом:
Нормальная форма Хомского
Нормальная форма Хомского - нормальная форма КС-грамматик, в которой все продукции имеют вид:
- A → a, где A - нетерминал, а a - терминал
- A → BC, где A, B, C - нетерминалы, причем B и C не являются начальными нетерминалами
- S → ε, где S - начальный нетерминал и ε - пустая строка (данная продукция необходима, если в языке присуствует пустая строка)
Можно показать, что любую КС-грамматику можно привести к нормальной форме Хомского, поэтому алгоритм является в этом плане универсальным.
Алгоритм
Алгоритм Кока-Янгера-Касами (англ. Cocke-Younger-Kasami algorithm, англ. CYK-алгоритм) — универсальный алгоритм, позволяющий по слову узнать, выводимо ли оно в заданной КС-грамматике в нормальной форме Хомского. Будем решать задачу динамическим программированием. Дана строка размером . Заведем для неё трехмерный массив размером , состоящий из логических значений, и тогда и только тогда, когда из нетерминала правилами грамматики можно вывести подстроку .
Рассмотрим все пары
, где — константа и .- . Инициализируем массив для всех нетерминалов, из которых выводится какой-либо символ строки . В таком случае , если в грамматике присутствует правило . Иначе .
- . Значения для всех нетерминалов и пар уже вычислены, поэтому . То есть, подстроку можно вывести из нетерминала , если существует продукция вида и такое , что подстрока выводима из , а подстрока выводится из .
После окончания работы значение
содержит ответ на вопрос, выводима ли данная строка в данной грамматике, где — начальный символ грамматики.Модификации
Количество способов вывести слово
Если массив будет хранить целые числа, а формулу заменить на
, то — количество способов получить подстроку из нетерминала .Минимальная стоимость вывода слова
Пусть
— стоимость вывода по правилу . Тогда, если использовать формулу , то — минимальная стоимость вывода подстроки из нетерминала .Таким образом, задача о выводе в КС-грамматике в нормальной форме Хомского является частным случаем задачи динамического программирования на подотрезке.
Асимптотика
Обработка правил вида
выполняется за .Проход по всем подстрокам выполняется за
. В обработке одной подстроки присутствует цикл по всем правилам вывода и по всем разбиениям на две подстроки, следовательно обработка работает за . В итоге получаем конечную сложность .Следовательно, общее время работы алгоритма — нетерминалов грамматики.
. Кроме того, алгоритму требуется память на массив объемом , где — количествоПример работы
Дана грамматика правильных скобочных последовательностей в нормальной форме Хомского.
Дано слово
.
Инициализация массива .
A | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ||||||
3 | ||||||
4 | ||||||
5 | ||||||
6 |
B | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ||||||
3 | ||||||
4 | ||||||
5 | ||||||
6 |
C | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
D | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |
E | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |
Заполнение массива
.
Итерация .
A | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ||||||
4 | ● | |||||
5 | ||||||
6 |
B | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ||||||
4 | ● | |||||
5 | ||||||
6 |
C | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
D | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |
E | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |
Итерация
.A | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ||||||
4 | ● | |||||
5 | ||||||
6 |
B | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ||||||
4 | ● | |||||
5 | ||||||
6 |
C | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
D | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ● | |||||
5 | ● | |||||
6 | ● |
E | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |
Итерация
.A | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
B | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
C | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
D | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ● | |||||
5 | ● | |||||
6 | ● |
E | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |
Итерация
.A | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
B | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
C | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
D | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ● | |||||
5 | ● | |||||
6 | ● |
E | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |
Итерация
.A | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | ● | ||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
B | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | ● | ||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
C | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ● | |||||
2 | ||||||
3 | ● | |||||
4 | ● | |||||
5 | ||||||
6 |
D | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ● | |||||
5 | ● | |||||
6 | ● |
E | ||||||
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
1 | ||||||
2 | ● | |||||
3 | ||||||
4 | ||||||
5 | ● | |||||
6 | ● |