TMLassignment.pdf

‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﺗﻤﺮﻳﻦ ﺳﺮي ﭘﻨﺠﻢ‬
‫ﻧﻈﺮﻳﻪ زﺑﺎنﻫﺎ و ﻣﺎﺷﻴﻦﻫﺎ‬
‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫‪ -1‬زﺑﺎن ‪ L1‬ﻣﺴﺘﻘﻞ از ﻣﺘﻦ ﻧﻴﺴﺖ‪ .‬اﻳﻦ ادﻋﺎ را ﺑﺎ ﻟﻢ ﭘﺎﻣﭙﻴﻨﮓ ﺛﺎﺑﺖ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﻓﺮض ﻛﻨﻴﺪ ﻃﻮل ﭘﺎﻣﭙﻴﻨﮓ ‪ p‬ﺑﺎﺷﺪ‪ .‬ﺣﺎل رﺷﺘﻪ ‪ 0 1 #0 1‬را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬ﺑﻨﺎﺑﺮ ﻟﻢ ﺑﺎﻳﺪ ﺑﺘﻮان اﻳﻦ رﺷﺘﻪ را‬
‫ﻧﻮﺷﺖ ﻛﻪ ﺑﻪ ازاي ﻫﺮ ‪0‬‬
‫ﻃﻮري ﺑﻪ ﺻﻮرت‬
‫داﺷﺘﻪ ﺑﺎﺷﻴﻢ ‪1‬‬
‫‪ .‬اﮔﺮ ﻋﻼﻣﺖ ‪ #‬در ‪y‬‬
‫ﺷﺎﻣﻞ دو ﻋﻼﻣﺖ ‪ #‬ﻣﻲﺷﻮد‪ ،‬و اﮔﺮ در ‪ v‬ﻳﺎ ‪ z‬ﺑﺎﺷﺪ‪ ،‬در رﺷﺘﻪ‬
‫ﻳﺎ ‪ w‬ﺑﺎﺷﺪ‪ ،‬رﺷﺘﻪ‬
‫دو‬
‫|‬
‫ﻃﺮف ﻋﻼﻣﺖ ‪ #‬ﻃﻮل ﻧﺎﻣﺴﺎوي ﺧﻮاﻫﻨﺪ داﺷﺖ‪ .‬ﭘﺲ ﻋﻼﻣﺖ ‪ #‬ﺑﺎﻳﺪ در ‪ x‬ﺑﺎﺷﺪ‪ .‬از ﻃﺮﻓﻲ دارﻳﻢ‬
‫|‪ ،‬در‬
‫ﻧﺘﻴﺠﻪ رﺷﺘﻪﻫﺎي ‪ w‬و ‪ y‬ﻣﺎﻧﻨﺪ ﺷﻜﻞ زﻳﺮ ﺑﺎﻳﺪ اﻧﺘﺨﺎب ﺷﻮﻧﺪ‪:‬‬
‫‪00. . .0 1. 1. . .1 . . .1 # 0. . . 0 … 0 … 0 11. . .1‬‬
‫‪w‬و ‪0‬‬
‫ﻣﺜﻼ اﮔﺮ ‪1‬‬
‫‪ y‬آﻧﮕﺎه ‪1‬‬
‫‪#0‬‬
‫و در ﻧﺘﻴﺠﻪ ‪1‬‬
‫‪0 1‬‬
‫‪ .‬ﭘﺲ زﺑﺎن ‪L1‬‬
‫ﻣﺴﺘﻘﻞ از ﻣﺘﻦ ﻧﻴﺴﺖ‪.‬‬
‫زﺑﺎن ‪ L2‬ﻣﺴﺘﻘﻞ از ﻣﺘﻦ اﺳﺖ‪ .‬ﻣﻲﺗﻮان ﻳﻚ ‪ PDA‬ﺑﺮاي آن ﻃﺮاﺣﻲ ﻛﺮد‪.‬‬
‫اﻳﺪه‪ :‬در ﺣﺎﻟﺖ ﻛﻠﻲ ﺑﺮاي آﻧﻜﻪ‬
‫‪#‬‬
‫ﺑﻪ ‪ L2‬ﻣﺘﻌﻠﻖ ﺑﺎﺷﺪ ﺑﺎﻳﺪ ﺑﻪ ازاي ﻳﻚ ‪ i‬ﺣﺮف ‪i‬ام ‪ w‬ﺑﺎ ﺣﺮف ‪i‬ام‬
‫ﺗﻔﺎوت داﺷﺘﻪ ﺑﺎﺷﺪ‪ .1‬ﺑﺮاي ﭼﻚ ﻛﺮدن اﻳﻦ ﻣﺴﺎﻟﻪ ﻣﻲﺗﻮان ‪ i-1‬ﺣﺮف اول ‪ w‬را روي ﭘﺸﺘﻪ ﮔﺬاﺷﺘﻪ‪ ،‬ﺣﺮف ‪i‬ام را ﺑﻪ‬
‫‪,‬‬
‫‪,‬‬
‫&‪,‬‬
‫&‪,‬‬
‫‪#,‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,$‬‬
‫‪ ‬‬
‫‪,‬‬
‫&‬
‫&‬
‫‪,‬‬
‫‪,‬‬
‫‪#,‬‬
‫‪#,‬‬
‫‪ ‬‬
‫‪,$‬‬
‫‪,‬‬
‫‪ ‬‬
‫‪$,‬‬
‫‪#,‬‬
‫&‪,‬‬
‫&‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪1‬ﺣﺎﻟﺖ دﻳﮕﺮ ﺁن اﺳﺖ ﮐﻪ ﻃﻮل دو رﺷﺘﻪ ﻣﺘﻔﺎوت ﺑﺎﺷﺪ ﻳﺎ ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ ﻳﮑﻲ از‬
‫دو رﺷﺘﻪ ﺣﺮف ‪i‬ام ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬روش ﺑﻴﺎن ﺷﺪﻩ ﺷﺎﻣﻞ اﻳﻦ ﺣﺎﻟﺖ ﻧﻴﺰ ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫]‪[1‬‬
‫ﺧﺎﻃﺮﺳﭙﺮده )ﺗﻮﺳﻂ وﺿﻌﻴﺖﻫﺎي ﻣﺎﺷﻴﻦ(‪ ،‬ﭘﺲ از آن ﺑﺪون اﻳﻨﻜﻪ ﭼﻴﺰي از ﭘﺸﺘﻪ ﻛﻢ ﻳﺎ ﺑﻪ آن اﺿﺎﻓﻪ ﻛﻨﻴﻢ‪ ،‬ورودي‬
‫را ﺑﺨﻮاﻧﻴﻢ ﺗﺎ ﺑﻪ ‪ #‬ﺑﺮﺳﻴﻢ‪ .‬ﺳﭙﺲ ﺑﻪ ازاي ﻫﺮ ﺣﺮف از‬
‫ﻛﻪ ﺧﻮاﻧﺪه ﻣﻲﺷﻮد ﻳﻚ ﺣﺮف از روي ﭘﺸﺘﻪ ﺑﺮدارﻳﻢ ﺗﺎ‬
‫زﻣﺎﻧﻲ ﻛﻪ ﭘﺸﺘﻪ ﺧﺎﻟﻲ ﺷﻮد‪ .‬اﻛﻨﻮن اﮔﺮ ﺣﺮف ﺧﻮاﻧﺪه ﺷﺪه ورودي ﺑﺎ ﻣﻘﺪاري ﻛﻪ ﺑﻪ ﺧﺎﻃﺮ ﺳﭙﺮده ﺑﻮدﻳﻢ ﺗﻔﺎوت‬
‫داﺷﺖ ‪ w‬را ﻣﻲﭘﺬﻳﺮﻳﻢ‪ .‬اﻣﺎ از آﻧﺠﺎ ﻛﻪ ﻣﻘﺪار ‪ i‬را ﻧﻤﻲداﻧﻴﻢ از ﻋﺪم ﻗﻄﻌﻴﺖ ‪ PDA‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫ﭘﻴﺎده ﺳﺎزي‪ :‬ﻫﻤﺎن ﻃﻮر ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ از ﭘﺸﺘﻪ ﻓﻘﻂ ﺑﺮاي ﺷﻤﺮدن اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ ،‬ﭘﺲ ﻟﺰوﻣﻲ ﻧﺪارد ﻛﻪ ﺧﻮد‬
‫ﺣﺮوف را روي ﭘﺸﺘﻪ ﺑﮕﺬارﻳﻢ‪ ،‬ﺑﻠﻜﻪ ﻣﻲﺗﻮان ﻫﺮ ﺣﺮف دﻟﺨﻮاه ﻣﺎﻧﻨﺪ & را در ﭘﺸﺘﻪ ﮔﺬاﺷﺖ‪ .‬ﺣﺮف ‪ $‬ﻧﻴﺰ در اﺑﺘﺪا‬
‫روي ﭘﺸﺘﻪ ﻗﺮار داده ﻣﻲﺷﻮد ﺗﺎ ﺑﺘﻮان ﺧﺎﻟﻲ ﺷﺪن ﭘﺸﺘﻪ را ﺗﺸﺨﻴﺺ داد‪ .‬ﻧﻜﺘﻪ دﻳﮕﺮ آﻧﻜﻪ ﻣﻤﻜﻦ اﺳﺖ رﺷﺘﻪ اول ‪ε‬‬
‫ﺑﺎﺷﺪ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ رﺷﺘﻪ دوم ﻫﺮﭼﻪ ﻏﻴﺮ از ‪ ε‬ﺑﺎﺷﺪ‪ ،‬ﻛﻞ رﺷﺘﻪ را ﺑﺎﻳﺪ ﺑﭙﺬﻳﺮﻳﻢ‪ .‬ﮔﺬارﻫﺎي از‬
‫و‬
‫ﺑﻪ‬
‫ﺑﻪ‬
‫اﻳﻦ ﻣﻨﻈﻮر ﻛﺸﻴﺪه ﺷﺪهاﻧﺪ‪ .‬دﻳﮕﺮ ﺟﺰﺋﻴﺎت ﭘﻴﺎده ﺳﺎزي در ﺷﻜﻞ ﻧﻤﺎﻳﺶ داده ﺷﺪه‪ .‬ﻣﺆﻟﻔﻪ ﻫﺎي اﻳﻦ ‪ PDA‬ﺑﻪ ﺷﺮح‬
‫زﻳﺮ اﺳﺖ‪:‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪&, $‬‬
‫ﻧﺘﻴﺠﻪ‪ :‬ﻣﺠﻤﻮﻋﻪ زﺑﺎنﻫﺎي ﻣﺴﺘﻘﻞ از ﻣﺘﻦ ﻧﺴﺒﺖ ﺑﻪ ﻋﻤﻠﮕﺮ ﻣﻜﻤﻞ ﺑﺴﺘﻪ ﻧﻴﺴﺖ!‬
‫‪ -2‬ﻓﺮض ﻣﻲﻛﻨﻴﻢ اوﻟﻮﻳﺘﻬﺎ از ﺑﺎﻻ ﺑﻪ ﭘﺎﻳﻴﻦ *‪،o ،‬‬
‫ﺑﺎﺷﻨﺪ‪.‬‬
‫| | |‬
‫|‬
‫‪ ‬‬
‫‪ ‬‬
‫|‬
‫‪ -3‬ﻫﺮ زﺑﺎن ﻣﻨﻈﻢ ﻳﻚ ‪ DFA‬دارد ﻛﻪ آن را ﻣﻲﭘﺬﻳﺮد‪ .‬ﻳﻚ ‪ DFA‬ﺣﺎﻟﺖ ﺧﺎﺻﻲ از ﻳﻚ ‪ PDA‬اﺳﺖ‪ .‬در واﻗﻊ‬
‫‪ PDA‬ﻳﻚ ‪ DFA‬اﺳﺖ ﻛﻪ ﻋﺪم ﻗﻄﻌﻴﺖ و ﭘﺸﺘﻪ ﺑﻪ آن اﺿﺎﻓﻪ ﺷﺪه‪ .‬ﭘﺲ ﻫﺮ زﺑﺎن ﻣﻨﻈﻢ ﻳﻚ ‪ PDA‬ﻗﻄﻌﻲ دارد‪.‬‬
‫‪ -4‬ﺑﺮاي زﺑﺎن ‪ L‬ﻳﻚ ‪ PDA‬ﻃﺮاﺣﻲ ﻣﻲﻛﻨﻴﻢ‪.‬‬
‫اﻳﺪه‪ :‬ﺗﻔﺎﺿﻞ ﺗﻌﺪاد ‪ a‬و ﺗﻌﺪاد ‪ b‬ﺧﻮاﻧﺪه ﺷﺪه را )از ﺟﻨﺲ ﺣﺮﻓﻲ ﻛﻪ ﺑﻴﺸﺘﺮ ﺗﻜﺮار ﺷﺪه( در ﭘﺸﺘﻪ ﻧﮕﻪ دارﻳﻢ‪ .‬ﺑﻪ‬
‫ﻋﻨﻮان ﻣﺜﺎل اﮔﺮ ﺗﺎ ﺑﻪ ﺣﺎل ‪ 5‬ﺗﺎ ‪ a‬و ‪ 2‬ﺗﺎ ‪ b‬ﺧﻮاﻧﺪه ﺷﺪه ‪ 3‬ﻋﺪد ‪ a‬در ﭘﺸﺘﻪ داﺷﺘﻪ ﺑﺎﺷﻴﻢ‪ .‬ﺣﺎل اﮔﺮ ﺣﺮف ﺑﻌﺪي ﻛﻪ‬
‫ﻣﻲﺧﻮاﻧﻴﻢ ‪ a‬ﺑﻮد‪ ،‬آن را ﺑﻪ ﭘﺸﺘﻪ اﺿﺎﻓﻪ ﻣﻲﻛﻨﻴﻢ و اﮔﺮ ‪ b‬ﺑﻮد‪ ،‬ﻳﻚ ‪ a‬را از ﭘﺸﺘﻪ ﺑﺮﻣﻲدارﻳﻢ‪ .‬اﮔﺮ ﭘﺸﺘﻪ ﺧﺎﻟﻲ ﺑﺎﺷﺪ‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪$‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫‪,‬‬
‫]‪[2‬‬
‫)ﻛﻪ ﻳﻌﻨﻲ ﺗﻌﺪاد ‪ a‬و ‪ b‬ﺧﻮاﻧﺪه ﺷﺪه ﺑﺮاﺑﺮ ﺑﻮده( ﻫﺮ ﺣﺮﻓﻲ را ﺧﻮاﻧﺪﻳﻢ روي ﭘﺸﺘﻪ ﻣﻲﮔﺬارﻳﻢ‪ .‬ﻫﺮﮔﺎه ﭘﺸﺘﻪ ﺧﺎﻟﻲ‬
‫ﻧﺒﺎﺷﺪ ﻧﻴﺰ رﺷﺘﻪ را ﻣﻲﭘﺬﻳﺮﻳﻢ‪.‬‬
‫ﭘﻴﺎده ﺳﺎزي‪ :‬از ‪ $‬ﺑﺮاي اﻃﻼع از ﺧﺎﻟﻲ ﺷﺪن ﭘﺸﺘﻪ اﺳﺘﻔﺎده ﺷﺪه‪ .‬ﻣﺆﻟﻔﻪﻫﺎي ‪ PDA‬ﺑﻪ ﺷﺮح زﻳﺮ ﻣﻲﺑﺎﺷﻨﺪ‪:‬‬
‫‪,‬‬
‫‪ -5‬اﻟﻒ( ﻫﻤﺎن ﻃﻮر ﻛﻪ در ﺷﻜﻞ ﻧﺸﺎن داده ﺷﺪه‪ ،‬رﺷﺘﻪ‬
‫‪,‬‬
‫‪,‬‬
‫‪ $‬و ‪,‬‬
‫داراي دو درﺧﺖ اﺷﺘﻘﺎق در ﮔﺮاﻣﺮ ‪ G‬اﺳﺖ‪.‬‬
‫|‬
‫ب( زﺑﺎن اﻳﻦ ﮔﺮاﻣﺮ ﺑﻪ ﺻﻮرت ‪0‬‬
‫‪,‬‬
‫‪,‬‬
‫اﺳﺖ‪ .‬ﮔﺮاﻣﺮ ﻧﺎﻣﺒﻬﻢ‬
‫را ﺑﻪ ﺻﻮرﺗﻲ ﺗﻌﺮﻳﻒ‬
‫ﻣﻴﻜﻨﻴﻢ ﻛﻪ زﺑﺎن ‪ L‬را ﺗﻮﻟﻴﺪ ﻛﻨﺪ‪:‬‬
‫|‬
‫‪S‬‬
‫‪S‬‬
‫‪S‬‬
‫‪S‬‬
‫‪S‬‬
‫‪b‬‬
‫‪ε‬‬
‫‪S‬‬
‫‪a‬‬
‫‪b‬‬
‫‪a‬‬
‫]‪[3‬‬
‫‪ε‬‬
‫‪a‬‬
‫‪a‬‬
‫|‬