0% found this document useful (0 votes)
8 views179 pages

MTL Slide

This document discusses the theory of sets and functions, including definitions and examples of sets, operations on sets, and the concept of functions and relations. It also covers graph theory, including types of graphs and trees, as well as methods of proof such as induction and contradiction. The content is structured into sections that provide foundational knowledge in mathematical concepts relevant to language and machine theory.

Uploaded by

historyfactsf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views179 pages

MTL Slide

This document discusses the theory of sets and functions, including definitions and examples of sets, operations on sets, and the concept of functions and relations. It also covers graph theory, including types of graphs and trees, as well as methods of proof such as induction and contradiction. The content is structured into sections that provide foundational knowledge in mathematical concepts relevant to language and machine theory.

Uploaded by

historyfactsf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 179

‫ﺑﻨﺎﻡ ﺧﺪﺍﻭﻧﺪ ﺑﺨﺸﻨﺪﻩ ﻭ ﻣﻬﺮﺑﺎﻥ‬

‫ﻧﻈﺮﻳﻪ ﺯﺑﺎﻥ ﻫﺎ ﻭ ﻣﺎﺷﻴﻦ ﻫﺎ‬

‫ﻣﺪﺭﺱ‪ :‬ﺩﮐﺘﺮ ﺭﺿﺎ ﻗﺎﺋﻤﯽ‬


‫‪1‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫ﻣﻘﺪﻣﻪ ﺍﻱ ﺑﺮ ﻧﻈﺮﻳﻪ ﻣﺤﺎﺳﺒﺎﺕ‬

‫‪2‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﻣﺠﻤﻮﻋﻪ )‪: (Set‬‬
‫ﺩﺳﺘﻪ ﺍﻱ ﺍﺯ ﻋﻨﺎﺻﺮ ﺑﺪﻭﻥ ﻫﻴﭻ ﺳﺎﺧﺘﺎﺭﻱ‪،‬ﺻﺮﻓﺂً ﻋﻀﻮ ﻣﺠﻤﻮﻋﻪ ﻫﺴﺘﻨﺪ‪.‬‬
‫• ﻧﻤﺎﻳﺶ ﻣﺠﻤﻮﻋﻪ‪:‬‬
‫}…‪ }, {a,b,‬ﺯﻭﺝ ‪ ; { i : i>0 , i‬ﻣﺠﻤﻮﻋﻪ ﺟﻬﺎﻧﻲ )‪(U‬ﻭ ﻣﺠﻤﻮﻋﻪ ﺗﻬﻲ )‪(ø‬‬

‫• ﻋﻤﻠﮕﺮﻫﺎﻱ ﻣﺠﻤﻮﻋﻪ ‪:‬‬


‫ﺍﺟﺘﻤﺎﻉ‪،‬ﺍﺷﺘﺮﺍﻙ‪،‬ﺗﻔﺎﺿﻞ ‪ ،‬ﻣﺘﻤﻢ ﻭ ﻛﺎﺭﺑﺮﺩ ﺁﻧﻬﺎ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ) ﻗﻮﺍﻧﻴﻦ ﺩﻣﻮﺭﮔﺎﻥ(‪.‬‬

‫• ﻣﻔﺎﻫﻴﻢ ﺍﺳﺎﺳﻲ ﻣﺠﻤﻮﻋﻪ ﻫﺎ‪:‬‬


‫ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺑﻮﺩﻥ ؛ ﻣﺠﻤﻮﻋﻪ ﻫﺎﻱ ﻣﺠﺰﺍ ﻳﺎ ﺟﺪﺍ ﺍﺯ ﻫﻢ )‪ (Disjoint‬؛ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ‬
‫ﺗﻮﺍﻧﻲ )‪. (Powerset‬‬
‫‪3‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﻣﺜﺎﻝ ‪ . S = {a,b,c} :‬ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ‪ S‬ﻣﺠﻤﻮﻋﻪ ﻣﺤﺪﻭﺩ ﻭ ﻣﺘﻨﺎﻫﻲ ﺑﺎﺷﺪ‪ ،‬ﺩﺍﺭﻳﻢ‪:‬‬

‫} }‪ : 2s = {ø , {a} , {b} , {c} , {a,b} , {a,c} , {b,c} , {a,b,c‬ﻣﺠﻤﻮﻋﻪ ﺗﻮﺍﻧﻲ‬

‫|‪ : |S| = 3 , | 2s | = 8 → | 2s | = 2|s‬ﻛﺎﺭﺩﻳﻨﺎﻟﻴﺘﻲ‬

‫• ﺣﺎﺻﻠﻀﺮﺏ ﺩﻛﺎﺭﺗﻲ‪:‬‬

‫; }‪S1 × … × Sn = {(x1,…,xn)|xi є Si , i : 1… n‬‬


‫}‪S = S1 × S2 = {(x,y)|x є S1 , y є S2‬‬

‫‪4‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﺗﻮﺍﺑﻊ )‪: (Function‬‬
‫• ‪ F : S1 → S2‬؛ ﺩﺍﻣﻨﻪ ﻭ ﺑﺮﺩ )‪ (Domain & Range‬؛ ﺯﻭﺝ ﻫﺎﻱ ﻣﺮﺗﺐ ﻳﻜﻲ ﺍﺯ ﺭﻭﺷﻬﺎﻱ ﻧﻤﺎﻳﺶ ﺗﺎﺑﻊ ‪.‬‬
‫• ﺍﮔﺮ ﺩﺍﻣﻨﻪ ﺗﺎﺑﻊ ‪ F‬ﻣﺴﺎﻭﻱ ‪ S1‬ﺑﺎﺷﺪ ﺑﻪ ﺁﻥ ﺗﺎﺑﻊ ﻛﻠﻲ ﻳﺎ ﺗﺎﻡ )‪ (Total Function‬ﻣﻲﮔﻮﻳﻨﺪ ﻭ ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ‬
‫ﺻﻮﺭﺕ ﺗﺎﺑﻊ ﺟﺰﺋﻲ )‪ (Partial Function‬ﻣﻲ ﮔﻮﻳﻨﺪ‪.‬‬

‫• ﺭﺍﺑﻄﻪ )‪: (Relation‬‬


‫ﺗﺎﺑﻊ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺯﻭﺝ ﻫﺎﻱ ﻣﺮﺗﺐ ﺍﺳﺖ ﻛﻪ ﺯﻭﺝ ﻫﺎﻱ ﺍﻭﻝ ﺁﻧﻬﺎ ﻓﻘﻂ ﻳﻜﺒﺎﺭ ﺗﻜﺮﺍﺭ ﺷﺪﻩﺍﻧﺪ‪ .‬ﺍﮔﺮ ﭼﻨﻴﻦ ﻧﺒﺎﺷﺪ‪،‬‬
‫ﻣﺠﻤﻮﻋﻪ ﺭﺍ ﺭﺍﺑﻄﻪ ﮔﻮﻳﻨﺪ )ﻛﻠﻲ ﺗﺮ ﺍﺯ ﺗﺎﺑﻊ(‪.‬‬

‫• ﺭﺍﺑﻄﻪ ﻫﻢ ﺍﺭﺯﻱ ‪:‬‬


‫‪ ; X ≡ Y‬ﺧﺎﺻﻴﺖ ﻫﺎﻱ ﺍﻧﻌﻜﺎﺳﻲ ‪ ،‬ﺗﻘﺎﺭﻥ ‪ ،‬ﺗﻌﺪﻱ‬

‫‪5‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﻣﺜﺎﻝ ‪ :‬ﺭﺍﺑﻄﻪ ﻫﻢ ﺍﺭﺯﻱ ﺭﺍ ﺑﺮﺭﺳﻲ ﻛﻨﻴﺪ؟ ﺭﺍﺑﻄﻪ ﻫﻢ ﺍﺭﺯﻱ ﺍﺳﺖ‪.‬‬

‫‪X≡Y‬‬ ‫ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ‬ ‫‪x mod 3 = y mod 3‬‬

‫• ﮔﺮﺍﻓﻬﺎ ﻭ ﺩﺭﺧﺘﻬﺎ ‪:‬‬


‫ﮔﺮﺍﻑ )‪ G(V,E‬؛ ﮔﺮﺍﻑ ﻫﺎﻱ ﺟﻬﺖ ﺩﺍﺭ ؛ ﮔﺮﺍﻑ ﻫﺎﻱ ﺑﺮﭼﺴﺒﺪﺍﺭ ‪.‬‬

‫• ﻣﻔﺎﻫﻴﻢ ‪:‬‬
‫ﺭﺍﻩ )‪ ، (Walk‬ﺟﺎﺩﻩ ‪ ،‬ﻣﺴﻴﺮ )‪(Path‬‬
‫ﻣﺴﻴﺮ ﺳﺎﺩﻩ‬ ‫ﻣﺴﻴﺮ‬
‫‪V1‬‬ ‫‪V2‬‬ ‫‪V3‬‬ ‫ﻃﻮﻗﻪ‬

‫‪6‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫• ﭼﺮﺧﻪ ﺑﺎ ﭘﺎﻳﻪ ‪: (Cycle) Vi‬‬


‫ﺩﺭ ﻳﻚ ﭼﺮﺧﻪ ﺑﺎ ﭘﺎﻳﻪ ﻱ ‪ ،Vi‬ﺍﮔﺮ ﺑﻪ ﺟﺰ ﭘﺎﻳﻪ ﻫﻴﭻ ﺭﺃﺳﻲ ﺗﻜﺮﺍﺭ ﻧﺸﻮﺩ‪ ،‬ﭼﺮﺧﻪ ﺭﺍ ﭼﺮﺧﻪ ﺳﺎﺩﻩ ﮔﻮﻳﻨﺪ‪.‬‬
‫)ﺩﺭ ﭼﺮﺧﻪ ﻳﺎﻝ‪،‬ﺗﻜﺮﺍﺭﻱ ﻧﺒﺎﻳﺪ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ(‪.‬‬

‫• ﺩﺭﺧﺖ‪:‬‬
‫ﮔﺮﺍﻑ ﺟﻬﺖ ﺩﺍﺭﻱ ﻛﻪ ﭼﺮﺧﻪ ﻧﺪﺍﺭﺩ ؛ ﺭﻳﺸﻪ )‪ ،(Root‬ﺳﻄﺢ )‪) (Level‬ﺳﻄﺢ ﺭﻳﺸﻪ ﺻﻔﺮ(‪ ،‬ﻭ‬
‫ﺍﺭﺗﻘﺎﻉ )‪.(Height‬‬

‫ﺩﺭﺧﺘﻬﺎﻱ ﺑﺎﻳﻨﺮﻱ )‪ (Binary tree‬؛ ﻭﺍﻟﺪ )‪ ، (Parent‬ﺑﭽﻪ )‪. (Left & Right Child) (Child‬‬

‫‪7‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﺭﻭﺵ ﻫﺎﻱ ﺍﺛﺒﺎﺕ ‪ :‬ﺍﺳﺘﻘﺮﺍء‪ ،‬ﺑﺮﻫﺎﻥ ﺧﻠﻒ‪.‬‬

‫• ﺍﺳﺘﻘﺮﺍء ‪ p (1) :‬ﺩﺭﺳﺖ‪ ،‬ﻓﺮﺽ )‪ ، p(n‬ﺣﻜﻢ )‪p(n+1‬‬

‫• ﻣﺜﺎﻝ ‪:‬‬
‫ﺛﺎﺑﺖ ﻛﻨﻴﺪ ﺩﺭ ﺩﺭﺧﺘﻬﺎﻱ ﺑﺎﻳﻨﺮﻱ ﺑﺎ ﺍﺭﺗﻔﺎﻉ ‪ n‬ﺩﺍﺭﺍﻱ ‪ 2n‬ﺑﺮگ ﺧﻮﺍﻫﻴﻢ ﺑﻮﺩ؟ ) ﺑﻪ ﺭﻭﺵ ﺍﺳﺘﻘﺮﺍء(‬

‫ﺩﺭﺳﺖ ‪ → Len(0) = 1 = 20‬ﺭﻳﺸﻪ → ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ ‪n = 0‬‬

‫‪ : Len(i) = 2i , i = 0,1,…,n‬ﺍﺳﺘﻘﺮﺍء ﻓﺮﺽ‬


‫‪ : Len (i+1) = 2i+1 , i = 0,1,…,n‬ﺍﺳﺘﻘﺮﺍء ﺣﻜﻢ‬

‫‪8‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫ﺑﺮﺍﻱ ﺳﺎﺧﺘﻦ ﻳﻚ ﺩﺭﺧﺖ ﺑﺎﻳﻨﺮﻱ ﺑﺎ ﺍﺭﺗﻔﺎﻉ ‪ n+1‬ﺍﺯ ﺩﺭﺧﺘﻲ ﺑﺎ ﺍﺭﺗﻔﺎﻉ ‪ ، n‬ﻣﻴﺘﻮﺍﻧﻴﻢ ﺣﺪﺍﻛﺜﺮ ﺩﻭ ﺑﺮگ‬
‫ﺑﻪ ﻫﺮ ﺑﺮگ ﺩﺭﺧﺖ ﺑﺎ ﺍﺭﺗﻔﺎﻉ ‪ ،n‬ﺍﺿﺎﻓﻪ ﻧﻤﺎﻳﻴﻢ‪.‬‬

‫)‪ : (n+1) = 2.2 = 2 → Len → Len (n+1) = 2 Len(n‬ﺍﺳﺘﻘﺮﺍء ﺣﻜﻢ‬

‫ﻋﺪﺩ ﮔﻮﻳﺎ ﻧﻴﺴﺖ ؟ )ﺑﻪ ﺭﻭﺵ ﺑﺮﻫﺎﻥ ﺧﻠﻒ(‬ ‫• ﻣﺜﺎﻝ ‪ :‬ﺛﺎﺑﺖ ﻛﻨﻴﺪ ﻛﻪ‬
‫ﻋﺪﺩ ﮔﻮﻳﺎ ﻋﺪﺩﻱ ﺍﺳﺖ ﻛﻪ ﻣﻴﺘﻮﺍﻧﺪ ﺑﺼﻮﺭﺕ ﻳﻚ ﻋﺪﺩ ﻛﺴﺮﻱ ﻧﻮﺷﺘﻪ ﺷﻮﺩ ﺑﻄﻮﺭﻳﻜﻪ ﺻﻮﺭﺕ ﻭ‬
‫ﻣﺨﺮﺝ ﺁﻥ ﻋﺎﻣﻞ ﻣﺸﺘﺮﻙ )‪ (Common Factor‬ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﺑﺮﻫﺎﻥ ﺧﻠﻒ ‪ :‬ﻋﻜﺲ ﺁﻧﭽﻪ ﻛﻪ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﺍﺛﺒﺎﺕ ﻛﻨﻴﻢ‪.‬‬

‫‪9‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫ﻫﻤﻮﺍﺭﻩ ﺯﻭﺝ‬

‫ﻫﻤﻮﺍﺭﻩ ﺯﻭﺝ‬

‫‪10‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﻣﻔﺎﻫﻴﻢ ﺍﺳﺎﺳﻲ ﺩﺭ ﺗﺌﻮﺭﻱ ﻣﺤﺎﺳﺒﺎﺕ ‪:‬‬
‫ﺯﺑﺎﻧﻬﺎ ‪ ،‬ﮔﺮﺍﻣﺮﻫﺎ ‪ ،‬ﺁﺗﺎﻣﺎﺗﺎ )ﻣﺎﺷﻴﻦ ﻫﺎ(‪.‬‬

‫• ﺯﺑﺎﻧﻬﺎ ‪:‬‬
‫• ﻣﻔﺎﻫﻴﻢ ﭘﺎﻳﻪ ‪ :‬ﻧﺸﺎﻧﻪ ﻫﺎﻱ ﺍﻟﻔﺒﺎ ‪) String ; Alphabet‬ﺭﺷﺘﻪ ﺩﻧﺒﺎﻟﻪ ﻣﺘﻨﺎﻫﻲ ﺍﺯ ﻧﺸﺎﻧﻪ ﻫﺎﻱ‬
‫ﺍﻟﻔﺒﺎﺳﺖ( ; ﺍﻟﺤﺎﻕ ﺭﺷﺘﻪ ﻫﺎ )‪.(Concatenation‬‬
‫… ‪∑= {a,b} → String : abab , bba , aa ,‬‬

‫• ﻗﻮﺍﻧﻴﻦ ﺩﺭ ﺭﺷﺘﻪ ﻫﺎ ‪:‬‬


‫‪w = a1a2…an‬‬ ‫‪, v = b1b2…bm → u = wv = a1…anb1…bm‬‬
‫)ﺍﺛﺒﺎﺕ ﺗﻮﺳﻂ ﺍﺳﺘﻘﺮﺍء( |‪ : |w| = n ; |wk| = k|w‬ﻃﻮﻝ ﺭﺷﺘﻪ‬
‫‪ : wR = an…a2a1‬ﻣﻌﻜﻮﺱ ﺭﺷﺘﻪ‬
‫‪(uv)R = vRuR u,v є ∑+‬‬
‫‪(wR)R = w‬‬ ‫)ﺍﺛﺒﺎﺕ ﺗﻮﺳﻂ ﺍﺳﺘﻘﺮﺍء(‬
‫‪11‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫‪ λ , |λ|= 0 → λw= wλ = w‬ﺭﺷﺘﻪ ﺗﻬﻲ‬

‫)‪ (Suffix Substring‬ﺯﻳﺮ ﺭﺷﺘﻪ ﭘﺴﻮﻧﺪ ‪ (Prefix Substring) , v‬ﺯﻳﺮ ﺭﺷﺘﻪ ﭘﻴﻮﻧﺪ ‪ u → w‬ﺭﺷﺘﻪ‬

‫)‪ wn = w ….. w ; (w0 = λ‬ﺗﻜﺮﺍﺭ ﺭﺷﺘﻪ ‪ w‬ﺑﻪ ﺗﻌﺪﺍﺩ ‪ n‬ﺑﺎﺭ‬

‫ﻳﻚ ﺍﻟﻔﺒﺎ ﺑﺎﺷﺪ‪ ∑* ،‬ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻡ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﺑﺎ ﺍﺗﺼﺎﻝ ﺻﻔﺮ ﻳﺎ ﺑﻴﺸﺘﺮ ﺍﺯ‬ ‫∑‬ ‫• ﺍﮔﺮ‬
‫ﺣﺮﻭﻑ ∑ ﺑﺪﺳﺖ ﺁﻳﺪ‪(∑*є λ) .‬‬
‫•ﮔﺮﭼﻪ ∑ ﻣﺘﻨﺎﻫﻲ ﺍﺳﺖ‪ ،‬ﻭﻟﻲ *∑ ‪ ∑+ ,‬ﻧﺎﻣﺘﻨﺎﻫﻲ ﻫﺴﺘﻨﺪ )ﻋﺪﻡ ﻣﺤﺪﻭﺩﻳﺖ ﺭﻭﻱ ﻃﻮﻝ ﺭﺷﺘﻪ ﻫﺎ(‪.‬‬
‫‪∑+‬‬ ‫}‪= ∑*- {λ‬‬

‫‪12‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫• ﻳﻚ ﺯﺑﺎﻥ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ *∑ ﺍﺳﺖ‪ .‬ﻳﻚ ﺭﺷﺘﻪ ﺩﺭ ﺯﺑﺎﻥ ‪ ،L‬ﻳﻚ ﺟﻤﻠﻪ )‪(Sentence‬‬
‫ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫• ﻣﺜﺎﻝ ‪:‬‬
‫}‪∑ = {a,b‬‬ ‫ﻣﺠﻤﻮﻋﻪ }‪ {a,aa,aab‬ﻳﻚ ﺯﺑﺎﻥ ﻣﺘﻨﺎﻫﻲ →‬

‫}…‪∑* = {λ,a,b,aa,ab,‬‬ ‫}‪ L = {anbn , n≥0‬ﻳﻚ ﺯﺑﺎﻥ ﻧﺎﻣﺘﻨﺎﻫﻲ →‬

‫• ﺍﻛﺜﺮ ﺯﺑﺎﻧﻬﺎﻱ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ‪ ،‬ﻣﺘﻨﺎﻫﻲ ﻫﺴﺘﻨﺪ ﻭ ﭼﻮﻥ ﺯﺑﺎﻧﻬﺎ ﻣﺠﻤﻮﻋﻪ ﻫﺴﺘﻨﺪ ‪ ،‬ﻟﺬﺍ ﻋﻤﻠﻴﺎﺕ‬
‫ﺍﺟﺘﻤﺎﻉ ‪ ،‬ﺍﺷﺘﺮﺍﻙ ﻭ ﺗﻔﺎﺿﻞ ﺩﻭ ﺯﺑﺎﻥ ﻗﺎﺑﻞ ﺗﻮﺻﻴﻒ ﺍﺳﺖ‪.‬‬
‫‪13‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫ ﻋﻜﺲ ﻳﻚ ﺯﺑﺎﻥ‬LR= {wR : w є L} (‫ ﻣﺜﺎﻝ ﻗﺒﻞ‬LR = {bnan , n ≥ 0})

‫ ﺍﺗﺼﺎﻝ ﺩﻭ ﺯﺑﺎﻥ‬L1L2 = {xy|x є L1 , y є L2} Ln = L … L (‫ﺑﺎﺭ‬n ‫)ﺍﺗﺼﺎﻝ‬


L0 = {λ}, L1 = L
‫ ﻧﻜﺘﻪ‬: (L1L2)R= L2R L1R
L* = L0 ∪ L1 ∪ L2 ∪...
L+ = L1 ∪ L2 ∪…

14
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﮔﺮﺍﻣﺮﻫﺎ ‪:‬‬
‫ﺗﻌﺮﻳﻒ ﺻﻮﺭﻱ ﻳﺎ ﺭﺳﻤﻲ ﮔﺮﺍﻣﺮ )‪: (Formal Definition‬‬
‫)‪ : G = (V,T,S,P‬ﮔﺮﺍﻣﺮ ‪G‬‬
‫ﻣﺠﻤﻮﻋﻪ ﻣﺘﻨﺎﻫﻲ ﺍﺯ ﻣﺘﻐﻴﺮﻫﺎ‬ ‫ﻣﺠﻤﻮﻋﻪ ﻣﺘﻨﺎﻫﻲ ﺍﺯ ﻗﻮﺍﻧﻴﻦ‬

‫ﻣﺠﻤﻮﻋﻪ ﻣﺘﻨﺎﻫﻲ ﺍﺯ ﻧﺸﺎﻧﻪ ﻫﺎ ﺑﻪ ﻧﺎﻡ ﺗﺮﻣﻴﻨﺎﻝ‬ ‫)‪S є V : (Starting Variable‬‬


‫ﻳﻚ ﻣﺘﻐﻴﺮ ﺧﺎﺹ ﺑﻪ ﻧﺎﻡ ﻧﺸﺎﻧﻪ ﺷﺮﻭﻉ‬

‫ﺑﺎﻳﺴﺘﻲ ﻓﺮﺽ ﺷﻮﺩ ﻛﻪ ﻣﺠﻤﻮﻋﻪ ﻫﺎﻱ ‪T‬ﻭ‪ V‬ﻏﻴﺮ ﺗﻬﻲ ﻭ ﻣﺠﺰﺍ )ﺟﺪﺍ ﺍﺯ ﻫﻢ( ﻣﻲ ﺑﺎﺷﻨﺪ‪.‬‬

‫‪Y є (V∪T)* ,‬‬ ‫‪X є (V∪T)+‬‬ ‫‪,‬‬ ‫ﻗﻮﺍﻧﻴﻦ ‪X → Y :‬‬

‫ﻗﻮﺍﻧﻴﻦ ﺭﺍ ﻣﻴﺘﻮﺍﻥ ﺑﻪ ﺗﻌﺪﺍﺩ ﺩﻟﺨﻮﺍﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ ﺗﺎ ﺭﺷﺘﻪ ﻣﻮﺭﺩ ﻧﻈﺮ ﺑﺪﺳﺖ ﺁﻳﺪ‪.‬‬
‫‪w1 → w2 → …. → wn‬‬ ‫)ﻣﻲ ﮔﻮﻳﻴﻢ ‪ wn‬ﺍﺯ ‪ w1‬ﻣﺸﺘﻖ ﺷﺪﻩ ﺍﺳﺖ‪(.‬‬

‫‪15‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫• ﺗﻌﺮﻳﻒ ﺩﻳﮕﺮﻱ ﺍﺯ ﮔﺮﺍﻣﺮ ‪:‬‬


‫• ﺍﮔﺮ )‪ G(V,T,S,P‬ﮔﺮﺍﻣﺮ ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ ﻣﺠﻤﻮﻋﻪ ﺯﺑﺎﻥ )‪ L(G‬ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﺗﻮﺳﻂ ﮔﺮﺍﻣﺮ ‪ G‬ﺍﺳﺖ‪.‬‬

‫→ )‪w є L(G‬‬ ‫‪S → w1 → w2 → … → wn → w‬‬

‫ﺭﺷﺘﻪ ﻫﺎﻱ ﮔﺰﺍﺭﻩ ﺍﻱ ﻳﺎ ﺟﻤﻠﻪ ﺍﻱ )‪(Sentential Forms‬‬

‫‪16‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﻣﺜﺎﻝ ‪ :‬ﮔﺮﺍﻣﺮ ‪ G‬ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪ .‬ﺯﺑﺎﻥ ﺁﻧﺮﺍ ﺑﻴﺎﺑﻴﺪ؟‬

‫)‪G = ({S},{a,b},S,P‬‬ ‫}‪L(G) = {anbn : n ≥ 0‬‬


‫‪P : S → aSb| λ‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪λ‬‬
‫‪S → aSb → aaSbb → aaaSbbb → ….‬‬ ‫‪anSbn‬‬ ‫‪→ anbn‬‬

‫• ﻣﺜﺎﻝ ‪ :‬ﮔﺮﺍﻣﺮﻱ ﺑﺴﺎﺯﻳﺪ ﻛﻪ }‪ L = {anbn+1 : n ≥ 0‬ﺭﺍ ﺗﻮﻟﻴﺪ ﻛﻨﺪ؟‬


‫)‪G = ({S,A},{a,b},S,P‬‬ ‫‪ */‬ﻧﺴﺒﺖ ﺑﻪ ﮔﺮﺍﻣﺮ ﻗﺒﻠﻲ ﻳﻚ ‪ b‬ﺍﺿﺎﻓﻪ ﺩﺍﺭﺩ *‪/‬‬

‫‪S → Ab‬‬
‫‪P A → aAb‬‬
‫‪A→λ‬‬
‫‪17‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫• ﻣﺜﺎﻝ‪ ∑ = {a,b} :‬ﻭ )‪ na(w‬ﻭ )‪ nb(w‬ﺗﻌﺪﺍﺩ ‪a‬ﻫﺎ ﻭ ‪b‬ﻫﺎ ﺩﺭ ﺭﺷﺘﻪ ‪ w‬ﺍﺳﺖ ﻭ ﮔﺮﺍﻣﺮ ‪G‬‬
‫ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ‪:‬‬
‫‪S → SS‬‬
‫‪S→λ‬‬
‫‪P:‬‬ ‫})‪L(G) = {w : na(w) = nb(w‬‬
‫‪S → aSb‬‬
‫‪S → bSa‬‬

‫• ﻣﻴﺘﻮﺍﻥ ﺑﻪ ﻛﻤﻚ ﺍﺳﺘﻘﺮﺍء ﺛﺎﺑﺖ ﻛﺮﺩ ﻛﻪ ‪ L‬ﺯﺑﺎﻥ ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﺗﻮﺳﻂ ﮔﺮﺍﻣﺮ ‪ G‬ﻣﻴﺒﺎﺷﺪ‪.‬‬

‫‪18‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﺁﺗﺎﻣﺎﺗﺎ )‪:(Automata‬‬
‫• ﺁﺗﺎﻣﺎﺗﺎ ‪ :‬ﻣﺪﻝ ﺍﻧﺘﺰﺍﻋﻲ ﺍﺯ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻛﻪ ﺩﺍﺭﺍﻱ‬
‫ﻣﻜﺎﻧﻴﺰﻡ ﺯﻳﺮ ﺍﺳﺖ ‪:‬‬
‫‪ .1‬ﻭﺭﻭﺩﻱ ‪ :‬ﺭﺷﺘﻪ ﺍﻟﻔﺒﺎ ؛ ﺩﺭ ﻓﺎﻳﻞ ﻭﺭﻭﺩﻱ )ﻫﺮ ﻧﺸﺎﻧﻪ‬
‫ﺩﺭ ﻫﺮ ﺳﻠﻮﻝ( ؛ ﺗﺸﺨﻴﺺ ﺍﻧﺘﻬﺎﻱ ﻭﺭﻭﺩﻱ‪.‬‬

‫‪ .2‬ﺣﺎﻓﻈﻪ ﻣﻮﻗﺖ )‪ :(Storage‬ﺗﻌﺪﺍﺩ ﻧﺎﻣﺘﻨﺎﻫﻲ ﺳﻠﻮﻝ ﻭ ﺩﺭ ﺩﺍﺧﻞ ﻫﺮ ﺳﻠﻮﻝ ﻳﻚ ﻧﺸﺎﻧﻪ )ﻗﺎﺑﻞ‬


‫ﺧﻮﺍﻧﺪﻥ ﻭ ﻧﻮﺷﺘﻦ(‪.‬‬
‫‪ .3‬ﻭﺍﺣﺪ ﻛﻨﺘﺮﻝ ‪ :‬ﻫﺮ ﺯﻣﺎﻥ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﻳﻜﻲ ﺍﺯ ﻭﺿﻌﻴﺘﻬﺎﻱ ﺩﺍﺧﻠﻲ )‪ (Internal States‬ﺑﺎﺷﺪ‪ .‬ﺗﻌﺪﺍﺩ‬
‫ﻭﺿﻌﻴﺖ ﻫﺎﻱ ﻧﺎﻣﺘﻨﺎﻫﻲ ﺍﺳﺖ ﻭ ﺁﺗﺎﻣﺎﺗﻮﻥ ﺩﺭ ﻫﺮ ﺯﻣﺎﻥ ﺩﺭ ﻳﻚ ﻭﺿﻌﻴﺖ ﺧﺎﺹ ﺍﺳﺖ ﻭ ﺣﺮﻭﻑ ﺧﺎﺹ ﺭﺍ‬
‫ﺍﺯ ﻭﺭﻭﺩﻱ ﻣﻲ ﺧﻮﺍﻧﺪ‪ .‬ﻭﺿﻌﻴﺖ ﺑﻌﺪﻱ ﺗﻮﺳﻂ ﺗﺎﺑﻊ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ )‪ (Transition Function‬ﺗﻌﻴﻴﻦ‬
‫ﻣﻲ ﮔﺮﺩﺩ ﻭ ﺑﺎﻋﺚ ﺧﺮﻭﺟﻲ ﻳﺎ ﺗﻐﻴﻴﺮ ﺩﺭ ﺣﺎﻓﻈﻪ ﻣﻮﻗﺖ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫‪19‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﺘﻨﺎﻫﻲ ﻣﻌﻴﻦ ﻭ ﻧﺎﻣﻌﻴﻦ ‪:‬‬
‫)‪(Deterministic & Nondeterministic Finite Automata – DFA & NFA‬‬
‫ﺩﺭ ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﻌﻴﻦ ﺍﮔﺮ ﻭﺿﻌﻴﺖ ﻓﻌﻠﻲ‪ ،‬ﻭﺭﻭﺩﻱ‪ ،‬ﻭ ﻣﺤﺘﻮﺍﻱ ﺣﺎﻓﻈﻪ ﺭﺍ ﺑﺪﺍﻧﻴﻢ‪ ،‬ﻣﻴﺘﻮﺍﻥ ﺭﻓﺘﺎﺭ‬
‫ﺑﻌﺪﻱ ﺁﺗﺎﻣﺎﺗﺎ ﺭﺍ ﺗﻌﻴﻴﻦ ﻛﺮﺩ ﻭﻟﻲ ﺩﺭ ﺁﺗﺎﻣﺎﺗﺎﻱ ﻧﺎﻣﻌﻴﻦ ﺍﻳﻨﮕﻮﻧﻪ ﻧﻴﺴﺖ ﻭ ﺩﺭ ﺁﺗﺎﻣﺎﺗﺎﻱ ﻧﺎﻣﻌﻴﻦ‬
‫ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﻫﺮ ﺯﻣﺎﻥ ﭼﻨﺪ ﺣﺮﻛﺖ ﻣﺨﺘﻠﻒ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﭘﺬﻳﺮﻧﺪﻩ )‪ : (Acceptor‬ﺁﺗﺎﻣﺎﺗﺎﻳﻲ ﻛﻪ ﺧﺮﻭﺟﻲ ﺁﻥ ﻗﺒﻮﻝ ﻳﺎ ﻋﺪﻡ ﻗﺒﻮﻝ‬


‫ﺍﺳﺖ‪) .‬ﻭﺭﻭﺩﻱ ﺧﻮﺩ ﺭﺍ ﻗﺒﻮﻝ ﻳﺎ ﺭﺩ ﻣﻲ ﻛﻨﺪ(‬
‫• ﺁﺗﺎﻣﺎﺗﺎ‬
‫ﺗﺮﺍﮔﺬﺍﺭ )‪ : (Transducer‬ﺁﺗﺎﻣﺎﺗﺎﻳﻲ ﻛﻪ ﺧﺮﻭﺟﻲ ﺁﻥ ﺑﺼﻮﺭﺕ ﺭﺷﺘﻪ‬
‫ﺍﺳﺖ‪.‬‬
‫‪20‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫• ﻛﺎﺭﺑﺮﺩ ‪: 1‬‬
‫ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﻫﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ‪ ،‬ﻛﺎﻣﭙﺎﻳﻠﺮ ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﺩ‪ .‬ﻛﺎﻣﭙﺎﻳﻠﺮ ﻧﻴﺎﺯ ﺑﻪ ﺗﻌﺮﻳﻒ ﺩﻗﻴﻖ ﻭ‬
‫ﺭﺳﻤﻲ ﺁﻥ ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺩﺍﺭﺩ‪ .‬ﻟﺬﺍ ﻣﻲ ﺗﻮﺍﻥ ﺩﺭ ﺯﺑﺎﻥ ﻫﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ‪ ،‬ﺍﺯ ﮔﺮﺍﻣﺮ‬
‫ﻳﺎ ﺁﺗﺎﻣﺎﺗﺎ ﺑﺮﺍﻱ ﭘﺬﻳﺮﺵ ﻳﺎ ﻋﺪﻡ ﭘﺬﻳﺮﺵ ﻳﻚ ﻗﻄﻌﻪ ﻛﺪ ﺗﻮﺳﻂ ﺁﻥ ﺯﺑﺎﻥ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻮﺩ‪.‬‬

‫‪21‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
: Acceptor ‫ﻣﺜﺎﻝ‬
‫ﮔﺮﺍﻣﺮ ﻭ ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ ﻣﺠﻤﻮﻋﻪ ﻣﺘﻐﻴﺮ ﻫﺎﻱ ﺯﺑﺎﻥ ﭘﺎﺳﻜﺎﻝ ﺭﺍ ﺑﺮﺭﺳﻲ ﻧﻤﺎﻳﻴﺪ؟‬

<id> → <Letter><A>|<Underline><A>
<A> → <Letter><A>|<Digit><A>|<Underline><A>|λ
<Letter> → A|B|…|Z|a|b|…|z|
<Digit> → 0|1|…|9
Underline
<Underline> → _ or Letter
1 2
ً‫ ﻣﺜﻼ‬: a0 ‫ﺍﺷﺘﻘﺎﻕ ﻣﺮﺑﻮﻁ ﺑﻪ ﻣﺘﻐﻴﺮ‬ States : digit Letter or digit
1) Start or underline
2) Acceptor 3
3) Not Acceptor
Letter or digit
« ‫» ﺁﺗﺎﻣﺎﺗﺎﻱ ﭘﺬﻳﺮﻧﺪﻩ‬
or underline

22
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫ﻛﺎﺭﺑﺮﺩ ‪: 2‬‬
‫ﻃﺮﺍﺣﻲ ﺭﻗﻤﻲ ؛ ﺁﺗﺎﻣﺎﺗﺎ ﺩﺭ ﻃﺮﺍﺣﻲ ﺭﻗﻤﻲ ‪ ،‬ﺗﻮﺻﻴﻒ ﻋﻠﻤﻲ ﺑﺴﻴﺎﺭ ﺳﻄﺢ ﺑﺎﻻﻳﻲ ﺍﺯ ﻳﻚ ﻣﺪﺍﺭ‬
‫ﻣﻨﻄﻘﻲ ﻭ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻣﻨﻄﻘﻲ ﺁﻥ ﺑﺎ ﺗﺮﺍﺗﺮﻳﺴﺘﻮﺭ ‪ ،‬ﮔﻴﺖ ﻭ ﻓﻠﻴﭗ ﻓﻼپ ﺍﺳﺖ‪.‬‬

‫• ﻣﺜﺎﻝ ‪:Transducer‬‬
‫ﺩﺭﺟﻤﻊ ﻛﻨﻨﺪﻩ ﺑﺎﻳﻨﺮﻱ )‪ ،(Full Adder‬ﺑﺮﺍﻱ ﺳﺎﺩﮔﻲ ﻛﺎﺭ‪ ،‬ﻓﺮﺽ ﺑﺮ ﻓﻘﻂ ﺍﻋﺪﺍﺩ ﻣﺜﺒﺖ ﺍﺳﺖ‪.‬‬

‫‪Input‬‬ ‫‪Output‬‬ ‫‪(0,0)/0‬‬ ‫‪(0,1)/1‬‬ ‫‪(0,1)/0‬‬ ‫‪(1,0)0‬‬


‫‪ai‬‬
‫‪bi‬‬ ‫‪zi‬‬ ‫‪(1,1)/0‬‬
‫‪Serial Adder‬‬ ‫ﮔﺮﺍﻑ‬ ‫‪No‬‬
‫‪Carry‬‬ ‫‪Carry‬‬
‫ﻳﺎﻝ ‪(ai, bi)/zi‬‬ ‫‪(0,0)/1‬‬
‫‪Carry‬‬
‫‪(1,0)/1‬‬ ‫‪(1,1)1‬‬
‫‪00‬‬ ‫→‬ ‫‪0‬‬
‫» ﺁﺗﺎﻣﺎﺗﺎﻱ ﺗﺮﺍﮔﺬﺍﺭ «‬
‫ﻗﻮﺍﻧﻴﻦ ﻭ ﮔﺮﺍﻣﺮ‬ ‫‪01‬‬ ‫→‬ ‫‪1‬‬
‫‪10‬‬ ‫→‬ ‫‪1‬‬
‫‪11‬‬ ‫→‬ ‫‪10‬‬

‫‪23‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫• ﺗﻤﺮﻳﻦ ﻫﺎﻱ ﻣﻬﻢ ﻓﺼﻞ ﺍﻭﻝ ‪:‬‬

‫‪ (1‬ﮔﺮﺍﻣﺮﻫﺎﻳﻲ ﺭﻭﻱ }‪ ∑ = {a,b‬ﭘﻴﺪﺍ ﻛﻨﻴﺪ ﺑﻄﻮﺭﻳﻜﻪ ‪:‬‬


‫‪S → AaA‬‬
‫)ﺍﻟﻒ‬ ‫‪ S → a|Sb|bS‬ﻳﺎ‬ ‫ﺍﻟﻒ( ﺗﻤﺎﻡ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﻓﻘﻂ ﻳﻚ ‪ a‬ﺩﺍﺭﻧﺪ ؟‬
‫‪A → bA|λ‬‬

‫‪S → AaA‬‬ ‫ﺏ( ﺗﻤﺎﻡ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺣﺪﺍﻗﻞ ﻳﻚ ‪ a‬ﺩﺍﺭﻧﺪ ؟‬


‫)ﺏ‬ ‫‪ S → a|aS|bS|ba‬ﻳﺎ‬
‫‪A → Aa|Ab|λ‬‬

‫‪S → BABABAB‬‬ ‫ﺝ( ﺗﻤﺎﻡ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺣﺪﺍﻛﺜﺮ ﺳﻪ ‪ a‬ﺩﺍﺭﻧﺪ؟‬


‫)ﺝ‬ ‫‪A → a|λ‬‬
‫‪B → bB|λ‬‬

‫‪24‬‬
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫ ﮔﺮﺍﻣﺮﻱ ﭘﻴﺪﺍ ﻛﻨﻴﺪ ؟‬، ‫( ﺑﺮﺍﻱ ﻫﺮ ﻳﻚ ﺍﺯ ﺯﺑﺎﻧﻬﺎﻱ ﺯﻳﺮ‬2
S → AbB ‫ﻳﺎ‬ S → aSb|B L1 = {anbm : n ≥ 0 , m>n} ( ‫ﺍﻟﻒ‬
‫)ﺍﻟﻒ‬ A → aAb|λ B → bB|b
B → bB|λ

L13 = {anbmapbqaxby : n,m,p,q,x,y ≥ 0 , m>n , q>p , y>x} ( ‫ﺏ‬


S → CCC
S → AAA
C → AbB
‫)ﺏ‬ A → aAb| bB
A → aAb|λ
B → bB|λ
B → bB| λ

SAS
L1* ( ‫ﺝ‬
S → SS|A|λ
‫)ﺝ‬ A → aAb| bB
B → bB|λ

25
‫ﻓﺼﻞ ﺍﻭﻝ‬

L = {w : |w| mod 3 ≥ |w| mod 2} .‫{ = ∑ ﭘﻴﺪﺍ ﻛﻨﻴﺪ‬a} ‫ ﺭﺍ ﺭﻭﻱ‬L ‫( ﮔﺮﺍﻣﺮ ﺯﺑﺎﻥ‬3

S → aB|aaB|A
B → aaaB|λ
A → aaaaaaA|λ .‫ ﺑﺎﺷﺪ‬3k+2 ‫ ﻭ ﻳﺎ‬3k+1 ‫ ﻭ ﻳﺎ‬6k ‫ﺑﺎﻳﺴﺘﻲ ﺑﻪ ﺻﻮﺭﺗﻬﺎﻱ‬

w=2 w=1 w=0


w = 0 → 0 mod 3 ≥ 0 mod 2 √
w=5 w=4 w=6
w = 1 → 1 mod 3 ≥ 1 mod 2 √
w=7 w = 12
w = 2 → 2 mod 3 ≥ 2 mod 2 √
w = 3 → 3 mod 3 ≥ 3 mod 2 ‫ﻍ‬
w = 4 → 4 mod 3 ≥ 4 mod 2 √
w = 5 → 5 mod 3 ≥ 5 mod 2 √
w = 6 → 6 mod 3 ≥ 6 mod 2 √

26
‫ﻓﺼﻞ ﺍﻭﻝ‬

‫( ﻳﻚ ﮔﺮﺍﻣﺮ ﺑﺮﺍﻱ ﺍﻋﻼﻥ ﻛﻠﻴﻪ ﻣﺘﻐﻴﺮﻫﺎ ﺩﺭ ﺯﺑﺎﻥ ﭘﺎﺳﻜﺎﻝ ﺑﻨﻮﻳﺴﻴﺪ ؟‬4


var a , b : integer ;
x : boolean ;
ch1 , ch2 : char ;
S → var Space A
A A → V : N ; | AA
N → integer|real|double|char|boolean|…
var a,b : integer ; V → V , V | BV1
V1→ CV1|BV1|λ
N B → a|b|…|z
V x : boolean ;
C → 0|1|…|9
Space → b
ch1 , ch2 : char ;

27
‫ﻓﺼﻞ ﺍﻭﻝ‬
‫‪ (5‬ﻳﻚ ﺗﺮﺍﮔﺰﺍﺭ ﺑﺮﺍﻱ ﺭﻣﺰﮔﺸﺎﻳﻲ ﺭﺷﺘﻪ ﻫﺎ ﺭﻭﻱ }‪ {0,1‬ﺑﻪ ﭘﻴﺎﻡ ﺍﺻﻠﻲ ﺑﺴﺎﺯﻳﺪ ؟‬
‫ﺭﻣﺰ ﮔﺸﺎﻳﻲ ﻛﺪﻫﺎﻱ ﻋﺪﺩﻱ ﺑﻪ ﺣﺮﻓﻲ )‪ . (ASCII‬ﺩﻭ ﺍﻟﻔﺒﺎﻱ }‪ {a,b,c,d‬ﻭ }‪{0,1‬ﺭﺍ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻛﻪ ﻳﻚ ﺭﻣﺰ‬
‫ﮔﺬﺍﺭﻱ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺩﺍﺭﺩ ‪:‬‬
‫‪a → 00‬‬
‫‪b → 01‬‬
‫‪010011 → bad‬‬
‫‪c → 10‬‬
‫‪d → 11‬‬ ‫‪q‬‬

‫‪q1‬‬ ‫‪q0‬‬

‫‪q11‬‬ ‫‪q10‬‬ ‫‪q01‬‬ ‫‪q00‬‬

‫‪q1‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫‪q0‬‬


‫‪28‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﺘﻨﺎﻫﻲ‬

‫‪29‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﺘﻨﺎﻫﻲ ‪: FA -‬‬
‫ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﺘﻨﺎﻫﻲ )‪ (Finite Automata‬ﺩﺍﺭﺍﻱ ﺣﺎﻓﻈﻪ ﻣﻮﻗﺖ ﻧﻴﺴﺖ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺩﺭ ﺑﻪ ﻳﺎﺩﺁﻭﺭﺩﻥ‬
‫ﺍﻃﻼﻋﺎﺕ ﺩﺭ ﻃﻮﻝ ﻣﺤﺎﺳﺒﻪ ﻣﺸﻜﻞ ﺩﺍﺷﺘﻪ ﻭ ﻣﻘﺪﺍﺭ ﻛﻤﻲ ﺍﻃﻼﻋﺎﺕ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﻭﺍﺣﺪ ﻛﻨﺘﺮﻝ‬
‫ﻧﮕﻬﺪﺍﺭﻱ ﺷﻮﺩ ﻛﻪ ﺁﻥ ﻫﻢ ﺑﺼﻮﺭﺕ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻦ ﺩﺭ ﻳﻚ ﻭﺿﻌﻴﺖ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ‪.‬‬

‫• ﺗﻌﺮﻳﻒ ﺭﺳﻤﻲ ﻳﻚ ﭘﺬﻳﺮﻧﺪﻩ ﻣﺘﻨﺎﻫﻲ ﻣﻌﻴﻦ ‪: DFA -‬‬


‫‪DFA : Deterministic Finite Acceptor‬‬

‫)‪M = (Q , ∑ , δ , q0 ,F‬‬
‫ﻣﺠﻤﻮﻋﻪ ﻣﺘﻨﺎﻫﻲ ﺍﺯ ﻭﺿﻌﻴﺖ ﻫﺎﻱ ﺩﺍﺧﻠﻲ‬ ‫ﻣﺠﻤﻮﻋﻪ ﻭﺿﻌﻴﺖ ﻫﺎﻱ ﻧﻬﺎﻳﻲ ‪F  Q‬‬
‫)‪(States‬‬
‫ﻭﺿﻌﻴﺖ ﺍﻭﻟﻴﻪ ‪q0 є Q‬‬
‫ﻣﺠﻤﻮﻋﻪ ﺍﻟﻔﺒﺎﻱ ﻭﺭﻭﺩﻱ‬
‫‪ Q × ∑ → Q‬ﺗﺎﺑﻊ ﺗﻐﻴﻴﺮ ﺣﺎﻟﺖ‬
‫)‪(Transition Function‬‬

‫‪30‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫)}‪M = ({q0 , q1 , q2 } , {0,1} , δ , q0 , {q1‬‬ ‫• ﻣﺜﺎﻝ ‪:‬‬

‫‪δ(q0,0) = q0 , δ(q0,1) = q1‬‬


‫ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ‪ :‬ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﺭﺍﻳﻪﻫﺎﻱ‬
‫‪δ:‬‬ ‫‪δ(q1,0) = q0 , δ(q1,1) = q2‬‬ ‫ﺩﻭ ﺑﻌﺪﻱ ﺑﺮﺍﻱ ﻭﺿﻌﻴﺖ ﺍﻭﻝ ﺑﺮ ﺣﺴﺐ‬
‫ﻭﺭﻭﺩﻱ ﻫﺎ ﻭ ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ‬
‫‪δ(q2,0) = q2 , δ(q2,1) = q1‬‬

‫• ﻧﻤﺎﻳﺶ ﻳﻚ ‪ DFA‬ﺑﻪ ﺻﻮﺭﺕ ﻳﻚ ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﺍﺳﺖ ﻛﻪ ﺭﺃﺳﻬﺎﻱ ﺁﻥ ﻭﺿﻌﻴﺖ ﻫﺎ‬
‫ﻭ ﻳﺎﻝ ﻫﺎﻱ ﺁﻥ ﺣﺮﻭﻑ ﻭﺭﻭﺩﻱ ﻫﺴﺘﻨﺪ ﻭ ﺩﺍﺭﺍﻱ |‪ |Q‬ﺭﺃﺱ ﺍﺳﺖ‪.‬‬
‫‪0‬‬ ‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪1‬‬ ‫‪1‬‬
‫‪31‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫( ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ‬Extended Transition Function) ‫• ﻣﻴﺘﻮﺍﻥ ﺗﺎﺑﻊ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﺗﻮﺳﻌﻪ ﻳﺎﻓﺘﻪ‬
.‫ ﺗﻌﺮﻳﻒ ﻧﻤﻮﺩ‬δ* : Q × ∑* → Q

: ‫• ﺗﻌﺮﻳﻒ ﺑﺎﺯﮔﺸﺘﻲ‬
δ*(q , λ) = q , ∀q є Q , w є ∑* , a є ∑
δ*(q , wa) = δ (δ*(q , w) , a)

ً‫ ﻣﺜﻼ‬:
δ (q0 , a) = q1 ‫ﺑﻨﺎ ﺑﻪ ﺗﻌﺮﻳﻒ ﺑﺎﺯﮔﺸﺘﻲ‬ δ*(q0 , ab) = δ(δ* (q0 , a) ,b)
δ (q1 , b) = q2 δ*(q0 , a) = δ(δ* (q0 , λ) ,a) = δ (q0 , a) = q1
δ*(q0 , ab) = q2 δ*(q0 , ab) = δ (q1 , b) = q2

32
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫• ﺯﺑﺎﻧﻬﺎﻱ ‪: DFA‬‬
‫ﺯﺑﺎﻥ ﻳﻌﻨﻲ ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻣﻲ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺗﻮﺳﻂ ﺁﺗﺎﻣﺎﺗﺎ ﭘﺬﻳﺮﻓﺘﻪ ﻣﻴﺸﻮﺩ ﻭ ﺯﺑﺎﻧﻬﺎﻱ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ‬
‫ﺗﻮﺳﻂ ‪ DFA‬ﺑﻨﺎﻡ )‪ M (Q , ∑ , δ , q0 , F‬ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻣﻲ ﺭﺷﺘﻪ ﻫﺎ ﺑﺮﻭﻱ ﺍﻟﻔﺒﺎﻱ ∑ ﺍﺳﺖ‪.‬‬
‫}‪L(M) = {w є ∑* : δ* (q0 ,w) є F‬‬
‫}‪L(M) = {w є ∑* : δ* (q0 ,w) ∉ F‬‬
‫• ﻣﺜﺎﻝ ‪ DFA :‬ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ‪:‬‬
‫‪ : q2‬ﻭﺿﻌﻴﺖ ﺗَﻠﻪ )‪(Trap State‬‬
‫‪q0‬‬
‫‪b‬‬ ‫‪q1‬‬ ‫‪a,b‬‬ ‫‪q2‬‬ ‫‪a,b‬‬

‫‪a‬‬
‫}‪L(M) = {anb : n ≥ 0‬‬

‫‪33‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﻳﻚ ‪ DFA‬ﺑﻨﺎﻡ )‪ M = (Q , ∑ , δ , q0 , F‬ﺩﺍﺭﻳﻢ ﻭ ‪ GM‬ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻣﺮﺑﻮﻁ ﺑﻪ‬
‫ﺁﻥ ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﺑﺮﺍﻱ ﻫﺮ ‪ qi , qj є Q‬ﻭ *∑ ‪ w є‬ﺩﺍﺭﻳﻢ ‪ ، δ*(qi,w) = qj‬ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﻳﻚ ﺭﺍﻩ ﺑﺎ ﺑﺮﭼﺴﺐ‬
‫‪ w‬ﺍﺯ ‪ qi‬ﺑﻪ ‪ qj‬ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫• ﻣﺜﺎﻝ ‪ :‬ﻳﻚ ‪ DFA‬ﻃﺮﺍﺣﻲ ﻛﻨﻴﺪ ﻛﻪ ﺗﻤﺎﻣﻲ ﺭﺷﺘﻪ ﻫﺎﻱ ﺭﻭﻱ ﺍﻟﻔﺒﺎﻱ }‪ {0,1‬ﺭﺍ ﺑﺠﺰ ﺭﺷﺘﻪ‬
‫ﻫﺎﻳﻲ ﻛﻪ ﺣﺎﻭﻱ ﺭﺷﺘﻪ "‪ "001‬ﺑﺎﺷﺪ ﺑﭙﺬﻳﺮﺩ ؟‬
‫‪1‬‬
‫‪0‬‬
‫‪λ‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪00‬‬ ‫‪1‬‬ ‫‪001‬‬ ‫‪0,1‬‬
‫‪1‬‬
‫‪0‬‬
‫• ‪ DFA‬ﺑﺨﺎﻃﺮ ﻣﻲﺁﻭﺭﺩ ﻛﻪ ﻭﺭﻭﺩﻱ ﻗﺒﻠﻲ ﭼﻪ ﺑﻮﺩﻩ‪ ،‬ﺍﻣﺎ ﻧﻪ ﺍﺯ ﻃﺮﻳﻖ ﺣﺎﻓﻈﻪ‪ ،‬ﺑﻠﻜﻪ ﺍﺯ ﻃﺮﻳﻖ‬
‫ﻭﺿﻌﻴﺘﻲ ﻛﻪ ﺩﺭ ﺁﻥ ﻗﺮﺍﺭ ﺩﺍﺭﺩ‪.‬‬
‫‪34‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫• ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ )‪: (Regular Languages‬‬


‫• ﻫﺮ ‪ DFA‬ﺯﺑﺎﻧﻲ ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ‪ .‬ﺍﮔﺮ ﺗﻤﺎﻡ ‪ FA‬ﻫﺎ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﻢ‪ ،‬ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺯﺑﺎﻥ ﺩﺭ‬
‫ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺁﻧﻬﺎ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ﻛﻪ ﺑﻪ ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﻳﻚ ﺧﺎﻧﻮﺍﺩﻩ )‪ (Family‬ﻣﻲ ﮔﻮﻳﻨﺪ‪.‬‬

‫• ﺧﺎﻧﻮﺍﺩﻩ ﺯﺑﺎﻧﻬﺎﻳﻲ ﻛﻪ ﺗﻮﺳﻂ ‪ DFA‬ﺑﻪ ﻧﺎﻡ ‪ M‬ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺯﺑﺎﻥ ﺁﻥ )‪ L = L(M‬ﺍﺳﺖ‪.‬‬

‫• ﺯﺑﺎﻥ ‪ L‬ﻣﻨﻈﻢ ﺍﺳﺖ ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ‪ DFA‬ﺑﻨﺎﻡ ‪ M‬ﺑﺎﺷﺪ ﺑﻄﻮﺭﻳﻜﻪ )‪. L = L(M‬‬

‫‪35‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﻣﺜﺎﻝ ‪ :‬ﻧﺸﺎﻥ ﺩﻫﻴﺪ ﻛﻪ }*}‪ L2 = {awaawa : w є {a,b‬ﻣﻨﻈﻢ ﺍﺳﺖ ؟‬
‫}*}‪L = {awa : w є {a,b‬‬
‫ﻛﺎﻓﻲ ﺍﺳﺖ ‪ DFA‬ﺁﻥ ﺭﺍ ﻃﺮﺍﺣﻲ ﻛﻨﻴﻢ ‪.‬‬
‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪a‬‬ ‫‪q2‬‬ ‫‪q3‬‬
‫‪a‬‬ ‫‪q4‬‬ ‫‪q5‬‬ ‫‪a‬‬
‫‪b‬‬ ‫‪b‬‬
‫‪L2 :‬‬ ‫‪b‬‬ ‫‪b‬‬ ‫‪b‬‬

‫‪q1‬‬ ‫‪a,b‬‬
‫• ﻧﻜﺘﻪ ‪ …, L4 , L3 , L2 , L :‬ﻣﻨﻈﻢ ﻫﺴﺘﻨﺪ‪.‬‬

‫‪b‬‬ ‫• ﺍﮔﺮ ‪ L‬ﻣﻨﻈﻢ ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ }‪ L - {λ‬ﻧﻴﺰ ﻣﻨﻈﻢ ﺍﺳﺖ‪.‬‬


‫‪q0‬‬
‫‪a‬‬ ‫‪q2‬‬
‫‪a‬‬ ‫‪q3‬‬ ‫‪a‬‬
‫‪L:‬‬ ‫‪b‬‬
‫‪b‬‬
‫‪q1‬‬ ‫‪a,b‬‬

‫‪36‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫ﭘﺬﻳﺮﻧﺪﻩ ﻣﺘﻨﺎﻫﻲ ﻧﺎﻣﻌﻴﻦ ‪: (Nondeterministic Finite Acceptor) NFA -‬‬

‫)‪M = (Q , ∑ , δ , q0 , F‬‬
‫‪δ : Q × (∑ ∪ {λ}) → 2Q‬‬
‫ﻫﻤﺎﻥ ﺗﻌﺮﻳﻒ ‪DFA‬‬
‫• ﺗﻔﺎﻭﺗﻬﺎﻱ ‪ NFA‬ﻭ ‪: DFA‬‬
‫‪ (1‬ﻭﺿﻌﻴﺖ ﺑﻌﺪﻱ ﺩﺭ ‪ NFA‬؛ ﻣﺜﻼً )‪δ(q1,a) = (q0,q2‬‬
‫‪ (2‬ﺩﺭ ‪ λ ،NFA‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻭﺭﻭﺩﻱ ﻗﺎﺑﻞ ﻗﺒﻮﻝ ﺍﺳﺖ ﻭ ﺑﺎ ﻭﺭﻭﺩﻱ ‪ λ‬ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ‪.‬‬
‫‪ (3‬ﺩﺭ ‪ ،NFA‬ﻣﻤﻜﻦ ﺍﺳﺖ ﻣﺜﻼً )‪ δ(q1,a‬ﺗﻬﻲ ﺑﺎﺷﺪ ﻭ ﻫﻴﭻ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺘﻲ ﺑﺮﺍﻱ ‪ a‬ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ‪.‬‬
‫‪ ‬ﻫﻤﺎﻧﻨﺪ ‪ NFA ،DFA‬ﻧﻴﺰ ﺑﺎ ﻳﻚ ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻗﺎﺑﻞ ﻧﻤﺎﻳﺶ ﺑﻮﺩﻩ ﻭﻣﻴﺘﻮﺍﻧﺪ ﺭﺷﺘﻪ ﺍﻱ ﺭﺍ ﺑﭙﺬﻳﺮﺩ‪.‬‬

‫‪37‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫• ﻣﺜﺎﻝ ‪ :‬ﻳﻚ ‪ NFA‬ﺩﺍﺭﻳﻢ ﻛﻪ ‪:‬‬


‫‪ (1‬ﺩﺍﺭﺍﻱ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ ‪ λ‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪δ (q0 ,0) = (q1 ,q5) (2‬‬
‫‪δ (q1 ,1) = ø (3‬‬
‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪0,1‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬ ‫‪q4‬‬
‫‪1‬‬
‫‪0‬‬
‫‪λ‬‬
‫‪q5‬‬ ‫‪Dead Configuration‬‬
‫ﭘﻴﻜﺮ ﺑﻨﺪﻱ ﻣﺮﺩﻩ‬

‫‪38‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫ ﺑﺎ ﺗﺎﺑﻊ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻣﺜﻼ‬NFA ‫ ﻳﻚ‬: ‫• ﻣﺜﺎﻝ‬


δ*(q1 , a) = {q0,q1,q2}
δ*(q2 , λ) = {q0,q2}
λ
δ*(q2 , aa) = {q0,q1,q2}
q0
a q1 λ q2

δ(q0 , a) = δ(q1 , a) = δ(q2 , a) = {q0 ,q1,q2}


L(M) = {an | n ≥ 1}

39
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﺯﺑﺎﻥ ﻣﻮﺭﺩ ﻗﺒﻮﻝ ﻳﻚ ‪ NFA‬ﺑﻨﺎﻡ )‪ M = (Q , ∑ , δ , q0 , F‬ﻋﺒﺎﺭﺗﺴﺖ ﺍﺯ ‪:‬‬

‫} ‪L(M) = {w є ∑* : δ*(q0 , w) ∩ F ≠ Ø‬‬


‫} ‪L(M) = {w є ∑* : δ*(q0 , w) ∩ F = Ø‬‬
‫• ﺯﺑﺎﻥ ‪ NFA‬ﻣﺮﺑﻮﻁ ﺑﻪ ﻣﺜﺎﻝ ﻗﺒﻞ ﭼﻴﺴﺖ ؟ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﺑﺼﻮﺭﺕ ‪ an , n ≥ 1‬ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ‪.‬‬
‫ﻳﻌﻨﻲ ‪:‬‬
‫}‪L(M) = {an | n ≥ 1} → L(M) = {λ‬‬

‫• ﺯﺑﺎﻥ ‪ NFA‬ﻣﺮﺑﻮﻁ ﺑﻪ ﻣﺜﺎﻝ ﻗﺒﻞ ﭼﻴﺴﺖ ؟‬


‫ﺑﺎ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ ‪ 00011‬ﻭﺍﺭﺩ ‪ q4‬ﻣﻲ ﺷﻮﻳﻢ ﻭ ‪ δ*(q4 ,1)= Ø‬ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﺍﻳﻦ ﻭﺿﻌﻴﺖ ﻳﻚ ﭘﻴﻜﺮﺑﻨﺪﻱ ﻣﺮﺩﻩ‬
‫)‪ (Dead Configuration‬ﻣﻲ ﮔﻮﻳﻨﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ *}‪L(M) = {00011‬‬

‫‪40‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎﻱ ﺭﻗﻤﻲ )ﺩﻳﺠﻴﺘﺎﻟﻲ( ﻛﺎﻣﻼ ﻣﻌﻴﻦ ﻫﺴﺘﻨﺪ ‪ .‬ﻭﺿﻌﻴﺖ ﺁﻧﻬﺎ ﺩﺭ ﻫﺮ ﺯﻣﺎﻥ ﺍﺯ ﺭﻭﻱ ﻭﺭﻭﺩﻱ ﻭ‬
‫ﻭﺿﻌﻴﺖ ﺍﻭﻟﻴﻪ ﻗﺎﺑﻞ ﭘﻴﺶ ﺑﻴﻨﻲ ﺍﺳﺖ ‪.‬‬

‫• ﭘﺲ ﭼﺮﺍ ﺑﻪ ﻣﺎﺷﻴﻦ ﻫﺎﻱ ﻧﺎﻣﻌﻴﻦ ﻧﻴﺎﺯ ﺩﺍﺭﻳﻢ ؟‬


‫ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻱ ﻣﻌﻴﻦ )ﻣﺎﻧﻨﺪ ﺑﺎﺯﻳﻬﺎ( ﻣﺴﺘﻠﺰﻡ ﺍﺗﺨﺎﺫ ﺗﺼﻤﻴﻢ ﻫﺴﺘﻨﺪ‪ .‬ﻏﺎﻟﺒﺎ ﺑﻬﺘﺮﻳﻦ ﺣﺮﻛﺖ ﻣﺸﺨﺺ‬
‫ﻧﻴﺴﺖ ‪ ،‬ﺍﻣﺎ ﻣﻴﺘﻮﺍﻥ ﺁﻧﺮﺍ ﺑﺎ ﻳﻚ ﺟﺴﺘﺠﻮﻱ ﻛﺎﻣﻞ ﻫﻤﺮﺍﻩ ﺑﺎ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ )‪(Back-Tracking‬‬
‫ﭘﻴﺪﺍ ﻛﺮﺩ‪ .‬ﻭﻗﺘﻲ ﭼﻨﺪﻳﻦ ﺍﻧﺘﺨﺎﺏ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﻳﻜﻲ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﺮﺩﻩ ﻭ ﺁﻥ ﺭﺍ ﺩﻧﺒﺎﻝ ﻣﻲ ﻛﻨﻴﻢ‪ .‬ﻳﻚ‬
‫ﺍﻟﮕﻮﺭﻳﺘﻢ ﻧﺎﻣﻌﻴﻦ ﻛﻪ ﺑﺘﻮﺍﻧﺪ ﺑﻬﺘﺮﻳﻦ ﺍﻧﺘﺨﺎﺏ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ ‪ ،‬ﻗﺎﺩﺭ ﺍﺳﺖ ﺑﺪﻭﻥ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ‬
‫ﻣﺴﺎﻟﻪ ﺭﺍ ﺣﻞ ﻧﻤﺎﻳﻨﺪ‪.‬‬

‫‪41‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫• ﻣﺎﺷﻴﻦ ﻫﺎﻱ ﻧﺎﻣﻌﻴﻦ ﻣﻴﺘﻮﺍﻧﻨﺪ ﺑﻌﻨﻮﺍﻥ ﻣﺪﻝ ﺑﺮﺍﻱ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻱ ﺟﺴﺘﺠﻮ ﺑﺎ ﺑﺎﺯﮔﺸﺖ ﺑﻪ ﻋﻘﺐ‬
‫ﻋﻤﻞ ﻛﻨﻨﺪ‪) .‬ﺩﺭ ﻣﺴﺎﺋﻞ ﻋﺪﻡ ﻗﻄﻌﻴﺖ ‪(Nondeterministic‬‬
‫• ﻋﺪﻡ ﻗﻄﻌﻴﺖ ﻣﻜﺎﻧﻴﺰﻡ ﻣﻮﺛﺮﻱ ﺑﺮﺍﻱ ﺗﻮﺻﻴﻒ ﺯﺑﺎﻧﻬﺎﻱ ﭘﻴﭽﻴﺪﻩ ﺍﺳﺖ‪ .‬ﻳﻚ ﮔﺮﺍﻣﺮ ﻧﻴﺰ ﺩﺍﺭﺍﻱ‬

‫)‪(S → aSb|λ|bS‬‬ ‫ﻋﺪﻡ ﻗﻄﻌﻴﺖ ﺍﺳﺖ‪.‬‬

‫• ﺗﻔﺎﻭﺕ ﻋﻤﺪﻩﺍﻱ ﺑﻴﻦ ‪ NFA‬ﻭ ‪ DFA‬ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ﻭ ﺑﻌﻀﻲ ﻧﺘﺎﻳﺞ ﺭﺍ ﺑﺎ ‪ NFA‬ﺑﻬﺘﺮ ﺍﺯ ‪DFA‬‬

‫ﻣﻴﺘﻮﺍﻥ ﺑﺪﺳﺖ ﺁﻭﺭﺩ‪.‬‬

‫‪42‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫• ﻫﻢ ﺍﺭﺯﻱ ‪ DFA‬ﻭ ‪: NFA‬‬


‫ﺩﻭ ﺁﺗﺎﻣﺎﺗﻮﻥ )‪ (M1 , M2‬ﺩﺭ ﺻﻮﺭﺗﻲ ﻣﺴﺎﻭﻳﻨﺪ ﻛﻪ )‪. L(M1) = L(M2‬‬

‫• ﺁﻳﺎ ‪ DFA‬ﻭ ‪ NFA‬ﺯﻳﺮ ﻣﺴﺎﻭﻳﻨﺪ؟‬

‫‪DFA‬‬ ‫‪NFA‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪1‬‬ ‫‪q2‬‬ ‫‪0,1‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫‪0,1‬‬ ‫‪q2‬‬ ‫‪0,1‬‬
‫‪1‬‬ ‫‪1‬‬

‫‪0‬‬ ‫‪λ‬‬
‫}‪L(M) = {(10)n : n≥0‬‬
‫ﺩﺭ ﻫﺮ ﺩﻭ ﺁﺗﺎﻣﺎﺗﺎ‬
‫‪43‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ‪ NFA‬ﺯﻳﺮ ﺭﺍ ﺑﻪ ‪ DFA‬ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ ؟‬
‫‪b‬‬

‫‪q0‬‬
‫‪a‬‬ ‫‪q1‬‬ ‫‪λ‬‬ ‫‪q2‬‬

‫‪a‬‬

‫‪ : q0‬ﻭﺿﻌﻴﺖ ﺷﺮﻭﻉ ‪ : q0 → DFA‬ﻭﺿﻌﻴﺖ ﺷﺮﻭﻉ ‪NFA‬‬

‫}‪δ ({q0} , a) = {q1 , q2‬‬


‫‪δ ({q0} , b) = Ø‬‬ ‫ﺣﺮﻛﺖ ﻏﻴﺮﻣﻤﻜﻦ ﻭ ﺑﻪ ﻣﻌﻨﺎﻱ ﻋﺪﻡ ﻗﺒﻮﻝ ﺭﺷﺘﻪ ﺍﺳﺖ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ‬
‫ﺍﻳﻦ ﻭﺿﻌﻴﺖ ﺩﺭ ‪ DFA‬ﺑﺎﻳﺪ ﻳﻚ ‪ a‬ﻏﻴﺮﻧﻬﺎﻳﻲ ﺑﺎﺷﺪ‪.‬‬

‫‪44‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫}‪δ ({q1 , q2} , a) = {q1 , q2‬‬ ‫}‪ : {q1 , q2‬ﭼﻮﻥ ﺑﺎ ‪ λ‬ﻣﻴﺘﻮﺍﻥ ﺑﻴﻦ ﺁﻧﻬﺎ ﺣﺮﻛﺖ ﻛﺮﺩ‪.‬‬

‫}‪δ ({q1 , q2} , b) = {q0‬‬


‫ﻫﺮ ﻭﺿﻌﻴﺘﻲ ﻛﻪ ﺷﺎﻣﻞ ‪ q1‬ﺑﺎﺷﺪ ﻧﻬﺎﻳﻲ ﺍﺳﺖ‪.‬‬
‫‪b‬‬

‫}‪{q0‬‬ ‫}‪{q1,q2‬‬ ‫‪a‬‬


‫‪a‬‬
‫‪b‬‬
‫‪Ø‬‬ ‫‪a,b‬‬
‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﺍﮔﺮ ‪ LN‬ﺯﺑﺎﻥ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ )‪ MN = (QN , ∑ , δN , q0 , FN‬ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ ﻳﻚ ‪DFA‬‬
‫ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ )‪ MD = (QD , ∑ , δD , {q0} , FD‬ﺑﻄﻮﺭﻳﻜﻪ )‪. L(MN) = L(MD‬‬

‫‪45‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫•ﺭﻭﺍﻝ ﺗﺒﺪﻳﻞ ‪ NFA‬ﺑﻪ ‪: DFA‬‬
‫‪ (1‬ﻳﻚ ﮔﺮﺍﻑ ‪ GD‬ﺑﺎ ﺭﺃﺱ }‪ {q0‬ﺳﺎﺧﺘﻪ ﻭ ﺑﻌﻨﻮﺍﻥ ﺭﺃﺱ ﺍﺑﺘﺪﺍﻳﻲ ‪ DFA‬ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫‪ (2‬ﮔﺎﻣﻬﺎﻱ ﺯﻳﺮ ﺭﺍ ﺗﻜﺮﺍﺭ ﻛﻨﻴﺪ ﺗﺎ ﻫﻴﭻ ﻳﺎﻟﻲ ﻛﻢ ﻧﺒﺎﺷﺪ‪.‬‬
‫‪ (2-1‬ﻫﺮ ﻳﻚ ﺍﺯ ﺭﺋﻮﺱ }‪ {qi,qj,…,qk‬ﺍﺯ ‪ GD‬ﺭﺍ ﻛﻪ ﻳﺎﻝ ﺧﺮﻭﺟﻲ ﺑﺮﺍﻱ ∑‪ aє‬ﻧﺪﺍﺭﺩ‪ ،‬ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫‪ (2-2‬ﺑﺮﺍﻱ ﺁﻥ )‪ δ*(qi,a), δ*(qj,a),…, δ*(qk,a‬ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪ (2-3‬ﺍﺟﺘﻤﺎﻉ ﺗﻤﺎﻡ ﺍﻳﻦ *‪ δ‬ﻫﺎ ﺭﺍ ﭘﻴﺪﺍ ﻛﺮﺩﻩ ﻭ ﻣﺠﻤﻮﻋﻪ }‪ {ql,qm,…,qn‬ﺭﺍ ﺗﺸﻜﻴﻞ ﺩﻫﻴﺪ‪.‬‬
‫‪ (2-4‬ﻳﻚ ﺭﺍﺱ ﺑﻨﺎﻡ }‪ {ql,qm,…,qn‬ﺑﺮﺍﻱ ‪ GD‬ﺑﺴﺎﺯﻳﺪ )ﺍﮔﺮ ﺍﺯ ﻗﺒﻞ ﻣﻮﺟﻮﺩ ﻧﻴﺴﺖ(‪.‬‬
‫‪ (2-5‬ﺑﻪ ‪ GD‬ﻳﻚ ﻳﺎﻝ ﺍﺯ }‪ {qi,qj,…,qk‬ﺑﻪ }‪ {ql,qm,…,qn‬ﺍﺿﺎﻓﻪ ﻧﻤﺎﻳﻴﺪ ﻭ ﺁﻧﺮﺍ ‪a‬‬
‫ﻧﺎﻣﮕﺬﺍﺭﻱ ﻛﻨﻴﺪ‪.‬‬
‫‪46‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫‪ (2-6‬ﻫﺮ ﻳﻚ ﺍﺯ ﺣﺎﻟﺘﻬﺎﻱ ‪ GD‬ﻛﻪ ﻧﺎﻡ ﺁﻥ ﺣﺎﻭﻱ ‪ qf є F‬ﻣﻲ ﺑﺎﺷﺪ ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﻭﺿﻌﻴﺖ‬


‫ﻧﻬﺎﻳﻲ ﻋﻼﻣﺘﮕﺬﺍﺭﻱ ﻛﻨﻴﺪ‪.‬‬
‫‪ (2-7‬ﺍﮔﺮ ‪ MN‬ﻭﺭﻭﺩﻱ ‪ λ‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺭﺃﺱ }‪ {q0‬ﺩﺭ ‪ GD‬ﻫﻢ ﺑﻪ ﻋﻨﻮﺍﻥ ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ‬
‫ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ﻣﻲ ﺷﻮﺩ‪.‬‬

‫• ﻧﻜﺘﻪ ‪:‬‬
‫ﺣﻠﻘﻪ ﺑﺎﻻ ﻣﺘﻨﺎﻫﻲ ﺍﺳﺖ ﻭ ﻫﺮ ﺑﺎﺭ ﻛﻪ ﺗﻜﺮﺍﺭ ﻣﻲ ﮔﺮﺩﺩ ‪ ،‬ﻳﻚ ﻳﺎﻝ ﺑﻪ ‪ GD‬ﺍﺿﺎﻓﻪ ﻣﻲ ﮔﺮﺩﺩ‪GD .‬‬
‫ﺣﺪﺍﻛﺜﺮ ﺩﺍﺭﺍﻱ |∑|| ‪ 2|Q‬ﻳﺎﻝ ﺍﺳﺖ ﻭ ﻳﻚ ﻣﻘﺪﺍﺭ ﻣﺘﻨﺎﻫﻲ ﺍﺳﺖ‪.‬‬
‫‪N‬‬

‫‪47‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﻣﺜﺎﻝ ‪ :‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﺍﻝ‪ NFA ،‬ﻱ ﺯﻳﺮ ﺭﺍ ﺑﻪ ‪ DFA‬ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ ؟‬

‫‪0‬‬
‫‪0,1‬‬ ‫‪q1‬‬ ‫‪0,1‬‬ ‫‪q2‬‬ ‫‪1‬‬
‫‪q0‬‬

‫}‪1) δN(q0,0) = {q0,q1‬‬ ‫ﺍﻳﺠﺎﺩ ﻭﺿﻌﻴﺖ }‪ {q0,q1‬ﺩﺭ ‪GD‬‬


‫ﺍﻳﺠﺎﺩ ﻳﻚ ﻳﺎﻝ ﺑﺎ ﺑﺮﭼﺴﺐ ‪ 0‬ﺑﻴﻦ ﺭﺋﻮﺱ }‪{q0} , {q0,q1‬‬

‫}‪2) δ (q0,0) = {q0,q1} , δ (q0,1) = {q1‬‬

‫ﻳﻚ ﻳﺎﻝ ﺑﺎ ﺑﺮﭼﺴﺐ ‪ 1‬ﺑﻴﻦ }‪ {q1} , {q0‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬

‫‪48‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫}‪δ*N(q0 , 0) ∪ δ*N(q1 , 0) = {q0,q1,q2‬‬

‫ﻳﻚ ﻭﺿﻌﻴﺖ ﺟﺪﻳﺪ ﺑﻨﺎﻡ }‪ {q0,q1,q2‬ﺑﺎ ﻳﺎﻝ ‪ 0‬ﺍﻳﺠﺎﺩ ﻣﻲﮔﺮﺩﺩ ﻳﻌﻨﻲ ﺑﺮﺍﻱ )‪(a=0 , i=0 , j=0‬‬

‫}‪δ*D ({q0,q1} ,0) = {q0,q1,q2‬‬


‫) }‪( δ*D ({q0,q1},1) = {q1,q2‬‬

‫ﻫﻤﭽﻨﻴﻦ ﺑﺮﺍﻱ ‪ a=1 , i=0 , j=1 , k=2‬ﺩﺍﺭﻳﻢ ‪:‬‬

‫}‪δ*N(q0,1) ∪ δ*N(q1,1) ∪ δ*N(q2,1) = {q1,q2‬‬ ‫ﻳﻚ ﻭﺿﻌﻴﺖ ﺟﺪﻳﺪ‬

‫‪49‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

{q0}
0 1

{q0,q1} {q1}
0 1 0,1

0 {q0,q1, q2} {q1, q2} {q2} 1


1 0,1
0

Ø
0,1

50
‫ﻓﺼﻞ ﺩﻭﻡ‬
δ*D ({q0,q1,q2} , 0) = {q0,q1,q2}

δ*D ({q1} , 0) = {q2}


‫ﻭﺿﻌﻴﺖ ﺟﺪﻳﺪ‬
δ*D ({q1} , 1) = {q2}

δ*D ({q1,q2} , 0) = {q2}


δ*D ({q1,q2} , 1) = {q2}

δ*D ({q2} , 0) = Ø ‫ﻭﺿﻌﻴﺖ ﺟﺪﻳﺪ‬

δ*D ({q2} , 1) = {q2}

51
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫ﻧﻜﺘﻪ ‪ : 1‬ﺗﻤﺎﻡ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﺘﻨﺎﻫﻲ ﻣﻨﻈﻢ ﻫﺴﺘﻨﺪ ‪.‬‬


‫ﻣﺘﻨﺎﻫﻲ ‪Finite‬‬

‫‪DFA‬‬
‫)‪L(Regular‬‬ ‫↔‬ ‫‪FA‬‬
‫‪NFA‬‬

‫ﻧﻜﺘﻪ ‪ : 2‬ﺍﮔﺮ ‪ L‬ﻣﻨﻈﻢ ﺑﺎﺷﺪ ‪ ،‬ﺁﻧﮕﺎﻩ ‪ LR‬ﻫﻢ ﻣﻨﻈﻢ ﺍﺳﺖ ‪.‬‬

‫)‪L2,L3,…, Ln (Regular‬‬
‫)‪L(Regular‬‬
‫)‪LR (Regular‬‬

‫‪52‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﻛﺎﻫﺶ ﺗﻌﺪﺍﺩ ﻭﺿﻌﻴﺖ ﻫﺎﻱ ‪: FA‬‬
‫ﻳﻚ ‪ DFA‬ﺯﺑﺎﻥ ﻣﻨﺤﺼﺮ ﺑﻔﺮﺩﻱ ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ‪ ،‬ﺍﻣﺎ ﻋﻜﺲ ﺁﻥ ﺻﺤﺖ ﻧﺪﺍﺭﺩ ﻭ ‪ DFA‬ﻫﺎﻱ‬

‫ﻣﺨﺘﻠﻔﻲ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑﺎ ﺗﻌﺪﺍﺩ ﻭﺿﻌﻴﺘﻬﺎﻱ ﻣﺘﻔﺎﻭﺕ ﺩﺍﺭﺍﻱ ﻳﻚ ﺯﺑﺎﻥ ﺑﺎﺷﻨﺪ ‪ .‬ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ‬

‫ﺑﻬﻴﻨﻪ ﺍﺯﺣﺎﻓﻈﻪ‪ ،‬ﻣﻄﻠﻮﺑﺴﺖ ﺗﺎ ﺟﺎﻳﻲ ﻛﻪ ﺍﻣﻜﺎﻥ ﺩﺍﺭﺩ ﺗﻌﺪﺍﺩ ﻭﺿﻌﻴﺖ ﻫﺎ ﺭﺍ ﻛﺎﻫﺶ ﺩﻫﻴﻢ‪.‬‬

‫ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮﻱ ﻭﺿﻌﻴﺘﻬﺎ ‪:‬‬

‫ﺩﻭ ﻭﺿﻌﻴﺖ ‪ q‬ﻭ ‪ p‬ﺍﺯ ﻳﻚ ‪ DFA‬ﺩﺭﺻﻮﺭﺗﻲ ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮ)‪ (Indistinguishable‬ﻣﻴﺒﺎﺷﻨﺪ ﻛﻪ ‪:‬‬


‫‪δ*(p,w) Є F δ*(q,w) Є F‬‬
‫*‪∀w Є Σ‬‬
‫‪δ*(p,w) ∉ F δ*(q,w) ∉ F‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﺍﮔﺮ ﺭﺷﺘﻪ ﺍﻱ ﻣﺎﻧﻨﺪ *∑ ∈ ‪ w‬ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺑﻄﻮﺭﻳﻜﻪ ‪:‬‬
‫‪ ، δ*(p,w) ∈ F , δ*(q,w) ∉ F‬ﻳﺎ ﺑﺮﻋﻜﺲ ‪ ،‬ﺁﻧﮕﺎﻩ ﻭﺿﻌﻴﺘﻬﺎﻱ ‪ q‬ﻭ ‪ p‬ﺭﺍ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﺑﻪ‬
‫ﻭﺍﺳﻄﻪ ﺭﺷﺘﻪ ‪ w‬ﻣﻲ ﻧﺎﻣﻴﻢ‪.‬‬

‫•ﺭﺍﺑﻄﻪ ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮﻱ ﻳﻚ ﺭﺍﺑﻄﻪ ﻫﻢ ﺍﺭﺯﻱ ﺍﺳﺖ )ﺍﮔﺮ ‪ q‬ﻭ ‪ p‬ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮ ﻭ ‪ r‬ﻭ ‪ q‬ﺑﺎ ﻫﻢ‬
‫ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮ ﺑﺎﺷﻨﺪ‪ ،‬ﺁﻧﮕﺎﻩ ‪ r‬ﻭ ‪ p‬ﻧﻴﺰ ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮﻧﺪ‪(.‬‬
‫•ﻳﻜﻲ ﺍﺯ ﺭﺍﻫﻬﺎﻱ ﻛﺎﻫﺶ ﻭﺿﻌﻴﺘﻬﺎﻱ ﻳﻚ ‪ DFA‬ﻳﺎﻓﺘﻦ ﻭﺿﻌﻴﺘﻬﺎﻱ ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮ ﻭ ﺗﺮﻛﻴﺐ‬
‫ﺁﻧﻬﺎﺳﺖ‪ .‬ﺣﺎﻝ ﺑﻪ ﭼﻨﺪ ﺭﻭﺵ ﻣﺨﺘﻠﻒ ﺍﺩﻏﺎﻡ ﻛﺮﺩﻥ ﻭﺿﻌﻴﺘﻬﺎ ﻣﻲ ﭘﺮﺩﺍﺯﻳﻢ‪.‬‬

‫ﻗﻀﻴﻪ ‪ :‬ﺭﻭﺍﻝ ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ﺑﻪ ﻫﺮ ‪ DFA‬ﺑﻪ ﻧﺎﻡ )‪ M(Q , ∑ , δ , q0 , F‬ﺍﻋﻤﺎﻝ ﺷﻮﺩ‬


‫ﭘﺎﻳﺎﻥ ﻣﻲ ﻳﺎﺑﺪ ﻭ ﺗﻤﺎﻣﻲ ﻭﺿﻌﻴﺘﻬﺎﻱ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﺭﺍ ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ‪.‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫ﺭﻭﺍﻝ ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ‪:‬‬


‫‪ (1‬ﺗﻤﺎﻣﻲ ﻭﺿﻌﻴﺖ ﻫﺎﻱ ﻏﻴﺮ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺱ ﺭﺍ ﺣﺬﻑ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺑﺪﻳﻦ ﺻﻮﺭﺕ ﻛﻪ ‪:‬‬
‫ﻛﻠﻴﻪ ﻣﺴﻴﺮﻫﺎﻱ ﺳﺎﺩﻩ ﮔﺮﺍﻑ ‪ DFA‬ﺭﺍ ﺍﺯﻭﺿﻌﻴﺖ ﻫﺎﻱ ﺷﺮﻭﻉ ﻣﺸﺨﺺ ﻧﻤﺎﻳﻴﺪ ﻭ‬
‫ﻫﺮ ﻭﺿﻌﻴﺘﻲ ﻛﻪ ﺩﺭ ﻳﻜﻲ ﺍﺯ ﺍﻳﻦ ﻣﺴﻴﺮﻫﺎ ﻧﻴﺴﺖ ‪ ،‬ﻏﻴﺮ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﺍﺳﺖ‪.‬‬
‫‪ (2‬ﻛﻠﻴﻪ ﺯﻭﺝ ﻫﺎﻱ ﻭﺿﻌﻴﺖ )‪ (p , q‬ﺭﺍ ﺑﺮﺭﺳﻲ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺍﮔﺮ ‪ p Є F‬ﻭ ‪ q ∉ F‬ﻭ ﻳﺎ‬
‫ﺑﺮﻋﻜﺲ ﺑﺎﺷﺪ‪ ،‬ﺁﻧﻬﺎ ﺭﺍ ﺑﻌﻨﻮﺍﻥ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﻋﻼﻣﺖ ﺑﺰﻧﻴﺪ‪.‬‬
‫‪ (3‬ﮔﺎﻡ ﺯﻳﺮ ﺭﺍ ﺁﻧﻘﺪﺭ ﺗﻜﺮﺍﺭ ﻛﻨﻴﺪ ﺗﺎ ﺯﻭﺟﻲ ﺑﺮﺍﻱ ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ﺑﺎﻗﻲ ﻧﻤﺎﻧﺪ‪.‬‬
‫• ﺑﺮﺍﻱ ﻫﻤﻪ ﺯﻭﺝ ﻫﺎﻱ )‪ (p , q‬ﻭ ﻫﻤﻪ ∑ ‪ ،a Є‬ﺗﺎﺑﻊ ‪ δ(q,a)=qa‬ﻭ ‪ δ(p,a)=pa‬ﺭﺍ‬
‫ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺍﮔﺮ ﺯﻭﺝ )‪ (pa,qa‬ﺑﻌﻨﻮﺍﻥ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ﺷﺪﻩ‬
‫ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ )‪ (p , q‬ﺭﺍ ﺑﻌﻨﻮﺍﻥ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﻋﻼﻣﺖ ﺑﺰﻧﻴﺪ‪.‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫ﺭﻭﺍﻝ ﻛﺎﻫﺶ ‪:‬‬
‫ﻳﻚ ‪ DFA‬ﻣﺎﻧﻨﺪ )‪ M(Q , ∑ , δ , q0 , F‬ﺩﺍﺩﻩ ﺷﺪﻩ ﺍﺳﺖ‪ .‬ﻳﻚ ‪ DFA‬ﻛﺎﻫﺶ ﻳﺎﻓﺘﻪ ﻣﺎﻧﻨﺪ‬ ‫•‬
‫)‪ M(Q , ∑ , δ , q0 , F‬ﺑﻪ ﺷﺮﺡ ﺯﻳﺮ ﻣﻲ ﺳﺎﺯﻳﻢ ‪:‬‬
‫‪ (1‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﺍﻝ ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ﺗﻤﺎﻣﻲ ﺯﻭﺝ ﻫﺎﻱ ﻭﺿﻌﻴﺖ ﻏﻴﺮ ﻗﺎﺑﻞ ﺍﺩﻏﺎﻡ ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﺪ ﻭ ﺳﭙﺲ‬
‫ﺗﻤﺎﻣﻲ ﻭﺿﻌﻴﺖ ﻫﺎﻱ ﻗﺎﺑﻞ ﺍﺩﻏﺎﻡ ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﺪ‪.‬‬
‫‪ (2‬ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﻣﺠﻤﻮﻋﻪ ﻭﺿﻌﻴﺖ ﻗﺎﺑﻞ ﺍﺩﻏﺎﻡ ﻣﺎﻧﻨﺪ }‪ {qi,qj,…,qk‬ﻳﻚ ﻭﺿﻌﻴﺖ ﺑﺎ ﺑﺮﭼﺴﺐ ‪i, j, …, k‬‬
‫ﺑﺮﺍﻱ ‪ M‬ﺍﻳﺠﺎﺩ ﻧﻤﺎﺋﻴﺪ‪.‬‬
‫‪ (3‬ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﻗﺎﻧﻮﻥ ﺍﻧﺘﻘﺎﻝ ﺍﺯ ‪ M‬ﺑﻪ ﺷﻜﻞ ‪ ، δ(qr , a) = qp‬ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺭﺍ ﻛﻪ ‪ qr‬ﻭ ‪ qp‬ﺑﻪ ﺁﻥ‬
‫ﺗﻌﻠﻖ ﺩﺍﺭﻧﺪ‪ ،‬ﭘﻴﺪﺍ ﻛﻨﻴﺪ‪ .‬ﺍﮔﺮ }‪ qp Є {qr ,qm ,…, qm‬ﻭ }‪ qr Є {qi, qj ,…, qk‬ﺑﺎﺷﺪ‪ ،‬ﻗﺎﻧﻮﻥ‬
‫‪ δ(ij…k , a) = lm…n‬ﺭﺍ ﺑﻪ ‪ δ‬ﺍﺿﺎﻓﻪ ﻛﻨﻴﺪ‪.‬‬
‫‪ (4‬ﻭﺿﻌﻴﺖ ﺍﺑﺘﺪﺍﻳﻲ ‪ q0‬ﻭﺿﻌﻴﺘﻲ ﺍﺯ ‪ M‬ﺍﺳﺖ ﻛﻪ ﺑﺮﭼﺴﺐ ﺁﻥ ﺷﺎﻣﻞ ‪ 0‬ﺍﺳﺖ‪.‬‬
‫‪ F (5‬ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻣﻲ ﻭﺿﻌﻴﺘﻬﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﺑﺮ ﭼﺴﺐ ﺁﻥ ﺷﺎﻣﻞ ‪ 1‬ﺍﺳﺖ‪ ،‬ﺑﻄﻮﺭﻳﻜﻪ ‪ qi Є F‬ﺍﺳﺖ‪.‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫• ﻣﺜﺎﻝ ‪ :‬ﺁﺗﺎﻣﺎﺗﺎﻱ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪.‬‬

‫‪q1‬‬ ‫‪1‬‬
‫‪0‬‬ ‫‪0‬‬

‫‪0‬‬ ‫‪1‬‬
‫‪q0‬‬ ‫‪q2‬‬ ‫‪q4‬‬ ‫‪0/1‬‬

‫‪1‬‬ ‫‪0‬‬
‫‪1‬‬
‫‪q3‬‬

‫ﺭﻭﺍﻝ ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ‪:‬‬


‫‪ (1‬ﻭﺿﻌﻴﺖ ﻏﻴﺮ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ‪.‬‬
‫‪ (2‬ﺯﻭﺝ ﻫﺎﻱ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ‪(q0,q4) , (q1,q4) , (q2,q4) , (q3,q4) :‬‬
‫)ﺩﺭﺍﻳﻦ ﺣﺎﻟﺖ ﺧﺎﺹ‪ ،‬ﭼﻮﻥ ﺗﻨﻬﺎ ﺣﺎﻟﺖ ﻧﻬﺎﻳﻲ ‪ q4‬ﻣﻲ ﺑﺎﺷﺪ‪ ،‬ﻛﻠﻴﻪ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺗﻮﺳﻂ ‪ q4‬ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ ﺍﺳﺖ‪ ،‬ﺗﻮﺳﻂ‬
‫ﻫﻴﭽﻜﺪﺍﻡ ﺩﻳﮕﺮ ﭘﺬﻳﺮﻓﺘﻪ ﻧﻴﺴﺖ‪(.‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫‪(3‬‬
‫‪0‬‬ ‫ﻧﺪﺍﺭﺩ‬
‫ﺑﺎ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ‬
‫ﺯﻭﺝ‬ ‫)‪(q3,q4) (a‬‬ ‫‪δ (q0,1)=q3‬‬
‫‪1‬‬ ‫‪δ (q1,1)=q4‬‬ ‫ﭼﻭﻥ )‪(q3,q4‬‬ ‫ﺯﻭﺝ ﻫﺎﻱ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ‬
‫‪δ (q2,1)=q4‬‬ ‫ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﺍﺳﺖ‬ ‫)‪(q0,q1) , (q0,q2) , (q0,q3‬‬
‫‪δ (q3,1)=q4‬‬

‫‪1‬‬ ‫ﻧﺪﺍﺭﺩ‬
‫ﺑﺎ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ‬
‫ﺯﻭﺝ‬ ‫)‪(q2,q4) (a‬‬ ‫‪δ(q1,0)=q2‬‬
‫ﭼﻭﻥ )‪(q2,q4‬‬ ‫ﺯﻭﺝ ﻫﺎﻱ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ‬
‫‪0‬‬ ‫‪δ(q3,0)=q2‬‬ ‫ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﺍﺳﺖ‬ ‫)‪(q1,q4) , (q3,q4‬‬
‫‪δ(q4,0)=q4‬‬

‫‪1‬‬ ‫ﻧﺪﺍﺭﺩ‬
‫ﺑﺎ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ‬
‫ﺯﻭﺝ‬ ‫)‪(q1,q4) (a‬‬ ‫‪δ (q0,0)=q1‬‬
‫ﭼﻭﻥ )‪(q1,q4‬‬ ‫ﺯﻭﺝ ﻫﺎﻱ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ‬
‫‪0‬‬ ‫‪δ (q2,0)=q1‬‬ ‫ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ ﺍﺳﺖ‬ ‫)‪(q0,q4) , (q2,q4‬‬
‫‪δ (q4,0)=q4‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬
‫ﺭﻭﺍﻝ ﻛﺎﻫﺶ ‪:‬‬

‫})‪ = {(q0,q1) , (q0,q2) , (q0,q3) , (q0,q4) , (q1,q4) , (q2,q4) , (q3,q4‬ﻣﺠﻤﻮﻋﻪ ﺍﺩﻏﺎﻡ ﻧﺎﭘﺬﻳﺮ‬

‫})‪ = {(q1,q2) , (q1,q3) , (q2,q3‬ﻣﺠﻤﻮﻋﻪ ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮ‬

‫}‪ = {q1,q2,q3‬ﻭﺿﻌﻴﺘﻬﺎﻱ ﺍﺩﻏﺎﻡ ﭘﺬﻳﺮ‬

‫}‪{q0} , {q1,q2,q3} , {q4‬‬


‫ﺑﺮﭼﺴﺒﻬﺎ‬ ‫‪0 ,‬‬ ‫‪123‬‬ ‫‪, 4‬‬

‫‪δ (q0,0) = q1‬‬ ‫‪δ (q0,1) = q3‬‬


‫‪δ (q1,0) = q2‬‬ ‫‪δ (q1,1) = q4‬‬
‫‪0‬‬ ‫‪0/1‬‬
‫‪δ (q2,0) = q1‬‬ ‫‪δ (q2,1) = q4‬‬
‫‪δ (q3,0) = q2‬‬ ‫‪δ (q3,1) = q4‬‬
‫‪0/1‬‬ ‫‪1‬‬
‫‪δ (q4,0) = q4‬‬ ‫‪0‬‬ ‫‪123‬‬ ‫‪4‬‬
‫‪123‬‬
‫‪δ (q4,1) = q4‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﺍﮔﺮ ﻳﻚ ‪ DFA‬ﺑﻪ ﻧﺎﻡ ‪ M‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ‪ ،‬ﺭﻭﺍﻝ ﻛﺎﻫﺶ ﻳﻚ ‪ DFA‬ﺩﻳﮕﺮ ﺑﻪ ﻧﺎﻡ ‪ M‬ﻣﻲ ﺩﻫﺪ‬
‫ﺑﻄﻮﺭﻳﻜﻪ )‪ L(M) = L(M‬ﻋﻼﻭﻩ ﺑﺮﺁﻥ ‪ M‬ﻣﻴﻨﻴﻤﺎﻝ ﺍﺳﺖ ﺑﺪﻳﻦ ﻣﻌﻨﻲ ﻛﻪ ﻫﻴﭻ ‪ DFA‬ﺩﻳﮕﺮﻱ‬
‫ﺑﺎ ﺗﻌﺪﺍﺩ ﻛﻤﺘﺮﻱ ﻭﺿﻌﻴﺖ ﻛﻪ )‪ L(M‬ﺭﺍ ﺑﭙﺬﻳﺮﺩ ‪ ،‬ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ‪.‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫• ﺗﻤﺮﻳﻨﺎﺕ ﻣﻬﻢ ﻓﺼﻞ ﺩﻭﻡ‪:‬‬


‫‪ (1‬ﺯﺑﺎﻧﻲ ﺭﺍ ﻛﻪ ﺗﻮﺳﻂ ﺁﺗﺎﻣﺎﺗﺎﻱ ﺯﻳﺮ ﭘﺬﻳﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ ‪ ،‬ﺑﺼﻮﺭﺕ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺑﻨﻮﻳﺴﻴﺪ ؟‬

‫‪b‬‬ ‫‪b‬‬
‫‪b‬‬
‫‪a‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪a‬‬

‫}‪L = {w : w = bna |ub : u Є ∑+ , na(u) ≠ 0 , n≥0‬‬


‫ﻓﺼﻞ ﺩﻭﻡ‬

‫‪ (2‬ﻳﻚ ‪ DFA‬ﺑﺮﺍﻱ ﺯﺑﺎﻥ }‪ L = {w : na(w) mod 3 > 1‬ﺑﺎ }‪ ∑ = {a,b‬ﻃﺮﺍﺣﻲ ﻧﻤﺎﻳﻴﺪ ؟‬

‫‪b‬‬

‫‪q1‬‬
‫‪b‬‬
‫‪a‬‬ ‫‪a‬‬

‫‪q0‬‬ ‫‪a‬‬
‫‪q2‬‬ ‫‪b‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫‪ (3‬ﻳﻚ ‪ NFA‬ﻛﻪ ﺯﺑﺎﻥ *}‪ {ab , abc‬ﺭﺍ ﺑﭙﺬﻳﺮﻳﺪ‪ ،‬ﻃﺮﺍﺣﻲ ﻛﻨﻴﺪ ؟‬

‫‪b‬‬
‫‪a‬‬ ‫‪q2‬‬
‫‪q0‬‬ ‫‪q1‬‬
‫‪a‬‬

‫‪c‬‬
‫ﻳﺎ‬

‫‪q0‬‬ ‫‪a‬‬ ‫‪q1‬‬ ‫‪b‬‬ ‫‪q2‬‬

‫‪c,λ‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫‪1‬‬ ‫‪ NFA (4‬ﺯﻳﺮ ﺭﺍ ﺑﻪ ‪ DFA‬ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ ؟‬

‫‪0‬‬ ‫‪1‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪0‬‬
‫‪0/λ‬‬ ‫‪0/1‬‬
‫ﻓﺼﻞ ﺩﻭﻡ‬

‫}‪{q0‬‬

‫‪0‬‬ ‫‪1‬‬

‫}‪{q0‬‬

‫‪1‬‬
‫‪0‬‬ ‫}‪{q0,q1,q2‬‬ ‫} ‪{q1,q2‬‬ ‫‪1‬‬ ‫‪0/1‬‬
‫‪0‬‬

‫• ﭼﻮﻥ ‪ λ ، NFA‬ﺭﺍ ﻫﻢ ﻣﻲ ﭘﺬﻳﺮﺩ ﭘﺲ ‪ q0‬ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬


‫• ‪ DFA‬ﺑﺎﻻ ﻫﻤﻪ ﺭﺷﺘﻪ ﻫﺎ ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺷﻜﻞ ﻓﻮﻕ ﺑﻄﻮﺭ ﺧﻼﺻﻪ ﺩﺭ ﺧﻮﺍﻫﺪ ﺁﻣﺪ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ﻭ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﻨﻈﻢ‬

‫‪66‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫• ﻳﻚ ﺯﺑﺎﻥ ﺩﺭ ﺻﻮﺭﺗﻲ ﻣﻨﻈﻢ ﺧﻮﺍﻧﺪﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﻳﻚ ﭘﺬﻳﺮﻧﺪﻩ ﻣﺘﻨﺎﻫﻲ )‪ (FA‬ﺑﺮﺍﻱ ﺁﻥ‬


‫ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻫﺮ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﻣﻲ ﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ ﻳﻚ ‪ NFA‬ﻳﺎ ‪DFA‬‬
‫ﺗﻮﺻﻴﻒ ﺷﻮﺩ‪.‬‬
‫• ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ‪:‬‬
‫ﻳﻜﻲ ﺍﺯ ﺭﺍﻫﻬﺎﻱ ﺗﻮﺻﻴﻒ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ‪ ،‬ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﻣﻴﺒﺎﺷﺪ‪.‬‬ ‫•‬
‫ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ ،‬ﺗﺮﻛﻴﺒﻲ ﺍﺯ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﺍﺯ ﺣﺮﻭﻑ ﻳﻚ ﺍﻟﻔﺒﺎﻱ ∑ ﻭ ﭘﺮﺍﺗﻨﺰ ﻭ ﻋﻤﻠﮕﺮﻫﺎﻱ‬ ‫•‬
‫‪ + ، * ، .‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﻳﻚ ﺯﺑﺎﻥ ﻣﺎﻧﻨﺪ }‪ ∑ = {a,b,c‬ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ‪ +‬ﺑﻪ ﻋﻨﻮﺍﻥ‪ ، U‬ﺍﺯ * ﺑﻪ ﻋﻨﻮﺍﻥ ﺑﺴﺘﺎﺭ‬ ‫•‬
‫ﺳﺘﺎﺭﻩ ﺍﻱ )‪ ، (Star Closure‬ﻭﺍﺯ ‪ .‬ﺑﺮﺍﻱ ﺍﺗﺼﺎﻝ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﻴﻢ‪.‬‬
‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ‪ ،‬ﺩﺭ ﺯﺑﺎﻥ}‪ {bc}U{a‬ﻛﻪ ﻫﻤﺎﻥ ﺯﺑﺎﻥ }…‪{λ,a,bc,aa,abc,bca,‬‬ ‫•‬
‫ﺍﺳﺖ‪ ،‬ﺩﺍﺭﺍﻱ ﺑﺴﺘﺎﺭ ﺳﺘﺎﺭﻩ ﺍﻱ *)‪ (a+b.c‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫• ﺗﻌﺮﻳﻒ ﺭﺳﻤﻲ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ‪:‬‬
‫ﺍﮔﺮ ∑ ﺍﻟﻔﺒﺎ ﺑﺎﺷﺪ ‪ ،‬ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ‪:‬‬
‫‪ a є ∑, ,Ø ,λ (1‬ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﺍﺑﺘﺪﺍﻳﻲ ﻫﺴﺘﻨﺪ‪.‬‬
‫‪ (2‬ﺍﮔﺮ ‪ r1,r2‬ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺎﺷﻨﺪ ‪ (r1) , r1* , r1.r2 , r1+r2 ،‬ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﻫﺴﺘﻨﺪ‪.‬‬
‫‪ (3‬ﺭﺷﺘﻪ ﺍﻱ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺍﺳﺖ‪ ،‬ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﺑﺘﻮﺍﻥ ﺁﻧﺮﺍ ﺍﺯ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﺍﺑﺘﺪﺍﻳﻲ ﺑﺎ ﺍﻋﻤﺎﻝ ﺩﻓﻌﺎﺕ ﻣﺘﻨﺎﻫﻲ ﻗﺎﻧﻮﻥ ‪2‬‬
‫ﺗﻮﻟﻴﺪ ﻛﺮﺩ‪.‬‬
‫ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ (a+b.c)*. (c+Ø) ‬ﺭﺷﺘﻪ‬ ‫• ﻣﺜﺎﻝ ‪∑ = {a,b,c} :‬‬
‫‪r4+r5‬‬
‫‪r1‬‬ ‫‪r2.r3‬‬
‫ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﻧﻴﺴﺖ ‪(a+b+) ‬‬
‫‪r1+r23‬‬

‫‪r123.r45‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫• ﺯﺑﺎﻧﻬﺎﻱ ﻣﺮﺗﺒﻂ ﺑﺎ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ‪:‬‬
‫• ﺍﮔﺮ ‪ r‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺎﺷﺪ ‪ L(r) ،‬ﺭﺍ ﺯﺑﺎﻥ ﻣﺮﺗﺒﻂ ﺑﺎ ‪ r‬ﻣﻲ ﮔﻮﺋﻴﻢ‪.‬‬

‫• ﺯﺑﺎﻥ )‪ L(r‬ﻛﻪ ﺑﺎ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ r‬ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ ‪ ،‬ﺑﺎ ﻗﻮﺍﻋﺪ ﺯﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲ ﮔﺮﺩﺩ ‪:‬‬
‫‪ Ø (1‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺍﺳﺖ )ﻣﺠﻤﻮﻋﻪ ﺗﻬﻲ(‪.‬‬

‫‪ λ (2‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺍﺳﺖ )}‪.({λ‬‬

‫‪ (3‬ﺑﺮﺍﻱ ﻫﺮ ∑ ∈ ‪ a ، a‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺍﺳﺖ )}‪.({a‬‬

‫‪ (4‬ﺍﮔﺮ ‪ r1,r2‬ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺎﺷﻨﺪ ‪:‬‬


‫ﻓﺼﻞ ﺳﻮﻡ‬
‫ﻣﺜﺎﻝ ‪ :‬ﺯﺑﺎﻥ ))‪ L(a*.(a+b‬ﺭﺍ ﺑﺎ ﻧﻤﺎﺩ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﻧﺸﺎﻥ ﺩﻫﻴﺪ؟‬
‫)‪L(a*.(a+b))=L(a*).L(a+b)=L((a))*.L(a)UL(b‬‬
‫}…‪{λ,a,aa,aaa,…}.{a,b} = {a,aa,aaa,…,b,ab,aab,‬‬

‫• ﺗﻘﺪﻡ ﻋﻤﻠﮕﺮﻫﺎﻱ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ‪:‬‬


‫*‬ ‫‪.‬‬ ‫‪+‬‬

‫ﻣﺜﺎﻝ ‪ ∑={a,b} :‬ﻋﺒﺎﺭﺕ )‪ r=(a+b)*(a+bb‬ﻣﻨﻈﻢ ﺍﺳﺖ ﻭ ﻧﻤﺎﻳﺎﻧﮕﺮ ﺯﺑﺎﻥ‬


‫}…‪L(r)={a,bb,aa,abb,ba,bbb,‬‬
‫ﻧﻤﺎﻳﺎﻧﮕﺮ ﻫﺮ ﺭﺷﺘﻪ ﺍﺯ ‪ a‬ﻫﺎ ﻭ ‪ b‬ﻫﺎ ﺍﺳﺖ‪(a+b)*  .‬‬
‫)‪L(r‬‬
‫‪(a+bb) ‬‬ ‫ﻧﻤﺎﻳﺎﻧﮕﺮ ﺭﺷﺘﻪ ‪ a‬ﻳﺎ ‪ bb‬ﺍﺳﺖ‪.‬‬
‫ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻣﻲ ﺯﺑﺎﻧﻬﺎﻱ ﻣﺮﺗﺒﻂ ﺑﻪ ﺍﻟﻔﺒﺎﻱ ∑ ﺍﺳﺕ ﻭ ﺑﻪ ‪ a‬ﻭ ﻳﺎ ‪ bb‬ﺧﺘﻢ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫ﻣﺜﺎﻝ ‪ :‬ﻋﺒﺎﺭﺕ ‪ ، r = (aa)*(bb)*b‬ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻣﻲ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﺑﺎ ﺗﻌﺪﺍﺩ ﺯﻭﺝ ‪ a‬ﻭ ﺑﺪﻧﺒﺎﻝ‬
‫ﺁﻥ ﺗﻌﺪﺍﺩ ﻓﺮﺩ ‪ b‬ﺍﺳﺖ‪ .‬ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ‪:‬‬
‫}‪L(r) = {a2n b2m+1 : n≥0 , m≥0‬‬

‫ﻣﺜﺎﻝ ‪ :‬ﺑﺮﺍﻱ }‪ ، ∑ = {1،0‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ r‬ﺭﺍ ﺑﻴﺎﺑﻴﺪ ﻛﻪ‪:‬‬


‫}‪ w‬ﺩﺍﺭﺍﻱ ﻳﻚ ﺟﻔﺖ ﺻﻔﺮ ﺑﺎﺷﻨﺪ ‪L(r) = {w ∈ ∑ * :‬‬
‫‪ ‬ﻫﺮ ﺭﺷﺘﻪ ﺍﻱ ﺩﺭ)‪ L(r‬ﺑﺎﻳﺪ ﺣﺎﻭﻱ ‪ 00‬ﺩﺭ ﺟﺎﻳﻲ ﺑﺎﺷﺪ‪ ،‬ﻭﻟﻲ ﺍﻳﻨﻜﻪ ﻗﺒﻞ ﻭ ﻳﺎ ﺑﻌﺪ ﺍﺯ ﺁﻥ ﭼﻪ‬
‫ﺑﺎﺷﺪ‪ ،‬ﻓﺮﻗﻲ ﻧﻤﻲ ﻛﻨﺪ‪ .‬ﻟﺬﺍ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ‪:‬‬
‫*)‪(0+1)* 00 (0+1‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫ﻣﺜﺎﻝ ‪ :‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﺯﻳﺮ ﺑﻴﺎﺑﻴﺪ ‪:‬‬
‫}‪ w‬ﺩﺍﺭﺍﻱ ﻳﻚ ﺯﻭﺝ ﺻﻔﺮ ﻣﺘﻮﺍﻟﻲ ﻧﺒﺎﺷﺪ ‪L = {w∈{0,1}* :‬‬
‫‪ ‬ﺩﺭ ﺍﻳﻦ ﺯﺑﺎﻥ‪ ،‬ﺑﻌﺪ ﺍﺯ ﻫﺮ ‪ 0‬ﺑﺎﻳﺪ ‪ 1‬ﺑﻴﺎﻳﺪ‪ .‬ﭼﻨﻴﻦ ﺭﺷﺘﻪ ﺍﻱ ﻣﻴﺘﻮﺍﻧﺪ ﻣﻴﺎﻥ ﺗﻌﺪﺍﺩ ﺩﻟﺨﻮﺍﻩ‬
‫‪ 1..101..1‬ﺑﺎﺷﺪ )*‪ ،(1*011‬ﺍﻣﺎ ﺍﻳﻦ ﻛﺎﻣﻞ ﻧﻴﺴﺖ ﻭ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ‪:‬‬
‫*)‪r = (01)*+(10‬‬
‫)‪r = (1+01)*(0+λ‬‬
‫)*‪r = (1+01)*(0+1‬‬

‫• ﺭﻭﺍﺑﻂ ﻣﻬﻢ ﺩﺭ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ‪:‬‬


‫*‪(r*)* = r‬‬
‫*)‪r1*(r1+r2)* = (r1+r2‬‬
‫*)*‪(r1+r2)* = (r1*r2‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫• ﺍﺭﺗﺒﺎﻁ ﺑﻴﻦ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﻭ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ‪:‬‬


‫‪ ‬ﻫﺮ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ‪ ،‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺩﺍﺭﺩ ﻭ ﺑﺮﺍﻱ ﻫﺮ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ ،‬ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬
‫‪ ‬ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ ،‬ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻲ ﺩﻫﺪ‪.‬‬
‫‪ ‬ﻳﻚ ﺯﺑﺎﻥ ﺩﺭ ﺻﻮﺭﺗﻲ ﻣﻨﻈﻢ ﺍﺳﺖ ﻛﻪ ﺗﻮﺳﻂ ﻳﻚ ‪ DFA‬ﭘﺬﻳﺮﻓﺘﻪ ﺷﻮﺩ‪ .‬ﺑﺎﻳﺴﺘﻲ ﻧﺸﺎﻥ ﺩﻫﻴﻢ ﺍﮔﺮ‬
‫ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ r‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ‪ ،‬ﻣﻴﺘﻮﺍﻧﻴﻢ ﻳﻚ ‪ NFA‬ﺑﺴﺎﺯﻳﻢ ﻛﻪ )‪ L(r‬ﺭﺍ ﺑﭙﺬﻳﺮﺩ ﻭ ﺳﺎﺧﺘﻦ‬
‫ﺁﻥ ﺑﺮ ﺗﻌﺮﻳﻒ ﺑﺎﺯﮔﺸﺘﻲ )‪ L(r‬ﺍﺳﺘﻮﺍﺭ ﺑﺎﺷﺪ‪.‬‬

‫ﻗﻀﻴﻪ ‪ :‬ﺍﮔﺮ‪ r‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺎﺷﺪ ﺁﻧﮕﺎﻩ ﻳﻚ ‪ DFA‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ )‪ L(r‬ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ ﻭ ﺩﺭ‬
‫ﻧﺘﻴﺠﻪ )‪ L(r‬ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﺍﺳﺖ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫ﻳﻚ ‪ NFA‬ﺑﻴﺎﺑﻴﺪ ﻛﻪ )‪ L(r‬ﺭﺍ ﺩﺭ ﺟﺎﻳﻲ ﻛﻪ )‪ r = (a + bb)*(ba*+ λ‬ﺑﺎﺷﺪ ‪ ،‬ﺭﺍ ﺑﭙﺬﻳﺮﺩ ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫ﺑﺎﻳﺴﺘﻲ ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ )‪ L(a+bb‬ﻭ ﻣﺮﺑﻮﻁ ﺑﻪ )‪ L(ba*+ λ‬ﺭﺍ ﺑﺴﺎﺯﻳﻢ‪.‬‬

‫‪a‬‬
‫*)‪M1:L(a+bb‬‬ ‫‪b‬‬ ‫‪b‬‬

‫‪λ‬‬

‫)‪M2:L(ba*+λ‬‬ ‫‪b‬‬ ‫‪λ‬‬

‫‪a‬‬ ‫‪λ‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫ﻭ ﺳﭙﺲ ﺁﻥ ﺩﻭ ﺭﺍ ﺗﺮﻛﻴﺐ ﻧﻤﺎﺋﻴﻢ‪.‬‬
‫‪λ‬‬

‫‪a‬‬
‫‪b‬‬ ‫‪b‬‬ ‫‪λ‬‬ ‫‪λ‬‬ ‫‪λ‬‬
‫‪b‬‬ ‫‪λ‬‬

‫‪a‬‬
‫‪λ‬‬
‫‪λ‬‬

‫ﺁﺗﺎﻣﺎﺗﺎﻱ ﭘﺬﻳﺮﻧﺪﻩ ﺯﺑﺎﻥ )) ‪L((a+bb)*(ba*+ λ‬‬


‫ﻓﺼﻞ ﺳﻮﻡ‬

‫• ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ‪:‬‬


‫‪ ‬ﺑﺮﺍﻱ ﻫﺮ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ‪ ،‬ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﻣﻌﺎﺩﻝ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪ .‬ﭼﻮﻥ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﻳﻚ ‪NFA‬‬
‫ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺁﻥ ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ ‪ ،‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺎﻳﺪ ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﻴﺎﺑﻴﻢ ﻛﻪ ﻗﺎﺩﺭ ﺑﻪ ﺗﻮﻟﻴﺪ ﺗﻤﺎﻣﻲ ﻳﺎﻝ‬
‫ﻫﺎﻱ ﻛﻠﻴﻪ ﺭﺍﻫﻬﺎ ﺍﺯ ‪ q0‬ﺑﻪ ﻳﻚ ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ ﺑﺎﺷﺪ‪) .‬ﻣﺸﻜﻞ ﭼﺮﺧﻪ ﻫﺎ ﺩﺭ ﮔﺮﺍﻑ(‬

‫• ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻋﺎﻡ )‪: (Generalized Transition Graph‬‬


‫‪ ‬ﮔﺮﺍﻓﻲ ﺍﺳﺖ ﻛﻪ ﻳﺎﻟﻬﺎﻱ ﺁﻥ ﺑﺎ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﻧﺎﻣﮕﺬﺍﺭﻱ ﻣﻲ ﺷﻮﺩ‪ .‬ﺑﺮﭼﺴﺐ ﻫﺮ ﺭﺍﻩ ﺍﺯ ﻭﺿﻌﻴﺖ ﺍﻭﻟﻴﻪ ﺑﻪ‬
‫ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ ﺩﺭ ﻳﻚ ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻋﺎﻡ ﺍﺯ ﺍﺗﺼﺎﻝ ﭼﻨﺪ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ ﻭ ﺩﺭ ﻧﺘﻴﺠﻪ‬
‫ﺧﻮﺩ ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﻣﻲ ﺷﻮﺩ‪ .‬ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺑﻮﺍﺳﻄﻪ ﺍﻳﻦ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮﻧﺪ ‪ ،‬ﺯﻳﺮ‬
‫ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺯﺑﺎﻧﻬﺎﻱ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻋﺎﻡ ﺍﺳﺖ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫‪a‬‬
‫ﻣﺜﺎﻝ ‪ :‬ﺷﻜﻞ ﺯﻳﺮ ﻳﻚ ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻋﺎﻡ ﺭﺍ ﻧﺸﺎﻥ ﻣﻴﺪﻫﺪ‪.‬‬
‫*‪c‬‬
‫‪a+b‬‬
‫)*‪L(a*+a*(a+b)c‬‬

‫‪ ‬ﻣﻲ ﺗﻮﺍﻥ ﺑﺮﭼﺴﺐ ‪ a‬ﺭﺍ ﺑﻪ *‪ a‬ﺗﺒﺪﻳﻞ ﻛﺮﺩ ﻭ ﺗﻔﺴﻴﺮﻫﺎﻱ ﻣﺘﻔﺎﻭﺗﻲ ﺭﺍ ﺍﺭﺍﺋﻪ ﺩﺍﺩ‪.‬‬
‫‪ ‬ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺘﻲ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻛﻪ ﻭﺿﻌﻴﺖ ‪ q‬ﻧﻪ ﻭﺿﻌﻴﺖ ﺍﻭﻟﻴﻪ ﺍﺳﺖ ﻧﻪ‬
‫ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ‪.‬‬
‫‪ ‬ﻣﻴﺨﻮﺍﻫﻴﻢ ﮔﺮﺍﻑ ﻣﻌﺎﺩﻟﻲ ﺑﺎ ﻳﻚ ﻭﺿﻌﻴﺖ ﻛﻤﺘﺮ ﻛﻪ ﺑﺎ ﺣﺬﻑ ‪ q‬ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ ‪ ،‬ﭘﻴﺪﺍ ﻛﻨﻴﻢ‪.‬‬
‫‪ce*d‬‬
‫‪d‬‬ ‫‪e‬‬ ‫‪c‬‬

‫‪qj‬‬ ‫‪qj‬‬
‫‪qi‬‬ ‫‪q‬‬ ‫‪qj‬‬

‫‪ae*b‬‬
‫‪a‬‬ ‫‪ce*b‬‬
‫‪b‬‬ ‫‪ae*d‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫ﻗﻀﻴﻪ ‪ :‬ﺍﮔﺮ ‪ L‬ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﺑﺎﺷﺪ ‪ ،‬ﺁﻧﮕﺎﻩ ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ‪ r‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ‪ ،‬ﺑﻄﻮﺭﻳﻜﻪ‬

‫)‪L = L(r‬‬

‫ﻣﺜﺎﻝ ‪ NFA :‬ﺷﻜﻞ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻋﺎﻡ ﭘﺲ ﺍﺯ ﺣﺬﻑ ‪q1‬‬
‫ﺧﻮﺍﻫﺪ ﺑﻮﺩ ‪:‬‬
‫‪a‬‬

‫‪b‬‬ ‫‪ab*b‬‬
‫‪q1‬‬ ‫‪q2‬‬ ‫‪q0‬‬ ‫‪q2‬‬ ‫‪a+b‬‬
‫‪q0‬‬
‫‪b‬‬

‫‪a‬‬ ‫‪a+b‬‬ ‫‪b*+ ab*a‬‬


‫‪b‬‬ ‫‪b‬‬ ‫‪b*ab*a‬‬

‫‪ ‬ﺑﺎ ﺷﻨﺎﺳﺎﻳﻲ ‪ ، r4 = a+b ، r3 = Ø ، r2 = ab*b ، r1 = b+ab*a‬ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ ‪.‬‬


‫ﻓﺼﻞ ﺳﻮﻡ‬

‫• ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﺮﺍﻱ ﺗﻮﺻﻴﻒ ﺍﻟﮕﻮﻫﺎﻱ ﺳﺎﺩﻩ ‪:‬‬


‫‪ ‬ﻣﻴﺘﻮﺍﻥ ﺍﺟﺰﺍ ﺯﺑﺎﻧﻬﺎﻱ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯﻱ ﻣﺎﻧﻨﺪ ﻣﺘﻐﻴﺮﻫﺎ ﻭ ﺍﻋﺪﺍﺩ ﺻﺤﻴﺢ ﻭ ﺍﻋﺸﺎﺭﻱ ﺭﺍ ﺑﺎ ﭘﺬﻳﺮﻧﺪﻩ ﻫﺎﻱ‬
‫ﻣﺘﻨﺎﻫﻲ ﺍﺭﺗﺒﺎﻁ ﺩﺍﺩ ﻭ ﺍﺯ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﺑﺮﺍﻱ ﺗﻮﺻﻴﻒ ﺍﻳﻦ ﺍﺟﺰﺍ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪.‬‬

‫‪ ‬ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ‪ :‬ﻣﺠﻤﻮﻋﻪ ﻛﻠﻴﻪ ﺍﻋﺪﺍﺩ ﺻﺤﻴﺢ ﺩﺭ ﺯﺑﺎﻥ ﭘﺎﺳﻜﺎﻝ ﺭﺍ ﻣﻴﺘﻮﺍﻥ ﺑﺎ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ *‪، Sdd‬‬
‫ﻛﻪ ﺩﺭ ﺁﻥ ﻋﻼﻣﺖ ‪) S‬ﺑﺎ ﻣﻘﺎﺩﻳﺮ}‪ ،({+، -، λ‬ﻭ ‪ d‬ﻳﻚ ﺭﻗﻢ ﺍﺯ ﻣﻴﺎﻥ ﺍﺭﻗﺎﻡ ‪ 0‬ﺍﻟﻲ ‪ 9‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫‪ ‬ﺍﻟﮕﻮ )‪ (Pattern‬ﺑﻤﻌﻨﺎﻱ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻋﻨﺎﺻﺮ ﺍﺳﺖ ﻛﻪ ﺩﺍﺭﺍﻱ ﺻﻔﺎﺕ ﻣﺸﺘﺮﻙ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﻣﺎﻧﻨﺪ ﺍﻟﮕﻮﻱ ﺍﻋﺪﺍﺩ ﺻﺤﻴﺢ ﺩﺭ ﭘﺎﺳﻜﺎﻝ‪.‬‬

‫‪ ‬ﺗﻄﺒﻴﻖ ﺍﻟﮕﻮﻫﺎ )‪ (Pattern Matching‬ﺑﻪ ﻣﻌﻨﺎﻱ ﻣﻘﺪﺍﺭ ﺩﻫﻲ ﺑﻪ ﻋﻨﺎﺻﺮ ﺍﺳﺖ‪.‬‬


‫ﻓﺼﻞ ﺳﻮﻡ‬

‫ﻳﻜﻲ ﺍﺯ ﻛﺎﺭﺑﺮﺩ ﻫﺎﻱ ﺗﻄﺒﻴﻖ ﺍﻟﮕﻮ ‪ ،‬ﻭﻳﺮﺍﻳﺶ ﻣﺘﻮﻥ ﺍﺳﺖ‪ .‬ﻛﻠﻴﻪ ﻭﻳﺮﺍﻳﺸﮕﺮﻫﺎ ﺍﻣﻜﺎﻥ ﺟﺴﺘﺠﻮﻱ ﻳﻚ ﻓﺎﻳﻞ‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫ﺑﺮﺍﻱ ﻳﺎﻓﺘﻦ ﻳﻚ ﺭﺷﺘﻪ ﺍﺯ ﺣﺮﻭﻑ ﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲ ﻛﻨﺪ‪ .‬ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ‪ ،‬ﺩﺭ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ‪ Unix‬ﺩﺳﺘﻮﺭ ‪، /aba*c/‬‬
‫ﺑﻌﻨﻮﺍﻥ ﺩﺳﺘﻮﺭ ﺟﺴﺘﺠﻮﻱ ﻓﺎﻳﻞ ﺑﺮﺍﻱ ﻳﺎﻓﺘﻦ ﺍﻭﻟﻴﻦ ﻣﻮﺭﺩ ﺍﺯ ﺭﺷﺘﻪ ‪ ab‬ﻭ ﺑﺪﻧﺒﺎﻝ ﺁﻥ ﻫﺮ ﺗﻌﺪﺍﺩ ‪ a‬ﻭ ﺑﺪﻧﺒﺎﻝ ﺁﻥ‬
‫ﻳﻚ ‪ c‬ﺗﻔﺴﻴﺮ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫‪ ‬ﺩﺭ ﻛﺎﺭﺑﺮﺩ ﻫﺎﻱ ﺩﻳﮕﺮﻱ ﻛﻪ ﺍﻟﮕﻮ ﻫﺎ ﭘﻴﭽﻴﺪﻩ ﺗﺮ ﻭ ﻧﺎ ﻣﺤﺪﻭﺩ ﻫﺴﺘﻨﺪ‪ ،‬ﺍﻟﮕﻮ ﻫﺎ ﺍﺯ ﻗﺒﻞ ﻣﻌﻴﻦ ﻧﺒﻮﺩﻩ ﻭ ﺩﺭ ﺯﻣﺎﻥ‬
‫ﺍﺟﺮﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﺷﻮﻧﺪ‪.‬‬
‫ﺍﮔﺮ ﺍﻟﮕﻮﻫﺎ ﺑﻮﺍﺳﻄﻪ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﻣﺸﺨﺺ ﺷﻮﻧﺪ‪ ،‬ﺁﻧﮕﺎﻩ ﺑﺮﻧﺎﻣﻪ ﺗﻄﺒﻴﻖ ﺍﻟﮕﻮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﻳﻦ ﻋﺒﺎﺭﺕ ﺭﺍ ﺑﻪ ‪NFA‬‬
‫ﺗﺒﺪﻳﻞ ﻛﻨﺪ ﻭ ﺳﭙﺲ ﻣﻴﺘﻮﺍﻥ ﻃﺒﻖ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻱ ﺑﻴﺎﻥ ﺷﺪﻩ ‪ NFA ،‬ﺭﺍ ﺑﻪ ‪ DFA‬ﺗﺒﺪﻳﻞ ﻭ ﻛﺎﻫﺶ ﺩﺍﺩ‪ .‬ﺍﺯ ﻳﻚ‬
‫‪ DFA‬ﺩﺭ ﻗﺎﻟﺐ ﻳﻚ ﺟﺪﻭﻝ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻣﻴﺘﻮﺍﻥ ﻳﻚ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺗﻄﺒﻴﻖ ﺍﻟﮕﻮ ﺳﺎﺧﺖ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫• ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﻨﻈﻢ ‪:‬‬


‫‪ ‬ﮔﺮﺍﻣﺮﻫﺎ ﻳﻜﻲ ﺍﺯ ﺭﺍﻫﻬﺎﻱ ﺗﻮﺻﻴﻒ ﺯﺑﺎﻧﻬﺎ ﻣﻲ ﺑﺎﺷﻨﺪ‪.‬‬
‫‪ ‬ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ ﻭ ﺧﻄﻲ ﭼﭗ )‪(Right & Left Linear Grammar‬‬
‫‪A  XB‬‬
‫ﺑﺎﺷﻨﺪ‪ ،‬ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ )‪،(RLG‬‬ ‫‪ ‬ﺍﮔﺮ ﺩﺭ ﮔﺮﺍﻣﺮ )‪ G(V,T,S,P‬ﻫﻤﮕﻲ ﻗﻮﺍﻋﺪ ﺍﺯ ﻧﻮﻉ‬
‫‪AX‬‬
‫‪A  BX‬‬
‫‪ ،‬ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﭼﭗ )‪ (LLG‬ﻣﻲ ﻧﺎﻣﻨﺪ‪.‬‬ ‫ﻭ ﺍﮔﺮ ﻫﻤﮕﻲ ﻗﻮﺍﻋﺪ ﺍﺯ ﻧﻮﻉ‬
‫‪AX‬‬
‫*‪A,B ∈ V , X∈T‬‬
‫‪ ‬ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ ‪ ،‬ﮔﺮﺍﻣﺮﻱ ﺍﺳﺖ ﻛﻪ ﻳﺎ ﺧﻄﻲ ﺭﺍﺳﺖ ﻭ ﻳﺎ ﺧﻄﻲ ﭼﭗ ﺑﺎﺷﺪ‪ .‬ﺩﺭ ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ‪ ،‬ﺣﺪﺍﻛﺜﺮ‬
‫ﻳﻚ ﻣﺘﻐﻴﺮ ﻇﺎﻫﺮ ﻣﻲ ﺷﻮﺩ ﻭ ﺑﺎﻳﺪ ﻫﻤﻮﺍﺭﻩ ﺁﺧﺮﻳﻦ ﻧﺸﺎﻧﻪ ﺳﻤﺖ ﺭﺍﺳﺖ ﻳﺎ ﭼﭗ‪ ،‬ﻫﻤﺎﻥ ﻣﺘﻐﻴﺮ ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫)‪G1=({S,S1,S2},{a,b},S,P1‬‬ ‫‪P1 : S  S1ab‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫‪S1  S1ab|S2‬‬
‫‪S2  a‬‬

‫‪ ‬ﮔﺮﺍﻣﺮ ‪ G1‬ﻳﻚ ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﭼﭗ ﻭ ﺑﻨﺎﺑﺮﺍﻳﻦ ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ ﺑﺎ ﺯﺑﺎﻥ )*)‪ L(aab(ab‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫)‪G2=({S,A,B},{a,b},S,P2‬‬ ‫‪P2 : S  A‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫‪A  aB | λ‬‬
‫‪B  Ab‬‬

‫‪ ‬ﮔﺮﺍﻣﺮ ‪ G2‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ‪ ،‬ﺯﻳﺮﺍ ﻧﻪ ﺧﻄﻲ ﭼﭗ ﻭ ﻧﻪ ﺧﻄﻲ ﺭﺍﺳﺖ ﺍﺳﺖ‪ ،‬ﻭﻟﻲ ﻳﻚ ﮔﺮﺍﻣﺮ ﺧﻄﻲ‬
‫ﺍﺳﺖ‪.‬‬
‫‪‬ﮔﺮﺍﻣﺮ ﺧﻄﻲ )‪ (Linear Grammar‬ﮔﺮﺍﻣﺮﻱ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥ ﺣﺪﺍﻛﺜﺮ ﻳﻚ ﻣﺘﻐﻴﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ‬
‫ﺳﻤﺖ ﺭﺍﺳﺖ ﻳﻚ ﻗﺎﻧﻮﻥ ﻳﺎﻓﺖ ﺷﻮﺩ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻫﺮ ﮔﺮﺍﻣﺮ ﺧﻄﻲ ‪ ،‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ‪ ،‬ﻭﻟﻲ ﻫﺮ ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ‬
‫ﺧﻄﻲ ﺍﺳﺖ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫ﻧﺘﻴﺠﻪ ‪ :‬ﺑﺮﺍﻱ ﻫﺮ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ‪ ،‬ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬
‫‪ :‬ﺍﮔﺮ)‪ G = (V،T،S،P‬ﻳﻚ ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ ﺑﺎﺷﺪ ‪ ،‬ﺁﻧﮕﺎﻩ)‪ L(G‬ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﺍﺳﺖ‪.‬‬ ‫ﻗﻀﻴﻪ‬
‫ﻳﻚ ﺁﺗﺎﻣﺎﺗﺎﻱ ﻣﺘﻨﺎﻫﻲ ﺑﺴﺎﺯﻳﺪ ﻛﻪ ﺯﺑﺎﻧﻲ ﺭﺍ ﻛﻪ ﺗﻮﺳﻂ ﮔﺮﺍﻣﺮ ﺯﻳﺮ ﺗﻮﻟﻴﺪ ﻣﻴﺸﻮﺩ ‪ ،‬ﺑﭙﺬﻳﺮﺩ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫‪a‬‬ ‫‪b‬‬
‫ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ‬ ‫‪NFA‬‬ ‫‪V0‬‬ ‫‪V1‬‬ ‫‪Vf‬‬

‫‪V0  aV1‬‬ ‫‪b‬‬ ‫‪a‬‬


‫‪V1  abV0 | b‬‬

‫)‪ : L((aab)*ab‬ﺯﺑﺎﻥ ﻣﻨﻈﻢ‬

‫• ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ ﺑﺮﺍﻱ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ‪:‬‬


‫‪‬ﺍﺯ ‪ DFA‬ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻩ ‪ ،‬ﻭﺿﻌﻴﺘﻬﺎﻱ ‪ DFA‬ﻣﺘﻐﻴﺮﻫﺎﻱ ﮔﺮﺍﻣﺮ ﻭ ﻋﻼﺋﻤﻲ ﻛﻪ ﺑﺎﻋﺚ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ‬
‫ﻣﻲ ﺷﻮﻧﺪ ‪ ،‬ﺗﺮﻣﻴﻨﺎﻝ ﻫﺎﻱ ﮔﺮﺍﻣﺮ ﻣﻲ ﺷﻮﻧﺪ‪.‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫ﻗﻀﻴﻪ‪ :‬ﺍﮔﺮ ‪ L‬ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﺑﺮ ﺭﻭﻱ ﺍﻟﻔﺒﺎ ∑ ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ ﻳﻚ ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ‪ ،‬ﻣﺎﻧﻨﺪ )‪ G = (V,∑,S,P‬ﻭﺟﻮﺩ‬
‫ﺩﺍﺭﺩ‪ ،‬ﺑﻄﻮﺭﻳﻜﻪ )‪.L = L(G‬‬

‫ﺍﺛﺒﺎﺕ ‪ :‬ﻓﺮﺽ ﻛﻨﻴﺪ )‪ ، M = (Q , ∑ , S , q0 , F‬ﻣﺎﺷﻴﻦ ‪ DFA‬ﭘﺬﻳﺮﻧﺪﻩ ‪ L‬ﺑﺎﺷﺪ‪ .‬ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ‪:‬‬

‫}‪Q = {q0,q1,…,qn} , ∑ = {a1,a2,…,am‬‬

‫‪ (1‬ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ )‪ G(V, ∑,S,P‬ﺭﺍ ﺑﺎ }‪ S = {q0} ، V = {q0,q1,…,qn‬ﺑﺴﺎﺯﻳﺪ‪.‬‬

‫‪ (2‬ﺑﺮﺍﻱ ﻫﺮ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺘﻲ ﻣﺎﻧﻨﺪ ‪ δ(qi,aj) = qk‬ﺍﺯ‪ ، M‬ﻗﺎﻧﻮﻥ ﺯﻳﺮ ﺭﺍ ﺑﻪ ‪ P‬ﺍﺿﺎﻓﻪ ﻛﻨﻴﺪ‪.‬‬

‫‪qi  ajqk‬‬

‫‪ (3‬ﺑﻌﻼﻭﻩ ﺍﮔﺮ ‪ qk∈F‬ﺑﺎﺷﺪ ‪ ،‬ﻗﺎﻧﻮﻥ ﺯﻳﺮ ﺭﺍ ﻧﻴﺰ ﺑﻪ ‪ P‬ﺍﺿﺎﻓﻪ ﻛﻨﻴﺪ‪.‬‬

‫‪qk  λ‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫ ﻳﻚ ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ ﺑﺴﺎﺯﻳﺪ؟‬، L(aab*a) ‫ ﺑﺮﺍﻱ‬: ‫• ﻣﺜﺎﻝ‬

δ(q0,a)=[q1] q0aq1
‫ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﺭﺍﺳﺖ‬
δ(q1,a)=[q2] q1aq2
S  aA
δ(q2,b)=[q2] q2bq2 A  aB
B  bB|a
δ(q2,a)=[qf] q2aqf

qf∈F qfλ

q0 a q1 a q2 a qf

b
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﺯﺑﺎﻥ ‪ L‬ﻣﻨﻈﻢ ﺍﺳﺖ‪ ،‬ﺍﮔﺮﻭﻓﻘﻂ ﺍﮔﺮ ﻳﻚ ﮔﺮﺍﻣﺮ ﺧﻄﻲ ﭼﭗ ‪ G‬ﺑﺎﺷﺪ ﺑﻄﻮﺭﻳﻜﻪ )‪.L=L(G‬‬
‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﺯﺑﺎﻥ ‪ L‬ﻣﻨﻈﻢ ﺍﺳﺖ‪ ،‬ﺍﮔﺮﻭﻓﻘﻂ ﺍﮔﺮﮔﺮﺍﻣﺮﻣﻨﻈﻤﻲ ﻣﺎﻧﻨﺪ ‪ G‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﺑﻄﻮﺭﻳﻜﻪ )‪.L=L(G‬‬
‫• ﺑﺮﺍﻱ ﺗﻮﺻﻴﻒ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺍﺯ ﺭﺍﻫﻬﺎﻱ ﻣﺨﺘﻠﻒ ﻛﻪ ﻋﺒﺎﺭﺗﻨﺪﺍﺯ‪ DFA :‬ﻫﺎ‪،‬‬
‫‪ NFA‬ﻫﺎ ‪،‬ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﻭﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﻨﻈﻢ‪ ،‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﻴﻢ ‪.‬ﺍﻳﻦ ﺭﻭﺵ ﻫﺎ‬
‫ﺩﺍﺭﺍﻱ ﺍﺭﺗﺒﺎﻁ ﺯﻳﺮ ﻫﺴﺘﻨﺪ ‪:‬‬

‫‪Regular‬‬ ‫‪DFA‬‬ ‫‪Regular‬‬


‫ﻗﺿﺎﻳﺎ‬ ‫ﻗﺿﺎﻳﺎ‬
‫‪Grammars‬‬ ‫‪NFA‬‬ ‫‪Expressions‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

:‫• ﺗﻤﺮﻳﻨﺎﺕ ﻣﻬﻢ ﻓﺼﻞ ﺳﻮﻡ‬

‫( ﺑﺮﺍﻱ ﻣﺠﻤﻮﻋﻪ ﻫﺎﻱ ﺯﻳﺮ ﻳﻚ ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺑﻴﺎﺑﻴﺪ؟‬1

• {an bm : n≥4 , m≤3}  aaaaa* (λ+b+bb+bbb)

• {an bm : (n + m) ‫ }ﺯﻭﺝ‬ (aa)* (ab+λ) (bb)*

• {an bm : n≥1 , m≥1 , nm≥3}  a+(bbb)+ + (aa)+(bb)+ + (aaa)+b+ =

aa*bbbb* + aa(aa)*bb(bb)* + aaaa*bb*


‫ﻓﺼﻞ ﺳﻮﻡ‬

‫‪ (2‬ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﻫﺎﻱ ﺯﻳﺮ ﺭﻭﻱ ﺍﻟﻔﺒﺎﻱ }‪ Σ = {a,b,c‬ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﺑﻨﻮﻳﺴﻴﺪ ؟‬


‫ﺍﻟﻒ( ﺗﻤﺎﻣﻲ ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺣﺪﺍﻛﺜﺮﺳﻪ ‪ a‬ﺩﺍﺭﻧﺪ‪:‬‬
‫*)‪(b+c)*(a+λ)(b+c)*(a+λ)(b+c)*(a+λ)(b+c‬‬

‫ﺏ ( ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺣﺪﺍﻗﻞ ﺍﺯﻫﺮﻳﻚ ﺍﺯ ﺣﺮﻭﻑ ﺍﻟﻔﺒﺎ ﻳﻜﻲ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪:‬‬


‫‪If r=(a+b+c)*  rarbrcr + rarcrbr + rbrarcr + rbrcrar +‬‬
‫‪rcrarbr + rcrbrar‬‬

‫ﺝ( ﺭﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﻃﻮﻝ ﺗﻤﺎﻡ ﺩﻧﺒﺎﻟﻪ ﻫﺎﻱ ‪ a‬ﺁﻧﻬﺎ ﻣﻀﺎﺭﺏ ‪ 3‬ﺑﺎﺷﻨﺪ‪:‬‬
‫*)‪(b+c+aaa‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫‪ (3‬ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﺯﻳﺮ ﻳﻚ ‪ DFA‬ﺑﻴﺎﺑﻴﺪ ؟‬


‫)*)‪L(((aa*)*b‬‬

‫‪b‬‬
‫‪b‬‬
‫‪q0‬‬ ‫‪q2‬‬

‫‪a‬‬ ‫‪b‬‬ ‫‪a‬‬

‫‪q1‬‬

‫‪a‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫‪ (4‬ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻋﺎﻡ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻭ ﺳﭙﺲ ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﻋﺎﻡ ﻣﻌﺎﺩﻝ‬
‫ﺁﻥ ﺭﺍ ﺑﺎ ﻛﺎﻫﺶ ﻳﻚ ﻭﺿﻌﻴﺖ ﺑﻴﺎﺑﻴﺪ ؟‬
‫‪a‬‬

‫‪λ‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪bb‬‬
‫‪a+b‬‬ ‫‪ab‬‬
‫‪a‬‬

‫‪a‬‬
‫‪q0‬‬ ‫‪q2‬‬ ‫‪ab+bb‬‬
‫‪(a+b)ab‬‬
‫‪a‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫‪ (5‬ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﺁﺗﺎﻣﺎﺗﻮﻥ ﺯﻳﺮ‪ ،‬ﻋﺒﺎﺭﺕ ﻣﻨﻈﻤﻲ ﺑﻴﺎﺑﻴﺪ؟‬

‫‪b‬‬ ‫‪b‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪a‬‬ ‫‪a‬‬

‫‪b‬‬
‫‪bb‬‬
‫ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ‬ ‫‪q0‬‬ ‫‪q2‬‬ ‫‪ba‬‬
‫ﻋﺎﻡ ﺑﺎ ﺩﻭ ﻭﺿﻌﻴﺖ‬ ‫‪b+aa‬‬

‫‪ab‬‬

‫*)*)*)‪((ab)*((aa+b)(ba)*(bb‬‬
‫ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ‬
‫*))‪(ab+(b+aa)(ba)*(bb‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬
‫‪ (6‬ﻳﻚ ‪ DFA‬ﻃﺮﺍﺣﻲ ﻛﻨﻴﺪ ﻛﻪ ﺯﺑﺎﻥ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﮔﺮﺍﻣﺮ ﺯﻳﺮ ﺭﺍ ﺗﻮﻟﻴﺪ ﻛﻨﺪ ؟‬

‫‪S‬‬ ‫‪abA‬‬ ‫‪a‬‬ ‫‪b‬‬


‫‪A‬‬ ‫‪baB‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪B‬‬ ‫‪aA|bb‬‬
‫‪b‬‬ ‫‪a‬‬ ‫‪b‬‬
‫‪a‬‬
‫ﮔﺮﺍﻣﺮ ﺧﻄﻲ‬ ‫‪a,b‬‬ ‫‪q7‬‬ ‫‪b‬‬ ‫‪q3‬‬ ‫‪a‬‬
‫‪a‬‬
‫‪a,b‬‬ ‫‪a‬‬
‫‪S‬‬ ‫‪Abb‬‬
‫‪A‬‬ ‫‪Aaba|abba‬‬
‫‪q6‬‬ ‫‪b‬‬
‫‪q5‬‬ ‫‪b‬‬
‫‪q4‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫‪ (7‬ﮔﺮﺍﻣﺮﻫﺎﻱ ﺧﻄﻲ ﺭﺍﺳﺖ ﻭ ﺧﻄﻲ ﭼﭗ ﺭﺍ ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﺯﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ ؟‬

‫}‪L = {an bm | n ≥ 2 , m ≥ 3‬‬

‫‪ : S‬ﺧﻄﻲ ﭼﭗ‬ ‫‪Abbb‬‬ ‫‪ : S‬ﺧﻄﻲ ﺭﺍﺳﺖ‬ ‫‪aaA‬‬


‫‪A‬‬ ‫‪Ab|Baa‬‬ ‫‪A‬‬ ‫‪aA|bbbB‬‬
‫‪B‬‬ ‫‪Ba|λ‬‬ ‫‪B‬‬ ‫‪bB| λ‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫‪ (8‬ﻳﮓ ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ ﺑﺮﺍﻱ ﺯﺑﺎﻥ ﺯﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ ؟‬

‫}ﺯﻭﺝ ‪L = {an bm | m + n :‬‬

‫‪S‬‬ ‫‪Ab|D‬‬
‫‪A‬‬ ‫‪Abb|Ba‬‬
‫‪B‬‬ ‫‪Baa| λ‬‬
‫‪D‬‬ ‫‪Dbb|E | λ‬‬
‫‪E‬‬ ‫‪Eaa| λ‬‬
‫ﻓﺼﻞ ﺳﻮﻡ‬

‫‪ (9‬ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻤﺎﻡ ﺍﻋﺪﺍﺩ ﺣﻘﻴﻘﻲ ﭘﺎﺳﻜﺎﻝ ﺭﺍ ﺗﻮﻟﻴﺪ ﻛﻨﺪ ؟‬

‫‪ : d‬ﺍﺭﻗﺎﻡ ﺑﻴﻦ “‪”0 -9‬‬


‫‪S‬‬ ‫‪IdA|IdB|I.D‬‬
‫‪A‬‬ ‫‪dA| λ‬‬
‫‪B‬‬ ‫‪dB|·D‬‬ ‫‪±6‬‬
‫ﻍ ‪± 6.‬‬
‫‪D‬‬ ‫‪dA‬‬
‫‪± 6.2‬‬
‫‪I‬‬ ‫‪+|-| λ‬‬ ‫‪± .6‬‬
‫‪d‬‬ ‫‪0|…|9‬‬
‫ﻓﺻﻝ ﭼﻬﺎﺭﻡ‬
‫ﺧﻮﺍﺹ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬
‫• ﺧﻮﺍﺹ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ‪:‬‬
‫‪ ‬ﻭﻗﺘﻲ ﻋﻤﻠﻴﺎﺗﻲ ﺑﺮﺭﻭﻱ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ ﭼﻪ ﺍﺗﻔﺎﻗﻲ ﻣﻲ ﺍﻓﺘﺪ ؟ ﺁﻳﺎ ﺯﺑﺎﻥ ﺑﺪﺳﺖ‬
‫ﺁﻣﺪﻩ ﺑﺎﺯﻫﻢ ﻣﻨﻈﻢ ﺍﺳﺖ ؟‬
‫‪ ‬ﻋﻤﻠﻴﺎﺕ ← ﻋﻤﻠﻴﺎﺕ ﺳﺎﺩﻩ ﺭﻭﻱ ﻣﺠﻤﻮﻋﻪ ﻫﺎ )ﺍﺗﺼﺎﻝ( ﻭ ﻫﻤﻪ ﻋﻤﻠﻴﺎﺗﻲ ﻛﻪ ﺭﺷﺘﻪ ﻫﺎﻱ ﺯﺑﺎﻥ‬
‫ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﻫﺪ‪.‬‬
‫‪ ‬ﺧﺎﺻﻴﺖ ﺑﺴﺘﺎﺭ )‪(Closure‬‬
‫‪ ‬ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﺑﺪﺍﻧﻴﻢ ﺯﺑﺎﻧﻲ ﻣﻨﻈﻢ ﺍﺳﺖ‪) ،‬ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﺎ ‪ DFA‬ﻃﺮﺍﺣﻲ ﻭ ﺳﭙﺲ‬
‫ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻧﻤﻮﺩ‪ (.‬ﺑﺎﻳﺪ ﺑﺪﺍﻧﻴﻢ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ﺍﺯ ﭼﻪ ﺻﻔﺎﺗﻲ ﺑﺮﺧﻮﺭﺩﺍﺭﻧﺪ‪.‬‬

‫• ﺧﻮﺍﺹ ﺑﺴﺘﺎﺭﻱ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ‪:‬‬


‫‪ ‬ﺑﺎ ﻭﺟﻮﺩ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ‪ L1‬ﻭ ‪ ، L2‬ﺁﻳﺎ ﻋﻤﻠﻴﺎﺗﻲ ﻫﻤﭽﻮﻥ ﺍﺟﺘﻤﺎﻉ ‪ ، L1 U L2‬ﺑﺎﺯ ﻫﻢ ﻣﻨﻈﻢ‬
‫ﺍﺳﺖ‪) .‬ﺧﺎﻧﻮﺍﺩﻩ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺗﺤﺖ ﺍﺟﺘﻤﺎﻉ ﺑﺴﺘﻪ ﺍﺳﺖ‪(.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬
‫• ﻗﻀﻴﻪ ‪:‬‬
‫‪ ‬ﺍﮔﺮ ‪ L 1‬ﻭ ‪ L 2‬ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺑﺎﺷﻨﺪ ‪ L1* ، L1 ، L 1 ∩ L 2 ، L 1 ∪ L 2 ،‬ﻧﻴﺰ‬
‫ﻣﻨﻈﻢ ﻫﺴﺘﻨﺪ‪.‬‬
‫• ﻣﺜﺎﻝ ‪:‬‬
‫‪ ‬ﺁﻳﺎ ﺧﺎﻧﻮﺍﺩﻩ ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ﺗﺤﺖ ﺗﻔﺎﺿﻞ ﺑﺴﺘﻪ ﺍﺳﺖ ؟ ﺑﻠﻲ‬
‫ﻣﻨﻈﻢ ‪L1 , L2‬‬ ‫ﻣﻨﻈﻢ ‪L1- L2‬‬

‫ﻣﻨﻈﻢ ‪ → L1∩L2‬ﻣﻨﻈﻢ ‪ , L1 , L2‬ﻣﻨﻈﻢ ‪ → L2‬ﻣﻨﻈﻢ ‪L1 - L2 = L 1∩L2 , L2‬‬


‫• ﻗﻀﻴﻪ ‪:‬‬
‫‪ ‬ﺧﺎﻧﻮﺍﺩﻩ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺗﺤﺖ ﻣﻌﻜﻮﺱ ﻛﺮﺩﻥ ﺑﺴﺘﻪ ﺍﺳﺖ‪.‬‬
‫) ﻣﻨﻈﻢ ‪ → LR :‬ﻣﻨﻈﻢ ‪(L :‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬
‫• ﻫﻤﺮﻳﺨﺘﻲ ﻳﺎ ‪: Homomorphism‬‬
‫‪ o‬ﺑﺎ ﻓﺮﺽ ﺍﻳﻨﻜﻪ ‪ Σ, Γ‬ﺍﻟﻔﺒﺎ ﺑﺎﺷﻨﺪ ‪ ،‬ﺗﺎﺑﻌﻲ ﻣﺎﻧﻨﺪ *‪ h : ΣΓ‬ﺭﺍ ﻫﻤﺮﻳﺨﺘﻲ ﮔﻮﻳﻴﻢ‪.‬‬
‫ﻫﻤﺮﻳﺨﺘﻲ ﻳﻚ ﺟﺎﻳﮕﺰﻳﻨﻲ ﻳﻚ ﺣﺮﻑ ﺑﺎ ﻳﻚ ﺭﺷﺘﻪ ﺍﺳﺖ ‪.‬‬
‫ﻣﻲ ﺗﻮﺍﻥ ﺩﺍﻣﻨﻪ ﺗﺎﺑﻊ ‪ h‬ﺭﺍ ﺑﻪ ﺭﺷﺘﻪ ﻫﺎ ﺑﺴﻂ ﺩﺍﺩ ﻭﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ‪:‬‬

‫‪w = a1 a2 …. an‬‬
‫)‪h(w) = h(a1 ) h(a2) …. h(an‬‬

‫– ﺍﮔﺮ ‪ L‬ﺯﺑﺎﻧﻲ ﺭﻭﻱ ‪ Σ‬ﺑﺎﺷﺪ‪ ،‬ﺗﺼﻮﻳﺮ ﻫﻤﺮﻳﺨﺘﻲ )‪(Homomorphism Image‬‬


‫ﻋﺒﺎﺭﺗﺴﺖ ﺍﺯ ‪:‬‬
‫} ‪h(L) = { h(w) | w є L‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

: ‫• ﻣﺜﺎﻝ‬
: ‫ﻓﺮﺽ ﻛﻨﻴﺪ‬
{
h(a) = dbcc
∑= {a , b} , Г= {b,c,d} , h(b) = bdc

‫ ﻫﻤﺮﻳﺨﺘﻲ‬h(aba) = h(a) h(b) h(a) = dbccbdcdbcc

‫ ﺗﺼﻮﻳﺮ ﻫﻤﺮﻳﺨﺘﻲ‬L {aa,ba}= {dbccdbcc, bdcdbcc}

r = (a+b*)(aa)*

‫ → ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ‬r1=(dbcc + (bdc)*)(dbccdbcc)* h(L) ‫ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﻣﺮﺑﻮﻁ ﺑﻪ‬


‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫• ﻗﻀﻴﻪ ‪:‬‬
‫‪ ‬ﻫﺮﮔﺎﻩ ‪ L‬ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﺑﺎﺷﺪ ‪ ،‬ﻫﻤﺮﻳﺨﺘﻲ ‪ h‬ﺯﺑﺎﻥ ‪ L‬ﻫﻢ ﻣﻨﻈﻢ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ‪ ،‬ﺧﺎﻧﻮﺍﺩﻩ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺗﺤﺖ ﻫﺮ ﻫﻤﺮﻳﺨﺘﻲ ﺩﻟﺨﻮﺍﻩ ﺑﺴﺘﻪ ﺍﺳﺖ‪.‬‬

‫• ﺧﺎﺭﺝ ﻗﺴﻤﺖ ﺯﺑﺎﻥ ﻫﺎ ‪:‬‬


‫‪ ‬ﺍﮔﺮ ‪ L1‬ﻭ ‪ L2‬ﺯﺑﺎﻥ ﻫﺎﻳﻲ ﺑﺮﺭﻭﻱ ﻳﻚ ﺍﻟﻔﺒﺎﻱ ﻣﺸﺘﺮﻙ ﺑﺎﺷﻨﺪ ‪ ،‬ﺧﺎﺭﺝ ﻗﺴﻤﺖ‬
‫ﺭﺍﺳﺖ ‪ L1‬ﺑﻪ ‪ L2‬ﻋﺒﺎﺭﺗﺴﺖ ﺍﺯ ‪:‬‬

‫} ‪L 1/ L2 = { x| xy є L1 , y є L2‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫• ﻣﺜﺎﻝ ‪ :‬ﻣﻄﻠﻮﺑﺴﺖ ‪ L1 / L2‬؟‬

‫} ‪L1 = { an bm | n ≥ 1 , m ≥ 0 } ∪ { ba‬‬
‫} ‪L2 = { bm | m ≥1‬‬
‫} ‪L1 / L2 = { an bm | n ≥ 1 , m ≥ 0‬‬

‫ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ‪ ، q∈Q‬ﻣﻌﻴﻦ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺁﻳﺎ ﺭﺍﻫﻲ ﺑﺎ ﺑﺮﭼﺴﺐ ‪ V‬ﺑﮕﻮﻧﻪ ﺍﻱ ﻛﻪ ‪V ∈ L2‬‬

‫ﺑﺎﺷﺪ‪ ،‬ﺑﻪ ﻳﻚ ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ ﻭﺟﻮﺩﺩﺍﺭﺩ ﻳﺎ ﺧﻴﺮ ‪ .‬ﺍﮔﺮ ﻭﺟﻮﺩﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﻫﺮﺭﺷﺘﻪ ‪ X‬ﺍﮔﺮ ﺑﺮﺍﺑﺮ ﺑﺎ‬
‫)‪ δ(q0,x‬ﺑﺎﺷﺪ ‪ ،‬ﺩﺭ ‪ L1 / L2‬ﺧﻮﺍﻫﺪﺑﻮﺩ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫• ﻟﺬﺍ ﻫﺮﻳﻚ ﺍﺯ ﻭﺿﻌﻴﺖ ﻫﺎﻱ ‪ q0‬ﺍﻟﻲ ‪ q5‬ﺭﺍ ﺗﺴﺖ ﻣﻲ ﻛﻨﻴﻢ ﺗﺎ ﺭﺍﻫﻲ ﺑﺎ ﺑﺮﭼﺴﺐ‬
‫}‪ bb*) {bm|m≥1‬ﻳﺎ )‪ ((b+‬ﺑﻪ ﻳﻜﻲ ﺍﺯ ﻭﺿﻌﻴﺖ ﻫﺎﻱ }‪{q1 , q2 , q4‬‬
‫)‪ (Acceptor‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻳﺎ ﺧﻴﺮ‪ ،‬ﻛﻪ ﻓﻘﻂ ‪ q2‬ﻭ ‪ q1‬ﻭﺍﺟﺪ ﺷﺮﺍﻳﻂ ﻫﺴﺘﻨﺪ‪.‬‬
‫‪DFA → L1‬‬ ‫‪a‬‬
‫‪a‬‬ ‫‪b‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪b‬‬
‫‪a‬‬ ‫‪b‬‬ ‫‪b‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪b‬‬ ‫‪a‬‬

‫‪b‬‬ ‫‪a‬‬ ‫‪a‬‬


‫‪q3‬‬

‫∪‬
‫‪b‬‬ ‫‪a,b‬‬
‫‪q3‬‬ ‫‪q5‬‬
‫‪a,b‬‬
‫‪a‬‬
‫‪b‬‬ ‫‪a‬‬
‫‪q4‬‬ ‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

: ‫ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‬L1 / L2 ‫ﺁﺗﺎﻣﺎﺗﺎﻱ ﺑﺪﺳﺖ ﺁﻣﺪﻩ ﺑﺮﺍﻱ‬


q0 : bq3bq5 … , q1 : bq2bq2 … (Acceptor) , q2 : bq2bq2 … (Acceptor)
q3 : bq5bq5 … , q4 : bq5bq5 …

DFA → L1\ L2
a a b
q0 q1 q2 b
a b
q0 q1 q2 b a
b

b a
a q3
b
q3 q5 a,b

a
a,b

‫ ﺳﺎﺩﻩ ﺍﻭﻟﻴﻪ‬DFA

q4 b a
q0 q1 q2
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫ﺩﺭﻣﺜﺎﻝ ﻓﻮﻕ ‪ L1‬ﻭ ‪ L2‬ﺯﺑﺎﻧﻬﺎﻱ ﻣﻨﻈﻢ ﻣﻲ ﺑﺎﺷﻨﺪ ﻭﻟﺬﺍ ﻃﺒﻖ ﻗﻀﻴﻪ ﺯﻳﺮ ‪ L1 / L2 ،‬ﻧﻴﺰ‬
‫ﻣﻨﻈﻢ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬

‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﺍﮔﺮ ‪ L1‬ﻭ ‪ L2‬ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺑﺎﺷﻨﺪ ‪ ،‬ﺁﻧﮕﺎﻩ ‪ L1 / L2‬ﻧﻴﺰ ﻣﻨﻈﻢ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﺑﻌﺒﺎﺭﺕ ﺩﻳﮕﺮ ‪:‬‬
‫»ﺧﺎﻧﻮﺍﺩﻩ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺗﺤﺖ ﺧﺎﺭﺝ ﻗﺴﻤﺖ ﺭﺍﺳﺖ ﻧﺴﺒﺖ ﺑﻪ ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﺩﻳﮕﺮ ﺑﺴﺘﻪ ﺍﺳﺖ‪«.‬‬

‫• ﻣﺜﺎﻝ ‪ :‬ﻣﻄﻠﻮﺑﺴﺖ ‪ L1 / L2‬؟‬


‫)*‪L1 = L (a*baa‬‬
‫)*‪L2 = L (ab‬‬ ‫• ﺩﺭ ﺯﺑﺎﻥ ‪ ، L2‬ﺣﺘﻤﺎً ﻳﻚ ‪ a‬ﻣﻲ ﺁﻳﺪ‪ ،‬ﻭﻟﻲ ﻣﻲ ﺗﻮﺍﻧﺪ‬
‫‪b‬ﻧﻴﺎﻳﺪ‪ ،‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺎﻳﺴﺘﻲ ‪ a‬ﺭﺍ ﺍﺯ ‪ L1‬ﺣﺬﻑ ﻧﻤﻮﺩ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

: ‫ ﺭﺍ ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﻴﻢ‬L1 ‫ ﻱ ﻣﺮﺑﻮﻁ ﺑﻪ‬DFA ‫ﺍﺑﺘﺪﺍ‬


DFA (L1 )
a

b a
q0 q1 q2 a

q3
a,b
(a*) : L(M0) ∩ L2 = ø
(a*b) : L(M1) ∩ L2 = {a}
(a*baa*) : L(M2) ∩ L2 = {a}
(a*bb(a+b)*) : L(M3) ∩ L2 = ø
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﺯﺑﺎﻥ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ‪ L1 / L2‬ﻋﺒﺎﺭﺕ ﻣﻨﻈﻢ ﺯﻳﺮ ﺧﻮﺍﻫﺪﺑﻮﺩ ‪:‬‬

‫)*‪a*b + a*baa* = a*ba* → L1 / L2 = L(a*ba‬‬


‫‪a‬‬

‫‪b‬‬ ‫‪a‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪a‬‬

‫‪b‬‬
‫}‪∀qєQ = {q0,q1,q2,q3‬‬
‫‪q3‬‬
‫‪a,b‬‬ ‫)‪ ab* (L2‬ﺑﺮﭼﺴﺐ‬ ‫}‪F={q1,q2‬‬
‫}‪F = {q2‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬
‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﺍﮔﺮ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ‪ L‬ﺑﺮﺭﻭﻱ ﺍﻟﻔﺒﺎﻱ ‪ Σ‬ﺑﺼﻮﺭﺕ ﻧﻤﺎﻳﺶ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﻭ *‪ W∈Σ‬ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﺎﺷﺪ‪،‬‬
‫ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺍﻳﻨﻜﻪ ‪ W‬ﺩﺭ ‪ L‬ﺍﺳﺖ ﻳﺎ ﺧﻴﺮ‪ ،‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺑﺪﺍﻥ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻋﻀﻮﻳﺖ ﮔﻮﻳﻨﺪ‪.‬‬

‫• ﻗﻀﻴﻪ ‪:‬‬
‫ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺗﻬﻲ ﺑﻮﺩﻥ ‪ ،‬ﻣﺘﻨﺎﻫﻲ ﻳﺎ ﻏﻴﺮ ﻣﺘﻨﺎﻫﻲ ﺑﻮﺩﻥ ﻳﻚ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﻛﻪ ﺑﺎ ﻧﻤﺎﻳﺶ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺩﺍﺩﻩ‬
‫ﺷﺪﻩ ﺍﺳﺖ ‪ ،‬ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﻭﺟﻮﺩﺩﺍﺭﺩ‪.‬‬
‫• ﺍﺛﺒﺎﺕ ‪:‬‬
‫‪ (1‬ﺍﮔﺮ ﻣﺴﻴﺮ ﺳﺎﺩﻩ ﺍﻱ ﺍﺯ ﺭﺃﺱ ﺍﺑﺘﺪﺍﻳﻲ ‪ DFA‬ﺑﻪ ﻫﺮﻳﻚ ﺍﺯ ﺭﺃﺱ ﻫﺎﻱ ﻧﻬﺎﻳﻲ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺯﺑﺎﻥ‬
‫ﻏﻴﺮ ﺗﻬﻲ ﺍﺳﺖ ‪.‬‬
‫‪ (2‬ﺗﻤﺎﻣﻲ ﺭﺋﻮﺳﻲ ﺭﺍ ﻛﻪ ﺑﺮ ﭘﺎﻳﻪ ﻳﻚ ﭼﺮﺧﻪ ﻫﺴﺘﻨﺪ ﺭﺍ ﭘﻴﺪﺍ ﻧﻤﻮﺩﻩ‪ ،‬ﺍﮔﺮ ﺍﻳﻦ ﺭﺋﻮﺱ ﺑﺮﺭﻭﻱ ﻳﻜﻲ ﺍﺯ‬
‫ﻣﺴﻴﺮ ﻫﺎﻱ ﺭﺃﺱ ﻣﺒﺪﺃ ﺑﻪ ﻳﻚ ﻣﺒﺪﺃ ﺑﻪ ﻳﻚ ﺭﺃﺱ ﻧﻬﺎﻳﻲ ﺑﺎﺷﻨﺪ‪ ،‬ﺯﺑﺎﻥ ﻣﺘﻨﺎﻫﻲ ﺍﺳﺖ ﻭ ﺩﺭ ﻏﻴﺮ ﺍﻳﻨﺼﻮﺕ‬
‫ﻏﻴﺮ ﻣﺘﻨﺎﻫﻲ ﺍﺳﺖ ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬
‫• ﻗﻀﻴﻪ ‪:‬‬
‫• ﺍﮔﺮ ﺩﻭﺯﺑﺎﻥ ‪ L1‬ﻭ ‪ L2‬ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻧﻤﺎﻳﺶ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ‪ ،‬ﺁﻧﮕﺎﻩ ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ‬
‫ﺍﻳﻨﻜﻪ ﺁﻳﺎ ‪ L1 = L2‬ﺍﺳﺖ ﻳﺎ ﺧﻴﺮ ‪ ،‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬

‫• ﺗﺸﺨﻴﺺ ﺯﺑﺎﻧﻬﺎﻱ ﻏﻴﺮ ﻣﻨﻈﻢ ‪:‬‬


‫• ﺍﺻﻞ ﻻﻧﻪ ﻛﺒﻮﺗﺮ ‪ n :‬ﺷﻲ ﺭﺍ ﺩﺭ ‪ m‬ﺟﻌﺒﻪ ﻗﺮﺍﺭ ﺩﻫﻴﻢ ﺑﻪ ﻃﻮﺭﻳﻜﻪ ‪) .n > m‬ﺣﺪﺍﻗﻞ ﻳﻚ‬
‫ﺟﻌﺒﻪ ﺑﺎﻳﺪ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﺷﻲ ﺭﺍ ﺩﺭ ﺧﻮﺩ ﺟﺎﻱ ﺩﺍﺩﻩ ﺑﺎﺷﺪ‪(.‬‬

‫• ﻣﺜﺎﻝ ‪ :‬ﺁﻳﺎ ﺯﺑﺎﻥ }‪ L={an bn | n ≥ 0‬ﻣﻨﻈﻢ ﺍﺳﺖ ؟ ﺧﻴﺮ‬


‫• ﺑﺮﻫﺎﻥ ﺧﻠﻒ ‪ :‬ﻓﺮﺽ ﻛﻨﻴﻢ ‪ L‬ﻣﻨﻈﻢ ﺍﺳﺖ‪ ،‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻳﻚ ‪ DFA‬ﺑﻨﺎﻡ }‪M=(Q,{a,b},δ,q0,F‬‬
‫ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬
‫ﺗﻌﺩﺍﺩ ﻧﺎﻣﺣﺩﻭﺩﻱ ‪ i‬ﻭﺟﻭﺩ ﺩﺍﺭﺩ‪ ،‬ﺍﻣﺎ ﺗﻌﺩﺍﺩ ﻣﻌﻳﻧﯽ ﻭﺿﻌﻳﺕ ‪ state‬ﺩﺭ ‪ M‬ﻭﺟﻭﺩﺩﺍﺭﺩ ‪ :‬ﺑﻪ ﺍﺯﺍﻱ )…‪δ*(q0,ai) (i=1,2,‬‬

‫ﺑﻨﺎﺑﺮ ﺍﺻﻞ ﻻﻧﻪ ﻛﺒﻮﺗﺮ ←‬


‫‪δ* (q‬‬ ‫‪0‬‬‫) ‪,an‬‬
‫‪=q‬‬
‫‪δ* (q0,am) = q‬‬ ‫)‪(m ≠n‬‬

‫ﺍﻣﺎﭼﻮﻥ ‪ M‬ﻋﺒﺎﺭﺕ ‪ an bn‬ﺭﺍﻣﻲ ﭘﺬﻳﺮﺩ ﺑﺎﻳﺪ ‪ ، δ*(q,bn ) = qf∈F‬ﻟﺬﺍ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ‪:‬‬

‫‪δ* (q0,am bn) = δ* (δ*(q0,am),bn) = δ* (q,bn) = qf‬‬

‫ﻛﻪ ﺍﻳﻦ ﺧﻼﻑ ﻓﺮﺽ ﺍﻭﻟﻴﻪ ﺍﺳﺖ ‪ M .‬ﺩﺭﺻﻮﺭﺗﻲ ‪ an bn‬ﺭﺍﻣﻲ ﭘﺬﻳﺮﺩ ﻛﻪ ‪ n = m‬ﺑﺎﺷﺪ‪.‬‬

‫ﺑﻌﺒﺎﺭﺗﻲ ﺩﻳﮕﺮ ‪ :‬ﻳﻚ ﺁﺗﺎﻣﺎﻱ ﻣﺘﻨﺎﻫﻲ ﻛﻪ ﺩﺍﺭﺍﻱ ﺣﺎﻓﻈﻪ ﺍﻱ ﻣﺤﺪﻭﺩ ﺍﺳﺖ ‪ ،‬ﻭﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ‪an bn‬‬
‫ﺭﺍ ﺑﭙﺬﻳﺮﺩ‪ ،‬ﻧﻴﺎﺯ ﺑﻪ ﺣﺎﻓﻈﻪ ﻧﺎﻣﺘﻨﺎﻫﻲ ﺩﺍﺭﺩ ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫• ﻟ‪‬ﻢ ﺗﺰﺭﻳﻖ ‪:‬‬


‫‪ ‬ﺩﺭﻳﻚ ﮔﺮﺍﻑ ﺗﻐﻴﻴﺮ ﻭﺿﻌﻴﺖ ﺑﺎ ‪ n‬ﺭﺃﺱ ‪ ،‬ﻫﺮ ﺭﺍﻫﻲ ﺑﺎ ﻃﻮﻝ ‪ n‬ﻳﺎ ﻃﻮﻻﻧﻲ ﺗﺮ ﺑﺎﻳﺪ ﻳﻚ‬
‫ﺭﺃﺱ ﺭﺍ ﺗﻜﺮﺍﺭ ﻛﻨﺪ‪) .‬ﺩﺍﺭﺍﻱ ﭼﺮﺧﻪ(‬

‫• ﻗﻀﻴﻪ ‪:‬‬
‫‪ ‬ﺍﮔﺮ ‪ L‬ﻳﻚ ﺯﺑﺎﻥ ﻧﺎﻣﺘﻨﺎﻫﻲ ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ ‪ m≥0‬ﻭﺟﻮﺩﺩﺍﺭﺩ ﺑﻪ ﻃﻮﺭﻳﻜﻪ ﻫﺮﺭﺷﺘﻪ‬
‫‪ ، (|w|≥m) w∈L‬ﻣﻴﺘﻮﺍﻧﺪ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺗﺠﺰﻳﻪ ﮔﺮﺩﺩ ‪:‬‬
‫‪W = xyz → |xy| ≤ m → |y|≥1‬‬
‫)…‪Wi = xyiz (i = 0,1,‬‬
‫ﻣﻲ ﮔﻮﻳﻴﻢ ﺭﺷﺘﻪ ﻭﺳﻄﻲ ) ‪ ( y‬ﺗﺰﺭﻳﻖ ﺷﺪﻩ ﺍﺳﺖ ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫ﻣﺜﺎﻝ ‪ :‬ﻧﺸﺎﻥ ﺩﻫﻴﺪ ﻛﻪ }‪ L = {an bn | n ≥ 0‬ﻣﻨﻈﻢ ﻧﻤﻲ ﺑﺎﺷﺪ ؟‬

‫ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ‪ L‬ﻣﻨﻈﻢ ﺍﺳﺖ‪ .‬ﻣﻘﺪﺍﺭ ‪ m‬ﻣﺠﻬﻮﻝ ﺍﺳﺖ ﺍﻣﺎ ﻫﻤﻮﺍﺭﻩ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ‪ m = n‬ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﺋﻴﻢ‪.‬‬
‫ﺑﻨﺎﺑﺮﺍﻳﻦ ﺯﻳﺮ ﺭﺷﺘﻪ ‪ y‬ﺑﺎﻳﺴﺘﻲ ﻓﻘﻂ ﺍﺯ ‪ a‬ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺮﺽ ﻛﻨﻴﻢ ‪ ، |y|= k‬ﺁﻧﮕﺎﻩ ﺭﺷﺘﻪ ﺍﻱ ﻛﻪ ﺑﻪ ﺍﺯﺍﻱ ‪ i = 0‬ﺩﺭ ﻣﻌﺎﺩﻟﻪ )‪w0= am-k bm ، (Wi = xyiz‬‬

‫ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ ﻛﻪ ﻗﻄﻌﺎً ﺩﺭ ‪ L‬ﻧﻴﺴﺖ ﻭﻣﻐﺎﻳﺮ ﺑﺎ ﻟ‪‬ﻢ ﺗﺰﺭﻳﻖ ﺍﺳﺖ ﻭ ‪ L‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫ﻣﺜﺎﻝ ‪ :‬ﺑﺎ ﻓﺮﺽ }‪ ،Σ = {a,b‬ﻧﺸﺎﻥ ﺩﻫﻴﺪ ﻛﻪ }*‪ L= {wwR | w∈Σ‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ؟‬

‫‪m‬‬ ‫‪n‬‬ ‫‪m‬‬ ‫‪m‬‬


‫‪a …….. a b …….. b b …….. b a …….. a‬‬ ‫ﻓﻘﻂ ﺍﺯ ‪ a‬ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺑﺎﺷﺪ ‪ → y :‬ﺣﺎﻟﺖ ﺧﺎﺹ‬
‫‪x y‬‬ ‫‪z‬‬

‫ﺩﺭ ﺭﺷﺘﻪ ‪ Wi = xyiz‬ﺑﻪ ﺍﺯﺍﻱ )‪ ← W0=xy0z ← (i = 0‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺩﺭ ﺳﻤﺖ ﭼﭗ ﺭﺷﺘﻪ ﺗﻌﺪﺍﺩ‬


‫ﻛﻤﺘﺮﻱ ‪ a‬ﺍﺯ ﺳﻤﺖ ﺭﺍﺳﺖ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻭ ﻧﻤﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﺻﻮﺭﺕ ‪ wwR‬ﺑﺎﺷﺪ‪ ،‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻣﻨﻈﻢ ﻧﻴﺴﺖ ‪.‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫ﻣﺜﺎﻝ ‪ :‬ﻧﺸﺎﻥ ﺩﻫﻴﺪ ﻛﻪ ﺯﺑﺎﻥ })‪ ، L ={w∈Σ | na(w) < nb(w‬ﺑﺎ ﻓﺮﺽ }‪ ، Σ={a,b‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ ؟‬

‫ﻣﻌﻠﻮﻡ‬ ‫‪m → w = am bm+1‬‬ ‫»ﻓﺮﺽ«‬

‫ﺗﻌﺩﺍﺩ ‪a,b‬‬
‫‪ → y = ak , 1 ≤ k ≤ m‬ﺍﻧﺘﺨﺎﺏ ﺣﺎﻭﻱ ﻓﻘﻂ ‪y : a‬‬
‫‪wi = xyiz‬‬
‫‪|y| ≥ 1 , |xy| ≤ m‬‬

‫»ﻓﺮﺽ«‬ ‫‪ L‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ → ‪i = 2 → w2 = am+k bm+1 ∉ L‬‬


‫‪xy‬‬ ‫‪z‬‬
‫‪am . ak = am+k‬‬
‫ﻓﺼﻞ ﭼﻬﺎﺭﻡ‬

‫• ﻣﺜﺎﻝ ‪ :‬ﻧﺸﺎﻥ ﺩﻫﻴﺪ ﻛﻪ ﺯﺑﺎﻥ }‪ L = {an ! | n ≥ 0‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ ؟‬

‫!‪ m → w = am‬ﻣﻌﻠﻮﻡ ‪ :‬ﻓﺮﺽ‬


‫‪wi = xyiz‬‬ ‫‪|y|= k ≤ m‬‬

‫ﻃﻮﻝ ﺭﺷﺘﻪ ‪ / y‬ﻛﻞ ﻃﻮﻝ ﺭﺷﺘﻪ‬

‫‪|xz|= m!- k → j! = m!- k‬‬

‫ﻏﻴﺮ ﻣﻤﻜﻦ ← ﺯﻳﺮﺍ ‪ k ≤ m , m > 2‬ﺩﺍﺭﻳﻢ ‪ L ← m! - k > (m-1)! :‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ‪.‬‬


‫ﻓﺻﻝ ﭘﻧﺟﻡ‬
‫ﺯﺑﺎﻧﻬﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫‪ ‬ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ‪Context Free Language (CFL) :‬‬

‫ﻣﺜﺎﻝ ‪ :‬ﺯﺑﺎﻥ ﻏﻴﺮ ﻣﻨﻈﻢ }‪ (( )) ← L = {an bn | n ≥ 0‬ﺻﺤﻴﺢ ‪ ،‬ﻭﻟﻲ ) (( ﺻﺤﻴﺢ ﻧﻴﺴﺖ‪.‬‬


‫ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ‪a , b‬‬ ‫ﺯﻭﺝ ﻣﺮﺗﺐ ) ‪( ,‬‬

‫ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺩﺭ ﺯﺑﺎﻥ ﻫﺎﻱ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯﻱ ﻭ ﻛﺎﻣﭙﺎﻳﻠﺮﻫﺎ ﻛﺎﺭﺑﺮﺩ ﻓﺮﺍﻭﺍﻧﻲ ﺩﺍﺭﺩ‪.‬‬

‫• ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ‪:‬‬


‫ﺑﺮﺍﻱ ﺗﻮﻟﻴﺪ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻗﻮﻱ ﺗﺮ ﺑﺎﻳﺪ ﻣﺤﺪﻭﺩﻳﺖ ﻫﺎ ﺭﺍ ﺣﺬﻑ ﻧﻤﺎﺋﻴﻢ‪ .‬ﺑﺎ ﺣﻔﻆ ﻣﺤﺪﻭﺩﻳﺖ ﺳﻤﺖ ﭼﭗ ﻣﻮﻟﺪ‬
‫)ﻭﺑﺎ ﻣﺠﺎﺯ ﺳﺎﺧﺘﻦ ﻫﺮ ﭼﻴﺰﻱ ﺩﺭ ﺳﻤﺖ ﺭﺍﺳﺖ ﻣﻮﻟﺪ ( ﺑﻪ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻲ ﺭﺳﻴﻢ ‪.‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫‪ ‬ﮔﺮﺍﻣﺮ )‪ G(V,T,S,P‬ﺭﺍ ﺩﺭ ﺻﻮﺭﺗﻲ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻲ ﻧﺎﻣﻴﻢ ﻛﻪ ﻫﻤﻪ ﻗﻮﺍﻧﻴﻦ ‪ P‬ﺑﺼﻮﺭﺕ ‪:‬‬
‫‪AX‬‬
‫‪X ∈ (V U T)* , A ∈ V‬‬

‫ﺑﺎﺷﻨﺪ ﻭ ﺯﺑﺎﻥ ‪ L‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺍﺳﺖ‪ ،‬ﺍﮔﺮﻭ ﻓﻘﻂ ﺍﮔﺮ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ‪ G‬ﻣﻮﺟﻮﺩ ﺑﺎﺷﺪ ﺑﻄﻮﺭﻳﻜﻪ )‪.L = L(G‬‬

‫‪ ‬ﻫﺮ ﮔﺮﺍﻣﺮ ﻣﻨﻈﻢ ‪ ،‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺍﺳﺖ ﻭ ﺩﺭ ﻧﺘﻴﺠﻪ ﺯﺑﺎﻥ ﻣﻨﻈﻢ ﻧﻴﺰ‪ ،‬ﺯﺑﺎﻥ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺍﺳﺖ‪ .‬ﻭﻟﻲ ﺯﺑﺎﻥ‬
‫}‪ L = {an bn | n ≥ 0‬ﻣﻨﻈﻢ ﻧﻴﺴﺖ‪ ،‬ﻭﻟﻲ ﺑﺎ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻨﻲ ﺑﻮﺟﻮﺩ ﻣﻲ ﺁﻳﺪ‪.‬‬

‫ﺑﻨﺎﺑﺮ ﺍﻳﻦ ‪ :‬ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﻨﻈﻢ ﺯﻳﺮﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﺍﺳﺖ‪.‬‬

‫‪ ‬ﺩﺭ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻲ ﺗﻮﺍﻥ ﺟﺎﻳﮕﺰﻳﻨﻲ ﻣﺘﻐﻴﺮﻫﺎﻱ ﺳﻤﺖ ﭼﭗ ﻳﻚ ﻗﺎﻧﻮﻥ ﺭﺍ ﺩﺭ ﻫﺮ ﺯﻣﺎﻧﻲ ﻛﻪ ﺍﻳﻦ‬
‫ﻣﺘﻐﻴﺮ ﺩﺭ ﻳﻚ ﺷﻜﻞ ﺟﻤﻠﻪ ﺍﻱ ﺩﻳﺪﻩ ﻣﻲ ﺷﻮﺩ‪ ،‬ﺍﻧﺠﺎﻡ ﺩﺍﺩ‪ ،‬ﻭ ﺍﻳﻦ ﺑﺴﺘﮕﻲ ﺑﻪ ﺑﻘﻴﻪ ﺷﻜﻞ ﺟﻤﻠﻪ ﻧﺪﺍﺭﺩ‪) .‬ﻣﺠﺎﺯ ﺑﻪ‬
‫ﺍﻧﺘﺨﺎﺏ ﻓﻘﻂ ﻳﻚ ﻣﺘﻐﻴﺮ ﺩﺭ ﺳﻤﺖ ﭼﭗ ﻗﺎﻧﻮﻥ ﻫﺴﺘﻴﻢ‪(.‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫ﮔﺮﺍﻣﺮ ‪ G‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺍﺳﺖ ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫)‪G = ({S},{a,b},S,P‬‬
‫‪S → aSa‬‬
‫‪P‬‬ ‫‪S → bSb‬‬
‫‪S→λ‬‬

‫‪ : S → aSa → aaSaa → aabbaa‬ﻧﻤﻮﻧﻪ ﺍﺷﺘﻘﺎﻕ‬ ‫)ﻣﻨﻈﻢ ﻧﻴﺴﺖ(‬

‫} *}‪L (G) = { wwR | w ∈ {a,b‬‬


‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫ﮔﺮﺍﻣﺮ ‪ G‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺍﺳﺖ ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫)‪G = ({S,A,B},{a,b},S,P‬‬
‫‪S → abB‬‬
‫‪P‬‬ ‫‪A → aaBb | λ‬‬
‫‪B → bbAa‬‬

‫} ‪L (G) = { ab(bbaa)n bba(ba)n | n >= 0‬‬

‫‪ ‬ﺩﻭ ﮔﺭﺍﻣﺭ ﻓﻭﻕ‪ ،‬ﮔﺭﺍﻣﺭﻫﺎی ﻣﺳﺗﻘﻝ ﺍﺯ ﻣﺗﻥ ﻭ ﺧﻁﯽ ﺍﻧﺩ ‪ :‬ﮔﺭﺍﻣﺭﻫﺎی ﻣﻧﻅﻡ ﻭﺧﻁﯽ‪،‬‬
‫ﻣﺳﺗﻘﻝ ﺍﺯ ﻣﺗﻥ ﻫﺳﺗﻧﺩ‪ ،‬ﻭﻟﯽ ﻳﮏ ﮔﺭﺍﻣﺭ ﻣﺳﺗﻘﻝ ﺍﺯ ﻣﺗﻥ‪ ،‬ﻟﺯﻭﻣﺎ ﺧﻁﯽ ﻭ ﻳﺎ ﻣﻧﻅﻡ ﻧﻳﺳﺕ‪.‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫ﺯﺑﺎﻥ ‪ L‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺍﺳﺖ ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫} ‪L (G) = { an bm | n ≠ m‬‬
‫ﻏﻴﺮﺧﻄﻲ‬ ‫ﻏﻴﺮﺧﻄﻲ‬
‫‪S  AS1‬‬ ‫‪S  S1 B‬‬
‫→ ‪ n > m‬ﺣﺎﻟﺕ‬ ‫→ ‪ n < m‬ﺣﺎﻟﺕ‬
‫‪S1  aS1b| λ‬‬ ‫‪S1  aS1b| λ‬‬
‫‪A  aA|a‬‬ ‫‪B  bB|b‬‬
‫‪S  AS1 | S1B‬‬
‫‪S1  aS1b| λ‬‬
‫‪A  aA|a‬‬
‫‪B  bB|b‬‬
‫ﮔﺮﺍﻣﺮ ‪ G‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺍﺳﺖ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫)‪G = ({S},{a,b},S,P‬‬
‫→ ‪P : S → SS | aSb | bSa | λ‬‬
‫} )‪L (G) = { w ∈ {a,b}* | na(w) = nb(w‬‬

‫ﺍﺭﺗﺒﺎﻁ ﺍﻳﻦ ﮔﺮﺍﻣﺮ ﺩﺭ ﺯﺑﺎﻧﻬﺎﻱ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯﻱ ﺍﺳﺖ‪ ،‬ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺩﺭ ﻋﺒﺎﺭﺍﺕ ﻣﺎﻧﻨﺪ‪ ،(((a+b)-c)/d)*e :‬ﺗﻌﺪﺍﺩ ( ﻭ ) ﺑﺎﻳﺴﺘﻲ ﻳﻜﺴﺎﻥ ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫• ﺍﺷﺘﻘﺎﻕ ﻫﺎﻱ ﭼﭗ ﻭ ﺭﺍﺳﺖ ‪:‬‬
‫ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻛﻪ ﺧﻄﻲ ﻧﻴﺴﺘﻨﺪ ← ﺍﺷﺘﻘﺎﻕ ﻫﺎ‪ ،‬ﺣﺎﻭﻱ ﺟﻤﻠﻪ ﻫﺎﻳﻲ ﺑﺎ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﻣﺘﻐﻴﺮ ﻫﺴﺘﻨﺪ ‪.‬‬

‫ﻣﺜﺎﻝ ‪:‬‬
‫)‪G = ({S,A,B},{a,b},S,P‬‬
‫‪S → AB‬‬
‫‪P‬‬ ‫‪A → aaA | λ‬‬
‫‪B → Bb | λ‬‬

‫} ‪L (G) = { a2n bm | n >= 0 & m >= 0‬‬

‫‪ 1) S → AB → aaAB → aaB → aaBb → aab‬ﺍﺷﺘﻘﺎﻕ ﭼﭗ‬


‫ﻫﺮﺩﻭ ﺭﺷﺘﻪ ﻫﺎﻱ ﺑﺎﻻﺭﺷﺘﻪ ﻫﺎﻱ ﻳﻜﺴﺎﻥ ﻫﺴﺘﻨﺪ ‪.‬‬
‫‪ 2) S → AB → ABb → aaABb → aaAb → aab‬ﺍﺷﺘﻘﺎﻕ ﺭﺍﺳﺖ‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫• ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ‪:‬‬


‫ﻳﻚ ﺩﺭﺧﺖ ﻣﺮﺗﺐ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥ ﮔﺮﻩ ﻫﺎ ﺑﺎ ﺳﻤﺖ ﭼﭗ ﻗﻮﺍﻧﻴﻦ ﻋﻼﻣﺖ ﮔﺬﺍﺭﻱ ﻣﻲ ﺷﻮﻧﺪ ﻭ ﺑﭽﻪ ﻫﺎﻱ ﻳﻚ ﮔﺮﻩ ‪،‬‬
‫ﺳﻤﺖ ﺭﺍﺳﺖ ﺁﻥ ﻗﺎﻧﻮﻥ ﻫﺴﺘﻨﺪ‪.‬‬

‫‪A‬‬
‫ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ﻗﺎﻧﻮﻥ ‪ A → abABc‬ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺍﺳﺖ‬ ‫ﻣﺜﺎﻝ ‪:‬‬

‫‪a‬‬ ‫‪b‬‬ ‫‪A‬‬ ‫‪B‬‬ ‫‪c‬‬


‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫• ﺗﻌﺮﻳﻒ ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ‪:‬‬


‫ﺑﺎ ﻓﺮﺽ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺑﻮﺩﻥ ﮔﺮﺍﻣﺮ )‪ ، G = (V,T,S,P‬ﻳﻚ ﺩﺭﺧﺖ ﻣﺮﺗﺐ ﺍﺷﺘﻘﺎﻕ ﺑﺮﺍﻱ ‪ G‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪،‬‬
‫ﺍﮔﺮﻭﻓﻘﻂ ﺍﮔﺮ ﺩﺍﺭﺍﻱ ﺧﻮﺍﺹ ﺯﻳﺮ ﺑﺎﺷﺪ ‪:‬‬

‫ﺭﻳﺸﻪ ‪ ،‬ﺑﺮﭼﺴﺐ ‪ S‬ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬


‫ﻫﺮ ﻳﻚ ﺍﺯ ﺑﺮگ ﻫﺎ ‪ ،‬ﺑﺮﭼﺴﺒﻲ ﺍﺯ } { ‪ T U‬ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬
‫ﻫﺮﻳﻚ ﺍﺯ ﮔﺮﻩ ﻫﺎﻱ ﺩﺭﻭﻧﻲ)ﻏﻴﺮﺑﺮگ( ‪ ،‬ﺩﺍﺭﺍﻱ ﺑﺮﭼﺴﺒﻲ ﺍﺯ ‪ V‬ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬
‫ﺍﮔﺮ ﮔﺮﻫﻲ ﺑﺎ ﺑﺮﺟﺴﺐ ‪ A V‬ﺑﺎﺷﺪ ﻭ ﻓﺮﺯﻧﺪﺍﻥ ﺁﻥ ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ ﺑﺼﻮﺭﺕ‬ ‫‪‬‬
‫→ ‪ A‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬ ‫ﺑﺮﭼﺴﺐ ﮔﺬﺍﺭﻱ ﺷﻮﻧﺪ‪ ،‬ﺁﻧﮕﺎﻩ ‪ P‬ﺩﺍﺭﺍﻱ ﻗﺎﻧﻮﻥ‬
‫ﺑﺮﮔﻲ ﻛﻪ ﺑﺮﭼﺴﺐ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ‪ ،‬ﻫﻴﭻ ﺧﺎﻧﻮﺍﺩﻩ ﺍﻱ ﻧﺪﺍﺭﺩ ‪ ،‬ﻳﻌﻨﻲ ﮔﺮﻫﻲ ﻛﻪ ﺩﺍﺭﺍﻱ ﻓﺮﺯﻧﺪﻱ ﺑﺎ ﺑﺮﭼﺴﺐ‬ ‫‪‬‬
‫ﺑﺎﺷﺪ ‪ ،‬ﻓﺮﺯﻧﺪ ﺩﻳﮕﺮﻱ ﻧﺪﺍﺭﺩ‪.‬‬

‫‪ ‬ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ‪ ،‬ﺫﺍﺗﺎ ﻣﺒﻬﻢ ﺍﺳﺖ‪.‬‬


‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫• ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ﺟﺰﺋﻲ ‪:‬‬


‫ﺩﺭﺧﺘﻲ ﻛﻪ ﺩﺍﺭﺍﻱ ﺧﺎﺻﻴﺖ ‪ 3,4,5‬ﺑﺎﺷﺪ ﻭﺧﺎﺻﻴﺖ ‪1‬ﺩﺭﺁﻥ ﻟﺰﻭﻣﺎ ﺻﺪﻕ ﻧﻜﻨﺪ ﻭﺧﺎﺻﻴﺖ ‪ 2‬ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺑﺎﺷﺪ‪:‬‬
‫ﻫﺮﺑﺮگ ﺩﺍﺭﺍﻱ ﺑﺮﭼﺴﺐ } { ‪ V U T U‬ﺑﺎﺷﺪ‪.‬‬

‫ﺭﺷﺘﻪ ﺍﻱ ﻛﻪ ﺍﺯﺧﻮﺍﻧﺪﻥ ﺑﺮگ ﻫﺎﻱ ﺩﺭﺧﺖ ﺍﺯ ﭼﭗ ﺑﻪ ﺭﺍﺳﺖ ‪ ،‬ﭘﺲ ﺍﺯﺣﺬﻑ ﻫﺎ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ ‪ ،‬ﺣﺎﺻﻞ ﺩﺭﺧﺖ ﮔﻮﻳﻨﺪ‪.‬‬

‫ﺩﺭﮔﺮﺍﻣﺮﻱ ﺑﺎ ﻗﻮﺍﻧﻴﻦ ﺯﻳﺮ ‪:‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫)‪G = ({S,A,B},{a,b},S,P‬‬ ‫‪S  aAB‬‬
‫‪P‬‬ ‫‪A  bBb‬‬
‫|‪B  A‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫‪S‬‬

‫‪S‬‬
‫‪a‬‬ ‫‪A‬‬ ‫‪B‬‬
‫‪a‬‬ ‫‪A‬‬ ‫‪B‬‬
‫‪b‬‬ ‫‪B‬‬ ‫‪b‬‬ ‫‪A‬‬
‫‪b‬‬ ‫‪B‬‬ ‫‪b‬‬
‫‪λ‬‬ ‫‪b‬‬ ‫‪B‬‬ ‫‪b‬‬
‫ﺩﺭﺧﺕ ﺍﺷﺗﻘﺎﻕ ﺟﺯﺋﯽ‬
‫ﺩﺭﺧﺕ ﺍﺷﺗﻘﺎﻕ ‪G‬‬
‫‪λ‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
L (G) = { w ∈ {a,b}* | na(w) = nb(w) } S : ‫ﻣﺜﺎﻝ‬

S → aSb | bSa | SS | λ S S

‫ ﺭﺷﺘﻪ ﻓﺮﺿﻲ‬: aabababbab


a S b a S b

a S b λ

‫ﺍﺷﺘﻘﺎﻕ ﭼﭗ‬ b S a

a S b

λ
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫‪ ‬ﻗﻀﻴﻪ ‪:‬‬
‫‪ ،‬ﻳﻚ ﺩﺭﺧﺖ‬ ‫ﺑﺎ ﻓﺮﺽ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺑﻮﺩﻥ ﮔﺮﺍﻣﺮ )‪ ، G = (V,T,S,P‬ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ‬
‫ﺍﺷﺘﻘﺎﻕ ﺑﺮﺍﻱ ‪ G‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺣﺎﺻﻞ ﺁﻥ ‪ W‬ﺍﺳﺖ ﻭ ﺑﺎﻟﻌﻜﺲ‪.‬‬

‫‪ ‬ﺣﺎﺻﻞ ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ﺩﺭ )‪ L(G‬ﺍﺳﺖ‪.‬‬

‫‪ ‬ﺍﮔﺮ ‪ tG‬ﻳﻚ ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ﺟﺰﺋﻲ ﺑﺮﺍﻱ ‪ G‬ﺑﺎ ﺭﻳﺸﻪ ﻱ ‪ S‬ﺑﺎﺷﺪ ‪ ،‬ﺁﻧﮕﺎﻩ ﺣﺎﺻﻞ ‪ tG‬ﻳﻚ ﺷﻜﻞ ﺟﻤﻠﻪ ﺍﻱ‬
‫ﺍﺯ ‪ G‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫‪ ‬ﭘﻮﻳﺶ ﻭ ﮔﻨﮕﻲ )‪: (Parsing‬‬


‫ﭘﻮﻳﺶ ﻳﻌﻨﻲ ﻳﺎﻓﺘﻦ ﻳﻚ ﺳﺮﻱ ﻗﺎﻧﻮﻥ ﻛﻪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻥ ﻫﺎ )‪ w L(G‬ﻣﺸﺘﻖ ﻣﻲ ﺷﻮﺩ‪.‬‬

‫• ﺍﻟﮕﻮﺭﻳﺘﻢ ﻋﻀﻮﻳﺖ ‪:‬‬


‫ﻛﻠﻴﻪ ﺍﺷﺘﻘﺎﻕ ﻫﺎﻱ ﭼﭗ ﻣﻤﻜﻦ ﺭﺍ ﻣﻴﺴﺎﺯﻳﻢ ﻭ ﻣﻼﺣﻈﻪ ﻣﻴﻜﻨﻴﻢ ﻛﻪ ﺁﻳﺎ ﻳﻜﻲ ﺍﺯ ﺁﻥ ﻫﺎ ﺑﺎ ‪ w‬ﻣﻨﻄﺒﻖ ﻣﻴﺸﻮﺩ ﻳﺎ ﺧﻴﺮ‪.‬‬

‫ﺩﺭ ﺩﻭﺭ ﺍﻭﻝ ‪ ،‬ﻫﻤﻪ ﻱ ﻗﻮﺍﻧﻴﻨﻲ ﻛﻪ ﺑﻪ ﺷﻜﻞ ‪ S → x‬ﻫﺴﺘﻨﺪ ‪ ،‬ﻣﻴﺎﺑﻴﻢ‪ .‬ﺍﮔﺮ ﻫﻴﭻ ﻳﻚ ﺑﺎ ‪ w‬ﺍﻧﻄﺒﺎﻕ ﻧﺪﺍﺷﺖ ‪ ،‬ﺁﻧﮕﺎﻩ ‪:‬‬
‫ﺩﺭ ﺩﻭﺭ ﺩﻭﻡ ‪ ،‬ﻫﻤﻪ ﻱ ﻗﻮﺍﻧﻴﻨﻲ ﻛﻪ ﻗﺎﺑﻞ ﺍﻋﻤﺎﻝ ﺑﺮ ﺭﻭﻱ ﻣﺘﻐﻴﺮ ﭼﭗ ﻫﻤﻪ ﻱ ‪ x‬ﻫﺎ ﺍﺳﺖ ‪ ،‬ﻣﻴﺎﺑﻴﻢ‪.‬‬

‫ﺍﻳﻦ ﺭﻭﺵ ‪ ،‬ﻳﻚ ﺍﺷﺘﻘﺎﻕ ﭼﭗ ﺍﺯ ‪ w‬ﺍﺭﺍﺋﻪ ﻣﻲ ﻛﻨﺪ‪ .‬ﺍﻳﻦ ﺭﻭﺵ ‪ ،‬ﺭﻭﺵ ﭘﻮﻳﺶ ﺟﺴﺘﺠﻮﻱ ﻛﺎﻣﻞ ﺍﺳﺖ ﻭ ﻧﻮﻋﻲ ﭘﻮﻳﺶ‬
‫ﺑﺎﻻ ﺑﻪ ﭘﺎﻳﻴﻦ )ﺭﻳﺸﻪ ﺑﻪ ﺑﺮگ ﻫﺎ( ﻣﻲ ﺑﺎﺷﺪ ‪.‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫ﮔﺮﺍﻣﺮ ﺯﻳﺮ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬
‫‪S  SS | aSb | bSa | λ‬‬
‫‪w = aabb‬‬

‫ﺣﺬﻑ ﺩﺳﺘﻮﺭ ‪ 3‬ﻭ ‪) 4‬ﻋﺪﻡ ﺍﻧﻄﺒﺎﻕ ﺑﺎ ‪(w‬‬

‫‪1.‬‬ ‫‪S  SS‬‬


‫‪ → P‬ﺩﻭﺭ ﺍﻭﻝ‬ ‫‪2.‬‬ ‫‪S  aSb‬‬
‫‪3.‬‬ ‫‪S  bSa‬‬
‫‪4.‬‬ ‫‪Sλ‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫ﺍﻳﻦ ﻗﻮﺍﻧﻴﻦ ﺣﺎﺻﻞ ﺩﺳﺘﻮﺭ ‪ 1‬ﺑﻮﺩﻩ ﻭﺍﺯ ﺍﺷﺘﻘﺎﻕ ‪ S‬ﺩﺭﺳﻤﺖ ﭼﭗ ﺩﺳﺘﻮﺭ ‪ 1‬ﺑﺪﺳﺖ ﺁﻣﺪﻩ ﺍﺳﺖ‪) .‬ﺣﺬﻑ ﺩﺳﺘﻮﺭ ‪(1.3‬‬
‫‪1.1.‬‬ ‫‪S  SS  SSS‬‬
‫‪1.2.‬‬ ‫‪S  SS  aSbS‬‬
‫‪ → P‬ﺩﻭﺭ ﺩﻭﻡ‬
‫‪1.3.‬‬ ‫‪S  SS  bSaS‬‬
‫‪1.4.‬‬ ‫‪S  SS  S‬‬
‫‪2.1.‬‬ ‫‪S  aSb  aSSb‬‬
‫‪2.2.‬‬ ‫‪S  aSb  aaSbb‬‬
‫‪ → P‬ﺩﻭﺭ ﺳﻭﻡ‬
‫‪2.3.‬‬ ‫‪S  aSb  abSab‬‬
‫‪2.4.‬‬ ‫‪S  aSb  ab‬‬
‫ﺣﺬﻑ ﻗﻮﺍﻧﻴﻦ ‪ 2.3‬ﻭ ‪2.4‬‬
‫‪S  aSb  aaSbb  aabb‬‬ ‫ﺭﺷﺗﻪ ﻧﻬﺎﻳﯽ‬

‫‪ ‬ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﻣﺸﺎﻫﺪﻩ ﻣﻲ ﺷﻮﺩ‪ ،‬ﺍﻳﻦ ﺭﻭﺵ ﺩﺍﺭﺍﻱ ﻣﺸﻜﻞ ﺍﺳﺖ‪ .‬ﻣﺸﻜﻞ ﻧﺎﻣﻌﻴﻦ ﺑﻮﺩﻥ ﻭﻋﺪﻡ ﺗﻮﻗﻒ ﺁﻥ ﺍﺳﺖ‪.‬‬
‫ﻣﺸﻜﻞ ﻗﺎﻧﻮﻥ ‪ S → λ‬ﻣﻴﺒﺎﺷﺪ‪ .‬ﺍﺯ ﺍﻳﻦ ﻗﺎﻧﻮﻥ ﺑﺮﺍﻱ ﻛﺎﻫﺶ ﻃﻮﻝ ﺷﻜﻞ ﻫﺎﻱ ﺟﻤﻠﻪ ﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﺸﻮﺩ‪ ،‬ﻭﻟﻲ ﺑﻪ ﺳﺎﺩﮔﻲ‬
‫ﻧﻤﻴﺘﻮﺍﻥ ﺗﺸﺨﻴﺺ ﺩﺍﺩ ﻛﻪ ﭼﻪ ﺯﻣﺎﻧﻲ ﺑﺎﻳﺪ ﺗﻮﻗﻒ ﻛﺮﺩ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﻗﻮﺍﻧﻴﻦ ‪ A → B , A → λ‬ﺭﺍ ﻧﺒﺎﻳﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ‪.‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫ﺑﺎ ﻓﺮﺽ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺑﻮﺩﻥ )‪ G = (V,T,S,P‬ﻛﻪ ﻫﻴﭻ ﻗﺎﻧﻮﻧﻲ ﺑﻪ ﺷﻜﻞ‬ ‫‪ ‬ﻗﻀﻴﻪ ‪:‬‬
‫‪ A → λ‬ﻭ ﻳﺎ ‪ ، A → B‬ﺑﻄﻮﺭﻳﻜﻪ ‪ ، A,B ∊ V‬ﻧﺪﺍﺭﺩ‪ .‬ﺭﻭﺵ ﭘﻮﻳﺶ ﺟﺴﺘﺠﻮﻱ ﻛﺎﻣﻞ ﺑﺼﻮﺭﺕ ﺍﻟﮕﻮﺭﻳﺘﻤﻲ‬
‫ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ∊ ‪ ، w‬ﻳﺎ ﻳﻚ ﭘﻮﻳﺶ ﺍﺯ ‪ w‬ﺗﻮﻟﻴﺪ ﻣﻴﻜﻨﺪ ﻭ ﻳﺎ )‪ w ∉ L(G‬ﻧﺨﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬
‫ﺍﺳﺖ ‪ ،‬ﭘﻮﻳﺶ ﻣﻲ ﻛﻨﺪ‪.‬‬ ‫ﺍﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺮ ﺭﺷﺘﻪ )‪ w ∊ L(G‬ﺭﺍ ﺩﺭ ﺗﻌﺪﺍﺩ ﻣﺮﺍﺣﻠﻲ ﻛﻪ ﻣﺘﻨﺎﺳﺐ ﺑﺎ‬

‫• ﮔﺮﺍﻣﺮﺳﺎﺩﻩ )‪: (Simple Grammar‬‬


‫ﺑﻪ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ )‪ ، G = (V,T,S,P‬ﮔﺮﺍﻣﺮﺳﺎﺩﻩ ﻣﻲ ﮔﻮﻳﻨﺪ ﻛﻪ ﺗﻤﺎﻣﻲ ﻗﻮﺍﻧﻴﻦ ﺁﻥ ﺑﻪ ﺷﻜﻞ‬
‫‪ A → aX‬ﻛﻪ ﺩﺭ ﺁﻥ *‪ A∊V , a∊T , X∊V‬ﻭ ﻫﺮﺯﻭﺝ )‪ (A,a‬ﺣﺪﺍﻛﺜﺮ ﻳﻜﺒﺎﺭ ﺩﺭ ‪ P‬ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫ﻣﺜﺎﻝ ‪:‬‬
‫‪1) S → aSbSSc‬‬ ‫‪S-Grammar‬‬
‫‪2) S → aS|bSS|aSS|c‬‬ ‫ﺗﻜﺮﺍﺭ ﺯﻭﺝ )‪(S,a‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ‪ G‬ﺭﺍ ﺩﺭ ﺻﻮﺭﺗﻲ ﮔﻨﮓ ﻣﻲ ﮔﻮﺋﻴﻢ ﻛﻪ ﻳﻚ )‪ w ∊ L(G‬ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ‬ ‫‪‬‬
‫ﺑﺎﺷﺪ ‪ ،‬ﻛﻪ ﺣﺪﺍﻗﻞ ﺩﻭ ﺩﺭﺧﺖ ﺍﺷﺘﻘﺎﻕ ﻣﺘﻔﺎﻭﺕ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬

‫‪S → aSb|SS|λ‬‬ ‫)‪ → (aaabbb‬ﮔﻨﮓ ﺍﺳﺖ‬

‫ﮔﺮﺍﻣﺮ )‪ G = (V,T,S,P‬ﺭﺍ ﺑﺎ } ‪ V = { E,I‬ﻭ } )‪ T = { a,b,c,+,*,(,‬ﻭ ‪ P‬ﺑﺎ ﻗﻮﺍﻧﻴﻦ ‪:‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫)‪E  I | E+E | E*E | (E‬‬
‫‪P‬‬ ‫‪I a|b|c‬‬
‫‪ a*b+c‬ﭘﻴﻤﺎﻳﺶ ﻋﺒﺎﺭﺗﻬﺎﻱ → ﮔﻨﮓ ﺍﺳﺖ‪.‬‬
‫‪a+b*c‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫ﭘﻴﻤﺎﻳﺶ‬

E E

E + E E * E

E I I E + E

E * E c a I I

I I
b c

a b
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫ ﺍﻭﻟﻮﻳﺖ ﻭ ﺗﻘﺪﻡ ﻋﻤﻠﮕﺮﻫﺎ‬: ‫ ﺭﺍﻩ ﺣﻞ‬

.‫ﮔﺮﺍﻣﺮ ﺯﻳﺮ ﻏﻴﺮﮔﻨﮓ ﺍﺳﺖ‬


E → T|E+T E
T → F|T*F
F → (E)|I E + T
I → a|b|c
T F

expr → expr + term | expr – term | term T * F I


term → term * factor | term / factor | factor
F I c
factor → (expr) | digit
digit → 0|1|…|9 b
I

a
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫‪ ‬ﺑﻌﻀﻲ ﺍﺯ ﺯﺑﺎﻧﻬﺎ ﺫﺍﺗﺎ ﮔﻨﮓ ﻫﺴﺘﻨﺪ ﻭ ﮔﺮﺍﻣﺮ ﻏﻴﺮﮔﻨﮕﻲ ﺑﺮﺍﻱ ﺁﻧﻬﺎ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ‪.‬‬

‫ﺯﺑﺎﻥ }‪ ، L = {an bn cm} U {an bm cm‬ﺑﺎﻓﺮﺽ ‪ ، m,n >= 0‬ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﻭ ﺫﺍﺗﺎ ﮔﻨﮓ ﺍﺳﺖ ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬

‫‪L → L1 U L2‬‬ ‫‪; S → S1 | S2‬‬ ‫ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﻭ ﮔﻨﮓ ﺍﺳﺖ‪.‬‬

‫‪S1  S1c| A‬‬


‫‪L1‬‬
‫‪A  aAb | λ‬‬ ‫‪ S1 : S → S1‬ﺗﻌﺪﺍﺩ ‪ a , b‬ﻫﺎ ﺭﺍ ﻣﺤﺪﻭﺩ ﻣﻲ ﻛﻨﺪ ‪.‬‬
‫‪ S2 : S → S2‬ﺗﻌﺪﺍﺩ ‪ b , c‬ﻫﺎ ﺭﺍ ﻣﺤﺪﻭﺩ ﻣﻲ ﻛﻨﺪ ‪.‬‬
‫‪S2  aS2| B‬‬
‫‪L2‬‬
‫‪B  bAc | λ‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

: ‫ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﻭﺯﺑﺎﻥ ﻫﺎﻱ ﺑﺮﻧﺎﻣﻪ ﺳﺎﺯﻱ‬

: BNF ‫• ﻧﻤﺎﺩ‬
< expression > ::= < term > | < expression > + < term >
< term > ::= < factor > | < term > * < factor >

‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯﻛﻠﻤﺎﺕ ﻛﻠﻴﺪﻱ‬


var x , y : real ; var x : integer ;
x , z : integer ; x : = 3.2 ;

< if-statement > ::= if < expression > < then – clouse > < else – clouse >
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
: ‫• ﺗﻤﺮﻳﻨﺎﺕ ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫ ﺑﺮﺍﻱ ﻫﺮﻳﻚ ﺍﺯﺯﺑﺎﻥ ﻫﺎﻱ ﺯﻳﺮ ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﺑﻨﻮﻳﺴﻴﺪ؟‬

S  aSb|aA|bB
1) L = { an bm | n ≠ m -1 } A  aA|λ
B  bB|λ

2) L = { w ∊ (a,b)* | na(w) >= nb(w) }


‫ ﺭﺍﻩ ﺣﻞ ﺍﻭﻝ‬: n > m-1 → ab , aab , … S  aSb|aS|SS|λ
‫ ﺭﺍﻩ ﺣﻞ ﺩﻭﻡ‬: n < m-1 → b , abb , abbb , …

S  aSc|A
3) L = { an bm ck | k = m + n } A  bAc|λ
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬

‫ﺣﺎﻟﺕ‬ ‫ﺣﺎﻟﺕ‬ ‫ﺣﺎﻟﺕ‬


n=m m>k m<k
S  MD|ABE|AHD
M  aMb|λ
D  cD|λ
4) L = { an bm ck | n = m or m ≠ k } A  aA|λ
B  bB|λ
E  bEc|b
H  bHc|c

S  aSb|aAb
5) L = { an ww R bn | w ∈ (a,b)* & n >= 1 }
A  aAa|bAb|λ
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫‪ (6‬ﻧﺸﺎﻥ ﺩﻫﻴﺪ ﻛﻪ ﺯﺑﺎﻥ ﺯﻳﺮ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﺍﺳﺖ؟‬
‫‪S  AB‬‬
‫∈ ‪L = { uvwv | u,v,w‬‬
‫‪R‬‬ ‫& ‪(a,b)+‬‬ ‫} ‪|u|=|w|=2‬‬ ‫‪A  aa|bb|ab|ba‬‬
‫‪B  aBa|bBb|aAa|bAb‬‬

‫‪ (7‬ﻳﻚ ﮔﺮﺍﻣﺮﺳﺎﺩﻩ ﺑﺮﺍﻱ ﺯﺑﺎﻥ } ‪ L = { an bn | n >= 1‬ﺑﻴﺎﺑﻴﺪ؟‬


‫‪S  aA‬‬
‫‪A  aAB|b‬‬ ‫‪S  aSb|ab‬‬
‫‪Bb‬‬

‫‪ (8‬ﻳﻚ ﮔﺮﺍﻣﺮ ﻏﻴﺮﮔﻨﮓ ﺍﺭﺍﺋﻪ ﺩﻫﻴﺪ ﻛﻪ ﻣﺠﻤﻮﻋﻪ ﺗﻤﺎﻡ ﻋﺒﺎﺭﺍﺕ ﻣﻨﻈﻢ ﺭﻭﻱ ﺑﺮﺍﻱ ﺯﺑﺎﻥ }‪ Σ = {a,b‬ﺭﺍ ﺗﻮﻟﻴﺪﻛﻨﺪ؟‬
‫‪S  T|S+T‬‬
‫‪T  F|T.F‬‬
‫‪F  I |(S)|S*|S+‬‬
‫‪I  a|b|λ‬‬
‫ﻓﺼﻞ ﭘﻨﺠﻢ‬
‫ ﺩﺭ ﭘﺎﺳﻜﺎﻝ ﺍﺭﺍﺋﻪ ﺩﻫﻴﺪ؟‬while ‫ ﺑﺮﺍﻱ‬BNF ‫( ﻳﻚ ﻋﺒﺎﺭﺕ‬9
<while exp> ::= while <compare exp> do begin <expression> end ;
<compare exp> ::= <compare exp> and <compare exp> | <compare exp> or <compare exp>
<compare exp> ::= not <compare exp>
<compare exp> ::= ( <compare exp> )
<compare exp> ::= <expression> <compare sign> <expression>
<compare sign > ::= > | >= | < | <= | = | <>
<expression> ::= <expression> <expression> | <variable> := <expression> ;
<expression> ::= <expression> <sign> <expression>
<sign> ::= + | - | * | / | div | mod
<expression> ::= <variable> | <numeric>
<expression> ::= ( <expression> )
<variable> ::= <alphabet> <var>
<alphabet> ::= A | … | Z | a |… | z
<var> ::= <digit> <var>
<var> ::= _ <var> | λ
<numeric> ::= <digit > <numeric> | <digit>
<digit > ::= 0 | 1 | 2 | … | 9
‫ﻓﺻﻝ ﺷﺷﻡ‬
‫ﺳﺎﺩﻩ ﺳﺎﺯﻱ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ‬
‫ﻭ ﻓﺮﻡ ﻫﺎﻱ ﻧﺮﻣﺎﻝ‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪ ‬ﻫﺪﻑ ‪:‬‬
‫ﺗﺒﺪﻳﻞ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺑﻪ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﻌﺎﺩﻟﻲ ﻛﻪ ﻣﺤﺪﻭﺩﻳﺖ ﻫﺎﻱ ﺧﺎﺻﻲ ﺭﺍ ﺭﻋﺎﻳﺖ ﻧﻤﺎﻳﻨﺪ‪.‬‬

‫‪ ‬ﺭﻭﺵ ﻫﺎﻱ ﺗﺒﺪﻳﻞ ﮔﺮﺍﻣﺮﻫﺎ ‪:‬‬


‫‪ (1‬ﺣﺬﻑ ‪ λ‬ﺍﺯ ﮔﺮﺍﻣﺮ ﻫﺎ ‪ :‬ﻓﺮﺽ ﻛﻨﻴﺪ ‪ L‬ﻳﻚ ﺯﺑﺎﻥ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻭ )‪ G=(V,T,S,P‬ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ‬
‫ﺑﺮﺍﻱ }‪ L - {λ‬ﺑﺎﺷﺪ‪ .‬ﺁﻧﮕﺎﻩ ﮔﺮﺍﻣﺮﻱ ﻛﻪ ﺑﺎ ﺍﻓﺰﻭﺩﻥ ‪ S0‬ﺑﻪ ‪ V‬ﺑﻌﻨﻮﺍﻥ ﻧﺸﺎﻧﻪ ﺷﺮﻭﻉ ﺩﺭﻗﺎﻧﻮﻥ ‪ S0  S|λ‬ﺑﺪﺳﺖ‬
‫ﻣﻲ ﺁﻳﺪ‪ ،‬ﺯﺑﺎﻥ ‪ L‬ﺭﺍ ﺗﻮﻟﻴﺪ ﻣﻲ ﻛﻨﺪ‪ .‬ﺑﻌﻼﻭﻩ‪ ،‬ﺍﮔﺮ ﮔﺮﺍﻣﺮﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ‪ G‬ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ‪ ،‬ﻣﻲ ﺗﻮﺍﻥ ‪ Ĝ‬ﺭﺍ ﻃﻮﺭﻱ‬
‫ﺑﻴﺎﺑﻴﻢ ﻛﻪ ‪. L(Ĝ) = L(G) – λ‬‬

‫‪ ‬ﺩﺭ ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ‪ ،‬ﻫﺮ ﻗﺎﻧﻮﻧﻲ ﻛﻪ ﺑﻪ ﺷﻜﻞ ‪ A → λ‬ﺑﺎﺷﺪ ‪ ،‬ﻗﺎﻧﻮﻥ ‪ λ‬ﮔﻮﻳﻨﺪ‪.‬‬
‫‪ ‬ﻫﺮ ﻣﺘﻐﻴﺮﻱ ﻣﺎﻧﻨﺪ ‪ A‬ﻛﻪ ﺑﺮﺍﻱ ﺁﻥ ﺍﺷﺘﻘﺎﻕ ‪ A →…→ λ‬ﻣﻤﻜﻦ ﺑﺎﺷﺪ‪ Nullable ،‬ﮔﻮﻳﻨﺪ‪.‬‬
‫‪ ‬ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﻴﺘﻮﺍﻧﺪ ﺯﺑﺎﻧﻲ ﺭﺍ ﻛﻪ ﺣﺎﻭﻱ ‪ λ‬ﻧﺒﺎﺷﺪ‪ ،‬ﺗﻮﻟﻴﺪ ﻛﻨﺪ ﻭ ﺩﺭ ﻋﻴﻦ ﺣﺎﻝ ﺩﺍﺭﺍﻱ ﻗﻮﺍﻧﻴﻦ ‪ λ‬ﻳﺎ ﻣﺘﻐﻴﺮﻫﺎﻱ‬
‫‪ Nullable‬ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫ ﺭﺍ ﺣﺬﻑ ﻛﻨﻴﺪ؟‬λ ‫ ﻣﺘﻐﻴﺮ‬،‫ﺩﺭﮔﺮﺍﻣﺮﻫﺎﻱ ﺯﻳﺮ‬ : ‫ﻣﺜﺎﻝ‬

S  ABb|λ S  Abb|Ab|Bb|b|AB|A|B|λ
P1 A  aA|λ Ṕ1 A  aA|a
B  bB|λ B  bB|b

S  aS1b S  aS1b|ab
P2 Ṕ2
S1  aS1b|λ S1  aS1b|ab
‫ﻓﺼﻞ ﺷﺸﻢ‬
‫‪ (2‬ﻗﺎﻧﻮﻥ ﺟﺎﻳﮕﺰﻳﻨﻲ ﺳﻮﺩﻣﻨﺪ ‪ :‬ﺣﺬﻑ ﺑﻌﻀﻲ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﻧﺎﻣﻄﻠﻮﺏ ﻛﻪ ﺗﻨﻬﺎ ﺑﺨﺎﻃﺮ ﻛﺎﻫﺶ ﺗﻌﺪﺍﺩ ﻗﻮﺍﻧﻴﻦ ﺻﻮﺭﺕ‬
‫ﻧﻤﻲ ﭘﺬﻳﺮﺩ‪.‬‬

‫ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ )‪ G=(V,T,S,P‬ﺑﺎ ﻗﻮﺍﻧﻴﻦ ‪ A  x1Bx2‬ﺭﺍ ﺩﺭﻧﻈﺮﮔﺮﻓﺘﻪ ﻭﻓﺮﺽ ﻧﻤﺎﻳﻴﺪ ﻛﻪ‬ ‫ﻗﻀﻴﻪ ‪:‬‬ ‫‪‬‬
‫‪ B  y1|y2|…|yn‬ﻣﺠﻤﻮﻋﻪ ﻛﻠﻴﻪ ﻗﻮﺍﻧﻴﻦ ‪ P‬ﻛﻪ ‪ B‬ﺭﺍ ﺩﺭﺳﻤﺖ ﭼﭗ ﺧﻮﺩ ﺩﺍﺭﺩ ‪ ،‬ﺑﺎﺷﻨﺪ‪.‬‬

‫‪ ‬ﺍﮔﺮ )‪ Ĝ=(V,T,S,Ṕ‬ﮔﺮﺍﻣﺮﻱ ﺑﺎﺷﺪ ﻛﻪ ﺩﺭﺁﻥ ‪ Ṕ‬ﺑﺎ ﺣﺬﻑ ‪ A  x1Bx2‬ﺍﺯ ‪ P‬ﻭﺍﻓﺰﻭﺩﻥ ﻗﺎﻧﻮﻥ‬


‫‪ A  x1y1x2| x1y2x2|…|x1ynx2‬ﺑﻪ ﺁﻥ ﺑﺪﺳﺖ ﺁﻣﺪﻩ ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ )‪. L(Ĝ) = L(G‬‬
‫ﻗﻀﻴﻪ ‪ :‬ﺑﺎ ﻓﺮﺽ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﺑﻮﺩﻥ ﮔﺮﺍﻣﺮ )‪ G=(V,T,S,P‬ﺑﺪﻭﻥ ﻗﻮﺍﻧﻴﻦ ‪ ، λ‬ﺁﻧﮕﺎﻩ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ‬ ‫‪‬‬
‫ﺩﻳﮕﺮﻱ )‪ Ĝ=(V,T,S,Ṕ‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﻣﻌﺎﺩﻝ ﮔﺮﺍﻣﺮ ‪ G‬ﺍﺳﺖ ﻭ ﻫﻴﭻ ﻗﺎﻧﻮﻥ ﻳﻜﻪ ﺍﻱ ﻧﺪﺍﺭﺩ‪.‬‬

‫‪ (2.1‬ﺣﺬﻑ ﻗﺎﻧﻮﻥ ‪: Chain‬‬


‫ﺷﺎﻣﻞ ﮔﺮﺍﻣﺮﻫﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﻣﺘﻐﻴﺮﻫﺎ ﺩﺭﺁﻥ ﺑﺼﻮﺭﺕ ‪ A  B‬ﻭ ‪ B  A‬ﻛﻪ ﺩﺭﺁﻧﻬﺎ ‪ ، A,B∈V‬ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺑﺎﺷﺪ‪.‬‬
‫ﺑﻌﺒﺎﺭﺗﻲ ﺩﻳﮕﺮ‪ A ،‬ﻣﺘﻐﻴﺮ ‪ B‬ﺭﺍ ﺗﻮﻟﻴﺪ ﻛﻨﺪ ﻭ ﺑﺎﻟﻌﻜﺲ‪.‬‬

‫‪ (2.2‬ﺣﺬﻑ ﻗﺎﻧﻮﻥ ﻳﻜﻪ ‪:‬‬


‫ﻫﺮﻗﺎﻧﻮﻧﻲ ﻛﻪ ﺑﻪ ﺷﻜﻞ ‪ A  B‬ﻛﻪ ﺩﺭﺁﻥ ‪ A,B∈V‬ﺑﺎﺷﺪ‪ ،‬ﻳﻚ ﻗﺎﻧﻮﻥ ﻳﻜﻪ ﺍﺳﺖ‪.‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬
‫ ﺭﺍ ﺑﻄﻮﺭ ﺳﻮﺩﻣﻨﺪﻱ ﺟﺎﻳﮕﺰﻳﻦ ﻛﻨﻴﺪ؟‬B ‫ ﻣﺘﻐﻴﺮ‬،‫ﺩﺭﮔﺮﺍﻣﺮ ﺯﻳﺮ‬ : ‫ﻣﺜﺎﻝ‬
A  a|aaA|abBc
P Ṕ A  a|aaA|ababbAc|abbc
B  abbA|b

aaabbc ‫ﺭﺷﺘﻪ‬ P A  aaA  aaabBc  aaabbc


Ṕ A  aaA  aaabbc

‫ ﻗﻮﺍﻧﻴﻦ ﻳﻜﻪ ﺭﺍ ﺣﺬﻑ ﻧﻤﺎﻳﻴﺪ؟‬،‫ﺩﺭﮔﺮﺍﻣﺮ ﺯﻳﺮ‬ : ‫ﻣﺜﺎﻝ‬


S  Aa|B SA
P A  a|bc|B SBA ‫ﻗﻮﺍﻧﻴﻦ ﻳﻜﻪ‬ SB
B  A|bb BA
AB
S  Aa S  a|bc|bb ‫ﻗﻮﺍﻧﻴﻦ ﺟﺪﻳﺪ‬ S  a|bc|bb|Aa
‫ﻗﻮﺍﻧﻴﻦ ﻏﻴﺮﻳﻜﻪ‬ A  a|bc
B  bb
+ ‫ﻗﻮﺍﻧﻴﻦ ﺟﺪﻳﺪ‬ A  bb
B  a|bc
A  a|bc|bb
B  a|bc|bb
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪ (3‬ﺣﺬﻑ ﻗﻮﺍﻧﻴﻦ ﺑﻲ ﻓﺎﻳﺪﻩ‪ :‬ﺑﺮﺍﻱ ﺑﻲ ﻓﺎﻳﺪﻩ ﺑﻮﺩﻥ ﻳﻚ ﻗﺎﻧﻮﻥ ﺑﻪ ﺩﻭ ﺩﻟﻴﻞ ﻧﻴﺎﺯﺩﺍﺭﻳﻢ‪ .‬ﺍﻭﻻ ‪ ،‬ﻣﻨﺠﺮﺑﻪ ﺗﻮﻟﻴﺪ ﺭﺷﺘﻪ ﺍﻱ‬
‫ﺩﺭﺯﺑﺎﻥ ﻧﺸﻮﺩ‪ .‬ﺛﺎﻧﻴﺎ ‪ ،‬ﺍﺯ ﻭﺿﻌﻴﺖ ﺷﺮﻭﻉ ﻗﺎﺑﻞ ﺩﺳﺘﻴﺎﺑﻲ ﻧﺒﺎﺷﺪ‪.‬‬

‫ﻗﻀﻴﻪ ‪ :‬ﺑﺎﻓﺮﺽ ﻣﺴﺘﻘﻞ ﺑﻮﺩﻥ ﺍﺯﻣﺘﻦ ﮔﺮﺍﻣﺮ )‪ ، G=(V,T,S,P‬ﻣﺘﻐﻴﺮ ‪ A∈V‬ﺭﺍ ﻣﻔﻴﺪ ﮔﻮﻳﻴﻢ ‪ ،‬ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ‬ ‫‪‬‬
‫ﺣﺪﺍﻗﻞ ﻳﻚ )‪ w∈L(G‬ﺑﺎﺷﺪ ‪ ،‬ﺑﻄﻮﺭﻳﻜﻪ ‪x,y∈(V U T)* , S → xAy → w :‬‬

‫‪ ‬ﻣﺘﻐﻴﺮﻱ ﻛﻪ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻧﺒﺎﺷﺪ ‪ ،‬ﺑﻲ ﻓﺎﻳﺪﻩ )‪ ، (Useless‬ﻭ ﻗﻮﺍﻧﻴﻨﻲ ﻛﻪ ﺩﺍﺭﺍﻱ ﻣﺘﻐﻴﺮ ﺑﻲ ﻓﺎﻳﺪﻩ ﺑﺎﺷﺪ ‪ ،‬ﻗﺎﻧﻮﻥ ﺑﻲ‬
‫ﻓﺎﻳﺪﻩ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ‪.‬‬

‫ﺑﺎ ﺣﺮﻛﺖ ﺍﺯ ‪ S‬ﺑﻪ ﻃﺮﻑ ‪ A‬ﻭ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﺎﻧﻮﻥ ‪ S → A‬ﻫﻴﭻ ﺭﺷﺘﻪ ﺍﻱ‬ ‫ﺩﺭﮔﺮﺍﻣﺮ ‪S  aSb|A|λ‬‬
‫‪A  aA‬‬
‫ﻣﺜﺎﻝ ‪:‬‬
‫ﺗﻮﻟﻴﺪ ﻧﺨﻮﺍﻫﺪ ﺷﺪ‪ .‬ﻳﻌﻨﻲ‪ ،‬ﺑﻮﺩﻥ ﻳﺎ ﻧﺒﻮﺩﻥ ﻣﺘﻐﻴﺮ ‪ A‬ﻭ ﻗﺎﻧﻮﻥ ﻣﺮﺑﻮﻃﻪ ﺍﺵ ‪ ،‬ﻫﻴﭻ ﺗﺎﺛﻴﺮﻱ ﺭﻭﻱ ﺯﺑﺎﻥ ﻧﺪﺍﺭﺩ ﻭ ﻣﻲ ﺗﻮﺍﻥ ﺁﻥ ﺭﺍ‬
‫ﺣﺬﻑ ﻛﺮﺩ‪.‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬
‫‪SA‬‬
‫ﻗﺎﻧﻮﻥ ‪ ، B → bA‬ﻫﻴﭻ ﻣﺴﻴﺮﻱ ﺍﺯ ﻭﺿﻌﻴﺖ ﺷﺮﻭﻉ ‪ S‬ﺑﻪ ﻣﺘﻐﻴﺮ ‪ B‬ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ‪.‬‬ ‫ﺩﺭﮔﺮﺍﻣﺮ ‪A  aA|λ‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫‪B  bA‬‬
‫ﻟﺬﺍ ﺑﻮﺩﻥ ﻭ ﻧﺒﻮﺩﻥ ﻗﺎﻧﻮﻥ ﻣﺮﺑﻮﻃﻪ ﺍﺵ‪ ،‬ﻫﻴﭻ ﺗﺎﺛﻴﺮﻱ ﺭﻭﻱ ﺯﺑﺎﻥ ﻧﺪﺍﺭﺩ ﻭ ﻣﻲ ﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﺣﺬﻑ ﻧﻤﻮﺩ‪ .‬ﻣﺘﻐﻴﺮ ‪ B‬ﺑﻲ ﻓﺎﻳﺪﻩ ﻭ‬
‫ﻗﺎﻧﻮﻥ ‪ ، B → bA‬ﻗﺎﻧﻮﻥ ﺑﻲ ﻓﺎﻳﺪﻩ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫ﻗﻮﺍﻧﻴﻦ ﺑﻲ ﻓﺎﻳﺪﻩ ﺭﺍ ﺍﺯ ﮔﺮﺍﻣﺮ )‪ G = ({S,A,B,C},{a,b},S,P‬ﺣﺬﻑ ﻧﻤﺎﻳﻴﺪ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫‪S  aS|A|C‬‬
‫‪Aa‬‬
‫‪ (1‬ﺷﻨﺎﺳﺎﺋﻲ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﺭﺷﺘﻪ ﻫﺎﻱ ﺗﺮﻣﻴﻨﺎﻝ ﻣﻨﺠﺮ ﻣﻲ ﺷﻮﻧﺪ‪.‬‬
‫‪P‬‬
‫‪B  aa‬‬ ‫‪ ← (S → A → a) S , B , A‬ﻣﺘﻐﻴﺮ ‪ C‬ﺑﻲ ﻓﺎﻳﺪﻩ ﺍﺳﺖ‪.‬‬
‫‪C  aCb‬‬

‫‪S  aS|A‬‬
‫)‪G1 = ({S,A,B},{a},S,P1‬‬ ‫‪P1‬‬ ‫‪Aa‬‬
‫‪B  aa‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬
‫‪ (2‬ﺷﻨﺎﺳﺎﻳﻲ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﻛﻪ ﺍﺯ ﻭﺿﻌﻴﺖ ﺷﺮﻭﻉ ﻗﺎﺑﻞ ﺩﺳﺘﻴﺎﺑﻲ ﻧﺒﺎﺷﻨﺪ‪.‬‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﮔﺮﺍﻑ ﻭﺍﺑﺴﺘﮕﻲ )‪: (Dependency Graph‬‬


‫ﺩﺭ ﮔﺮﺍﻑ ﻭﺍﺑﺴﺘﮕﻲ ﺑﺮﺍﻱ ﻳﻚ ﺯﺑﺎﻥ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ‪ ،‬ﺭﺋﻮﺱ‪ ،‬ﻣﺘﻐﻴﺮﻫﺎﻱ ﮔﺮﺍﻣﺮ‪ ،‬ﻭ ﻳﺎﻝ ﻫﺎ‪ ،‬ﻗﻮﺍﻧﻴﻨﻲ ﺑﻪ ﺷﻜﻞ‬
‫‪ C → xDy‬ﻣﻲ ﺑﺎﺷﻨﺪ‪.‬‬

‫ﮔﺮﺍﻑ ﻭﺍﺑﺴﺘﮕﻲ ‪G1‬‬ ‫‪S‬‬ ‫‪A‬‬ ‫‪B‬‬ ‫ﻣﺘﻐﻴﺮ ‪ B‬ﺑﻲ ﻓﺎﻳﺪﻩ ﺍﺳﺖ‪.‬‬

‫)‪G2 = ({S,A},{a},S,P2‬‬ ‫‪S  aS|A‬‬ ‫ﺟﺎﻳﮕﺯﻳﻧﯽ ﺳﻭﺩﻣﻧﺩ‬


‫‪P2‬‬ ‫‪S  aS|a‬‬
‫‪Aa‬‬

‫ﺑﺎ ﻓﺮﺽ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺑﻮﺩﻥ ﮔﺮﺍﻣﺮ )‪ ، G=(V,T,S,P‬ﮔﺮﺍﻣﺮﻱ ﻣﻌﺎﺩﻝ ﮔﺮﺍﻣﺮ ‪ G‬ﺑﻨﺎﻡ‬ ‫‪ ‬ﻗﻀﻴﻪ ‪:‬‬
‫ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺩﺍﺭﺍﻱ ﻫﻴﭻ ﻣﺘﻐﻴﺮ ﻳﺎ ﻗﺎﻧﻮﻥ ﺑﻲ ﻓﺎﻳﺪﻩ ﻧﻴﺴﺖ‪.‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪ ‬ﻓﺮﻡ ﻫﺎﻱ ﻧﺮﻣﺎﻝ )‪: (Normal Forms‬‬

‫‪ (1‬ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ‪:‬‬


‫ﮔﺮﺍﻣﺮﻱ ﺩﺭﺍﻳﻦ ﻓﺮﻡ ﺍﺳﺖ ﻛﻪ ﻫﻤﻪ ﻗﻮﺍﻋﺪ ﺁﻥ ﺑﻪ ﻳﻜﻲ ﺍﺯ ﺩﻭ ﺻﻮﺭﺕ ﺯﻳﺮ ﻳﺎ ﺗﺮﻛﻴﺒﻲ ﺍﺯ ﻫﺮﺩﻭ ﺑﺎﺷﺪ ‪:‬‬
‫‪A  BC‬‬
‫‪A,B,C∈V , a∈T‬‬
‫‪Aa‬‬

‫‪S  AS|AAS‬‬
‫‪A  SA|aa‬‬ ‫ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ﺍﺳﺖ ﻭ ﮔﺮﺍﻣﺮ‬
‫‪S  AS|a‬‬
‫ﮔﺮﺍﻣﺮ ‪A  SA|b‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫)ﺩﺭﺍﻳﻥ ﻣﺛﺎﻝ‪ ،‬ﮔﺭﺍﻣﺭ ﺩﺍﺭﺍی ﻗﻭﺍﻧﻳﻥ ‪ λ‬ﻭ ﻳﮑﻪ ﻧﻳﺳﺕ‪(.‬‬ ‫ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ﻧﻴﺴﺖ‪.‬‬

‫ﻗﻀﻴﻪ ‪ :‬ﻫﺮ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ )‪ G=(V,T,S,P‬ﻛﻪ ﺩﺭ ﺁﻥ )‪ λ∉L(G‬ﺑﺎﺷﺪ ‪ ،‬ﺩﺍﺭﺍﻱ ﮔﺮﺍﻣﺮ ﻣﻌﺎﺩﻝ‬ ‫‪‬‬
‫)‪ Ĝ =(V,T,S,P‬ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ﺍﺳﺖ‪.‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪ ‬ﺳﺎﺧﺘﻦ ﮔﺮﺍﻣﺮ ‪ Ĝ‬ﺩﺭﻃﻲ ﺩﻭ ﻣﺮﺣﻠﻪ ﺑﻪ ﺷﺮﺡ ﺯﻳﺮ ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ ‪:‬‬


‫‪ o‬ﮔﺎﻡ ﺍﻭﻝ ‪:‬‬
‫ﺳﺎﺧﺘﻦ ﮔﺮﺍﻣﺮ )‪ ، G1=(V1,T,S,P1‬ﺍﺯ ‪ G‬ﺑﺎ ﻗﻮﺍﻧﻴﻨﻲ ﺑﻪ ﺷﻜﻞ ) ‪A  X1X2…Xn (Xi∈VUT‬‬

‫‪ n=1‬ﺍﮔﺮ‬ ‫)ﭼﻮﻥ ﻗﺎﻧﻮﻥ ﻳﻜﻪ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ( ﺗﺮﻣﻴﻨﺎﻝ ‪X1‬‬ ‫ﻗﺎﻧﻮﻥ ﺩﺭ ‪ P1‬ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ‬
‫‪ n>=2‬ﺍﮔﺮ‬ ‫‪ Ba , ∀ a∈T‬ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺟﺪﻳﺪ‬
‫ﻗﺎﻧﻮﻥ ﺩﺭ ‪∀ P1‬‬ ‫‪A  X1X2…Xn‬‬ ‫ﻗﺎﻧﻮﻥ ﺩﺭ ‪ P1‬ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ‬ ‫‪A  C1C2…Cn‬‬
‫ﻣﺘﻐﻴﺮ ‪∀ Ba‬‬ ‫ﻗﺎﻧﻮﻥ ﺩﺭ ‪ P1‬ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ‬ ‫‪Ba  a‬‬
‫‪ Xi∈V‬ﺍﮔﺭ ‪Ci = Xi‬‬
‫‪ Xi∈a‬ﺍﮔﺭ ‪Ci = Ba‬‬

‫ﺍﻳﻦ ﻗﺴﻤﺖ ﺍﺯ ﺍﻟﮕﻮﺭﻳﺘﻢ ‪ ،‬ﺗﻤﺎﻣﻲ ﺗﺮﻣﻴﻨﺎﻟﻬﺎ ﺭﺍ ﺍﺯ ﻗﻮﺍﻧﻴﻨﻲ ﻛﻪ ﺳﻤﺖ ﺁﻧﻬﺎ ﻃﻮﻝ ﺑﺰﺭﮔﺘﺮ ﺍﺯ ﻳﻚ ﺩﺍﺭﺩ ‪ ،‬ﺑﺎ ﺟﺎﻳﮕﺰﻳﻨﻲ ﺁﻧﻬﺎ ﺑﺎ‬
‫ﻣﺘﻐﻴﺮﻫﺎﻱ ﺟﺪﻳﺪ ‪ ،‬ﺣﺬﻑ ﻣﻲ ﻛﻨﺪ ‪.‬‬
‫)‪ A  C1C2…Cn (Ci∈Vi‬ﻳﺎ ‪G1: A  a‬‬
‫)‪L(G) = L(G1‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬
‫‪ o‬ﮔﺎﻡ ﺩﻭﻡ ‪:‬‬
‫ﺍﺑﺘﺪﺍ ﻫﻤﻪ ﻗﻮﺍﻧﻴﻦ ﺑﻪ ﺷﻜﻞ ‪ A  a‬ﻭ ﺳﭙﺲ ﻫﻤﻪ ﻗﻮﺍﻧﻴﻦ ﺑﻪ ﺷﻜﻞ ‪ A  C1C2…Cn‬ﺭﺍ ﺑﺎ ‪ n=2‬ﺩﺭ ‪Ṕ‬‬
‫ﻗﺮﺍﺭ ﻣﻲ ﺩﻫﻴﻢ‪ ) .‬ﺍﻋﻤﺎﻝ ﻗﺎﻧﻮﻥ ‪( A  BC‬‬
‫‪A  C1D1‬‬
‫‪D1  C2D2‬‬
‫‪Ṕ‬‬ ‫…‬
‫‪Dn-2  Cn-1Cn‬‬

‫ﮔﺮﺍﻣﺮﻱ ﺑﺎ ﻗﻮﺍﻧﻴﻦ ﺯﻳﺮ ﺭﺍ ﺑﻪ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫)ﺩﺭﺍﻳﻥ ﻣﺛﺎﻝ‪ ،‬ﮔﺭﺍﻣﺭ ﺩﺍﺭﺍی ﻗﻭﺍﻧﻳﻥ ‪ λ‬ﻭ ﻳﮑﻪ ﻧﻳﺳﺕ‪(.‬‬

‫‪S  ABa|B‬‬
‫> ‪G: < {S,A,B},{a,b,c},{S},P‬‬ ‫‪P‬‬ ‫‪A  aab‬‬
‫‪B  Ac‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

S  ABBa A  a ‫ ﺍﻋﻣﺎﻝ ﻗﺎﻧﻭﻥ‬: ‫ ﮔﺎﻡ ﺍﻭﻝ‬o


Ba , Bb , Bc ‫ﻣﺗﻐﻳﺭﻫﺎی‬
A  B aB aB b
B  Abc
Ba  a
Bb  b
Bc  c

A  BC ‫ ﺍﻋﻣﺎﻝ ﻗﺎﻧﻭﻥ‬: ‫ ﮔﺎﻡ ﺩﻭﻡ‬o


S  AD1
D1  BBa
A  BaD2
D2  BaBb
B  ABc
Ba  a & Bb  b & Bc  c
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪ (2‬ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ‪:‬‬


‫ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ ﺍﺳﺖ ﻛﻪ ﺩﺭﺁﻥ ﺗﻤﺎﻣﻲ ﻗﻮﺍﻧﻴﻦ ﺑﺼﻮﺭﺕ ‪ ، A  aX‬ﺑﻄﻮﺭﻳﻜﻪ* ‪ a∈T , X∈V‬ﺑﺎﺷﺪ‪.‬‬

‫‪ ‬ﻣﺤﺪﻭﺩﻳﺖ ﺭﻭﻱ ﻣﺤﻞ ﻗﺮﺍﺭﮔﻴﺮﻱ ﻣﺘﻐﻴﺮﻫﺎ ﻭ ﺗﺮﻣﻴﻨﺎﻝ ﻫﺎ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬


‫‪ ‬ﻟﺰﻭﻣﻲ ﻧﺪﺍﺭﺩ ﺯﻭﺝ )‪ (A , a‬ﻓﻘﻂ ﻳﻜﺒﺎﺭ ﺗﻜﺮﺍﺭ ﺷﺪﻩ ﺑﺎﺷﺪ )ﮔﺮﺍﻣﺮﻫﺎﻱ ﺳﺎﺩﻩ( ﻭ ﺍﻳﻦ ﻣﺤﺪﻭﺩﻳﺖ ﺭﺍ ﺍﺯ ﺑﻴﻦ ﻣﻲ ﺑﺮﺩ‪.‬‬
‫‪ ‬ﻣﻮﺭﺩ ﻛﺎﺭﺑﺮﺩ ﺁﻥ ﺩﺭ ﻛﺎﻣﭙﺎﻳﻠﺮﻫﺎ ‪ ،‬ﻧﻴﺎﺯ ﺑﻪ ﻣﺘﻐﻴﺮ )‪ First(A‬ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﻣﻮﻟﺪ ﻣﻮﺭﺩ ﻧﻈﺮ‪ ،‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫ﮔﺮﺍﻣﺮ ‪ G1‬ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﻧﻴﺴﺖ ‪ ،‬ﻭﻟﻲ ﮔﺮﺍﻣﺮ ‪ G2‬ﺩﺭﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫‪S  AB‬‬ ‫‪S  aAB|bBB|bB‬‬
‫‪G1‬‬ ‫‪A  aA|bB|b‬‬ ‫‪G2‬‬ ‫‪A  aA|bB|b‬‬
‫‪Bb‬‬ ‫‪Bb‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫ﮔﺮﺍﻣﺮ ‪ ، S  abSb|aa‬ﺭﺍ ﺑﻪ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬


‫)ﻫﻣﺎﻧﻧﺩ ﻓﺭﻡ ﻧﺭﻣﺎﻝ ﭼﺎﻣﺳﮑﯽ ﻋﻣﻝ ﻣﯽ ﻧﻣﺎﻳﻳﻡ‪(.‬‬

‫‪S  aBSB|aA‬‬
‫‪Aa‬‬ ‫ﻣﺘﻐﻴﺮﻫﺎﻱ ‪ A,B‬ﺭﺍ ﻛﻪ ﻣﺘﺮﺍﺩﻑ ﺑﺎ ‪ a,b‬ﻫﺴﺘﻨﺪ‪ ،‬ﺟﺎﻳﮕﺰﻳﻦ ﻣﻲ ﻛﻨﻴﻢ‪.‬‬
‫‪Bb‬‬

‫ﻗﻀﻴﻪ ‪ :‬ﺑﻪ ﺍﺯﺍﻱ ﻫﺮﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯﻣﺘﻦ )‪ G=(V,T,S,P‬ﻛﻪ ﺩﺭ ﺁﻥ )‪ λ∉L(G‬ﺑﺎﺷﺪ ‪ ،‬ﺩﺍﺭﺍﻱ‬ ‫‪‬‬
‫ﮔﺮﺍﻣﺮ ﻣﻌﺎﺩﻝ )‪ Ĝ =(V,T,S,P‬ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﺍﺳﺖ‪.‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬
‫‪ ‬ﺍﻟﮕﻮﺭﻳﺘﻢ ﻋﻀﻮﻳﺖ ﺑﺮﺍﻱ ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ‪:‬‬
‫‪ ‬ﺷﺮﻁ ﺍﺻﻠﻲ ‪ :‬ﺍﻟﮕﻮﺭﻳﺘﻢ ‪ CYK‬ﺩﺭﺻﻮﺭﺗﻲ ﻛﺎﺭ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﮔﺮﺍﻣﺮ ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪ ‬ﻓﺮﺽ ﻛﻨﻴﺪ ﮔﺮﺍﻣﺮ )‪ G=(V,T,S,P‬ﺩﺭﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ﺑﻮﺩﻩ ﻭ ﺭﺷﺘﻪ ‪ w = a1a2…an‬ﺭﺍ ﺩﺍﺭﻳﻢ‪:‬‬
‫‪ w = ai…aj‬ﺯﻳﺮﺭﺷﺘﻪ‬
‫} ‪ Vij = {A∊V | A * wij‬ﺯﻳﺮﻣﺠﻤﻮﻋﻪ ﺍﺯ ‪V‬‬
‫‪ o‬ﻧﻜﺘﻪ ‪ : 1‬ﻭﺍﺿﺢ ﺍﺳﺖ ﻛﻪ )‪ w ∊ L(G‬ﺍﺳﺖ ‪ ،‬ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ‪ S ∊ V1n‬ﺑﺎﺷﺪ‪.‬‬
‫‪ o‬ﻧﻜﺘﻪ ‪ A ∊ Vii : 2‬ﺍﺳﺖ ‪ ،‬ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ‪ G‬ﺣﺎﻭﻱ ﻗﺎﻧﻮﻧﻲ ﻣﺎﻧﻨﺪ ‪ A  ai‬ﺑﺎﺷﺪ‪.‬‬

‫= ‪Vij‬‬ ‫‪U { A | A  BC ; B ∊ V‬‬ ‫‪i,k‬‬ ‫} ‪, C ∊ Vk+1,j‬‬


‫}‪k∊{i,i+1,…,j-1‬‬
‫‪ V1,1 , V2,2 , … , Vn,n‬ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ‪.‬‬ ‫‪.1‬‬
‫‪ V1,2 , V2,3 , … , Vn-1,n‬ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ‪.‬‬ ‫‪.2‬‬
‫‪ V1,3 , V2,4 , … , Vn-2,n‬ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ‪.‬‬ ‫‪.3‬‬
‫…‬ ‫‪.4‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫ﺗﻌﻴﻴﻦ ﻧﻤﺎﻳﻴﺪ ﺁﻳﺎ ﺭﺷﺘﻪ ‪ w = aabbb‬ﺩﺭﺯﺑﺎﻥ ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﺗﻮﺳﻂ ﮔﺮﺍﻣﺮ ﺯﻳﺮ ﻭﺟﻮ ﺩﺍﺭﺩ ﻳﺎ ﺧﻴﺮ ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫‪S  AB‬‬
‫‪A  BB|a‬‬ ‫‪w1,1 w2,2 w3,3 w4,4 w5,5‬‬
‫‪B  AB|b‬‬

‫‪ (1‬ﻣﺤﺎﺳﺒﻪ ‪: V1,1 , V2,2 , … , Vn,n‬‬


‫‪w1,1 = a‬‬ ‫‪‬‬ ‫‪V1,1 :‬‬ ‫‪ a‬ﺭﺍ ﻣﻲ ﺩﻫﺪ‬ ‫}‪  V1,1 = {A‬ﻣﺠﻤﻮﻋﻪ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﺑﻄﻮﺭ ﺑﻼﻓﺼﻞ‬
‫‪w2,2 = a‬‬ ‫‪‬‬ ‫‪V2,2 :‬‬ ‫‪ a‬ﺭﺍ ﻣﻲ ﺩﻫﺪ‬ ‫}‪  V2,2 = {A‬ﻣﺠﻤﻮﻋﻪ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﺑﻄﻮﺭ ﺑﻼﻓﺼﻞ‬
‫‪w3,3 = b‬‬ ‫‪‬‬ ‫‪V3,3 :‬‬ ‫‪ b‬ﺭﺍ ﻣﻲ ﺩﻫﺪ‬ ‫}‪  V3,3 = {B‬ﻣﺠﻤﻮﻋﻪ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﺑﻄﻮﺭ ﺑﻼﻓﺼﻞ‬
‫‪w4,4 = b‬‬ ‫‪‬‬ ‫‪V4,4 :‬‬ ‫‪ b‬ﺭﺍ ﻣﻲ ﺩﻫﺪ‬ ‫}‪  V4,4 = {B‬ﻣﺠﻤﻮﻋﻪ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﺑﻄﻮﺭ ﺑﻼﻓﺼﻞ‬
‫‪w5,5 = b‬‬ ‫‪‬‬ ‫‪V5,5 :‬‬ ‫‪ b‬ﺭﺍ ﻣﻲ ﺩﻫﺪ‬ ‫}‪  V5,5 = {B‬ﻣﺠﻤﻮﻋﻪ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﺍﺳﺖ ﻛﻪ ﺑﻄﻮﺭ ﺑﻼﻓﺼﻞ‬
‫ﻓﺼﻞ ﺷﺸﻢ‬
‫‪ (2‬ﻣﺤﺎﺳﺒﻪ ‪: V1,2 , V2,3 , … , Vn-1,n‬‬

‫ﻣﺟﻣﻭﻋﻪ ﺣﺎﻭی ﺗﻣﺎﻣﯽ ﻣﺗﻐﻳﺭﻫﺎﻳﯽ ﺍﺳﺕ‬


‫} ‪V1,2 = { A | A  BC ; B ∊ V1,1 , C ∊ V2,2‬‬ ‫ﮐﻪ ﺩﺭﺳﻣﺕ ﭼپ ﻗﻭﺍﻧﻳﻧﯽ ﻫﺳﺗﻧﺩ ﮐﻪ‬
‫}‪V1,1 = V2,2 = {A‬‬ ‫ﺳﻣﺕ ﺭﺍﺳﺕ ﺁﻧﻬﺎ ‪ AA‬ﺍﺳﺕ‪ .‬ﭼﻭﻥ ﭼﻧﻳﻥ‬
‫ﻣﻭﺭﺩی ﺭﺍ ﻧﺩﺍﺭﻳﻡ‪ ،‬ﺑﻧﺎﺑﺭﺍﻳﻥ ‪V12 = ɸ :‬‬

‫} ‪V2,3 = { A | A  BC ; B ∊ V2,2 , C ∊ V3,3‬‬ ‫ﻣﺟﻣﻭﻋﻪ ﺣﺎﻭی ﺗﻣﺎﻣﯽ ﻣﺗﻐﻳﺭﻫﺎﻳﯽ ﺍﺳﺕ‬


‫}‪V2,2 = {A‬‬ ‫ﮐﻪ ﺩﺭﺳﻣﺕ ﭼپ ﻗﻭﺍﻧﻳﻧﯽ ﻫﺳﺗﻧﺩ ﮐﻪ‬
‫ﺳﻣﺕ ﺭﺍﺳﺕ ﺁﻧﻬﺎ ‪ AB‬ﺍﺳﺕ‪ .‬ﺑﻧﺎﺑﺭﺍﻳﻥ ‪:‬‬
‫}‪V3,3 = {B‬‬ ‫}‪V23 = {S,B‬‬

‫}‪V3,4 = {A} ; V4,5 = {A‬‬


‫}‪V1,3 = {S,B} ; V2,4 = {A} ; V3,5 = {S,B‬‬
‫}‪V1,4 = {A} ; V2,5 = {S,B‬‬
‫}‪V1,5 = {S,B‬‬
‫‪ ‬ﻧﻜﺘﻪ ‪ :‬ﺩﻗﻴﻘﺎ ‪ n(n+1)/2‬ﻣﺠﻤﻮﻋﻪ ﺍﺯ ‪ Vij‬ﻣﺤﺎﺳﺒﻪ ﺷﺪﻩ ﺍﻧﺪ‪.‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬
: ‫• ﺗﻤﺮﻳﻨﺎﺕ ﻓﺼﻞ ﺷﺸﻢ‬

S  aA|a|B|C ‫( ﻗﻮﺍﻧﻴﻦ ﺑﻲ ﻓﺎﻳﺪﻩ ﺭﺍ ﺍﺯ ﮔﺮﺍﻣﺮ ﻣﻘﺎﺑﻞ ﺣﺬﻑ ﻧﻤﺎﻳﻴﺪ ؟‬1


A  aB|λ
B  Aa
C  cCD
D  ddd

‫ﮔﺎﻡ ﺍﻭﻝ‬ ‫ﮔﺎﻡ ﺩﻭﻡ‬ D B


• V1 = ɸ
i. P1 = { S  a , D  ddd , A  λ }
• V1 = {S,D,A} S A
ii. P1 = P1 U { S  aA , B  Aa }
• V1 =V1 U {B} S  aA|a|B
A  aB|λ
iii. P1 = P1 U { A  aB , S  B } B  Aa
• V1 =V1
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪ (2‬ﻗﻮﺍﻧﻴﻦ ‪ λ‬ﻭ ﺑﻲ ﻓﺎﻳﺪﻩ ﺭﺍ ﺍﺯ ﮔﺮﺍﻣﺮ ﻣﻘﺎﺑﻞ ﺣﺬﻑ ﻧﻤﺎﻳﻴﺪ ؟‬


‫‪S  AaB|aaB‬‬
‫‪Aλ‬‬
‫‪B  bbA|λ‬‬

‫‪ ‬ﺍﺑﺗﺩﺍ ﺑﻪ ﺗﺭﺗﻳﺏ ﻗﻭﺍﻋﺩ ‪ A  λ‬ﻭ ‪ B  λ‬ﺭﺍ ﺣﺫﻑ ﻣﯽ ﮐﻧﻳﻡ‪.‬‬

‫‪ : S  AaB|aaB|aB‬ﭘﺲ ﺍﺯ ﺣﺬﻑ ﻗﺎﻋﺪﻩ ‪•A  λ‬‬


‫‪B  bbA|bb|λ‬‬ ‫‪S  AaB|aaB|aB|Aa|a|aa‬‬
‫‪B  bbA|bb‬‬
‫‪ :‬ﭘﺲ ﺍﺯ ﺣﺬﻑ ﻗﺎﻋﺪﻩ ‪•B  λ‬‬ ‫‪S  AaB|aaB|Aa|aa‬‬
‫‪B  bbA‬‬

‫‪ ‬ﺳﭘﺱ ﺭﻭﺍﻝ ﺣﺫﻑ ﻗﻭﺍﻧﻳﻥ ﺑﯽ ﻓﺎﻳﺩﻩ ﺭﺍ ﻓﺭﺍﺧﻭﺍﻧﯽ ﻣﯽ ﮐﻧﻳﻡ ﮐﻪ ﺣﺎﺻﻝ ﺑﺻﻭﺭﺕ ﺯﻳﺭ ﺧﻭﺍﻫﺩ ﺑﻭﺩ‪:‬‬
‫‪S  aaB|aB|aa|a‬‬
‫‪B  bb‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪ (3‬ﮔﺮﺍﻣﺮ ﻣﻘﺎﺑﻞ ﺭﺍ ﺑﻪ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﭼﺎﻣﺴﻜﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ ؟‬


‫‪S  aSaA|A‬‬
‫‪A  abA|b‬‬
‫‪ ‬ﺍﺑﺗﺩﺍ ﻗﺎﻋﺩﻩ ‪ λ‬ﻭ ﻗﺎﻋﺩﻩ ﻳﮑﻪ ﺭﺍ ﺣﺫﻑ ﻣﯽ ﮐﻧﻳﻡ‪.‬‬
‫‪S  aSaA|abA|b‬‬
‫‪A  abA|b‬‬

‫‪ ‬ﺳﭘﺱ ﮔﺭﺍﻣﺭ ﺭﺍ ﺑﻪ ﻓﺭﻡ ﻧﺭﻣﺎﻝ ﭼﺎﻣﺳﮑﯽ ﺗﺑﺩﻳﻝ ﻣﯽ ﻧﻣﺎﻳﻳﻡ‪.‬‬


‫‪ .1‬ﻗﻭﺍﻋﺩ ‪ A1  a‬ﻭ ‪ A2  b‬ﺑﻪ ‪ P‬ﺍﺿﺎﻓﻪ ﻣﯽ ﺷﻭﻧﺩ ﻭﻫﻣﭼﻧﻳﻥ ‪ A1 , A2‬ﻫﻡ ﺑﻪ ‪ V‬ﺍﺿﺎﻓﻪ‬
‫ﻣﯽ ﺷﻭﻧﺩ‪.‬‬
‫‪.2‬‬
‫‪S  A1SA1A|A1A2A|b‬‬
‫‪A  A1A2A|b‬‬
‫‪A1  a‬‬
‫‪A2  b‬‬
‫ﻓﺼﻞ ﺷﺸﻢ‬

.3
S  A1A3|A1A5|b
A3  SA4
A4  A1 A
A5  A2 A
A  A1A5|b
A1  a
A2  b

.‫ ﺍﺿﺎﻓﻪ ﻣﯽ ﺷﻭﺩ‬V ‫ ﻫﻡ ﺑﻪ‬A3 , A4 , A5 ‫ ﻣﺗﻐﻳﺭﻫﺎی‬


‫ﻓﺼﻞ ﺷﺸﻢ‬

‫‪S  ABb|a‬‬ ‫‪ (4‬ﮔﺮﺍﻣﺮ ﻣﻘﺎﺑﻞ ﺭﺍ ﺑﻪ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴﺪ ؟‬


‫‪A  aaA|B‬‬
‫‪B  bAb‬‬
‫‪ ‬ﺍﺑﺗﺩﺍ ﻗﺎﻋﺩﻩ ‪ λ‬ﻭ ﻗﺎﻋﺩﻩ ﻳﮑﻪ ﺭﺍ ﺣﺫﻑ ﻣﯽ ﮐﻧﻳﻡ‪.‬‬
‫‪S  ABb|a‬‬
‫‪A  aaA|bAb‬‬
‫‪B  bAb‬‬
‫‪ ‬ﺳﭘﺱ ﮔﺭﺍﻣﺭ ﺭﺍ ﺑﻪ ﻓﺭﻡ ﻧﺭﻣﺎﻝ ﮔﺭﻳﺑﺎﺥ ﺗﺑﺩﻳﻝ ﻣﯽ ﻧﻣﺎﻳﻳﻡ‪.‬‬
‫‪ .1‬ﻣﺗﻐﻳﺭ ‪ A‬ﺭﺍ ﺩﺭ ﻗﺎﻋﺩﻩ ‪ S  ABb‬ﺟﺎﻳﮕﺯﻳﻥ ﻣﯽ ﮐﻧﻳﻡ ﻭﺧﻭﺍﻫﻳﻡ ﺩﺍﺷﺕ‪:‬‬
‫‪S  aaABb|bAbBb|a‬‬
‫‪A  aaA|bAb‬‬
‫‪B  bAb‬‬
‫‪ .2‬ﺳﭘﺱ ﺁﻧﺭﺍ ﺑﻪ ﻓﺭﻡ ﻧﺭﻣﺎﻝ ﮔﺭﻳﺑﺎﺥ ﺗﺑﺩﻳﻝ ﻣﯽ ﻧﻣﺎﻳﻳﻡ‪.‬‬
‫‪S ‬‬ ‫‪aA1ABA2|bAA2BA2|a‬‬
‫‪A ‬‬ ‫‪aA1A|bAA2‬‬
‫‪B ‬‬ ‫‪bAA2‬‬
‫‪A1 ‬‬ ‫‪a‬‬
‫‪A2 ‬‬ ‫‪b‬‬
‫ﻓﺻﻝ ﻫﻔﺗﻡ‬
‫ﺁﺗﺎﻣﺎﺗﺎﻱ ﭘﺸﺘﻪ ﺍﻱ‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬
‫‪ ‬ﺁﺗﺎﻣﺎﺗﺎی ﭘﺷﺗﻪ ﺍی ﻳﺎ ‪: (Push Down Automata) PDA‬‬
‫‪ ‬ﺁﺗﺎﻣﺎﻱ ﻣﺘﻨﺎﻫﻲ )‪ (FA‬ﻧﻤﻲ ﺗﻮﺍﻧﺪ ﺑﻌﻠﺖ ﻣﺤﺪﻭﺩﻳﺖ ﺣﺎﻓﻈﻪ‪ ،‬ﻛﻠﻴﻪ ﺯﺑﺎﻧﻬﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺭﺍ‬
‫ﺗﺸﺨﻴﺺ ﺩﻫﺪ‪ .‬ﻟﺬﺍ‪ ،‬ﺑﺎﻳﺴﺘﻲ ﺍﺯ ﻣﺎﺷﻴﻦ ﺩﻳﮕﺮﻱ ﺑﺮﺍﻱ ﺗﺸﺨﻴﺺ ﺯﺑﺎﻥ ﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﺑﻬﺮﻩ‬
‫ﺟﺴﺖ ﻛﻪ ﻫﻤﺎﻥ ‪ PDA‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫} ‪L1 = { an bn | n >= 0‬‬ ‫‪ n‬ﻧﺎﻣﺤﺪﻭﺩ ‪ ،‬ﺷﻤﺎﺭﺵ ﺗﻌﺪﺍﺩ ‪a‬ﻫﺎ ‪ ،‬ﻛﻨﺘﺮﻝ ﺍﻳﻨﻜﻪ ‪a‬ﻫﺎ ﻗﺒﻞ ﺍﺯ ‪b‬ﻫﺎ ﺑﻴﺎﻳﺪ‬
‫ﻧﻴﺎﺯ ﺑﻪ ﻣﺎﺷﻴﻨﻲ ﺑﺎ ﺷﻤﺎﺭﺵ ﻧﺎﻣﺤﺪﻭﺩ‬ ‫ﺣﺎﻓﻈﻪ ﻧﺎﻣﺤﺪﻭﺩ‬
‫} *)‪L2 = { wwR | w ∈ (a,b‬‬ ‫ﻛﻨﺘﺮﻝ ﺗﺮﺗﻴﺐ ﻣﻌﻜﻮﺱ ﺣﺮﻭﻑ‬

‫ﺗﻌﺮﻳﻒ ﻳﻚ‬ ‫ﺁﺗﺎﻣﺎﺗﺎﻱ ﭘﺸﺘﻪ ﺍﻱ )‪(PDA‬‬ ‫‪ ‬ﻧﻴﺎﺯ ﺑﻪ ﭘﺸﺘﻪ )ﺩﺍﺭﺍﻱ ﻇﺮﻓﻴﺖ ﻧﺎﻣﺤﺪﻭﺩ(‬
‫ﺧﺎﻧﻮﺍﺩﻩ ﺟﺪﻳﺪ ﺍﺯ ﺯﺑﺎﻥ ﻫﺎ ﺑﻨﺎﻡ ﺯﺑﺎﻥ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻌﻴﻦ ﻳﺎ ‪(Deterministic Context DCFL‬‬
‫)‪. Free Language‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬
‫‪ ‬ﺁﺗﺎﻣﺎﺗﺎی ﭘﺷﺗﻪ ﺍی ﻧﺎﻣﻌﻳﻥ ﻳﺎ ‪: (Nondeterministic PDA) NPDA‬‬

‫‪δ : Q ∗ (Σ U {λ}) ∗ Γ‬‬ ‫*‪Q∗Γ‬‬


‫)}‪NDPA = ({q0, q1, q2, q3} , {a,b} , {0,1} , δ , {q0} , {0} , {q3‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫})‪δ(q0,a,0) = {(q1,10),(q3,λ‬‬ ‫})‪δ(q1,a,1) = {(q1,11‬‬ ‫})‪δ(q2,b,0) = {(q2,λ‬‬
‫})‪δ(q0,λ,0) = {(q3,λ‬‬ ‫})‪δ(q1,b,1) = {(q2,λ‬‬ ‫})‪δ(q2,λ,0) = {(q3,λ‬‬

‫ﺍﻳﻦ ﺩﻭ ﻗﺪﻡ ﺑﺎﻋﺚ ﺷﻤﺎﺭﺵ ﺗﻌﺪﺍﺩ ‪a‬ﻫﺎ ﻭ ﺗﻄﺒﻴﻖ ﺁﻥ ﺑﺎ ﺗﻌﺪﺍﺩ ‪b‬ﻫﺎ ﻣﻲ ﺷﻮﺩ‪ .‬ﻭﺍﺣﺪ‬
‫})‪δ(q1,a,1) = {(q1,11‬‬
‫ﻛﻨﺘﺮﻝ ﺗﺎ ﺯﻣﺎﻧﻴﻜﻪ ﺍﻭﻟﻴﻦ ‪ b‬ﺧﻮﺍﻧﺪﻩ ﺷﻮﺩ‪ ،‬ﺩﺭ ﻭﺿﻌﻴﺖ ‪ q1‬ﺑﺎﻗﻲ ﻣﻲ ﻣﺎﻧﺪ ﻭ ﺑﺎ ﺍﻭﻟﻴﻦ‬
‫})‪δ(q2,b,1) = {(q2,λ‬‬ ‫‪ b‬ﺑﻪ ‪ q2‬ﻣﻲ ﺭﻭﺩ‪ .‬ﺍﻳﻦ ﻋﻤﻞ ﺑﺎﻋﺚ ﻣﻲ ﮔﺮﺩﺩ‪ ،‬ﻫﻴﭻ ‪ b‬ﻗﺒﻞ ﺍﺯ ﺁﺧﺮﻳﻦ ‪ a‬ﻧﺒﺎﺷﺪ‪.‬‬

‫}‪L = { an bn | n >= 0 } U {a‬‬


‫ﻓﺼﻞ ﻫﻔﺘﻢ‬

‫‪ ‬ﺗﻭﺻﻳﻑ ﺑﻼﻓﺻﻝ ﺁﺗﺎﻣﺎﺗﺎﺗﯽ ﭘﺷﺗﻪ ﺍی ﻳﺎ ‪: PDA‬‬


‫)‪(q,w,u‬‬ ‫‪ ‬ﻋﻮﺍﻣﻞ ﻣﻮﺛﺮ ‪ :‬ﻗﺴﻤﺖ ﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﺍﺯ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ‪ ،‬ﻣﺤﺘﻮﺍﻱ ﻓﻌﻠﻲ ﭘﺸﺘﻪ‬
‫ﺑﻄﻮﺭﻳﻜﻪ ‪ q‬ﻭﺿﻌﻴﺖ ﻭﺍﺣﺪ ﻛﻨﺘﺮﻝ‪ w ،‬ﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ‪ ،‬ﻭ ‪ u‬ﻣﺤﺘﻮﺍﻱ ﭘﺸﺘﻪ ﻣﻲ ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﻤﻜﻦ ﺍﺳﺖ‪ ،‬ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ‬ ‫‪‬‬

‫ﺑﻪ ﻣﻌﻨﺎﻱ‬ ‫ﺑﻪ ﻣﻌﻨﺎﻱ ﺣﺮﻛﺖ ﺩﺭ ﭼﻨﺪﻳﻦ ﮔﺎﻡ ﺗﻮﺳﻂ ﻭﺍﺣﺪ ﻛﻨﺘﺮﻝ ﻭ ﻫﻤﭽﻨﻴﻦ‪،‬‬ ‫‪‬‬
‫ﺣﺮﻛﺖ ﺗﻮﺳﻂ ‪ M‬ﮔﺎﻡ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫ﻳﻚ ﺁﺗﺎﻣﺎﺗﺎﻱ ﭘﺸﺘﻪ ﺍﻱ ﻧﺎﻣﻌﻴﻦ ﺑﺎﺷﺪ‪ ،‬ﺯﺑﺎﻥ ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ‬ ‫‪ ‬ﺍﮔﺮ‬


‫ﺗﻮﺳﻂ ﻣﺎﺷﻴﻦ ‪ ،M‬ﻋﺒﺎﺭﺕ ﺍﺳﺖ ﺍﺯ ﻣﺠﻤﻮﻋﻪ )‪: L(M‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬

‫ﻳﻚ ‪ NPDA‬ﺑﺮﺍﻱ ﺯﺑﺎﻥ ‪ L‬ﻃﺮﺍﺣﻲ ﻧﻤﺎﻳﻴﺪ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬

‫ﺭﺷﺘﻪ‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬
‫ﻳﻚ ‪ NPDA‬ﺑﺮﺍﻱ ﺯﺑﺎﻥ ‪ L‬ﻃﺮﺍﺣﻲ ﻧﻤﺎﻳﻴﺪ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬

‫ﻗﺮﺍﺭ ﺩﺍﺩﻥ ‪ w‬ﺩﺭ ﭘﺸﺘﻪ‬ ‫ﺣﺪﺱ ﺯﺩﻥ ﻭﺳﻂ ﺭﺷﺘﻪ‬ ‫ﺗﻄﺒﻴﻖ ‪wR‬‬

‫ﺭﺷﺘﻪ‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬

‫‪ ‬ﺁﺗﺎﻣﺎﺗﺎی ﭘﺷﺗﻪ ﺍی )‪ (PDA‬ﻭ ﺯﺑﺎﻥ ﻫﺎی ﻣﺳﺗﻘﻝ ﺍﺯ ﻣﺗﻥ ‪:‬‬


‫‪ ‬ﺑﺮﺍﻱ ﻫﺮ ﺯﺑﺎﻥ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ‪ ،‬ﻳﻚ ‪ NPDA‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺁﻥ ﺯﺑﺎﻥ ﺭﺍ ﻣﻲ ﭘﺬﻳﺮﺩ ﻭ ﺑﺎﻟﻌﻜﺲ‪ .‬ﻫﺮ ﺯﺑﺎﻧﻲ‬
‫ﻛﻪ ﺗﻮﺳﻂ ﻳﻚ ‪ NPDA‬ﭘﺬﻳﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ‪ ،‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬

‫‪ ‬ﺑﻨﺎﺑﺮﺍﻳﻦ‪ ،‬ﻣﻲ ﺗﻮﺍﻥ ﻳﻚ ‪ NPDA‬ﻃﺮﺍﺣﻲ ﻧﻤﻮﺩ ﻛﻪ ﻗﺎﺩﺭ ﺑﺎﺷﺪ ﻳﻚ ﺍﺷﺘﻘﺎﻕ ﭼﭗ‪ ،‬ﺑﺮﺍﻱ ﻛﻠﻴﻪ ﺭﺷﺘﻪ ﻫﺎﻱ‬
‫ﺯﺑﺎﻥ ﺭﺍ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﺪ‪.‬‬

‫‪ ‬ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺯﺑﺎﻥ‪ ،‬ﺗﻮﺳﻂ ﻳﻚ ﮔﺮﺍﻣﺮ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ‪ ،‬ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﺑﺎﺷﺪ‪.‬‬

‫ﻳﻚ ‪ PDA‬ﺑﺮﺍﻱ ﭘﺬﻳﺮﺵ ﺯﺑﺎﻧﻲ ﺑﺎ ﮔﺮﺍﻣﺮ ‪ S  aSbb | a‬ﻃﺮﺍﺣﻲ ﻧﻤﺎﻳﻴﺪ؟‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫‪S  aSA | a‬‬
‫ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﻧﻴﺴﺖ‬ ‫‪A  bB‬‬ ‫)}‪M = ({q0,q1,q2},{a,b},δ,{q0},{q2‬‬
‫‪Bb‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬

‫‪ .1‬ﺍﺑﺘﺪﺍ‪ ،‬ﺍﺯ ﻭﺿﻌﻴﺖ ﺷﺮﻭﻉ ﺁﻏﺎﺯ ﻣﻲ ﻧﻤﺎﻳﻴﻢ‪.‬‬

‫‪ .2‬ﺑﺎ ﺣﺬﻑ ‪ S‬ﺍﺯ ﭘﺸﺘﻪ ﻭ ﺟﺎﻳﮕﺰﻳﻨﻲ ﺁﻥ ﺑﺎ ‪ SA‬ﺗﻮﺳﻂ ‪ ، PDA‬ﺩﺭ ﺣﺎﻟﻴﻜﻪ ﻭﺭﻭﺩﻱ ‪ a‬ﺍﺳﺖ‪ ،‬ﺑﺎﻳﺴﺘﻲ‬
‫‪S  aSA | a‬‬ ‫ﺑﺎﻋﺚ ﺧﻮﺍﻧﺪﻩ ﺷﺪﻥ ‪ a‬ﺍﺯ ﻭﺭﻭﺩﻱ ﻭ ﺣﺬﻑ ‪ S‬ﺍﺯ ﭘﺸﺘﻪ ﮔﺮﺩﺩ‪.‬‬
‫ﻭ‬ ‫‪ .3‬ﺩﺍﺭﻳﻢ ‪:‬‬

‫‪ .4‬ﻇﺎﻫﺮ ﺷﺪﻥ ﻋﻼﻣﺖ ﺷﺮﻭﻉ ﭘﺸﺘﻪ‪ ،‬ﺑﻪ ﻣﻌﻨﺎﻱ ﭘﺎﻳﺎﻥ ﺍﺷﺘﻘﺎﻕ ﺑﻮﺩﻩ ﻭ ‪ PDA‬ﺩﺭ ﻭﺿﻌﻴﺖ ﻧﻬﺎﻳﻲ ﻗﺮﺍﺭ‬
‫ﻣﻲ ﮔﻴﺮﺩ‪.‬‬

‫• ﻗﻀﻴﻪ ‪ :‬ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﺯﺑﺎﻥ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ‪ ،L‬ﻳﻚ ‪ NDPA‬ﺑﻨﺎﻡ ‪ M‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﺑﻄﻮﺭﻳﻜﻪ )‪.L = L(M‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬
‫‪S  aA‬‬
‫‪A  aABC | bB | a‬‬
‫ﺳﺎﺧﺘﺎﺭ ﻗﻀﻴﻪ ﻣﺬﻛﻮﺭ‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫‪Bb‬‬
‫‪Cc‬‬
‫‪ ‬ﮔﺮﺍﻣﺮ ﻣﻮﺟﻮﺩ ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﻣﻲ ﺑﺎﺷﺪ‪ ،‬ﻟﺬﺍ ﻳﻚ ‪ NPDA‬ﺑﺮﺍﻱ ‪ M‬ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪.‬‬

‫ﭘﺮﺩﺍﺯﺵ ﺭﺷﺘﻪ ‪aaabc‬‬ ‫‪‬‬

‫‪S  aA  aaABC  aaaBC  aaabC  aaabc‬‬ ‫ﺍﺷﺘﻘﺎﻕ ﺭﺷﺘﻪ ‪aaabc‬‬ ‫‪‬‬

‫‪ ‬ﺿﺮﻭﺭﻱ ﻧﻴﺴﺖ ﻛﻪ ﮔﺮﺍﻣﺮ ﺩﺭ ﻓﺮﻡ ﻧﺮﻣﺎﻝ ﮔﺮﻳﺒﺎﺥ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ‪ ،‬ﺑﺮﺍﻱ ﻗﻮﺍﻧﻴﻦ ﺯﻳﺮ‪:‬‬
‫‪A  Bx‬‬ ‫‪ A .I‬ﺭﺍ ﺍﺯ ﭘﺸﺘﻪ ﺑﺮﺩﺍﺷﺘﻪ ﻭ ﺑﺪﻭﻥ ﻣﺼﺮﻑ ﻭﺭﻭﺩﻱ‪ ،‬ﺁﻥ ﺭﺍ ﺑﺎ ‪ Bx‬ﺟﺎﻳﮕﺰﻳﻦ ﻣﻲ ﻧﻤﺎﻳﻴﻢ‪.‬‬
‫‪ .II‬ﺍﺑﺘﺪﺍ‪ ،‬ﺭﺷﺘﻪ ‪ ab‬ﺩﺭ ﻭﺭﻭﺩﻱ ﺭﺍ ﺑﺎ ﺭﺷﺘﻪ ﻣﺸﺎﺑﻪ ﺩﺭ ﭘﺸﺘﻪ‪ ،‬ﺗﻄﺒﻴﻖ ﺩﺍﺩﻩ ﻭ ﺳﭙﺲ ‪ A ،‬ﺭﺍ ﺑﺎ ‪ Cx‬ﺟﺎﻳﮕﺰﻳﻦ‬
‫ﻣﻲ ﻧﻤﺎﻳﻴﻢ‪A  abCx .‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬

‫‪ ‬ﺁﺗﺎﻣﺎﺗﺎی ﭘﺷﺗﻪ ﺍی ﻣﻌﻳﻥ )‪ (DPDA‬ﻭ ﺯﺑﺎﻥ ﻫﺎی ﻣﺳﺗﻘﻝ ﺍﺯ ﻣﺗﻥ ‪:‬‬


‫‪ ،‬ﻣﻄﺎﺑﻖ ‪NPDA‬‬ ‫‪ ‬ﺁﺗﺎﻣﺎﺗﺎﻱ ﭘﺸﺘﻪ ﺍﻱ ﻣﻌﻴﻦ ‪ ، DPDA‬ﺑﻪ ﺻﻮﺭﺕ‬
‫ﺗﻌﺮﻳﻒ ﻣﻲ ﮔﺮﺩﺩ‪ .‬ﺑﻌﻼﻭﻩ ‪:‬‬

‫‪ ‬ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ﻭﺭﻭﺩﻱ ﻭ ﻫﺮ ﭼﻪ ﺩﺭ ﺑﺎﻻﻱ ﭘﺸﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﻓﻘﻂ ﻳﻚ ﺣﺮﻛﺖ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﻧﺠﺎﻡ ﮔﺮﺩﺩ‪.‬‬
‫ﺣﺪﺍﻛﺜﺮ ﺩﺍﺭﺍﻱ ﻳﻚ ﻋﻨﺼﺮ ﺑﺎﺷﺪ‪.‬‬
‫‪ ‬ﻫﺮﮔﺎﻩ ﻳﻚ ﺣﺮﻛﺖ ‪ λ‬ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﮔﺮﺩﺩ‪ ،‬ﺁﻧﮕﺎﻩ ﺑﺮﺍﻱ ﺁﻥ ﭘﻴﻜﺮﺑﻨﺪﻱ‪ ،‬ﻫﻴﭻ ﺣﺮﻛﺖ ﻫﻤﺮﺍﻩ ﺑﺎ‬
‫ﻣﺼﺮﻑ ﻭﺭﻭﺩﻱ‪ ،‬ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﻧﺨﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬
‫‪ ‬ﺗﻨﻬﺎ ﺷﺮﻃﻲ ﻛﻪ ﺑﺮﺍﻱ ﻣﻌﻴﻦ ﺑﻮﺩﻥ ﻭﺟﻮﺩ ﺩﺍﺭﺩ‪ ،‬ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﻫﻤﻪ ﺣﺎﻝ ﻓﻘﻂ ﻳﻚ ﺣﺮﻛﺖ‬
‫ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬
‫‪ ‬ﺯﺑﺎﻥ ﻣﺳﺗﻘﻝ ﺍﺯ ﻣﺗﻥ ﻣﻌﻳﻥ ﻳﺎ ‪: DCFL‬‬
‫‪ ‬ﺯﺑﺎﻥ ‪ L‬ﺭﺍ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻌﻴﻦ ﻭﻳﺎ ‪ DCFL‬ﮔﻮﻳﻨﺪ‪ ،‬ﺍﮔﺮ ﻭ ﻓﻘﻂ ﺍﮔﺮ ﻳﻚ ‪ DPDA‬ﻣﺎﻧﻨﺪ ‪ M‬ﻭﺟﻮﺩ‬
‫ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺑﻄﻮﺭﻳﻜﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ )‪. L = L(M‬‬

‫ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻌﻴﻦ ﻣﻲ ﺑﺎﺷﺪ‪ ،‬ﭼﺮﺍ ﻛﻪ ﻳﻚ ‪ DPDA‬ﻣﺎﻧﻨﺪ ‪ M‬ﺑﻪ‬ ‫ﺯﺑﺎﻥ‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫ﺷﺮﺡ ﺯﻳﺮ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ‪:‬‬

‫• ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ‪ 1 ،a‬ﺭﺍ ﺩﺭ ﭘﺸﺘﻪ ‪ Push‬ﻛﺮﺩﻩ ﻭ ﺑﺎ ﻫﺮ ‪ 1 ،b‬ﺭﺍ ﺍﺯ ﭘﺸﺘﻪ ‪ Pop‬ﻣﻲ ﻛﻨﺪ‪.‬‬

‫‪ :‬ﻛﺪﺍﻣﻴﻚ ﺍﺯ ﺯﺑﺎﻥ ﻫﺎﻱ ﺯﻳﺮ‪ ،‬ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻲ ﺑﺎﺷﻨﺪ؟‬ ‫ﻣﺜﺎﻝ‬


‫ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻌﻴﻦ ‪L1 U L2 :‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬
‫‪ ‬ﮔﺭﺍﻣﺭ ﻫﺎی ﻣﺭﺑﻭﻁ ﺑﻪ ﺯﺑﺎﻥ ﻫﺎی ﻣﺳﺗﻘﻝ ﺍﺯ ﻣﺗﻥ ﻣﻌﻳﻥ ‪:‬‬
‫‪ ‬ﺩﺭ ﮔﺮﺍﻣﺮ ﻫﺎﻱ ﺳﺎﺩﻩ‪ ،‬ﺩﺭ ﻫﺮ ﻣﺮﺣﻠﻪ ﺍﺯ ﭘﻮﻳﺶ‪ ،‬ﻣﺸﺨﺺ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﻛﺪﺍﻣﻴﻚ ﺍﺯ ﻗﻮﺍﻧﻴﻦ‬
‫ﺑﺎﻳﺴﺘﻲ ﺍﺳﺘﻔﺎﺩﻩ ﮔﺮﺩﻧﺪ‪) .‬ﮔﺮﺍﻣﺮﻫﺎﻱ ﻣﻨﻈﻢ ﭼﭗ ﻳﺎ ‪(LLG‬‬

‫ﮔﺮﺍﻣﺮ ‪ ، S  aSb | ab‬ﻳﻚ ﮔﺮﺍﻣﺮ ﺳﺎﺩﻩ ﻧﻴﺴﺖ‪ ،‬ﺍﻣﺎ ‪ LLG‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫‪ ‬ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﻗﺎﺩﺭ ﺑﺎﺷﻴﻢ ﻛﻪ ﺗﻌﻴﻴﻦ ﻧﻤﺎﻳﻴﻢ‪ ،‬ﻛﺪﺍﻡ ﻗﺎﻧﻮﻥ ﺍﺯ ﺑﻴﻦ ﻗﻮﺍﻧﻴﻦ ‪ S  aSb‬ﻭ ﻳﺎ‬
‫‪ ، S  ab‬ﺑﺎﻳﺴﺘﻲ ﺍﺳﺘﻔﺎﺩﻩ ﮔﺮﺩﺩ‪ ،‬ﺩﻭ ﺣﺮﻑ ﺁﻟﻔﺎﺑﺖ ﭘﺸﺖ ﺳﺮ ﻫﻢ ﺩﺭ ﺭﺷﺘﻪ ﻭﺭﻭﺩﻱ ﺭﺍ‬
‫ﺧﻮﺍﻧﺪﻩ ﻭ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ‪ .‬ﺍﮔﺮ ﺍﻭﻟﻴﻦ ﺁﻟﻔﺎﺑﺖ‪ ،‬ﻳﻚ ﺣﺮﻑ ‪ a‬ﻭ ﺩﻭﻣﻴﻦ ﺁﻟﻔﺎﺑﺖ‪ ،‬ﻳﻚ‬
‫ﺣﺮﻑ ‪ b‬ﺑﺎﺷﺪ‪ ،‬ﺑﺎﻳﺴﺘﻲ ﺍﺯ ﻗﺎﻧﻮﻥ ‪ S  ab‬ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﻢ‪ ،‬ﻭ ﺩﺭ ﻏﻴﺮ ﺍﻳﻨﺼﻮﺭﺕ ﺍﺯ ﻗﺎﻧﻮﻥ‬
‫‪. S  aSb‬‬

‫‪ ‬ﻣﻲ ﮔﻮﻳﻴﻢ ﮔﺮﺍﻣﺮ )‪ LL(K‬ﺍﺳﺖ‪ ،‬ﺍﮔﺮ ﻗﺎﺩﺭ ﺑﺎﺷﻴﻢ ﺑﺎ ﺩﺭ ﺩﺳﺖ ﺩﺍﺷﺘﻦ ﺁﻟﻔﺎﺑﺖ ﻓﻌﻠﻲ ﻭﺭﻭﺩﻱ ﻭ‬
‫ﻫﻤﭽﻨﻴﻦ ﺧﻮﺍﻧﺪﻥ ﻭ ﺩﺭ ﻧﻄﺮ ﮔﺮﻓﺘﻦ ‪ K-1‬ﺁﻟﻔﺎﺑﺖ ﺑﻌﺪﻱ‪ ،‬ﻗﺎﻧﻮﻧﻲ ﺭﺍ ﻛﻪ ﺑﺎﻳﺴﺘﻲ ﺍﺳﺘﻔﺎﺩﻩ‬
‫ﮔﺮﺩﺩ‪ ،‬ﺗﺸﺨﻴﺺ ﺩﻫﻴﻢ‪ .‬ﮔﺮﺍﻣﺮ ﻣﻮﺟﻮﺩ ﺩﺭ ﻣﺜﺎﻝ ﻓﻮﻕ‪ LL(2) ،‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬
‫ﮔﺮﺍﻣﺮ ‪ ، S  SS | aSb | ab‬ﺭﺍ ﻛﻪ ﺑﺴﺘﺎﺭ ﮔﺮﺍﻣﺮ ﻣﺜﺎﻝ ﻗﺒﻠﻲ ﺍﺳﺖ‪ ،‬ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪.‬‬ ‫ﻣﺜﺎﻝ ‪:‬‬
‫ﮔﺮﺍﻣﺮ ﻓﻮﻕ‪ ،‬ﺑﺮﺍﻱ ﻫﻴﭻ ﻣﻘﺪﺍﺭﻱ ﺍﺯ ‪ ، K‬ﻳﻚ ﮔﺮﺍﻣﺮ )‪ LL(K‬ﻧﻤﻲ ﺑﺎﺷﺪ‪ .‬ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﻤﻮﻧﻪ‪ ،‬ﺩﻭ ﻗﺎﻧﻮﻥ‬ ‫‪‬‬
‫‪ S SS‬ﻭ ‪ S  aSb‬ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬ﺁﻟﻔﺎﺑﺖ ﻓﻌﻠﻲ ﻭﺭﻭﺩﻱ ﻗﺎﺩﺭ ﻧﻴﺴﺖ ﻛﻪ ﻗﺎﻧﻮﻥ ﺻﺤﻴﺢ ﺭﺍ‬
‫ﺑﺮﺍﻱ ﭘﺮﺩﺍﺯﺵ ﻭﺭﻭﺩﻱ ﺗﺸﺨﻴﺺ ﺩﻫﺪ‪ .‬ﺍﮔﺮ ﺩﻭ ﺁﻟﻔﺎﺑﺖ ﻭﺭﻭﺩﻱ ﺑﺎ ﻫﻤﺪﻳﮕﺮ ﺧﻮﺍﻧﺪﻩ ﺷﻮﻧﺪ ﻭ ﻫﻤﭽﻨﻴﻦ‪ ،‬ﺍﮔﺮ‬
‫ﺩﻭ ﺁﻟﻔﺎﺑﺖ ﻭﺭﻭﺩﻱ ‪ aa‬ﺑﺎﺷﻨﺪ‪ ،‬ﺑﺎﺯ ﻫﻢ ﻧﻤﻲ ﺗﻮﺍﻥ ﺗﺸﺨﻴﺺ ﺩﺍﺩ ﻛﻪ ﻛﺪﺍﻡ ﻗﺎﻧﻮﻥ ﺻﺤﻴﺢ ﺑﻌﺪﻱ ﺑﺮﺍﻱ‬
‫ﭘﺮﺩﺍﺯﺵ ﻭﺭﻭﺩﻱ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬
‫ﻣﺸﻜﻞ ﺍﻳﻨﺠﺎﺳﺖ ﻛﻪ ﻧﻤﻲ ﺗﻮﺍﻥ ﭘﻴﺸﮕﻮﻳﻲ ﻧﻤﻮﺩ ﻛﻪ ﭼﻨﺪ ﺑﺎﺭ ﺗﻜﺮﺍﺭ ﺍﻟﮕﻮﻱ ‪ an bn‬ﺗﺎ ﺍﻧﺘﻬﺎﻱ ﺭﺷﺘﻪ‬ ‫‪‬‬
‫ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ‪ ،‬ﺑﺎﻳﺴﺘﻲ ﮔﺮﺍﻣﺮ ﻓﻮﻕ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺑﺎﺯ ﻧﻮﻳﺴﻲ ﻧﻤﻮﺩ‪ .‬ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ‬
‫ﺑﺎﺷﻴﺪ ﻛﻪ ﺍﻳﻦ ﮔﺮﺍﻣﺮ ‪ LL‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪S  aSbS | λ‬‬
‫ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﻤﻮﻧﻪ‪ ،‬ﭘﺮﺩﺍﺯﺵ ﺭﺷﺘﻪ ‪ abab‬ﺑﻪ ﺷﺮﺡ ﺯﻳﺮ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬ ‫‪‬‬
‫‪S  aSbS  abS  abaSbS  ababS  abab‬‬
‫ﻣﺸﺎﻫﺪﻩ ﻣﻲ ﮔﺮﺩﺩ ﻛﻪ ﺍﻳﻦ ﮔﺮﺍﻣﺮ ﻧﻴﺎﺯ ﺑﻪ ﺍﻧﺘﺨﺎﺏ ﻧﺪﺍﺭﺩ‪ ،‬ﺑﻄﻮﺭﻳﻜﻪ ﺍﮔﺮ ﺁﻟﻔﺎﺑﺖ ﻭﺭﻭﺩﻱ ﻓﻌﻠﻲ ﺣﺮﻑ ‪a‬‬
‫ﺑﺎﺷﺪ‪ ،‬ﺍﺯ ﺩﻭ ﻗﺎﻋﺪﻩ ﮔﺮﺍﻣﺮ‪ ،‬ﻗﺎﻋﺪﻩ ‪ S  aSbS‬ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﮔﺮﺩﺩ ﻭ ﻫﻤﭽﻨﻴﻦ‪ ،‬ﺍﮔﺮ ﺁﻟﻔﺎﺑﺖ ﻭﺭﻭﺩﻱ‬
‫ﻓﻌﻠﻲ ﺣﺮﻑ ‪ b‬ﺑﺎﺷﺪ‪ ،‬ﻳﺎ ﺩﺭ ﺍﻧﺘﻬﺎﻱ ﺭﺷﺘﻪ ﻗﺮﺍﺭ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺑﺎﻳﺴﺘﻲ ﻗﺎﻋﺪﻩ ‪ S  λ‬ﺍﺳﺘﻔﺎﺩﻩ ﮔﺮﺩﺩ‪.‬‬
‫ﻟﺬﺍ‪ ،‬ﮔﺮﺍﻣﺮ ﺟﺪﻳﺪ ﻗﺎﺩﺭ ﺧﻮﺍﻫﺪ ﺑﻮﺩ ﻛﻪ ﺭﺷﺘﻪ ﺗﻬﻲ ﺭﺍ ﻧﻴﺰ ﺗﻮﻟﻴﺪ ﻧﻤﺎﻳﺪ‪ .‬ﺑﻨﺎﺑﺮﺍﻳﻦ ﺧﻮﺍﻫﻴﻢ ﺩﺍﺷﺖ ‪:‬‬
‫‪S1  aSbS‬‬
‫‪S  aSbS | λ‬‬
‫ﻓﺼﻞ ﻫﻔﺘﻢ‬

‫‪ ‬ﮔﺭﺍﻣﺭ )‪: LL(K‬‬


‫‪ ‬ﻓﺮﺽ ﻧﻤﺎﻳﻴﺪ ﻛﻪ )‪ ، G = (V,T,S,P‬ﻳﻚ ﮔﺮﺍﻣﺮ ﻣﺴﺘﻘﻞ ﺍﺯ ﻣﺘﻦ ﻣﻲ ﺑﺎﺷﺪ‪ ،‬ﺍﮔﺮ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ‬
‫ﺯﻭﺝ ﺍﺷﺘﻘﺎﻕ ﭼﭗ ‪:‬‬

‫ﺑﺎﺷﺪ‪ ،‬ﺁﻧﮕﺎﻩ‬ ‫‪ ،‬ﺑﻪ ﻣﻌﻨﺎﻱ‬ ‫ﺍﮔﺮ ﺗﺴﺎﻭﻱ ‪ K‬ﺁﻟﻔﺎﺑﺖ ﻭﺭﻭﺩﻱ ﭼﭗ ﺩﺭ ﺭﺷﺘﻪ‬ ‫‪‬‬
‫ﮔﺮﺍﻣﺮ ‪G‬ﻳﻚ ﮔﺮﺍﻣﺮ )‪ LL(K‬ﺧﻮﺍﻫﺪ ﺑﻮﺩ‪.‬‬
‫‪ K ،‬ﺁﻟﻔﺎﺑﺖ ﺑﻌﺪﻱ ﻭﺭﻭﺩﻱ ﻣﺸﺨﺺ ﺑﺎﺷﺪ‪،‬‬ ‫ﺍﮔﺮ ﺩﺭ ﻫﺮ ﻣﺮﺣﻠﻪ ﺍﺯ ﺍﺷﺘﻘﺎﻕ ﭼﭗ‬ ‫‪‬‬
‫ﮔﺎﻡ ﺑﻌﺪﻱ ﺩﺭ ﺍﺷﺘﻘﺎﻕ ﺩﻗﻴﻘﺎً ﻣﻌﻴﻦ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫ﻓﺻﻝ ﻫﺷﺗﻡ‬
‫ﻣﺎﺷﻴﻦ ﺗﻮﺭﻳﻨﮓ‬
‫ﭘــﺎﻳــﺎﻥ‬

You might also like