Submission declined on 11 July 2024 by Qcne (talk). This is the English language Wikipedia; we can only accept articles written in the English language. Please provide a high-quality English language translation of your submission. Have you visited the Wikipedia home page? You can probably find a version of Wikipedia in your language.
Where to get help
How to improve a draft
You can also browse Wikipedia:Featured articles and Wikipedia:Good articles to find examples of Wikipedia's best writing on topics similar to your proposed article. Improving your odds of a speedy review To improve your odds of a faster review, tag your draft with relevant WikiProject tags using the button below. This will let reviewers know a new draft has been submitted in their area of interest. For instance, if you wrote about a female astronomer, you would want to add the Biography, Astronomy, and Women scientists tags. Editor resources
| ![]() |
Submission declined on 8 July 2024 by SafariScribe (talk). This is the English language Wikipedia; we can only accept articles written in the English language. Please provide a high-quality English language translation of your submission. Have you visited the Wikipedia home page? You can probably find a version of Wikipedia in your language. Declined by SafariScribe 40 days ago. | ![]() |
У теорији формалних језика, контекстно-слободна граматика, G, је у Чомски нормалној форми (Ноам Чомски.[1] је први описао ову форму) ако су сва њена продукциона правила у облику[2][3]:
A → BC, или
A → a, или
S → ε,
гдје су A, B и C нетерминални симболи, слово a је терминални симбол (симбол који представља константну вриједност), S је почетни симбол, а ε означава празан низ карактера. Такође, ни B ни C не могу бити почетни симболи, а треће продукционо правило може се појавити само ако је ε у L(G), језику који производи контекстно-слободна граматика G[4].
Свака граматика у Нормалној форми Чомског је контекстно-слободна, и обрнуто, свака контекстно-слободна граматика може бити трансформисана у еквивалентну која је у Нормалној форми Чомског и има величину не већу од квадрата величине оригиналне граматике.
Претварање граматике у Нормалну форму Чомског
editДа би се граматика претворила у Нормалну форму Чомског, примјењује се низ једноставних трансформација у одређеном редослиједу; ово је описано у већини уџбеника о теорији аутомата[4][5][6][7]. Презентација овдје слиједи Хопкрофта и Улмана (1979), али је прилагођена да користи називе трансформација из Лангеа и Леиßа (2009)[8]. Свака од сљедећих трансформација успоставља једну од особина потребних за Нормалну форму Чомског.
ПОЧЕТАК: Елиминисати почетни симбол са десне стране.
Увести нови почетни симбол S0, и ново правило
S0 → S,
гдjе је S претходни почетни симбол. Ово не мијења језик који граматика производи, и S0 се неће појавити на десној страни ниједног правила.
ТЕРМИНАЛ: Елиминисати правила са непојединаченим терминалима
За уклањање сваког правила
A → X1 ... a ... Xn
са терминалним симболом a који није једини симбол на десној страни, увести, за сваки такав терминал, нови нетерминални симбол Na и ново правило
- Na → a.
Промјенити свако правило
- A → X1 ... a ... Xn
у
- A → X1 ... Na ... Xn
Ако се на десној страни јављају више терминалних симбола, истовремено замјени сваки од њих његовим одговарајућим нетерминалним симболом. Ово не мијења језик који производи граматика[4].
БИНАРИЗАЦИЈА: Избаци правила која имају на десној страни више од 2 нетерминална симбола.
Замјенити свако правило
- A → X1 X2 ... Xn
са више од 2 нетерминала X1, ..., Xn са правилом
- A → X1 A1,
- A1 → X2 A2,
- ... ,
- An-2 → Xn-1 Xn,
гдје су Ai нови нетерминални симболи. Опет, ово не мијења језик који производи граматика[4].
БРИСАЊЕ: Елиминисати ε-правила
ε-правило је правило облика
A → ε,
гдје A није S0, почетни симбол граматике.
Да бисмо елиминисали сва правила овог облика, прво одредимо скуп свих нетерминала који изводе ε. Хопкрофт и Улман (1979) називају такве нетерминале празан (nullable) и израчунавају их на сљедећи начин:
- Ако постоји правило A → ε, онда је A празан.
- Ако постоји правило A → X1 ... Xn, и сваки Xi је празан, тада је и A празан.
Добијамо посредну граматику замјеном сваког правила
A → X1 ... Xn
у свим верзијама у којима је неки празан Xi изостављен. У овој граматици, бришемо свако ε-правило, осим ако је лијева страна почетни симбол, добија се трансформисана граматика.[4]
На примјер, у сљедећој граматици са почетним симболом S0:
- S0 → AbB | C
- B → AA | AC
- C → b | c
- A → a | ε
нетерминал A, и самим тим и B, је празан, док C и S0 нису. Затим добијамо сљедећу посредну граматику:
- S0 → AbB | Ab
B|AbB |AbB| C - B → AA |
AA | AA|AεA| AC |AC - C → b | c
- A → a | ε
У овој граматици, сва ε-правила су "уграђена на мјесту позива". У сљедећем кораку, можемо их обрисати, чиме добијамо граматику:
- S0 → AbB | Ab | bB | b | C
- B → AA | A | AC | C
- C → b | c
- A → a
Ова граматика производи исти језик као и оригинални примјер граматике,
{ab, aba, abaa, abab, abac, abb, abc, b, bab, bac, bb, bc, c}, али нема ε-правила.
ЈЕДИНИЧНО ПРАВИЛО: Елиминисати јединична правила
Јединично правило је правило облика
A → B,
гдје су A, B нетерминални симболи. Да би се ово правило уклонило, за свако правило
B → X1 ... Xn,
гдје је X1 ... Xn низ карактера нетерминала и терминала, додати правило
A → X1 ... Xn
осим ако је ово јединично правило које је већ уклоњено или се уклања. Прескакање нетерминалног симбола B у насталој граматици је могуће због тога што је B члан јединичног затварања нетерминалног симбола A[9]
Редослијед трансформација
Када се бира редослијед примјене горе наведених трансформација, треба имати у виду да неке трансформације могу уништити резултат који је постигнут другима. На примјер, ПОЧЕТАК ће поново увести јединично правило ако се примјени након ЈЕДИНИЧНО ПРАВИЛО. Табела показује који редослиједи су дозвољени.
Трансформација X увијек чуваува (✓)
одн. може поништити (✖) резултат Y: | |||||
Y
X |
ПОЧЕТАК | ТЕРМИНАЛ | БИНАРИЗАЦИЈА | БРИСАЊЕ | ЈЕДИНИЧНО ПРАВИЛО |
---|---|---|---|---|---|
ПОЧЕТАК | ✓ | ✓ | ✖️ | ✖️ | |
ТЕРМИНАЛ | ✓ | ✖️ | ✓ | ✓ | |
БИНАРИЗАЦИЈА | ✓ | ✓ | ✓ | ✓ | |
БРИСАЊЕ | ✓ | ✓ | ✓ | ✖️ | |
ЈЕДИНИЧНО ПРАВИЛО | ✓ | ✓ | ✓ | (✓)* | |
ЈЕДИНИЧНО ПРАВИЛО чува резултат БРИСАЊАЊЕ
ако је почетак био позван прије |
Осим тога, у најгорем случају, увећање величине граматике зависи од редоследа трансформација. Користећи |G| да означимо величину оригиналне граматике G, увећање величине у најгорем случају може се кретати од |G|² до 2² |G|, у зависности од алгоритма трансформације који се користи[8]. Увећање величине граматике зависи од редоследа између БРИСАЊЕ и БИНАРИЗАЦИЈА. Може бити експоненцијално када се прво обави БРИСАЊЕ, али је линеарно у другим случајевима. ЈЕДИНИЧНО ПРАВИЛО може довести до квадратичног увећања величине граматике[8]. Редослиједи ПОЧЕТАК, ТЕРМИНАЛ, БИНАРИЗАЦИЈА, БРИСАЊЕ, ЈЕДИНИЧНО ПРАВИЛО и ПОЧЕТАК, БИНАРИЗАЦИЈА, БРИСАЊЕ, ЈЕДИНИЧНО ПРАВИЛО, ТЕРМИНАЛ доводе до најмањег (тј. квадратичног) увећања.
Примјер
editСљедећа граматика, са почетним симболом Expr, описује поједностављену верзију свих синтаксички исправних аритметичких израза у програмским језицима као што су C или Algol60. Број и промјенљива се овдје сматрају терминалним симболима ради једноставности, јер у фронтенду компилатора њихова интерна структура обично није битна за парсер. Терминални симбол "^" означава степеновање у Algol60.
Expr | → Term | | Expr AddOp Term | | AddOp Term |
Term | → Factor | | Term MulOp Factor | |
Factor | → Primary | | Factor ^ Primary | |
Primary | → number | | variable | | ( Expr ) |
AddOp | → + | | − | |
MulOp | → * | | / |
У кораку "ПОЧЕТАК" горе наведеног алгоритма конверзије, само је правило S0→Expr додано у граматику. Након корака "ТЕРМИНАЛ", граматика изгледа овако:
S0 | → Expr | ||
Expr | → Term | | Expr AddOp Term | | AddOp Term |
Term | → Factor | | Term MulOp Factor | |
Factor | → Primary | | Factor PowOp Primary | |
Primary | → number | | variable | | Open Expr Close |
AddOp | → + | | − | |
MulOp | → * | | / | |
PowOp | → ^ | ||
Open | → ( | ||
Close | → ) |
Након корака "БИНАРИЗАЦИЈА", добија се сљедећа граматика:
S0 | → Expr | ||
Expr | → Term | | Expr AddOp_Term | | AddOp Term |
Term | → Factor | | Term MulOp_Factor | |
Factor | → Primary | | Factor PowOp_Primary | |
Primary | → number | | variable | | Open Expr_Close |
AddOp | → + | | − | |
MulOp | → * | | / | |
PowOp | → ^ | ||
Open | → ( | ||
Close | → ) | ||
AddOp_Term | → AddOp Term | ||
MulOp_Factor | → MulOp Factor | ||
PowOp_Primary | → PowOp Primary | ||
Expr_Close | → Expr Close |
Пошто нема ε-правила, корак "БРИСАЊЕ" не мења граматику. Након корака "ЈЕДИНИЧНО ПРАВИЛО", добија се сљедећа граматика, која је у Нормалној форми Чомског:
S0 | → number | | variable | | Open Expr_Close | | Factor PowOp_Primary | | Term MulOp_Factor | | Expr AddOp_Term | | AddOp Term |
Expr | → number | | variable | | Open Expr_Close | | Factor PowOp_Primary | | Term MulOp_Factor | | Expr AddOp_Term | | AddOp Term |
Term | → number | | variable | | Open Expr_Close | | Factor PowOp_Primary | | Term MulOp_Factor | ||
Factor | → number | | variable | | Open Expr_Close | | Factor PowOp_Primary | |||
Primary | → number | | variable | | Open Expr_Close | ||||
AddOp | → + | | − | |||||
MulOp | → * | | / | |||||
PowOp | → ^ | ||||||
Open | → ( | ||||||
Close | → ) | ||||||
AddOp_Term | → AddOp Term | ||||||
MulOp_Factor | → MulOp Factor | ||||||
PowOp_Primary | → PowOp Primary | ||||||
Expr_Close | → Expr Close |
Са Na у кораку "ТЕРМИНАЛ" представљени су PowOp, Open и Close. Са Ai у кораку "БИНАРИЗАЦИЈА" представљени су AddOp_Term, MulOp_Factor, PowOp_Primary и Expr_Close.
Алтернативна дефиниција
editРедукована форма Чомског
Други начин[4][10] да се дефинише Нормална форма Чомског је:
Формална граматика је у Редукованој форми Чомског ако су сва њена правила производње у облику:
𝐴 → 𝐵𝐶 или
𝐴 → 𝑎,
гдје 𝐴, 𝐵 и 𝐶 су нетерминални симболи, а 𝑎 је терминални симбол. Користећи ову дефиницију, 𝐵 или 𝐶 могу бити почетни симбол. Само оне контекстно-слободне граматике које не генеришу празан низ карактера могу се трансформисати у Редуковану форму Чомског.
Флојдова нормална форма
У писму у коме је предложио термин Бекус-Наур форма (БНФ), Доналд Е. Кнут је споменуо да је БНФ "синтакса у којој све дефиниције имају такав облик може се рећи да је у 'Флојдовој нормалној форми'",
⟨𝐴⟩::= ⟨𝐵⟩ ∣ ⟨𝐶⟩ или
⟨𝐴⟩::= ⟨𝐵⟩ ⟨𝐶⟩ или
⟨𝐴⟩::= 𝑎,
гдје ⟨𝐴⟩, ⟨𝐵⟩ и ⟨𝐶⟩ су нетерминални симболи, а 𝑎 је терминални симбол, јер је Роберт В. Флојд пронашао да се свака БНФ синтакса може превести на горе наведени облик 1961[11]. године. Међутим, он је повукао овај термин "јер је без сумње многима служила ова проста чињеница у њиховом раду, и то је само спорадично у односу на главна разматрања Флојдове биљешке."[12] Док Флојдова биљешка наводи оригинални чланак Чомског из 1959. године, писмо Кнута то не чини.
Примјена
editПоред његовог теоријског значаја, конверзија у Нормалну форму Чомског се користи у неким алгоритмима као предпроцесирање, на примjер у CYK алгоритму, који је алгоритам за одоздо-према-горе парсирање за контекстно-слободне граматике, као и његовој варијанти вјероватноће CKY алгоритму.[13]
Погледај такође
edit- Бекус-Наур форма
- CYK алгоритам
- Граибахова нормална форма
- Курода нормална форма
- Лема о пумпању за контекстно-слободне језике - њена доказивања се односе на Чомскијеву нормалну форму
Референце
edit- ^ Chomsky, Noam (1959). "On Certain Formal Properties of Grammars". Information and Control. 2 (2): 137–167. doi:10.1016/S0019-9958(59)90362-6. Here: Sect.6, p.152ff.
- ^ D'Antoni, Loris. "Page 7, Lecture 9: Bottom-up Parsing Algorithms" (PDF). CS536-S21 Intro to Programming Languages and Compilers. University of Wisconsin-Madison. Archived (PDF) from the original on 2021-07-19.
- ^ Sipser, Michael (2006). Introduction to the theory of computation (2nd ed.). Boston: Thomson Course Technology. Definition 2.8. ISBN 0-534-95097-3. OCLC 58544333.
- ^ a b c d e f Hopcroft, John E.; Ullman, Jeffrey D. (1979). Introduction to Automata Theory, Languages and Computation. Reading, Massachusetts: Addison-Wesley Publishing. ISBN 978-0-201-02988-8.
- ^ Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2006). Introduction to Automata Theory, Languages, and Computation (3rd ed.). Addison-Wesley. ISBN 978-0-321-45536-9. Section 7.1.5, p.272
- ^ Rich, Elaine (2007). "11.8 Normal Forms". Automata, Computability, and Complexity: Theory and Applications (PDF) (1st ed.). Prentice-Hall. p. 169. ISBN 978-0132288064. Archived from the original (PDF) on 2023-01-17.
- ^ Wegener, Ingo (1993). Theoretische Informatik - Eine algorithmenorientierte Einführung. Leitfäden und Mongraphien der Informatik (in German). Stuttgart: B. G. Teubner. ISBN 978-3-519-02123-0. Section 6.2 "Die Chomsky-Normalform für kontextfreie Grammatiken", p. 149–152
- ^ a b c Lange, Martin; Leiß, Hans (2009). "To CNF or not to CNF? An Efficient Yet Presentable Version of the CYK Algorithm" (PDF). Informatica Didactica. 8. Archived (PDF) from the original on 2011-07-19.
- ^ Allison, Charles D. (2022). Foundations of Computing: An Accessible Introduction to Automata and Formal Languages. Fresh Sources, Inc. p. 176. ISBN 9780578944173.
- ^ Hopcroft et al. (2006)[page needed]
- ^ Floyd, Robert W. (1961). "Note on mathematical induction in phrase structure grammars" (PDF). Information and Control. 4 (4): 353–358. doi:10.1016/S0019-9958(61)80052-1. Archived (PDF) from the original on 2021-03-05. Here: p.354
- ^ Knuth, Donald E. (December 1964). "Backus Normal Form vs. Backus Naur Form". Communications of the ACM. 7 (12): 735–736. doi:10.1145/355588.365140. S2CID 47537431.
- ^ Jurafsky, Daniel; Martin, James H. (2008). Speech and Language Processing (2nd ed.). Pearson Prentice Hall. p. 465. ISBN 978-0-13-187321-6.
Даље читање
edit- Коул, Ричард. Претварање CFG-ова у ЧНФ (Нормална форма Чомског), 17. октобар 2007. (pdf) — користи редослијед ТЕРМИНАЛ, БИНАРИЗАЦИЈА, ПОЧЕТАК, БРИСАЊЕ, ЈЕДИНИЧНО ПРАВИЛО.
- Џон Мартин (2003). Увод у језике и теорију рачунарства. МакГрав Хил. ISBN 978-0-07-232200-2. (Стране 237–240 од одељка 6.6: поједностављени облици и нормални облици.)
- Мајкл Сипсер (1997). Увод у теорију рачунарства. ПВС Публишинг. ISBN 978-0-534-94728-6. (Стране 98–101 од поглавља 2.1: контекстно-слободне граматике. Страница 156.)
- Чарлс Д. Елисон (2021) (20. август 2021). Основе рачунарства: Приступачан увод у формални језик. Фреш Сорцес, Инк. ISBN 9780578944173. (странице 171-183 од поглавља 7.1: Нормална форма Чомског)
- Сипсер, Мајкл. Увод у теорију рачунарства, 2. издање.
- Александар Медуна (6. децембар 2012). Аутомати и језици: Теорија и примјене. Спрингер Сајенц & Бизнес Медиа. ISBN 978-1-4471-0501-5.