You are on page 1of 35

‫ﻧﻈﺮﯾﺔ اﻟﺤﻮﺳﺒﺔ‬

‫‪Theory of Computation‬‬

‫د‪.‬اﯾﻤﻦ ﺣﻤﺎرﺷﮫ‬

‫‪1‬‬
‫اﻟﺤﻮﺳﺒﺔ ‪Theory of Computation‬‬

‫ﻛﻠﻤﺔ "‪ "Computing‬أﺳﺎﺳًﺎ ﻛﺎﻧﺖ ﺗﺴﺘﺨﺪم ﻣﻊ ﻣﺎ ﻟﮫ ﻋﻼﻗﺔ ﺑﺎﻟﻌﺪ و اﻟﺤﺴﺎب )‪(calculating counting‬‬
‫إﻟﻰ‬ ‫‪ and‬أي اﻟﻌﻠﻢ اﻟﺬي ﯾﺘﻌﻠﻖ ﺑﺈﺟﺮاء اﻟﺤﺴﺎﺑﺎت اﻟﺮﯾﺎﺿﯿﺔ‪.‬‬
‫إﻟﻰ‬
‫اﻟﺘﻲ ﺗﺆﺳﺲ ﻟﻌﻠﻮم اﻟﺤﺎﺳﺐ‪.‬‬

‫اﻟﺤﻮﺳﺒﺔ )‪ : (Computation‬ﯾﻤﻜﻦ ﺗﻌﺮﯾﻔﮭﺎ ﻋﻠﻰ أﻧﮭﺎ ﺳﻠﺴﻠﺔ اﻟﺨﻄﻮات اﻟﻮﺳﯿﻄﺔ ‪intermediate steps‬‬
‫‪.‬و‬ ‫أو ﻣﺴﺄ ﻟﺔ ﻣﺎ‬ ‫اﻟﺘﻲ ﻧﺴﺘﺨﺪﻣﮭﺎ ﻓﻲ اﻧ‬
‫ﻋﻠﻰ أﻧﮭﺎ ﺧﻮارزﻣﯿﺔ ‪ algorithm‬ﻧﻘﻮم ﺑﮭﺎ ﻟﺘﺤﻮﯾﻞ ﻣﺪﺧﻼت ‪ input‬ﻣﺴﺄﻟﺔ ﻣﺎ إﻟﻰ ﻣﺨﺮﺟﺎت ‪ outputs‬أو ﻧﺘﺎﺋﺞ‬
‫‪computation‬‬ ‫أن اﻟ‬ ‫ﺣﺔ(‪.‬‬
‫أي ﺣﻠﻮلﻟ ﻠﻤﺴ ﺄﻟﺔ ا ﻟﻤﻄﺮو‬ ‫)‬
‫‪.‬‬
‫وﻛﻤﺎ ھﻮ ﻣﻌﺮوف ﻓﻲ أي ﺧﻮارزﻣﯿﺔ ھﻨﺎك ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ و اﻟﻤﻨﻄﻘﯿﺔ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ ,‬وﻧﺘﯿﺠﺔ ﻛﻞ‬
‫‪,‬‬
‫أو اﻻﻧﺘﻘﺎل إﻟﻰ‬ ‫إﻟﻰ‬ ‫ﺷﺮوط اﻻﻧﺘﻘﺎل ﻣﻦ ﻋﻤﻠﯿﺔ ﻷﺧﺮى و ﻛﺬﻟﻚ‬
‫ﺗﺎﻟﯿﺔ )اﻟﻘﻔﺰ إﻟﻰ أﻋﻠﻰ و إﻟﻰ أﺳﻔﻞ(‪.‬‬
‫ﻟ ﻤﺴﺄﻟﺔ ﻣﺎ اﺑﺘﺪاء‬
‫ﺑﺎﺳﺘﺨﺪام ﺧﻮارزﻣﯿﺔ ‪ .‬وﯾﻤﻜﻦ أن ﯾﺸﻤﻞ ھﺬا أﯾﻀﺎ إﯾﺠﺎد اﻟﺨﻮارزﻣﯿﺎت اﻟﻤﻨﺎﺳﺒﺔ ﻟﺤﻞ ﻧﻤﻂ ﻣﻌﯿﻦ ﻣﻦ اﻟﻤﺴﺎﺋﻞ ‪.‬‬
‫‪Algorithms‬‬ ‫‪Inputs‬‬
‫‪Computability Theory‬‬ ‫‪.‬‬
‫اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ‪. Computational Complexity Theory‬‬

‫‪theoretical‬‬ ‫ﺘ ﺤﺴﯿﺐ ‪: Computability Theory‬‬


‫‪ science computer‬اﻟﺘﻲ ﺗﺪرس اﻟﻤﺴﺎﺋﻞ اﻟﻘﺎﺑﻠﺔ ﻟﻠﺤﻞ ﺣﺎﺳﻮﺑﯿﺎ ‪ computationally solvable‬ﺑﺎﺳﺘﺨﺪام‬
‫ﻧﻤﺎذج ﻣﺨﺘﻠﻔﺔ ﻟﻠﺤﻮﺳﺒﺔ‪.‬‬

‫‪computational‬‬ ‫ﻛ‬
‫أن‬ ‫‪,‬‬ ‫‪ complexity theory ,‬ﺣﯿﺚ أن‬
‫ﺳﻮب‪.‬‬
‫ﺑﺎﺳﺘﺨﺪام اﻟﺤﺎ‬ ‫ﺳﺎ ﻟﻠﺤﻞ ‪solvable‬‬
‫أﺳﺎ‬ ‫ﻛﺎﻧﺖ‬ ‫إذا‬

‫‪2‬‬
‫‪ : Computational Complexity‬إﺣﺪى أﺟﺰاء‬
‫أو ﻣﺎ‬ ‫)‬ ‫‪.‬و‬
‫أن‬ ‫(‪,‬و‬ ‫ﯾﻘﺎﺑﻠﮭﺎ ﻣﻦ اﻟﻮﻗﺖ ﯾﻠﺰم ﻟﺤﻞ اﻟﻤﺴﺄﻟﺔ ( و اﻟﻤﻜﺎن )‬
‫ﺑﺎﻻﻋﺘﺒﺎر ﻣﻮارد أﺧﺮى ‪ ,‬ﻣﺜﻞ ‪ :‬ﻛﻢ ﻋﺪد اﻟﻤﻌﺎﻟﺠﺎت اﻟﻤﺘﻮازﯾﺔ اﻟﻼزﻣﺔ ﻹﻧﺠﺎز اﻟﺤﺴﺎب ﺑﺎﺳﺘﺨﺪام ﺑﺮﻣﺠﺔ ﻣﺘﻮازﯾﺔ‪.‬‬

‫ﻓﻲ ﻧﻈﺮﯾﺔ اﻟﺘﺤﺴﯿﺐ ‪ ،‬ﺗﺴﺘﺨﺪم ﻏﺎﻟﺒﺎ اﻵﻻت اﻟﻤﺠﺮدة ﺿﻤﻦ اﻟﺘﺠﺎرب اﻟﻔﻜﺮﯾﺔ اﻟﻤﺘﻌﻠﻘﺔ ﺑﺎﻟﺤﺴﻮﺑﯿﺔ و ﺗﺤﻠﯿﻞ‬
‫ﺗﻌﻘﯿﺪ اﻟﺨﻮارزﻣﯿﺎت )ﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ( ‪ .‬ﺗﻌﺘﺒﺮ اﻵﻟﺔ اﻟﻤﺠﺮدة اﻟﻨﻤﻮذﺟﯿﺔ ﺗﺘﺄﻟﻒ ﻣﻦ دﺧﻞ و ﺧﺮج و ﻣﺠﻤﻮﻋﺔ‬
‫ﻋﻤﻠﯿﺎت ﻣﺼﺮح ﺑﮭﺎ ﺗﺴﺘﻌﻤﻞ ﻟﺘﺤﻮﯾﻞ اﻟﺪﺧﻞ إﻟﻰ ﺧﺮج ‪ .‬أﻓﻀﻞ اﻷﻣﺜﻠﺔ و أﻛﺜﺮھﺎ ﺷﯿﻮﻋﺎ ھﻮ آﻟﺔ ﺗﻮرﯾﻨﻎ ‪.‬‬

‫ﻟﺬﻟﻚ ﻋﻨﺪ إﻧﺠﺎز دراﺳﺔ ﻣﻨﮭﺠﯿﺔ ﻟﻠﺘﺤﺴﯿﺐ ‪ ،‬ﯾﺸﻜﻞ ﻋﻠﻤﺎء اﻟﺤﺎﺳﻮب ﻧﻤﺎذج رﯾﺎﺿﯿﺔ ﻣﺠﺮدة ﻣﻦ اﻟﺤﻮاﺳﯿﺐ‬
‫ﺗﺪﻋﻰ ﻧﻤﺎذج اﻟﺤﻮﺳﺒﺔ ‪ . models of computation‬ﺗﻮﺟﺪ ﻋﺪة أﻧﻤﺎط ﻣﻦ ھﺬه اﻟﻨﻤﺎذج ﻗﯿﺪ اﻻﺳﺘﻌﻤﺎل ‪ ،‬ﻟﻜﻦ‬
‫أھﻤﮭﺎ وأﻛﺜﺮھﺎ ﺷﯿﻮﻋﺎ ﻛﻤﺎ ذﻛﺮﻧﺎ ھﻮ آﻟﺔ ﺗﻮرﯾﻨﻎ ‪ . Turing machine‬وﯾﻤﻜﻦ أن ﻧﺘﺼﻮر آﻟﺔ ﺗﻮرﯾﻨﻎ ﻋﻠﻰ أﻧﮭﺎ‬
‫ﺣﺎﺳﻮب ﻣﻨﺰﻟﻲ ﻣﻊ ﺳﻌﺔ ذاﻛﺮة ﻣﺤﺪودة ﺑﺤﯿﺚ ﻻ ﯾﻤﻜﻦ اﻟﻮﺻﻮل إﻻ إﻟﻰ ﻗﻄﺎﻋﺎت ﺻﻐﯿﺮة ﻣﺘﻔﺮﻗﺔ ﻣﻦ ھﺬه اﻟﺬاﻛﺮة‪.‬‬
‫وﺗﻌﺘ ﺒﺮ آﻻت ﺗﻮرﯾﻨﻎ ﺳﮭﻠﺔ اﻟﺘﺼﻮر و اﻟﺘﺼﻤﯿﻢ و ﻣﻦ اﻟﻤﻤﻜﻦ ﺗﺤﻠﯿﻠﮭﺎ و دراﺳﺘﮭﺎ ﻟﻠﺒﺮھﻨﺔ ﻋﻦ اﻟﻨﺘﺎﺋﺞ اﻟﻤﺘﻮﻗﻌﺔ‬
‫ﺑﺎﻟﺘﺎﻟﻲ ﺗﻤﺜﻞ ﻧﻤﻮذﺟﺎ ﻣﻌﻘﻮﻻ ﻟﻌﻤﻠﯿﺔ اﻟﺤﻮﺳﺒﺔ ‪.‬‬

‫ﻛﻤﺎ ﯾﻤﻜﻦ ﺗﻌﺮﯾﻒ آﻻت ﻣﺠﺮدة أﻛﺜﺮ ﺗﻌﻘﯿﺪا ﺑﻤﺠﻤﻮﻋﺔ ﺗﻌﻠﯿﻤﺎت أوﺳﻊ ‪ ،‬ﻣﺜﻞ اﻟﻤﺴﺠﻼت و ﻧﻤﺎذج ذاﻛﺮة اﻟﺤﺎﺳﻮب‬
‫اﻟﻤﺨﺘﻠﻔﺔ‪ .‬وأﺣﺪ أﻛﺜﺮ اﻟﻨﻤﺎذج ﺷﯿﻮﻋﺎ و ﻣﺸﺎﺑﮭﺔ ﻟﻠﺤﺎﺳﻮب ﻓﻲ وﺿﻌﮫ اﻟﺤﺎﻟﻲ ﯾﺪﻋﻰ ﻧﻤﻮذج ‪ ، RAM‬اﻟﺬي ﯾﺴﻤﺢ‬
‫ﺑﻮﺻﻮل ﻋﺸﻮاﺋﻲ ﻟﻤﻮاﻗﻊ اﻟﺬاﻛﺮة اﻟﻤﻔﮭﺮﺳﺔ ‪.‬‬

‫وﻋﻨﺪﻣﺎ ﺗﻜﺒﺮ ﻓﻮارق اﻷداء ﺑﯿﻦ اﻟﻤﺴﺘﻮﯾﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﺬاﻛﺮة اﻟﻤﺨﺒﺄة )اﻟﻜﺎش( ‪ ، cache memory‬ﺗﺰداد‬
‫أھﻤﯿﺔ اﻟﻨﻤﺎذج اﻟﺤﺴﺎﺳﺔ ﻟﻠﻜﺎش ﻣﺜﻞ ﻧﻤﻮذج اﻟﺬاﻛﺮة اﻟﺨﺎرﺟﯿﺔ ‪. external-memory model‬‬

‫ﻋﻤﻠﯿﺎت اﻟﺤﻮﺳﺒﺔ ‪ Computations‬ﯾﺘﻢ ﺗﺼﻤﯿﻤﮭﺎ ﻟﻤﻌﺎﻟﺠﺔ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﺨﺘﻠﻔﺔ ﺣﯿﺚ ﯾﻤﻜﻦ أن ﺗﻜﻮن ھﺬه‬
‫اﻟﺤﺴﺎﺑﺎت ﺑﺴﯿﻄﺔ ﻛﺤﺴﺎب ﻛﻢ ﯾﺴﺘﻐﺮق ﻣﻦ اﻟﻮﻗﺖ ﻗﻄﻊ ﻣﺴﺎﻓﺔ ﻣﺎ ﺑﺎﻟﺴﯿﺎرة ﻛﻤﺎ ﯾﻤﻜﻦ أن ﺗﻜﻮن ﻣﻌﻘﺪة ﻛﺎﻟﺤﺴﺎﺑﺎت‬
‫اﻟﺘﻲ ﺗﺠﺮى ﻟﻠﺘﻨﺒﺆ ﺑﺎﻷﺣﻮال اﻟﺠﻮﯾﺔ وﻣﻌﺮﻓﺔ ﺣﺎﻟﺔ اﻟﻄﻘﺲ‪.‬‬

‫وﺗﮭﺪف دراﺳﺔ اﻟﺤﻮﺳﺒﺔ إﻟﻰ اﻟﻮﺻﻮل ﻟﻔﮭﻢ ﻋﻤﯿﻖ ﻟﺨﺼﺎﺋﺺ وﻣﯿﺰات اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ وھﺬا اﻟﻔﮭﻢ اﻟﻌﻤﯿﻖ‬
‫ﯾﻤﻜﻦ أن ﯾﺴﺘﺨﺪم ﻓﻲ اﻟﺘﻨﺒﺆ ﺑﻤﺪى ﺻﻌﻮﺑﺔ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ اﻟﻤﻄﻠﻮب إﺟﺮاؤھﺎ وذﻟﻚ ﻣﻦ اﺟﻞ اﺧﺘﯿﺎر اﻟﻄﺮق‬
‫واﻟﻮﺳﺎﺋﻞ اﻟﻤﻨﺎﺳﺒﺔ ﻟﺘﻄﻮﯾﺮ ﻟﺘﺴﮭﯿﻞ ﻋﻤﻠﯿﺔ ﺗﺼﻤﯿﻢ ھﺬه اﻟﻄﺮق‪.‬‬

‫‪3‬‬
‫وﺗﻈﮭﺮ دراﺳﺔ اﻟﺤﻮﺳﺒﺔ أن ھﻨﺎك أﻧﻮاع ﻣﻦ اﻟﻤﺴﺎﺋﻞ ﻻ ﯾﻤﻜﻦ ﺣﻠﮭﺎ )أي ﻏﯿﺮ ﻗﺎﺑﻠﺔ ﻟﻠﺤﻞ(‪ .‬أﻣﺎ اﻟﻤﺴﺎﺋﻞ اﻟﻘﺎﺑﻠﺔ‬
‫ﻟﻠﺤﻞ ﻓﺈن ﺑﻌﻀﮭﺎ ﯾﺘﻄﻠﺐ ﻋﻤﻠﯿﺎ ﻣﻮارد ﻻ ﯾﻤﻜﻦ ﺗﻮﻓﯿﺮھﺎ )ﻣﺜﻼ ﻣﻼﯾﯿﻦ اﻟﺴﻨﯿﻦ ﻣﻦ وﻗﺖ اﻟﺤﺴﺎب(‪ .‬وﻣﻊ أن ھﺬا ﻗﺪ‬
‫ﯾﺪﻋﻮ إﻟﻰ اﻹﺣﺒﺎط إﻻ أن ﻣﺤﺎوﻟﺔ ﺗﻮﻓﯿﺮ ھﺬه اﻟﻤﻮارد ﻟﮫ اﯾﺠﺎﺑﯿﺔ ﻛﺒﯿﺮة ﻓﻲ اﻟﺘﺤﺬﯾﺮ ﻣﻦ ﻣﻐﺒﺔ ﻣﺤﺎوﻟﺔ ﺣﻞ ھﻜﺬا ﻧﻮع‬
‫ﻣﻦ اﻟﻤﺴﺎﺋﻞ وھﺬا ﻻ ﯾﺘﺤﻘﻖ إﻻ ﻣﻦ ﺧﻼل دراﺳﺔ اﻟﺤﻮﺳﺒﺔ اﻟﺘﻲ ﺗﺴﺎﻋﺪ ﻓﻲ ﺗﺤﺪﯾﺪ ھﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤﺴﺎﺋﻞ ﻛﻤﺎ ﺗﺴﺎﻋﺪ‬
‫ﻓﻲ إﯾﺠﺎد اﻷدوات اﻟﻤﻨﺎﺳﺒﺔ ﻟﺘﺤﺪﯾﺪ اﻟﻤﺴﺎﺋﻞ اﻟﺘﻲ ﯾﻤﻜﻦ ﺣﻠﮭﺎ ﻋﻤﻠﯿﺎ وﺑﺸﻜﻞ ﻣﻨﺎﺳﺐ ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ إﯾﺠﺎد أدوات‬
‫ﺗﺼﻤﯿﻢ ھﺬه اﻟﺤﻠﻮل‪ .‬ﻛﻤﺎ ﯾﻤﻜﻦ ﻣﻦ ﺧﻼل اﻟﺤﻮﺳﺒﺔ ﺗﻄﻮﯾﺮ ﻣﺼﻄﻠﺤﺎت دﻗﯿﻘﺔ ﻣﻌﺮﻓﺔ ﺟﯿﺪا ﻟﻠﻮﺻﻮل إﻟﻰ إدراك أو‬
‫ﻣﻌﺮﻓﺔ ﻣﺴﺒﻘﺔ ﻋﻦ ھﺬه اﻟﻤﺴﺎﺋﻞ وﻃﺮق ﺣﻠﮭﺎ‪.‬‬

‫إن اﻟﻘﺪرة ﻋﻠﻰ ﺗﻤﺜﯿﻞ اﻟﻤﻌﻠﻮﻣﺎت ﯾﻌﺘﺒﺮ أﻣﺮا ﺣﺎﺳﻤﺎ ﻓﻲ ﻋﻤﻠﯿﺔ ﺗﺒﺎدل وﻣﻌﺎﻟﺠﺔ ھﺬه اﻟﻤﻌﻠﻮﻣﺎت‪ .‬ﻟﺬﻟﻚ ﻋﻨﺪﻣﺎ‬
‫اﺣﺘﺎﺟﺖ اﻟﻤﺠﺘﻤﻌﺎت اﻟﺒﺸﺮﯾﺔ ﻟﺘﺒﺎدل اﻟﻤﻌﻠﻮﻣﺎت ﺣﺘﻰ ﺗﺘﻤﻜﻦ ﻣﻦ اﻟﺘﻮاﺻﻞ ﻓﯿﻤﺎ ﺑﯿﻨﮭﺎ ﻓﺈﻧﮭﺎ ﻗﺎﻣﺖ ﺑﺈﯾﺠﺎد ﻟﻐﺎت ﻣﺤﻜﯿﺔ‬
‫ﻟﺘﺤﻘﯿﻖ اﻟﺘﻮاﺻﻞ اﻟﻤﻨﺸﻮد وﻋﻨﺪﻣﺎ أﺻﺒﺤﺖ ﺑﺤﺎﺟﺔ إﻟﻰ ﻣﺴﺘﻮى أﻋﻠﻰ واﻋﻘﺪ ﻣﻦ اﻟﺘﻮاﺻﻞ ﻗﺎﻣﺖ ﺑﺘﻄﻮﯾﺮ اﻟﻜﺘﺎﺑﺔ‬
‫‪. writing‬‬

‫ﻓﺎﻟﻠﻐﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻓﻲ ﺷﻜﻠﮭﺎ اﻟﻤﺤﻜﻲ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻣﺠﻤﻮﻋﺎت ﻣﻦ اﻷﺻﻮات اﻟﺮﺋﯿﺴﯿﺔ اﻟﻤﺤﺪودة ﻛﺄﺳﺎس ﻟﻠﻐﺔ‪ .‬أﻣﺎ‬
‫اﻟﻜﻠﻤﺎت ﻓﯿﻤﻜﻦ ﺗﻌﺮﯾﻔﮭﺎ ﻋﻠﻰ أﻧﮭﺎ ﻋﺒﺎرة ﻋﻦ ﻣﺘﻮاﻟﯿﺎت ﻣﺤﺪودة ﻣﻦ ھﺬه اﻷﺻﻮات‪ .‬أﻣﺎ اﻟﺠﻤﻞ واﻟﻌﺒﺎرات ﻓﺘﻨﺸﺄ ﻋﻦ‬
‫ﻣﺘﻮاﻟﯿﺎت ﻣﺤﺪودة ﻣﻦ اﻟﻜﻠﻤﺎت وﻓﻲ اﻟﻨﮭﺎﯾﺔ ﻓﺈن اﻟﺤﺪﯾﺚ أو اﻟﻜﻼم ﯾﻨﺸﺄ ﻣﻦ ﻣﺘﻮاﻟﯿﺎت ﻣﺤﺪودة ﻣﻦ اﻟﻌﺒﺎرات‪ .‬واﻟﻠﻐﺔ‬
‫اﻟﻤﻜﺘﻮﺑﺔ ﺗﺴﺘﺨﺪم ﻣﺠﻤﻮﻋﺎت ﻣﺤﺪودة ﻣﻦ اﻟﺮﻣﻮز اﻷﺳﺎﺳﯿﺔ اﻟﻤﺤﺪودة‪.‬‬

‫وﺑﻨﻔﺲ اﻟﻄﺮﯾﻘﺔ ﺗﻢ ﺗﻄﻮﯾﺮ أﺷﻜﺎل ﻣﺤﺪدة ﻟﺘﻤﺜﯿﻞ ﻋﻨﺎﺻﺮ ﻣﻦ ﻣﺠﻤﻮﻋﺎت أﺧﺮى‪ .‬ﻓﻤﺜﻼ اﻷرﻗﺎم اﻟﻄﺒﯿﻌﯿﺔ ﯾﻤﻜﻦ‬
‫ﺗﻤﺜﯿﻠﮭﺎ ﺑﻤﺘﻮاﻟﯿﺎت ﻣﺤﺪودة ﻣﻦ اﻷرﻗﺎم اﻟﻌﺸﺮﯾﺔ‪.‬واﻟﺤﻮﺳﺒﺔ ﻣﺜﻠﮭﺎ ﻣﺜﻞ اﻟﻠﻐﺎت اﻟﻄﺒﯿﻌﯿﺔ ﯾﺘﻮﻗﻊ ﻣﻨﮭﺎ أن ﺗﺘﻌﺎﻣﻞ ﻣﻊ‬
‫اﻟﻤﻌﻠﻮﻣﺎت ﻓﻲ أﻛﺜﺮ ﺻﻮرھﺎ ﻋﻤﻮﻣﯿﺔ‪ .‬وﺑﻨﺎءا ﻋﻠﯿﮫ ﻓﺈن اﻟﺤﻮﺳﺒﺔ ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻋﺪاد اﻟﺼﺤﯿﺤﺔ‪ ,‬اﻟﺮﺳﻮم اﻟﺒﯿﺎﻧﯿﺔ‪,‬‬
‫اﻟﺒﺮاﻣﺞ وأﻧﻮاع أﺧﺮى ﻣﻦ اﻟﻜﯿﻨﻮﻧﺎت‪ .‬وھﺬا ﯾﺆدي إﻟﻰ اﺳﺘﻨﺘﺎج أن اﻟﺤﻮﺳﺒﺔ ﺗﺘﻌﺎﻣﻞ ﻓﻘﻂ ﻣﻊ ﻣﺘﻮاﻟﯿﺎت ﻣﻦ اﻟﺮﻣﻮز‬
‫اﻟﺘﻲ ﺗﻤﺜﻞ اﻷﺷﯿﺎء‪.‬‬

‫اﻷﺑﺠﺪﯾﺎت )‪ (Alphabets‬واﻟﻤﺘﺴﻠﺴﻼت )‪: (Strings‬‬

‫اﻟﻤﺠﻤﻮﻋﺔ اﻟﻤﺮﺗﺒﺔ اﻟﻐﯿﺮ ﺧﺎﻟﯿﺔ ﺗﺴﻤﻰ أﺑﺠﺪﯾﺔ إذا ﻛﺎﻧﺖ ﻋﻨﺎﺻﺮھﺎ ﻋﺒﺎرة ﻋﻦ رﻣﻮز أو ﺣﺮوف ﻟﮭﺎ إﺷﻜﺎل ﺗﻤﺜﯿﻠﯿﺔ‬
‫ﺗﻌﺮف ﺑﮭﺎ‪ .‬أﻣﺎ اﻟﺘﻮاﻟﻲ اﻟﻤﺤﺪود ﻟﻠﺮﻣﻮز اﻟﻤﺄﺧﻮذة ﻣﻦ اﻷﺑﺠﺪﯾﺔ ﻓﯿﺴﻤﻰ ﻣﺘﺴﻠﺴﻠﺔ‪.‬‬

‫‪4‬‬
‫إذا ﻛﺎﻧﺖ اﻟﻤﺘﺴﻠﺴﻠﺔ ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﺤﺮوف اﻟﻤﺘﺘﺎﻟﯿﺔ ‪ a1,a2,…..,an‬ﻓﯿﻤﻜﻦ أن ﻧﺮﻣﺰ ﻟﮭﺎ ﺑﺎﻟﺮﻣﺰ ‪. a1a2-an‬‬
‫أﻣﺎ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﺻﻔﺮ ﻣﻦ اﻟﺮﻣﻮز ﻓﺈﻧﮭﺎ ﺗﺴﻤﻰ ﻣﺘﺴﻠﺴﻠﺔ ﺧﺎﻟﯿﺔ ‪ Empty String‬وﯾﺮﻣﺰ ﻟﮭﺎ‬
‫ﺑﺎﻟﺮﻣﺰ ‪. ε‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ }‪ Σ1={a,…..,z‬وﻛﺎﻧﺖ }‪ Σ2={1,…..,9‬ﻓﺈن‪:‬‬

‫‪ abb‬ھﻲ ﻣﺘﺴﻠﺴﻠﺔ ﺗﻨﺘﻤﻲ إﻟﻰ ‪Σ1‬‬

‫‪ 123‬ھﻲ ﻣﺘﺴﻠﺴﻠﺔ ﺗﻨﺘﻤﻲ إﻟﻰ ‪Σ2‬‬

‫‪ ba12‬ﻟﯿﺴﺖ ﻣﺘﺴﻠﺴﻠﺔ ﺗﻨﺘﻤﻲ إﻟﻰ ‪ Σ1‬ﻷﻧﮭﺎ ﺗﺤﺘﻮي ﻋﻠﻰ رﻣﻮز ﻏﯿﺮ ﻣﻮﺟﻮدة ﻓﻲ ‪Σ1‬‬

‫… ‪ 314‬ﻟﯿﺴﺖ ﻣﺘﺴﻠﺴﻠﺔ ﻷﻧﮭﺎ ﻟﯿﺴﺖ ﻣﺤﺪودة‬

‫اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺨﺎﻟﯿﺔ ﺗﻨﺘﻤﻲ إﻟﻰ أي أﺑﺠﺪﯾﺔ‬

‫اﻟﻤﺠﻤﻮﻋﺔ اﻟﺨﺎﻟﯿﺔ ‪ Ø‬ﻻ ﺗﻌﺘﺒﺮ أﺑﺠﺪﯾﺔ ﻷﻧﮭﺎ ﻻ ﺗﺤﺘﻮي ﻋﻠﻰ أي ﻋﻨﺼﺮ‬

‫ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ ﻟﯿﺴﺖ أﺑﺠﺪﯾﺔ ﻷﻧﮭﺎ ﻟﯿﺴﺖ ﻣﺤﺪودة‪.‬‬

‫اﺗﺤﺎد اﻷﺑﺠﺪﯾﺘﯿﻦ ‪ Σ1‬و ‪ (Σ2 U Σ1) Σ2‬ﯾﺴﻤﻰ أﺑﺠﺪﯾﺔ ﻓﻘﻂ ﻓﻲ ﺣﺎﻟﺔ إذا أﺧﺬت ﻋﻨﺎﺻﺮه ﺗﺮﺗﯿﺒﺎ ﻣﻌﯿﻨﺎ‪.‬‬

‫اﻷﺑﺠﺪﯾﺔ اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﻋﻨﺼﺮﯾﻦ ﻓﻘﻂ ﺗﺴﻤﻰ أﺑﺠﺪﯾﺔ ﺛﻨﺎﺋﯿﺔ ‪ Binary Alphabet‬واﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺗﻨﺘﻤﻲ‬
‫إﻟﻰ ھﺬه اﻷﺑﺠﺪﯾﺔ ﺗﺴﻤﻰ ﻣﺘﺴﻠﺴﻠﺔ ﺛﻨﺎﺋﯿﺔ‪ ,‬أﻣﺎ إذا اﺣﺘﻮت اﻷﺑﺠﺪﯾﺔ ﻋﻠﻰ ﻋﻨﺼﺮ واﺣﺪ ﻓﻘﻂ ﻓﺘﺴﻤﻰ أﺑﺠﺪﯾﺔ أﺣﺎدﯾﺔ‬
‫‪ Unary Alphabet‬واﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺗﻨﺘﻤﻲ إﻟﯿﮭﺎ ﺗﺴﻤﻰ ﻣﺘﺴﻠﺴﻠﺔ أﺣﺎدﯾﺔ ‪. Unary String‬‬

‫ﻃﻮل اﻟﻤﺘﺴﻠﺴﻠﺔ )‪ (String Length‬ﻓﮭﻮ ﯾﺴﺎوي ﻋﺪد اﻟﺮﻣﻮز اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﯿﮭﺎ اﻟﻤﺘﺴﻠﺴﻠﺔ وإذا ﻟﻢ ﺗﺤﺘﻮي‬
‫اﻟﻤﺘﺴﻠﺴﻠﺔ ﻋﻠﻰ أﯾﺔ رﻣﻮز ﻓﺘﺴﻤﻰ ﻣﺘﺴﻠﺴﻠﺔ ﺧﺎﻟﯿﺔ ‪ Empty String‬وﯾﺮﻣﺰ ﻟﮭﺎ ‪ ε‬وﻃﻮﻟﮭﺎ ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ = ‪. 0‬‬
‫وﺗﻠﻌﺐ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺨﺎﻟﯿﺔ ﻧﻔﺲ اﻟﺪور اﻟﺬي ﯾﻠﻌﺒﮫ اﻟﺮﻗﻢ ‪ 0‬ﻓﻲ ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد‪.‬‬

‫وﯾﺮﻣﺰ ﻟﻄﻮل اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ X‬ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﺑﺎﻟﺮﻣﺰ │‪. │X‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ }‪ {0,1‬أﺑﺠﺪﯾﺔ ﺛﻨﺎﺋﯿﺔ و }‪ {1‬أﺑﺠﺪﯾﺔ أﺣﺎدﯾﺔ‪ :‬ﻓﺈن ‪ 11‬ھﻲ ﻣﺘﺴﻠﺴﻠﺔ ﺛﻨﺎﺋﯿﺔ ﺗﻨﺘﻤﻲ إﻟﻰ اﻷﺑﺠﺪﯾﺔ‬
‫اﻟﺜﻨﺎﺋﯿﺔ وﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ ھﻲ ﻣﺘﺴﻠﺴﻠﺔ أﺣﺎدﯾﺔ ﺗﻨﺘﻤﻲ إﻟﻰ اﻷﺑﺠﺪﯾﺔ اﻷﺣﺎدﯾﺔ أﻣﺎ ﻃﻮل ھﺬه اﻟﻤﺘﺴﻠﺴﻠﺔ ﻓﯿﺴﺎوي ‪. 2‬‬

‫‪5‬‬
‫إذا ﻛﺎﻧﺖ ‪ X‬ﻣﺘﺴﻠﺴﻠﺔ ﻃﻮﻟﮭﺎ ‪ n‬ﻓﯿﻤﻜﻦ ﻛﺘﺎﺑﺘﮭﺎ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ ‪ ,X=X1X2 …..Xn‬ﺣﯿﺚ ‪ Xi‬ﺗﻨﺘﻤﻲ إﻟﻰ ‪.Σ‬‬
‫وإذا ﻛﺘﺒﻨﺎ ھﺬه اﻟﺮﻣﻮز ﺑﺸﻜﻞ ﻋﻜﺴﻲ ﻓﺘﺴﻤﻰ ﻣﺘﺴﻠﺴﻠﺔ ﻋﻜﺴﯿﺔ ‪ Reverse String‬وﯾﺮﻣﺰ ﻟﮭﺎ ﺑﺎﻟﺮﻣﺰ ‪ X‬وﺗﻜﺘﺐ‬
‫رﻣﻮزھﺎ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ ‪. X = XnXn-1 ……X1 :‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ ‪ X = abcd‬ﻓﺈن ‪. X = dcba‬‬

‫اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ Z‬ﺗﺴﻤﻰ ﻣﺘﺴﻠﺴﻠﺔ ﻓﺮﻋﯿﺔ ‪ Substring‬ﻣﻦ ‪ X‬إذا ﻛﺎﻧﺖ ﺗﺘﻜﻮن ﻣﻦ ﺗﻮاﻟﻲ رﻣﻮز ﻣﻮﺟﻮدة ﻓﻲ ‪. X‬‬

‫ﻣﺜﺎل‪ :‬اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ cad‬ھﻲ ﻣﺘﺴﻠﺴﻠﺔ ﻓﺮﻋﯿﺔ ﻣﻦ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪. abracada‬‬

‫إذا ﻛﺎن ﻟﺪﯾﻨﺎ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ X‬وﻃﻮﻟﮫ ‪ m‬واﻟﻤﺘﺴﻠﺴﻠﺔ ‪ Y‬وﻃﻮﻟﮭﺎ ‪ n‬ﻓﺈن ‪ XY‬ھﻮ ﺗﺘﺎﺑﻊ أو ﺗﻮاﻟﻲ‬
‫أي‪:‬‬ ‫‪X‬‬ ‫ﺑﻨﮭﺎﯾﺔ‬ ‫‪Y‬‬ ‫إﻟﺤﺎق‬ ‫ﻣﻦ‬ ‫‪XY‬‬ ‫ﻋﻠﻰ‬ ‫اﻟﺤﺼﻮل‬ ‫وﯾﺘﻢ‬ ‫اﻟﻤﺘﺴﻠﺴﻠﺘﯿﻦ‬ ‫‪Concatenation‬‬
‫‪ . XY=X1X2….XmY1Y2…Yn‬ﻛﻤﺎ ﯾﻤﻜﻦ ﺗﻜﻮﯾﻦ ﺗﻮاﻟﻲ ﻣﻦ اﻟﻤﺘﺴﻠﺴﻠﺔ ﻧﻔﺴﮭﺎ ﻋﺪة ﻣﺮات ﻓﻤﺜﻼ ‪ X‬ھﻲ‬
‫ﻋﺒﺎرة ﻋﻦ ﺗﻮاﻟﻲ ‪ X‬ﻋﺪد ‪ k‬ﻣﻦ اﻟﻤﺮات‪.‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ ‪ Y=100 , X=01‬ﻓﺈن ‪XY=01100‬‬

‫أﻣﺎ ﺗﻮاﻟﻲ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺨﺎﻟﯿﺔ ‪ ε‬ﻣﻊ ‪ X‬ﻓﯿﺴﺎوي داﺋﻤﺎ ‪ . X‬وﺗﻮاﻟﻲ ‪ ε‬ﻣﻊ ﻧﻔﺴﮭﺎ ﯾﺴﺎوي داﺋﻤﺎ ‪. ε‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ ‪ X=01‬ﻓﺈن ‪. X =010101 , X =0101 , X =01 , X = ε‬‬

‫إذا ﻛﺎﻧﺖ ‪ X=011‬ﻓﺈن اﻟﻤﺘﺴﻠﺴﻼت ‪ 110 ,101 ,011‬ھﻲ ﻣﺘﺴﻠﺴﻼت ﺗﺒﺎدﻟﯿﺔ ‪ Permutations Strings‬ل ‪. X‬‬

‫ﻣﺠﻤﻮﻋﺔ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻨﺘﻤﻲ إﻟﻰ اﻷﺑﺠﺪﯾﺔ ‪ Σ‬ﯾﺘﻢ ﺗﻤﺜﯿﻠﮭﺎ ﺑﺎﻟﺮﻣﺰ *‪ . Σ‬أﻣﺎ }‪. Σ =Σ* - {ε‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ ‪ X=011‬ﻓﺈن ‪ ε ,0 ,1 ,01 ,11 ,011‬ھﻲ ﻣﺘﺴﻠﺴﻼت ﻓﺮﻋﯿﺔ ﻣﻦ ‪X‬‬

‫أﻣﺎ اﻟﻤﺘﺴﻠﺴﻼت ‪ ε ,0 ,01‬ﻓﺘﺴﻤﻰ ﻣﺘﺴﻠﺴﻼت ﺑﺎدﺋﺔ ﺗﺎﻣﺔ ‪Proper Prefixes Strings‬‬

‫واﻟﻤﺘﺴﻠﺴﻼت ‪ ε ,1 ,11‬ﻓﺘﺴﻤﻰ ﻣﺘﺴﻠﺴﻼت ﻻﺣﻘﺔ ﺗﺎﻣﺔ ‪. Proper Suffixes Strings‬‬

‫‪6‬‬
‫ﺗﻨﻈﯿﻢ اﻟﻤﺘﺴﻠﺴﻼت ‪ : Ordering of Strings‬ﺗﻌﺘﺒﺮ ﻋﻤﻠﯿﺔ اﻟﺒﺤﺚ ‪ Searching‬أﻛﺜﺮ اﻟﻌﻤﻠﯿﺎت اﻟﺘﻄﺒﯿﻘﯿﺔ‬
‫اﻟﻌﺎﻣﺔ اﻟﺘﻲ ﯾﺘﻢ إﺟﺮاؤھﺎ ﻋﻠﻰ اﻟﻤﻌﻠﻮﻣﺎت ‪ Information‬وﺗﻜﻤﻦ أھﻤﯿﺔ ھﺬه اﻟﻌﻤﻠﯿﺎت ﻓﻲ ﺗﺴﮭﯿﻞ ﻋﻤﻠﯿﺔ اﻟﺒﺤﺚ‬
‫ﻋﻦ اﻟﻤﻌﻠﻮﻣﺎت وﻓﻲ ﻋﻤﻠﯿﺔ ﺗﻨﻈﯿﻤﮭﺎ أﯾﻀﺎ ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ اﻟﻄﺮﯾﻘﺔ اﻟﺘﻲ ﺗﺘﻢ ﻓﯿﮭﺎ ھﺬه اﻟﻌﻤﻠﯿﺎت‪ .‬وﻓﻲ ﻣﻌﻈﻢ اﻟﺤﺎﻻت‬
‫ﻓﺈن اﻟﻮﺻﻮل إﻟﻰ ھﺬه اﻷھﺪاف ﯾﻌﺘﻤﺪ ﻋﻠﻰ وﺟﻮد ﻋﻼﻗﺎت ﯾﺘﻢ ﻣﻦ ﺧﻼﻟﮭﺎ ﺗﻌﺮﯾﻒ ﻋﻤﻠﯿﺔ ﺗﻨﻈﯿﻢ ﻣﻜﻮﻧﺎت أو ﻛﯿﻨﻮﻧﺎت‬
‫اﻟﻤﺴﺄﻟﺔ اﻟﻤﺮاد اﻟﺒﺤﺚ ﻓﯿﮭﺎ‪ .‬وﻓﯿﻤﺎ ﯾﺘﻌﻠﻖ ﺑﺎﻟﻤﺘﺴﻠﺴﻼت ﻓﺈن اﻟﻌﻼﻗﺔ اﻟﺘﻲ ﯾﺘﻢ ﺗﻜﺮارھﺎ ھﻮ ﻣﻘﺎرﻧﺘﮭﺎ أﺑﺠﺪﯾﺎ ﻛﻤﺎ ﯾﺤﺪث‬
‫ﻓﻲ ﺗﻨﻈﯿﻢ اﻷﺳﻤﺎء ﻓﻲ دﻟﯿﻞ اﻟﮭﺎﺗﻒ‪ .‬وﯾﻤﻜﻦ ﺗﻮﺿﯿﺢ ذﻟﻚ ﻣﻦ ﺧﻼل اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬

‫ﻧﻔﺮض أن ھﻨﺎك أﺑﺠﺪﯾﺔ ھﻲ }‪ Σ={0,1‬وإذا أﺧﺬﻧﺎ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ 01‬اﻟﺘﻲ ﺗﻨﺘﻤﻲ إﻟﻰ ھﺬه اﻷﺑﺠﺪﯾﺔ ﻓﺈﻧﻨﺎ ﻧﺠﺪھﺎ أﺑﺠﺪﯾﺎ‬
‫أﺻﻐﺮ ﻣﻦ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ 01100‬اﻟﺘﻲ ﺗﻨﺘﻤﻲ أﯾﻀﺎ إﻟﻰ ‪ Σ‬ﻷن ‪ 01‬ﯾﻤﻜﻦ اﻋﺘﺒﺎرھﺎ ﺑﺎدﺋﺔ ﺗﺎﻣﺔ ﻣﻦ ‪) 01100‬أي ﺟﺰء‬
‫ﻣﻨﮭﺎ(‪ .‬ﻣﻦ ﻧﺎﺣﯿﺔ أﺧﺮى ﻓﺄن اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ 01100‬أﺑﺠﺪﯾﺎ أﺻﻐﺮ ﻣﻦ ‪ 0111‬وذﻟﻚ ﻷن اﻟﻤﺘﺴﻠﺴﻠﺘﯿﻦ ﺗﺸﺘﺮﻛﺎن ﻓﻲ أول‬
‫ﺛﻼﺛﺔ رﻣﻮز وﻟﻜﻦ اﻟﺮﻣﺰ اﻟﺮاﺑﻊ ﻓﻲ ‪ 0111‬اﻛﺒﺮ ﻣﻦ اﻟﺮﻣﺰ اﻟﺮاﺑﻊ ﻓﻲ ‪.01100‬‬

‫ﻣﺜﺎل آﺧﺮ ھﻮ ﻣﺠﻤﻮﻋﺔ ﻣﺘﺴﻠﺴﻼت ﺗﻨﺘﻤﻲ إﻟﻰ ‪ Σ‬ﻣﺮﺗﺒﺔ أﺑﺠﺪﯾﺎ ﻣﻦ اﻷﺻﻐﺮ إﻟﻰ اﻷﻛﺒﺮ و ﻻ ﯾﺰﯾﺪ ﻃﻮل أي ﻣﻨﮭﺎ ﻋﻦ‬
‫‪3‬‬

‫}‪Σ* = {ε,0,00,000,001,01,010,011,1,10,100,101,11,110,111‬‬

‫ھﺬا اﻟﺘﺮﺗﯿﺐ اﻷﺑﺠﺪي ﯾﻌﺘﺒﺮ أﻣﺮا ﻣﺮﯾﺤﺎ ﻟﻠﻤﺠﻤﻮﻋﺎت اﻟﻤﺤﺪودة أو اﻟﻤﻨﺘﮭﯿﺔ ﻷﻧﮫ ﯾﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻰ أي ﻣﻦ ھﺬه‬
‫اﻟﻤﺘﺴﻠﺴﻼت ﻓﻲ ھﺬه اﻟﻤﺠﻤﻮﻋﺔ ﻓﻲ ﻧﮭﺎﯾﺔ اﻷﻣﺮ ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻣﻜﺎن وﺟﻮدھﺎ‪.‬‬

‫ﻓﻲ ﺑﻌﺾ اﻟﺤﺎﻻت ﯾﻜﻮن اﻟﺘﺮﺗﯿﺐ اﻷﺑﺠﺪي ﻏﯿﺮ ﻣﻨﺎﺳﺐ ﻷن ﺑﻌﺾ اﻟﻤﺘﺴﻠﺴﻼت ﻓﻲ اﻟﻤﺠﻤﻮﻋﺔ ﻗﺪ ﺗﻜﻮن ﻣﺴﺒﻮﻗﺔ‬
‫ﺑﻌﺪد ﻏﯿﺮ ﻣﺤﺪود ﻣﻦ اﻟﻤﺘﺴﻠﺴﻼت اﻷﺧﺮى‪ .‬ﻓﻤﺜﻼ ﻓﻲ اﻟﻤﺠﻤﻮﻋﺔ اﻷﺑﺠﺪﯾﺔ اﻟﻤﻨﻈﻤﺔ }‪ Σ={0,1‬ﻓﺈن اﻟﻤﺘﺴﻠﺴﻠﺔ ‪1‬‬
‫ﺗﻜﻮن ﻣﺴﺒﻮﻗﺔ ﺑﺎﻟﻤﺘﺴﻠﺴﻼت ‪ . 0,00,000,….‬وھﺬا ﯾﺒﺮر اﻟﻠﺠﻮء إﻟﻰ ﻣﺎ ﯾﺴﻤﻰ اﻟﺘﻨﻈﯿﻢ اﻟﻘﺎﻧﻮﻧﻲ ‪Canonical‬‬
‫‪ Ordering‬ﻟﻠﻤﺘﺴﻠﺴﻼت ﺣﯿﺚ ﺗﻜﻮن ﻛﻞ ﻣﺘﺴﻠﺴﻠﺔ ﻣﺴﺒﻮﻗﺔ ﺑﻌﺪد ﻣﺤﺪود ﻣﻦ اﻟﻤﺘﺴﻠﺴﻼت اﻷﺧﺮى‪.‬‬

‫وﺣﺴﺐ اﻟﺘﻨﻈﯿﻢ اﻟﻘﺎﻧﻮﻧﻲ ﻓﺈن اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ X‬ﺗﻌﺘﺒﺮ اﺻﻐﺮ ﻗﺎﻧﻮﻧﯿﺎ ‪ Canonically Smaller‬ﻓﻲ اﻷﺑﺠﺪﯾﺔ *‪ Σ‬ﻣﻦ‬
‫اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ Y‬إذا ﺗﺤﻘﻖ اﺣﺪ اﻟﺸﺮﻃﯿﻦ اﻟﺘﺎﻟﯿﯿﻦ‪:‬‬

‫‪ .1‬إذا ﻛﺎن ﻃﻮل ‪ X‬اﻗﻞ ﻣﻦ ﻃﻮل ‪Y‬‬


‫‪ .2‬إذا ﻛﺎﻧﺖ اﻻﺛﻨﺘﺎن ﻣﻦ ﻧﻔﺲ اﻟﻄﻮل وﻟﻜﻦ ‪ X‬اﺻﻐﺮ أﺑﺠﺪﯾﺎ ﻣﻦ ‪Y‬‬

‫ﻣﺜﺎل‪ :‬ﻓﻲ اﻷﺑﺠﺪﯾﺔ }‪ Σ={0,1‬واﻟﻤﺘﺴﻠﺴﻠﺔ ‪ X=11‬ھﻲ اﺻﻐﺮ ﻗﺎﻧﻮﻧﯿﺎ ﻣﻦ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ Y=000‬ﻷن ﻃﻮل ‪ X‬اﻗﻞ‪.‬‬

‫‪7‬‬
‫ﻣﻦ ﻧﺎﺣﯿﺔ أﺧﺮى اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ X=00‬اﺻﻐﺮ ﻣﻦ ‪ Y=11‬ﻷﻧﮭﻤﺎ ﻣﻦ ﻧﻔﺲ اﻟﻄﻮل وﻟﻜﻦ أﺑﺠﺪﯾﺎ ‪ X‬اﻗﻞ ﻣﻦ ‪. Y‬‬

‫ﻟﺬﻟﻚ ﻟﻮ ﻗﻤﻨﺎ ﺑﺘﺮﺗﯿﺐ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻨﺘﻤﻲ إﻟﻰ اﻷﺑﺠﺪﯾﺔ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻗﺎﻧﻮﻧﯿﺎ وﻟﯿﺲ أﺑﺠﺪﯾﺎ ﻓﺈن ﻣﺠﻤﻮﻋﺔ‬
‫ھﺬه اﻟﻤﺘﺴﻠﺴﻼت ﺳﻮف ﺗﻜﻮن ﻣﺮﺗﺒﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫}‪Σ* = {ε,0,1,00,01,10,11,000,001,010,011,100,101,110,111‬‬

‫ﺗﻤﺜﯿﻞ اﻟﻤﻌﻠﻮﻣﺎت ‪ : Representation of Information‬ﻣﻦ اﻟﺘﻌﺮﯾﻔﺎت واﻟﺘﻮﺿﯿﺤﺎت اﻟﺴﺎﺑﻘﺔ ﻟﻸﺑﺠﺪﯾﺎت‬


‫واﻟﻤﺘﺴﻠﺴﻼت ﻓﺈن ﺗﻤﺜﯿﻞ اﻟﻤﻌﻠﻮﻣﺎت ﯾﻤﻜﻦ اﻟﻨﻈﺮ إﻟﯿﮫ ﻋﻠﻰ اﻧﮫ ﻣﺨﻄﻂ ﺗﺮﺗﯿﺐ اﻟﻜﺎﺋﻨﺎت ‪ Objects‬داﺧﻞ ﻣﺘﺴﻠﺴﻼت‬
‫وﻟﻜﻦ ﺣﺴﺐ ﻗﻮاﻋﺪ وﻗﻮاﻧﯿﻦ ﻣﻌﯿﻨﺔ‪.‬‬

‫ﻣﻦ ﻧﺎﺣﯿﺔ أﺧﺮى ﯾﻤﻜﻦ اﻟﻘﻮل أن ﺗﻤﺜﯿﻞ أو ﺗﺮﻣﯿﺰ ‪ Encoding‬ﻋﻨﺎﺻﺮ اﻷﺑﺠﺪﯾﺔ ھﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻧﺎﺗﺠﺔ ﻋﻦ‬
‫ﻋﻼﻗﺔ ﻣﻌﯿﻨﺔ ﺗﺴﻤﻰ داﻟﺔ ﺗﺤﻘﻖ ﺷﺮﻃﺎ ﻣﻌﯿﻨﺎ‪ .‬وﻓﻲ ﺣﺎﻟﺔ ﻛﺎﻧﺖ اﻷﺑﺠﺪﯾﺔ ﻣﻔﺮدة ﻓﺄن اﻟﺘﻤﺜﯿﻞ ﯾﺴﻤﻰ أﺣﺎدﯾﺎ وإذا ﻛﺎﻧﺖ‬
‫اﻷﺑﺠﺪﯾﺔ زوﺟﯿﺔ ﻓﺄن اﻟﺘﻤﺜﯿﻞ ﯾﺴﻤﻰ زوﺟﯿﺎ‪.‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ }‪ Σ={0,1‬وﻛﺎﻧﺖ اﻟﺪاﻟﺔ ‪ f1‬ھﻲ ﺗﻤﺜﯿﻞ زوﺟﻲ ﻟﻌﻨﺎﺻﺮ ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬

‫} ‪f1(0) = {0, 00, 000, 0000, . . .‬‬

‫} ‪f1(1) = {1, 01, 001, 0001, . . .‬‬

‫} ‪f1(2) = {10, 010, 0010, 00010, . . .‬‬

‫} ‪f1(3) = {11, 011, 0011, 00011, . . .‬‬

‫} ‪f1(4) = {100, 0100, 00100, 000100, . . .‬‬

‫وﺑﻨﻔﺲ اﻟﻄﺮﯾﻘﺔ إذا ﻛﺎﻧﺖ ‪ f2‬ھﻲ أﯾﻀﺎ ﺗﻤﺜﯿﻞ ﻟﻌﻨﺎﺻﺮ ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪f2(0) = {ε},‬‬

‫‪f2(1) = {0},‬‬

‫‪f2(2) = {1},‬‬

‫‪8‬‬
‫‪f2(3) = {00},‬‬

‫‪f2(4) = {01},‬‬

‫‪f2(5) = {10},‬‬

‫‪f2(6) = {11},‬‬

‫‪f2(7) = {000},‬‬

‫‪f2(8) = {1000},‬‬

‫‪f2(9) = {1001}, . . .‬‬

‫وﻛﺬﻟﻚ إذا ﻛﺎﻧﺖ ‪ f3‬ھﻲ أﯾﻀﺎ ﺗﻤﺜﯿﻞ أﺣﺎدي ﻟﻸﺑﺠﺪﯾﺔ اﻷﺣﺎدﯾﺔ }‪ Σ={1‬ﺑﺤﯿﺚ ﯾﺘﻢ ﺗﻤﺜﯿﻞ ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻣﺠﻤﻮﻋﺔ‬
‫اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ ﺑﺎﻟﻌﻼﻗﺔ اﻟﺘﺎﻟﯿﺔ‪ f3(i) = {1i} :‬وﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﻓﺈن ‪:‬‬

‫‪f3(0) = {ε},‬‬

‫‪f3(1) = {1},‬‬

‫‪f3(2) = {11},‬‬

‫‪f3(3) = {111},‬‬

‫‪f3(4) = {1111}, . . .. .‬‬

‫وﺑﺬﻟﻚ ﯾﻤﻜﻦ ﺗﻤﺜﯿﻞ اﻷﻋﺪاد ﻓﻲ ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ ﺑﺎﻟﺮﺳﻢ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪9‬‬
‫إن ﺷﻤﻮﻟﯿﺔ اﻟﻤﺘﺴﻠﺴﻼت ﺗﻌﺘﺒﺮ ﻃﺮﯾﻘﺔ ﻣﻔﯿﺪة ﻓﻲ ﺗﻤﺜﯿﻞ ‪ Representation‬اﻟﻤﻌﻠﻮﻣﺎت ﻃﺎﻟﻤﺎ وﺟﺪت داﻟﺔ‬
‫‪ Function‬ﺗﻘﻮم ﺑﺘﺤﻮﯾﻞ أو ﺗﻔﺴﯿﺮ ‪ Interpretation‬اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ﯾﺘﻢ اﻟﺤﺼﻮل ﻋﻠﯿﮭﺎ ﺑﻮاﺳﻄﺔ اﻟﻤﺘﺴﻠﺴﻼت‬
‫وھﺬا اﻟﺘﻔﺴﯿﺮ ﻣﺎ ھﻮ إﻻ اﻧﻌﻜﺎس ﻟﻠﻤﺨﻄﻂ اﻟﺬي ﺗﻮﻓﺮه ﻋﻤﻠﯿﺔ اﻟﺘﻤﺜﯿﻞ‪.‬‬

‫ﻓﻤﺜﻼ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ 111‬ﯾﻤﻜﻦ اﻋﺘﺒﺎرھﺎ اﻟﻌﺪد ‪) 111‬ﻣﺌﺔ وإﺣﺪى ﻋﺸﺮ( ﺣﺴﺐ ﻣﺎ ﺗﻤﺜﻠﮫ ﻣﺘﺴﻠﺴﻠﺔ ﻋﺸﺮﯾﺔ أو اﻟﺮﻗﻢ ‪7‬‬
‫ﺣﺴﺐ ﻣﺎ ﺗﻤﺜﻠﮫ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺜﻨﺎﺋﯿﺔ أو اﻟﺮﻗﻢ ‪ 3‬إذا ﻛﺎن ﻣﻤﺜﻼ ﺑﻤﺘﺴﻠﺴﻠﺔ أﺣﺎدﯾﺔ‪.‬‬

‫أن اﻷﻃﺮاف أو اﻟﺠﮭﺎت ‪ Parties‬اﻟﺘﻲ ﺗﻘﻮم ﺑﺘﺒﺎدل ﺟﺰء ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ھﻲ اﻟﺘﻲ ﺗﻨﺠﺰ ﻋﻤﻠﯿﺎت اﻟﺘﻤﺜﯿﻞ واﻟﺘﺤﻮﯾﻞ‬
‫ﻓﺎﻟﺘﻤﺜﯿﻞ ‪ Representation‬ﯾﻘﻮم ﺑﮫ اﻟﻤﺮﺳﻞ ‪ Sender‬أﻣﺎ اﻟﺘﺤﻮﯾﻞ ‪ Interpretation‬ﻓﯿﻘﻮم ﺑﮫ اﻟﻤﺴﺘﻘﺒﻞ‬
‫‪ Receiver‬وﻛﺬﻟﻚ اﻷﻣﺮ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻌﻤﻠﯿﺔ ‪ Process‬ﻓﻠﯿﺲ ﻣﮭﻤﺎ ﻋﻠﻰ اﻹﻃﻼق إذا ﻛﺎﻧﺖ ھﺬه اﻷﻃﺮاف ﻋﻨﺎﺻﺮ‬
‫ﺑﺸﺮﯾﺔ أم ﺑﺮاﻣﺞ ‪ . Programs‬ﻟﺬا ﻓﻤﻦ وﺟﮭﺔ ﻧﻈﺮ اﻷﻃﺮاف اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﺈن اﻟﻠﻐﺔ ھﻲ ﻓﻘﻂ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ‬
‫ﻣﻦ اﻟﻤﺘﺴﻠﺴﻼت وھﺬه اﻷﻃﺮاف ھﻲ اﻟﺘﻲ ﺗﻀﻊ اﻟﺤﺪود ﻟﺘﻤﺜﯿﻞ وﺗﺤﻮﯾﻞ ھﺬه اﻟﻤﺘﺴﻠﺴﻼت‪.‬‬

‫اﻟﻠﻐﺎت ‪: Languages‬‬

‫ﺑﺸﻜﻞ ﻋﺎم إذا ﻛﺎﻧﺖ ‪ Σ‬أﺑﺠﺪﯾﺔ وﻛﺎﻧﺖ ‪ L‬ﻣﺠﻤﻮﻋﺔ ﺟﺰﺋﯿﺔ ‪ Subset‬ﻣﻦ *‪ Σ‬ﻓﺄﻧﮫ ﯾﻤﻜﻦ اﻟﻘﻮل أن ‪ L‬ھﻲ ﻟﻐﺔ‬
‫‪ Language‬ﺗﻨﺘﻤﻲ إﻟﻰ ‪ Σ‬وﻛﻞ ﻋﻨﺼﺮ ﻓﻲ ‪ L‬ﯾﺴﻤﻰ ﺟﻤﻠﺔ ‪ Sentence‬أو ﻛﻠﻤﺔ ‪ Word‬أو ﻣﺘﺴﻠﺴﻠﺔ ‪. String‬‬

‫اﻟﻤﺠﻤﻮﻋﺎت اﻟﺘﺎﻟﯿﺔ ‪ {0,11,001} , {ε,10}, {0,1}* :‬ھﻲ ﻣﺠﻤﻮﻋﺎت ﺟﺰﺋﯿﺔ ﻣﻦ *}‪ {0,1‬ﻟﺬﻟﻚ ﻓﺈﻧﮭﺎ ﺟﻤﯿﻌﮭﺎ‬
‫ﺗﻌﺘﺒﺮ ﻟﻐﺎت ﺗﻨﺘﻤﻲ إﻟﻰ اﻷﺑﺠﺪﯾﺔ }‪. {0,1‬‬

‫اﻟﻤﺠﻤﻮﻋﺔ اﻟﺨﺎﻟﯿﺔ ‪ Ø‬واﻟﻤﺠﻤﻮﻋﺔ }‪ {ε‬ھﻤﺎ ﻟﻐﺘﺎن ﺗﻨﺘﻤﯿﺎن إﻟﻰ ﻛﻞ اﻷﺑﺠﺪﯾﺎت‬

‫‪10‬‬
‫‪ Ø‬ھﻲ ﻋﺒﺎرة ﻋﻦ ﻟﻐﺔ ﻻ ﺗﺤﺘﻮي ﻋﻠﻰ أﯾﺔ ﻣﺘﺴﻠﺴﻠﺔ‬

‫}‪ {ε‬ھﻲ ﻋﺒﺎرة ﻋﻦ ﻟﻐﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﺘﺴﻠﺴﻠﺔ ﺧﺎﻟﯿﺔ‬

‫اﺗﺤﺎد ‪ Union‬اﻟﻠﻐﺘﯿﻦ ‪ L1,L2‬ﯾﻤﺜﻞ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪ L1 U L2‬ھﻲ ﻋﺒﺎرة ﻋﻦ اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﺟﻤﯿﻊ‬
‫اﻟﻤﺘﺴﻠﺴﻼت اﻟﻤﻮﺟﻮدة ﻓﻲ ‪ L1‬أو ﻓﻲ ‪ L2‬ﺑﺤﯿﺚ ﺗﺤﻘﻖ }‪. {x │x is in L1or X is in L2‬‬

‫ﺗﻘﺎﻃﻊ ‪ L1, L2 Intersection‬واﻟﺬي ﯾﻤﺜﻞ ‪ L1∩L2‬ھﻮ ﻋﺒﺎرة ﻋﻦ اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﺟﻤﯿﻊ‬
‫اﻟﻤﺘﺴﻠﺴﻼت اﻟﻤﻮﺟﻮدة ﻓﻲ ‪ L1‬و ‪ L2‬ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ ﺑﺤﯿﺚ ﺗﺤﻘﻖ }‪{x │x is in L1 and in L2‬‬

‫ﻣﺘﻤﻤﺔ ‪ Complementation‬اﻟﻠﻐﺔ ‪ L‬اﻟﺘﻲ ﺗﻨﺘﻤﻲ إﻟﻰ ‪ Σ‬وﺗﻤﺜﻞ ﻛﺎﻟﺘﺎﻟﻲ ‪ L‬ھﻲ ﻋﺒﺎرة ﻋﻦ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت‬
‫اﻟﻤﻮﺟﻮدة ﻓﻲ ‪ Σ‬وﻟﯿﺴﺖ ﻣﻮﺟﻮدة ﻓﻲ ‪ L‬ﺑﺤﯿﺚ ﺗﺤﻘﻖ }‪. {x │x is in Σ* but not in L‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ }‪ L2= {ε, 01, 11} , L1= {ε, 0,1‬ﻓﺈن‬

‫}‪L1 U L2 = {ε, 0, 1, 01, 11‬‬

‫}‪L1 ∩ L2 = {ε‬‬

‫}‪L1 = {00,01, 10, 11, 000, 001, ….‬‬

‫‪Ø UL=L‬‬

‫‪Ø∩L=Ø‬‬

‫*‪Ø = Σ‬‬

‫‪Σ* = Ø‬‬

‫‪11‬‬
‫اﻟﻔﺮق ‪ Difference‬ﺑﯿﻦ ‪ L1‬و ‪ L2‬واﻟﺬي ﯾﻤﺜﻞ )‪ (L1-L2‬ھﻮ ﻋﺒﺎرة ﻋﻦ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﻤﻮﺟﻮدة ﻓﻲ ‪L1‬‬
‫وﻟﻜﻨﮭﺎ ﻟﯿﺴﺖ ﻓﻲ ‪ L2‬ﺣﯿﺚ ﺗﺤﻘﻖ }‪. {x │x is in L1 but not in L2‬‬

‫ﺣﺎﺻﻞ ﺿﺮب ‪ Cross Product‬اﻟﻠﻐﺘﯿﻦ ‪ L1‬و ‪ L2‬وﯾﻤﺜﻞ )‪ (L1 × L2‬ھﻮ ﻋﺒﺎرة ﻋﻦ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺗﺤﺘﻮي‬
‫ﻋﻠﻰ ﺟﻤﯿﻊ اﻷزواج اﻟﻤﺮﺗﺒﺔ )‪ (x,y‬ﺑﺤﯿﺚ ﺗﻜﻮن ‪ x‬ﻣﻦ ‪ L1‬وﺗﻜﻮن ‪ y‬ﻣﻦ ‪ L2‬وﺗﺤﻘﻖ اﻟﻌﻼﻗﺔ اﻟﺘﺎﻟﯿﺔ‪:‬‬

‫} ‪{(x, y) | x is in L1 and y is in L2‬‬

‫ﺗﺮﻛﯿﺐ ‪ L1 Composition‬ﻣﻊ ‪ L2‬اﻟﺬي ﯾﻤﺜﻞ )‪ (L1L2‬ھﻮ ﻋﺒﺎرة ﻋﻦ ﻟﻐﺔ ﺗﺤﻘﻖ اﻟﻌﻼﻗﺔ اﻟﺘﺎﻟﯿﺔ‪:‬‬

‫} ‪{ xy | x is in L1 and y is in L2‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ ‪ L1= {ε,1,01,11} :‬و }‪ L2={1,01,101‬ﻓﺈن ‪:‬‬

‫}‪L1 – L2 = {ε, 11‬‬

‫}‪L2 – L1 = {101‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ }‪ L1={ε,0,1‬وﻛﺎﻧﺖ }‪ L2= {01,11‬ﻓﺈن‪:‬‬

‫})‪L1 × L2 = {(ε, 01), (ε, 11), (0, 01), (0, 11), (1, 01), (1, 11‬‬

‫}‪L1L2 = {01, 11, 001, 011, 101, 111‬‬

‫‪L - Ø = L,‬‬

‫‪Ø - L = Ø,‬‬

‫‪ØL = Ø,‬‬

‫‪{ε}L = L.‬‬

‫‪12‬‬
‫ﺗﺴﺘﺨﺪم ‪ Li‬ﻟﺘﻤﺜﯿﻞ اﻟﺘﺮﻛﯿﺐ ‪ Composition‬اﻟﻤﺘﻜﻮن ﻣﻦ اﻟﻌﺪد ‪ i‬ﻣﻦ ﻧﺴﺦ اﻟﻠﻐﺔ ‪ L‬ﺣﯿﺚ ‪ L0‬ﺗﻌﺮف ﻋﻠﻰ أﻧﮭﺎ‬
‫‪ ..... L3 L2 L1‬ﻓﺘﺴﻤﻰ ﻧﮭﺎﯾﺔ ﻛﻠﯿﻦ ‪ Kleene closure‬أو ﺑﺒﺴﺎﻃﺔ ﻧﮭﺎﯾﺔ ‪L‬‬ ‫}‪ , {ε‬أﻣﺎ اﻟﻤﺠﻤﻮﻋﺔ ‪L0‬‬
‫وﺗﻤﺜﻞ *‪. L‬‬

‫أﻣﺎ اﻟﻤﺠﻤﻮﻋﺔ ‪ ....... L3 L2 L1‬ﻓﺘﺴﻤﻰ اﻟﻨﮭﺎﯾﺔ اﻟﻤﻮﺟﺒﺔ ‪ positive closure‬ﻟﻠﻐﺔ ‪ L‬وﺗﻤﺜﻞ ‪. L+‬‬

‫إذا ﻛﺎﻧﺖ }‪ L1= {ε,0,1‬وﻛﺎﻧﺖ }‪ L2={01,11‬ﻓﺈن ‪:‬‬

‫}‪L1 2 = {ε,0,1,00,01,10,11‬‬

‫}‪L2 3 = {010101,010111,011111,110101,110111,1111101,111111‬‬

‫ﺟﻤﯿﻊ ھﺬه اﻟﻌﻤﻠﯿﺎت ﯾﻤﻜﻦ إﺟﺮاؤھﺎ وﺑﻨﻔﺲ اﻟﻄﺮﯾﻘﺔ ﻋﻠﻰ اﻟﻌﻼﻗﺎت ﻓﻲ *∆ ‪ ∑* x‬ﺣﯿﺚ ∑ ‪ ∆ ,‬ھﻤﺎ أﺑﺠﺪﯾﺘﺎن‪.‬‬

‫إذا ﻛﺎﻧﺖ ‪ R1,R2‬ﻋﻼﻗﺘﺎن ﻓﻲ *∆ ‪ ∑* x‬ﻓﺈن‪:‬‬

‫‪ R1 U R2‬ﻓﮭﻲ ﺗﺤﻘﻖ اﻟﻌﻼﻗﺔ } ‪{ (x, y) | (x, y) is in R1 or in R2‬‬

‫‪ R1 ∩ R2‬ﺗﺤﻘﻖ اﻟﻌﻼﻗﺔ } ‪{ (x, y) | (x, y) is in R1 and in R2‬‬

‫‪ R1R2‬ﺗﺤﻘﻖ اﻟﻌﻼﻗﺔ } ‪{ (x1x2, y1y2) | (x1, y1) is in R1 and (x2, y2) is in R2‬‬

‫ﻣﺜﺎل ‪ :‬إذا ﻛﺎﻧﺖ } )‪ R1={( ε ,0),(10,1‬وﻛﺎﻧﺖ })‪ R2= {( 1,ε),(0,10‬ﻓﺈن‪:‬‬

‫})‪R1 U R2 = {( , 0), (10, 1), (1, ), (0, 01‬‬

‫‪R1 ∩ R2 = Ø‬‬

‫})‪R1R2 = {(1, 0), (0, 010), (101, 1), (100, 110‬‬

‫})‪R2R1 = {(1, 0), (110, 1), (0, 100), (010, 101‬‬

‫} ‪{ (x, y) | (x, y) is in * × * but not in R‬‬ ‫‪ R‬ﺗﺤﻘﻖ اﻟﻌﻼﻗﺔ‬

‫‪ R-1‬ﺗﺤﻘﻖ اﻟﻌﻼﻗﺔ } ‪{ (y, x) | (x, y) is in R‬‬

‫‪13‬‬
‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ اﻟﻌﻼﻗﺔ })‪ R= {( ε ,ε) , (ε,01‬ﻓﺈن ‪:‬‬

‫})‪R-1 = {( ε, ε), (01, ε‬‬

‫})‪R0 = {( ε, ε‬‬

‫})‪R2 = {( ε, ε), (ε, 01), (ε , 0101‬‬

‫إن اﻟﻠﻐﺔ اﻟﺘﻲ ﯾﻤﻜﻦ ﺗﻌﺮﯾﻔﮭﺎ ﺑﻮاﺳﻄﺔ ﻧﻈﺎم ﺷﻜﻠﻲ ‪ Formal System‬ذﻟﻚ اﻟﻨﻈﺎم اﻟﺬي ﯾﻤﺘﻠﻚ ﻋﺪد ﻣﺤﺪود ﻣﻦ‬
‫اﻟﺒﺪﯾﮭﯿﺎت ‪ axioms‬وﻛﺬﻟﻚ ﻋﺪد ﻣﺤﺪود ﻣﻦ اﻟﻘﻮاﻋﺪ واﻷﺣﻜﺎم اﻟﻤﺴﺘﻨﺘﺠﺔ ﺗﺴﻤﻰ ﻟﻐﺔ ﺷﻜﻠﯿﺔ ‪Formal‬‬
‫‪. Language‬‬

‫اﻟﻘﻮاﻋﺪ ‪: Grammars‬‬

‫ﻓﻲ ﻛﺜﯿﺮ ﻣﻦ اﻷﺣﯿﺎن ﯾﻌﺘﺒﺮ ﺗﻮﺻﯿﻒ اﻟﻠﻐﺔ ﻣﻦ ﺧﻼل ﻗﻮاﻋﺪ ﻣﺤﺪدة أﻣﺮا ﻣﺮﯾﺤﺎ‪ .‬وﺗﻈﮭﺮ اﻟﻔﺎﺋﺪة ﻣﻦ ھﺬا –ﺑﺸﻜﻞ‬
‫رﺋﯿﺴﻲ‪ -‬ﻋﻨﺪ اﺳﺘﺨﺪام ﻋﺪد ﻗﻠﯿﻞ ﻣﻦ اﻟﻘﻮاﻧﯿﻦ أو اﻷﺣﻜﺎم ‪ Rules‬ﻟﻮﺻﻒ ﻟﻐﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﻋﺪد ﻛﺒﯿﺮ ﻣﻦ اﻟﺠﻤﻞ‪.‬‬
‫ﻓﻌﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ھﻨﺎك اﺣﺘﻤﺎﻟﯿﺔ أن ﺗﺘﻜﻮن اﻟﺠﻤﻠﺔ ﻓﻲ اﻟﻠﻐﺔ اﻻﻧﺠﻠﯿﺰﯾﺔ ﻣﻦ ﻋﺒﺎرة ﻣﻮﺿﻮﻋﯿﺔ )ﻣﺒﺘﺪأ( ‪Subject‬‬
‫ﺗﻜﻮن ﻣﺘﺒﻮﻋﺔ ﺑﻌﺒﺎرة ﺧﺒﺮﯾﺔ )ﺧﺒﺮ( ‪ Predicate‬أي ان اﻟﺠﻤﻠﺔ ﺗﺘﻜﻮن ﻣﻦ ﻣﺒﺘﺪأ وﺧﺒﺮ‪ .‬وﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ اﻟﻤﺒﺘﺪأ‬
‫ﯾﻤﻜﻦ أن ﯾﺘﻜﻮن ﻣﻦ ﺟﻤﻠﺔ اﺳﻤﯿﺔ ‪ Noun Phrase‬ﯾﺘﻢ اﻟﺘﻌﺒﯿﺮ ﻋﻨﮭﺎ ﺑﻮاﺳﻄﺔ أﺣﻜﺎم ﻛﺄن ﯾﻜﻮن اﻟﻤﺒﺘﺪأ اﺳﻢ ‪Noun‬‬
‫وھﻜﺬا‪.‬‬

‫ﺑﻨﺎءا ﻋﻠﻰ ذﻟﻚ ﻟﻮ أﺧﺬﻧﺎ ﺟﻤﻠﺔ ”‪ “Mary sang a song‬ﻓﺈﻧﮫ ﯾﻤﻜﻦ وﺻﻔﮭﺎ ﻣﻦ ﺧﻼل اﻟﻘﻮاﻋﺪ أو اﻷﺣﻜﺎم‬
‫اﻟﺘﺎﻟﯿﺔ‪:‬‬

‫> ﻣﺒﺘﺪأ < > ﺧﺒﺮ<‬ ‫> اﻟﺠﻤﻠﺔ <‬

‫> اﺳﻢ <‬ ‫> اﻟﻤﺒﺘﺪأ <‬

‫> ﻓﻌﻞ < > ﺻﻔﺔ < > اﺳﻢ <‬ ‫> اﻟﺨﺒﺮ<‬

‫> اﺳﻢ ﻋﻠﻢ <‬ ‫> اﻻﺳﻢ <‬

‫‪14‬‬
‫> ﻣﺘﺴﻠﺴﻠﺔ <‬ ‫> اﻻﺳﻢ <‬

‫> ﺣﺮف اﺑﺠﺪي ﻛﺒﯿﺮ < > ﻣﺘﺴﻠﺴﻠﺔ<‬ ‫> اﺳﻢ اﻟﻌﻠﻢ <‬

‫> ﻣﺘﺴﻠﺴﻠﺔ < > ﺣﺮف أﺑﺠﺪي <‬ ‫> اﻟﻤﺘﺴﻠﺴﻠﺔ <‬

‫> ﺣﺮف أﺑﺠﺪي <‬ ‫> اﻟﻤﺘﺴﻠﺴﻠﺔ <‬

‫‪a‬‬ ‫> اﻟﺤﺮف اﻷﺑﺠﺪي <‬

‫‪z‬‬ ‫> اﻟﺤﺮف اﻷﺑﺠﺪي <‬

‫‪A‬‬ ‫> ﺣﺮف اﺑﺠﺪي ﻛﺒﯿﺮ <‬

‫‪Z‬‬ ‫> ﺣﺮف اﺑﺠﺪي ﻛﺒﯿﺮ <‬

‫> ﯾﻐﻨﻲ <‬ ‫> اﻟﻔﻌﻞ <‬

‫>‪< a‬‬ ‫> أداة اﻟﺘﻌﺮﯾﻒ <‬

‫‪15‬‬
‫إن ھﺬه اﻷﺣﻜﺎم واﻟﻘﻮاﻋﺪ ﺗﺴﻤﺢ ﺑﺈﻧﺸﺎء ﺟﻤﻞ أﺧﺮى ﻋﻠﻰ ﻏﺮار ﺟﻤﻠﺔ ”‪ “Mary sang a song‬وذﻟﻚ‬
‫ﺑﺎﺳﺘﺨﺪام اﺳﻢ آﺧﺮ إﻟﻰ ﺟﺎﻧﺐ ‪ Mary‬او اﺳﺘﺨﺪام اﺳﻢ آﺧﺮ ﻣﻜﺎﻧﮫ‪ .‬ﻣﻦ ﻧﺎﺣﯿﺔ أﺧﺮى ﻓﺈن ھﺬه اﻟﻘﻮاﻋﺪ ﺗﺸﯿﺮ إﻟﻰ‬
‫اﻟﺠﻤﻞ اﻟﺘﻲ ﻻ ﺗﻌﺘﺒﺮ ﻣﻦ اﻟﻠﻐﺔ اﻹﻧﺠﻠﯿﺰﯾﺔ ﻣﺜﻞ ﺟﻤﻠﺔ ”‪ “Mary sang a Mary‬ﻛﻤﺎ أن ھﺬه اﻟﻘﻮاﻋﺪ ﻻ ﺗﺴﻤﺢ‬
‫ﺑﺈﻧﺸﺎء ﺟﻤﻞ ﻣﺜﻞ "‪ "Mary read a song.‬وﻣﻤﺎ ﺳﺒﻖ ﻓﺈﻧﮫ ﯾﻤﻜﻦ اﻟﻘﻮل أن ﻣﺠﻤﻮﻋﺔ اﻟﻘﻮاﻋﺪ واﻷﺣﻜﺎم اﻟﻮاردة‬
‫أﻋﻼه ﺗﻜﻮن ﻣﻨﻈﻮﻣﺔ ﻗﻮاﻋﺪ ﻏﯿﺮ ﻣﻜﺘﻤﻠﺔ ﻟﻮﺻﻒ اﻟﻠﻐﺔ اﻻﻧﺠﻠﯿﺰﯾﺔ‪.‬‬

‫وﻷﻏﺮاض اﻟﺒﺤﺚ ﻓﺈﻧﮫ ﯾﻌﺘﺒﺮ ﻛﺎﻓﯿﺎ اﻷﺧﺬ ﺑﻌﯿﻦ اﻻﻋﺘﺒﺎر ﻓﻘﻂ اﻟﻘﻮاﻋﺪ اﻟﺘﻲ ﺗﺘﻜﻮن ﻣﻦ ﻣﺠﻤﻮﻋﺎت ﻣﺤﺪودة ﻣﻦ‬
‫اﻟﻘﻮاﻋﺪ أو اﻷﺣﻜﺎم وھﺬا اﻟﻨﻮع ﻣﻦ اﻟﻘﻮاﻋﺪ ﯾﺴﻤﻰ ﻗﻮاﻋﺪ ﻣﻦ اﻟﻨﻮع ‪ (Type 0 grammars) 0‬أو ﻗﻮاﻋﺪ ﺑﻨﺎء‬
‫اﻟﺘﻌﺎﺑﯿﺮ ‪ phrase structure grammars‬أﻣﺎ اﻟﻠﻐﺔ اﻟﺸﻜﻠﯿﺔ ‪ Formal Language‬اﻟﺘﻲ ﺗﻨﺘﺠﮭﺎ ھﺬه‬
‫اﻟﻘﻮاﻋﺪ ﻓﺘﺴﻤﻰ ﻟﻐﺎت اﻟﻨﻮع ‪ . 0‬وﺑﺸﻜﻞ دﻗﯿﻖ ﯾﻤﻜﻦ اﻟﻘﻮل أن ﺟﻤﯿﻊ اﻟﻘﻮاﻋﺪ ﻣﻦ اﻟﻨﻮع ‪ 0‬وﯾﺮﻣﺰ ﻟﮭﺎ ﺑﺎﻟﺮﻣﺰ ‪G‬‬
‫ﯾﻤﻜﻦ ﺗﻌﺮﯾﻔﮭﺎ اﻧﮭﺎ ﻧﻈﺎم رﯾﺎﺿﻲ ﯾﺘﻜﻮن ﻣﻦ اﻟﺮﺑﺎﻋﯿﺔ >‪ <N,∑,P,S‬ﺣﯿﺚ‪:‬‬

‫‪16‬‬
‫‪ – N‬أﺑﺠﺪﯾﺔ ﻋﻨﺎﺻﺮھﺎ رﻣﻮز ﺗﺴﻤﻰ ﻏﯿﺮ ﻃﺮﻓﯿﺔ ‪Nonterminal symbols‬‬

‫∑ ‪ -‬أﺑﺠﺪﯾﺔ ﻋﻨﺎﺻﺮھﺎ رﻣﻮز ﺗﺴﻤﻰ ﻃﺮﻓﯿﺔ ‪Terminal symbols‬‬

‫‪ – P‬ﻋﺒﺎرة ﻋﻦ ﻋﻼﻗﺔ ﻣﻦ ﺗﺸﻜﯿﻞ ﻣﺤﺪود ﻣﻦ )*∑ ‪ (N U‬واﻟﺘﻲ ﻋﻨﺎﺻﺮھﺎ ﺗﺴﻤﻰ ﻗﻮاﻋﺪ اﻧﺘﺎج‬
‫‪ .Production Rules‬ﻛﻤﺎ أن ﻛﻞ ﻣﻦ ھﺬه اﻟﻘﻮاﻋﺪ )‪ (α ,β‬ﻓﻲ ‪ P‬واﻟﺘﻲ ﺗﻤﺜﻞ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ ‪ α → β‬ﯾﺠﺐ‬
‫أن ﺗﻤﺘﻠﻚ ﻋﻠﻰ اﻷﻗﻞ رﻣﺰا واﺣﺪا ﻏﯿﺮ ﻃﺮﻓﻲ ‪ .‬وﻓﻲ ﻛﻞ ﻣﻦ ھﺬه اﻟﻘﻮاﻋﺪ ﺗﺴﻤﻰ ‪ α‬ﻧﺎﺣﯿﺔ اﻟﯿﺪ اﻟﯿﺴﺮى ‪left-hand‬‬
‫‪ side‬ﻣﻦ اﻟﻘﺎﻋﺪة ﻓﻲ ﺣﯿﻦ ﺗﺴﻤﻰ ‪ β‬ﻧﺎﺣﯿﺔ اﻟﯿﺪ اﻟﯿﻤﻨﻰ ‪ right-hand side‬ﻣﻦ اﻟﻘﺎﻋﺪة‪.‬‬

‫‪ – S‬ھﻮ رﻣﺰ ﻓﻲ ‪ N‬ﯾﺴﻤﻰ اﻟﺒﺪاﯾﺔ ‪ Start‬او اﻟﺠﻤﻠﺔ ‪. Sentence‬‬

‫}‪, ∑={a,b‬‬ ‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ> ‪ <N,∑,P,S‬ھﻲ ‪ Type 0 grammar‬وﻛﺎﻧﺖ }‪, N={S‬‬
‫}‪ P={S→aSb,S→ε‬ﻓﺈن ھﺬه اﻟﻘﺎﻋﺪة ﺗﻤﺘﻠﻚ ﻋﻨﺼﺮ واﺣﺪ ‪ nonterminal‬وھﻮ ‪ , S‬وﻋﻨﺼﺮان ‪terminal‬‬
‫ھﻤﺎ ‪ a,b‬ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ﻗﺎﻋﺪﺗﺎ إﻧﺘﺎج ‪ Production Rules‬ھﻤﺎ ‪ S→aSb‬و ‪ . S→ε‬واﻟﻘﺎﻋﺪﺗﺎن ﻣﻦ اﻟﻨﺎﺣﯿﺔ‬
‫اﻟﯿﺴﺮى ﺗﺘﻜﻮﻧﺎن ﻓﻘﻂ ﻣﻦ اﻟﺮﻣﺰ ‪ . S‬اﻟﻨﺎﺣﯿﺔ اﻟﯿﻤﻨﻰ ﻟﻠﻘﺎﻋﺪة اﻷوﻟﻰ ھﻲ ‪ , aSb‬وﻟﻠﻘﺎﻋﺪة اﻟﺜﺎﻧﯿﺔ ‪. ε‬‬

‫ﻣﺜﺎل‪ <N1,∑1,P1,S> :‬ﻻ ﺗﻌﺘﺒﺮ ﻗﺎﻋﺪة إذا ﻛﺎﻧﺖ ‪ N1‬ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ أو إذا ﻛﺎﻧﺖ ‪ ∑1‬ﻓﺎرﻏﺔ ﻷﻧﮭﻤﺎ‬
‫ﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﻻ ﺗﻌﺘﺒﺮان أﺑﺠﺪﯾﺎت‪.‬‬

‫اﻟﺒﺮاﻣﺞ ‪: Programs‬‬

‫إن اﻻﻋﺘﻤﺎد اﻟﻜﺒﯿﺮ ﻋﻠﻰ ﻣﻌﺎﻟﺠﺔ اﻟﻤﻌﻠﻮﻣﺎت ﻗﺪ أدى إﻟﻰ اﻧﺘﺸﺎر واﺳﻊ ﻟﻠﺒﺮاﻣﺞ ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺘﻄﺒﯿﻘﺎت‬
‫اﻟﻤﺨﺘﻠﻔﺔ‪ .‬ﻓﺎﻟﺒﺮاﻣﺞ ﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺒﯿﻮت‪ ,‬أﻣﺎﻛﻦ اﻟﻌﻤﻞ اﻟﻤﺨﺘﻠﻔﺔ‪ ,‬اﻟﺸﺮﻛﺎت‪ ,‬اﻟﻤﺴﺘﺸﻔﯿﺎت‪ ,‬واﻟﻤﺪارس وﻏﯿﺮھﺎ‪ .‬وﯾﺘﻢ‬
‫اﺳﺘﺨﺪام ھﺬه اﻟﺒﺮاﻣﺞ ﻓﻲ ﻗﻄﺎع اﻟﺘﻌﻠﯿﻢ‪ ,‬اﻷﻟﻌﺎب‪ ,‬ﻋﻤﻠﯿﺎت اﻟﻄﺒﺎﻋﺔ واﻟﻨﺸﺮ‪ ,‬إدارة اﻻﺗﺼﺎﻻت اﻟﮭﺎﺗﻔﯿﺔ‪ ,‬اﻟﻔﺤﻮﺻﺎت‬
‫اﻟﻄﺒﯿﺔ وﺗﺸﺨﯿﺺ اﻷﻣﺮاض‪ ,‬اﻟﺘﻨﺒﺆ ﺑﺎﻷﺣﻮال اﻟﺠﻮﯾﺔ وﺣﺎﻟﺔ اﻟﻄﻘﺲ‪ ,‬اﻟﺘﺤﻜﻢ ﻓﻲ اﻟﻄﺎﺋﺮات وﻏﯿﺮھﺎ ﻣﻦ اﻟﻤﺠﺎﻻت‪.‬‬

‫وﻗﺪ ﺗﻢ ﺗﻄﻮﯾﺮ اﻟﻌﺪﯾﺪ ﻣﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺑﻐﺮض ﺗﺴﮭﯿﻞ ﻣﮭﻤﺔ ﻛﺘﺎﺑﺔ اﻟﺒﺮاﻣﺞ ﻟﻤﺠﻤﻮﻋﺔ ﻛﺒﯿﺮة ﻣﻦ اﻟﺘﻄﺒﯿﻘﺎت‬
‫اﻟﻤﺨﺘﻠﻔﺔ‪ .‬وھﺬا اﻟﺘﻨﻮع ﻓﻲ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﯾﻌﻜﺲ اﻻﻧﻄﺒﺎﻋﺎت أو اﻟﺘﻔﺎﺳﯿﺮ اﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﻤﻌﻠﻮﻣﺎت‪ .‬وﻋﻠﻰ ﻛﻞ ﺣﺎل ﻓﻤﻦ‬
‫ﺟﮭﺔ اﻟﻘﺪرة ﻋﻠﻰ إﺟﺮاء ﻋﻤﻠﯿﺎت اﻟﺤﻮﺳﺒﺔ اﻟﻼزﻣﺔ ﻓﺈﻧﮫ ﻻ ﻓﺮق ﻛﺒﯿﺮ ﺑﯿﻨﮭﺎ‪ .‬ﻟﺬﻟﻚ ﻋﻨﺪ دراﺳﺔ اﻟﺒﺮﻣﺠﺔ ﯾﻤﻜﻦ اﺳﺘﺨﺪام‬
‫ﻟﻐﺎت ﺑﺮﻣﺠﺔ ﻣﺨﺘﻠﻔﺔ‪ .‬أﻣﺎ دراﺳﺔ اﻟﺒﺮاﻣﺞ ﻓﺘﻔﯿﺪﻧﺎ ﻓﻲ ﻋﻤﻠﯿﺔ اﺧﺘﯿﺎر ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻣﻌﯿﻨﺔ ﻻﺳﺘﺨﺪاﻣﮭﺎ ﻓﻲ ﺣﻞ ﻣﺴﺄﻟﺔ‬
‫ﻣﻌﯿﻨﺔ‪.‬‬

‫‪17‬‬
‫ﻋﻨﺪ دراﺳﺔ اﻟﺒﺮاﻣﺞ ﯾﻔﻀﻞ اﺧﺘﯿﺎر ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺗﺼﻠﺢ ﻟﺤﻞ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﺴﺎﺋﻞ اﻟﻌﺎﻣﺔ وﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ أن ﺗﻜﻮن‬
‫ﺑﺴﯿﻄﺔ ﻛﻔﺎﯾﺔ ﻟﺘﺴﮭﯿﻞ ﻋﻤﻠﯿﺔ اﻟﺒﺤﺚ واﻟﺪراﺳﺔ‪.‬‬

‫اﺧﺘﯿﺎر ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ‪: Choice of a Programming Language‬‬

‫ﯾﺘﻢ ﺗﻌﺮﯾﻒ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ أﻧﮫ ﻋﺒﺎرة ﻋﻦ ﻣﺘﺴﻠﺴﻠﺔ ﻣﻦ اﻷواﻣﺮ أو اﻟﺘﻌﻠﯿﻤﺎت ‪ Instructions‬ﻓﻲ اﻟﻤﺠﺎل‬
‫‪ Domain‬اﻟﺬي ﯾﺮﻣﺰ ﻟﮫ ‪ . D‬واﻟﻤﺠﺎل ‪ D‬ھﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺠﺎل ﻣﻦ اﻟﻤﺘﻐﯿﺮات ‪ Variables‬اﻟﺘﻲ ﯾﻔﺘﺮض أن ﺗﻜﻮن‬
‫ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﻣﻊ وﺟﻮد ﻋﻨﺼﺮ ﻣﺘﻤﯿﺰ ﯾﻌﻄﻲ اﻟﻘﯿﻤﺔ اﻷوﻟﯿﺔ ﻟﻠﻤﺘﻐﯿﺮات‪ .‬وﯾﻌﺘﺒﺮ ﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ ‪D‬‬
‫ﻗﯿﻤﺔ ﺗﺼﻠﺢ ﻟﺘﻤﺜﯿﻞ اﻟﻤﺘﻐﯿﺮات ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ‪ .‬أﻣﺎ ﺗﺴﻠﺴﻞ اﻟﺘﻌﻠﯿﻤﺎت ﻓﯿﻜﻮن ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪a. Read instructions of the form‬‬ ‫ﻗﺮاءة اﻟﺘﻌﻠﯿﻤﺎت ﻓﻲ اﻟﻨﻤﻮذج‬

‫‪read x‬‬

‫‪b. where x is a variable.‬‬ ‫ﺣﯿﺚ ‪ x‬ﻋﺒﺎرة ﻋﻦ ﻣﺘﻐﯿﺮ‬

‫‪c. Write instructions of the form‬‬ ‫ﻛﺘﺎﺑﺔ اﻟﺘﻌﻠﯿﻤﺎت ﻓﻲ اﻟﻨﻤﻮذج‬

‫‪write x‬‬

‫‪d. where x is a variable.‬‬ ‫ﺣﯿﺚ ‪ x‬ﻋﺒﺎرة ﻋﻦ‬


‫ﻣﺘﻐﯿﺮ‬
‫‪e. Deterministic assignment instructions of the form‬‬ ‫ﺗﻌﻠﯿﻤﺎت ﻣﮭﺎم إﺟﺒﺎرﯾﺔ‬

‫)‪y := f(x1, . . . , xm‬‬

‫‪f. where x1, . . . , xm, and y are variables, and f is a function from Dm to D.‬‬
‫‪g. Conditional if instructions of the form‬‬ ‫ﺗﻌﻠﯿﻤﺎت اﻟﺤﺎﻟﺔ اﻟﺸﺮﻃﯿﺔ ‪if‬‬

‫‪if Q(x1, . . . , xm) then I‬‬

‫‪h. where I is an instruction, x1, . . . , xm are variables, and Q is a predicate from‬‬


‫‪Dm to {false, true}.‬‬
‫‪i. Deterministic looping instructions of the form‬‬ ‫ﺗﻌﻠﯿﻤﺎت إﺟﺒﺎرﯾﺔ ﻟﻠﺤﻠﻘﺔ‬

‫‪18‬‬
Do

until Q(x1, . . . , xm)

j. Where α is a nonempty sequence of instructions, x1, . . . , xm are variables,


and Q is a predicate from Dm to {false, true}.
k. Conditional accept instructions of the form

if eof then accept

l. Reject instructions of the form

reject

m. Nondeterministic assignment instructions of the form

x := ?

n. where x is a variable.
o. Nondeterministic looping instructions of the form

Do
1
or
2
or

or
k
until Q(x1, . . . , xm)

19
‫‪p. where k 2, each of α1, . . , αk is a nonempty sequence of instructions, x 1, . .‬‬
‫‪. xm are variables, and Q is a predicate from Dm to {false, true}.‬‬

‫ﻓﻲ ﻛﻞ ﺑﺮﻧﺎﻣﺞ ﯾﻔﺘﺮض أن ﯾﻜﻮن ﻣﺠﺎل اﻟﻤﺘﻐﯿﺮات ‪ D‬ﺗﻤﺜﯿﻼ ﻟﺒﻌﺾ اﻷﺑﺠﺪﯾﺎت‪ .‬ﻓﻌﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﯾﻤﻜﻦ أن ﯾﻜﻮن‬
‫‪ D‬ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ‪ ,‬ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﺼﺤﯿﺤﺔ أو أي ﻣﺠﻤﻮﻋﺔ ﻣﺤﺪودة ﻣﻦ اﻟﻌﻨﺎﺻﺮ‪ .‬أﻣﺎ اﻟﺪوال‬
‫‪ Q,f‬ﻓﯿﻔﺘﺮض أن ﺗﻜﻮن ﻣﻌﻄﺎة ﺿﻤﻦ ﻣﺠﻤﻮﻋﺔ اﻟﺪوال اﻟﺤﺴﺎﺑﯿﺔ اﻟﻤﺒﻨﯿﺔ‪ .‬ﺗﺒﻌﺎ ﻟﺬﻟﻚ ﻓﺈن ﻣﺠﺎل اﻟﻤﺘﻐﯿﺮات ﻟﻦ‬
‫ﯾﻜﻮن ﻣﺼﺮح ﺑﮫ ﺑﺸﻜﻞ واﺿﺢ إذا ﻛﺎﻧﺖ ﻗﻠﯿﻠﺔ اﻷھﻤﯿﺔ‪.‬‬

‫اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺗﻜﻮن ﺑﺪون ﺗﻌﻠﯿﻤﺎت ﻏﯿﺮ ﻗﻄﻌﯿﺔ ‪ Nondeterministic Instructions‬ﺗﺴﻤﻰ ﺑﺮاﻣﺞ ﻗﻄﻌﯿﺔ‬
‫‪ . Deterministic Programs‬أﻣﺎ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﺗﻌﻠﯿﻤﺎت ﻏﯿﺮ ﻗﻄﻌﯿﺔ ﻓﺘﺴﻤﻰ ﺑﺮاﻣﺞ ﻏﯿﺮ‬
‫ﻗﻄﻌﯿﺔ ‪. Nondeterministic Programs‬‬

‫ﻣﺜﺎل‪:‬‬

‫‪read x‬‬

‫‪y:=0‬‬

‫‪z:=1‬‬

‫‪do‬‬

‫‪y: = y+1‬‬

‫‪z : = z+1‬‬

‫‪Until z = x‬‬

‫‪read y‬‬

‫‪if eof then accept‬‬

‫‪reject‬‬

‫ﻓﻲ ھﺬا اﻟﺒﺮﻧﺎﻣﺞ اﻟﻘﻄﻌﻲ اﺳﺘﺨﺪﻣﺖ ﺛﻼﺛﺔ ﻣﺘﻐﯿﺮات أﺳﻤﺎؤھﺎ ‪ . x,y,z‬ﻛﻤﺎ أن ھﻨﺎك ﺗﻌﻠﯿﻤﺘﺎن ھﻤﺎ اﻟﺪاﻟﺔ اﻟﺜﺎﺑﺘﺔ‬
‫‪ , f1() = 0‬واﻟﺪاﻟﺔ اﻷﺣﺎدﯾﺔ ‪ f2(n)= n+1‬اﻟﺘﻲ ﺗﻘﻮم ﺑﺈﺿﺎﻓﺔ ‪. 1‬‬

‫ﺗﻌﻠﯿﻤﺔ اﻟﺤﻠﻘﺔ ﺗﺴﺘﺨﺪم ‪y : = y +1‬‬

‫‪z:=z+1‬‬

‫‪20‬‬
‫وﻣﻦ اﻟﻤﮭﻢ اﻟﺬﻛﺮ ھﻨﺎ أﻧﮫ ﺗﻢ ﻓﺮض ﻣﺠﻤﻮﻋﺔ اﻷﻋﺪاد اﻟﻄﺒﯿﻌﯿﺔ ﻟﻤﺠﺎل اﻟﻤﺘﻐﯿﺮات ﻣﻊ اﻋﺘﻤﺎد ‪ 0‬ﻗﯿﻤﺔ أوﻟﯿﺔ أو‬
‫اﺑﺘﺪاﺋﯿﺔ‪.‬‬

‫أﻣﺎ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﻓﮭﻮ ﺑﺮﻧﺎﻣﺞ ﻏﯿﺮ ﻗﻄﻌﻲ ‪: Nondeterministic Program‬‬

‫‪do‬‬

‫‪read x‬‬

‫‪or‬‬

‫?=‪y:‬‬

‫‪write y‬‬

‫‪Until y = x‬‬

‫‪if eof then accept‬‬

‫ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﯾﺴﺘﺨﺪم ﺗﻌﻠﯿﻤﺘﯿﻦ ﻏﯿﺮ ﻗﻄﻌﯿﺘﯿﻦ ھﻤﺎ ﺗﻌﻠﯿﻤﺔ اﻟﺘﺼﺮﯾﺢ ﻋﻠﻰ اﻟﺸﻜﻞ ”?=‪ , “y:‬واﻷﺧﺮى ھﻲ‬
‫ﺗﻌﻠﯿﻤﺔ اﻟﺤﻠﻘﺔ ﻋﻠﻰ اﻟﺸﻜﻞ ”‪. “do-or-until-‬‬

‫أﻣﺎ ﻣﺪﺧﻼت اﻟﺒﺮﻧﺎﻣﺞ ﻓﮭﻲ ﻋﺒﺎرة ﻋﻦ ﺗﺴﻠﺴﻞ ﻋﻨﺎﺻﺮ ﻣﻦ ﻣﺠﺎل ﻣﺘﻐﯿﺮات اﻟﺒﺮﻧﺎﻣﺞ وﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻣﺪﺧﻼت‬
‫اﻟﺒﺮﻧﺎﻣﺞ ﯾﺴﻤﻰ ﻗﯿﻤﺔ إدﺧﺎل ‪. Input value‬‬

‫‪21‬‬
‫ﻧﻈﺮﯾﺔ اﻟﺤﻮﺳﺒﺔ وأﻗﺴﺎﻣﮭﺎ اﻟﺮﺋﯿﺴﯿﺔ‪:‬‬

‫ﻋﻨﺪ دراﺳﺔ ﻧﻈﺮﯾﺔ اﻟﺤﻮﺳﺒﺔ ﻓﺈﻧﮫ ﯾﺠﺐ اﻟﺘﺮﻛﯿﺰ ﻋﻠﻰ اﻷﻗﺴﺎم اﻟﺜﻼﺛﺔ اﻟﺮﺋﯿﺴﯿﺔ اﻟﺘﻲ ﺗﻜﻮن ھﺬا اﻟﻌﻠﻢ وھﻲ‪:‬‬

‫‪ .1‬ﻧﻈﺮﯾﺔ اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ ‪Automata‬‬


‫‪ .2‬ﻧﻈﺮﯾﺔ اﻟﺘﺤﺴﯿﺐ ‪Computability Theory‬‬
‫‪ .3‬ﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ‪Complexity Theory‬‬

‫ھﺬه اﻷﻗﺴﺎم اﻟﺮﺋﯿﺴﯿﺔ اﻟﺜﻼث ﯾﺠﻤﻌﮭﺎ ﺳﺆال واﺣﺪ ھﻮ ‪ ":‬ﻣﺎ ھﻲ اﻟﻘﺪرات اﻷﺳﺎﺳﯿﺔ ﻟﻠﺤﺎﺳﻮب وﻣﺎ ھﻲ ﺣﺪود ھﺬه‬
‫اﻟﻘﺪرات؟" ‪ .‬وﻛﻞ واﺣﺪ ﻣﻦ ھﺬه اﻷﻗﺴﺎم ﯾﺠﯿﺐ ﻋﻠﻰ ھﺬا اﻟﺴﺆال ﻣﻦ زاوﯾﺔ ﻣﺨﺘﻠﻔﺔ ﺣﯿﺚ ﺗﻌﺘﻤﺪ اﻹﺟﺎﺑﺔ ﻋﻠﻰ ﻃﺮﯾﻘﺔ‬
‫ﺗﻔﺴﯿﺮ ﻛﻞ ﻗﺴﻢ ﻟﮭﺬا اﻟﺴﺆال‪.‬‬

‫ﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ‪ :‬إن اﻟﻤﺴﺎﺋﻞ اﻟﺘﻲ ﺗﻘﻮم اﻟﺤﻮاﺳﯿﺐ ﺑﺤﻠﮭﺎ ﺗﺨﺘﻠﻒ ﻋﻦ ﺑﻌﻀﮭﺎ اﻟﺒﻌﺾ ﺣﯿﺚ ﯾﻤﻜﻦ أن‬
‫ﯾﻜﻮن ﺑﻌﻀﮭﺎ ﺳﮭﻼ واﻵﺧﺮ ﺻﻌﺒﺎ‪ .‬ﻓﻤﺜﻼ ﻋﻤﻠﯿﺔ اﻟﻔﺮز واﻟﺘﺮﺗﯿﺐ ‪ Sorting Problem‬ﺗﻌﺘﺒﺮ ﻣﻦ اﻟﻌﻤﻠﯿﺎت اﻟﺴﮭﻠﺔ‬
‫ﻟﺬﻟﻚ ﻓﺈن ﺗﺮﺗﯿﺐ ﻗﺎﺋﻤﺔ ﻣﻦ اﻷﻋﺪاد ﺗﺮﺗﯿﺒﺎ ﺗﺼﺎﻋﺪﯾﺎ ﺗﻌﺘﺒﺮ ﻋﻤﻠﯿﺔ ﺳﮭﻠﺔ ﺑﺤﯿﺚ ﯾﻤﻜﻦ ﻷي ﺣﺎﺳﻮب ﺻﻐﯿﺮ أن ﯾﻘﻮم‬
‫ﺑﺘﺮﺗﯿﺐ ﻣﻼﯾﯿﻦ اﻷﻋﺪاد وﺑﺴﺮﻋﺔ ﻛﺒﯿﺮة ﺟﺪا‪ .‬وﻟﻮ ﻗﺎرﻧﺎ ھﺬه اﻟﻌﻤﻠﯿﺔ ﺑﻌﻤﻠﯿﺔ اﻟﺠﺪوﻟﺔ ‪Scheduling Problem‬‬
‫ﻓﺄﻧﻨﺎ ﻧﺠﺪ أن اﻟﺠﺪوﻟﺔ ﺗﻌﺘﺒﺮ ﻋﻤﻠﯿﺔ أﻛﺜﺮ ﺗﻌﻘﯿﺪا ﺑﺴﺒﺐ وﺟﻮد ﻗﯿﻮد ﻋﻠﻰ ھﺬه اﻟﻌﻤﻠﯿﺔ ﻓﻤﺜﻼ ﻋﻨﺪ إﻋﺪاد ﺟﺪول‬
‫اﻟﻤﺤﺎﺿﺮات اﻷﺳﺒﻮﻋﻲ ﻓﺈﻧﮫ ﯾﺠﺐ أن ﻻ ﯾﺤﺪث ﺗﻌﺎرض ﻛﻮﺟﻮد ﺻﻔﯿﻦ ﻓﻲ ﻧﻔﺲ اﻟﻘﺎﻋﺔ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ أو وﺟﻮد‬
‫أﺳﺘﺎذ ﻓﻲ ﺻﻔﯿﻦ ﻣﺨﺘﻠﻔﯿﻦ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ وھﻜﺬا‪ .‬وھﻨﺎ ﯾﺒﺮز ﺳﺆال ھﺎم وھﻮ "ﻣﺎ اﻟﺬي ﯾﺠﻌﻞ ﺣﻞ ﺑﻌﺾ اﻟﻤﺴﺎﺋﻞ‬
‫ﺑﻮاﺳﻄﺔ اﻟﺤﺎﺳﻮب ﺻﻌﺒﺔ وﺑﻌﻀﮭﺎ اﻵﺧﺮ ﺳﮭﻼ؟" وھﺬا ھﻮ اﻟﺴﺆال اﻟﻤﺮﻛﺰي ﻓﻲ ﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ‪ .‬وﺗﺠﺪر‬
‫اﻟﻤﻼﺣﻈﺔ أﻧﻨﺎ ﻻ ﻧﺴﺘﻄﯿﻊ اﻻﺟﺎﺑﺔ ﻋﻠﻰ ھﺬا اﻟﺴﺆال رﻏﻢ اﻷﺑﺤﺎث واﻟﺪراﺳﺎت اﻟﺘﻲ ﺗﺠﺮي ﻣﻨﺬ ﺛﻼﺛﺔ ﻋﻘﻮد‪ .‬وﻣﻦ أھﻢ‬
‫اﻹﻧﺠﺎزات ﻓﻲ ﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ھﻮ اﻟﻮﺻﻮل اﻟﻰ ﻣﺨﻄﻂ ﯾﻤﻜﻦ ﻣﻦ ﺧﻼﻟﮫ ﺗﺼﻨﯿﻒ اﻟﻤﺴﺎﺋﻞ ﺣﺴﺐ ﺻﻌﻮﺑﺔ‬
‫ﺣﻠﮭﺎ ﺣﺎﺳﻮﺑﯿﺎ‪ .‬ﺑﻮاﺳﻄﺔ ھﺬا اﻟﻤﺨﻄﻂ ﯾﻤﻜﻦ ﻋﺮض ﻃﺮﯾﻘﺔ ﻟﻠﺪﻻﻟﺔ ﻋﻠﻰ أن ﻣﺴﺄﻟﺔ ﻣﺎ ﺻﻌﺒﺔ اﻟﺤﻞ ﺣﺎﺳﻮﺑﯿﺎ ﺣﺘﻰ وﻟﻮ‬
‫ﻟﻢ ﯾﻜﻦ ﺑﺎﻹﻣﻜﺎن إﺛﺒﺎت ذﻟﻚ‪.‬‬

‫وھﻨﺎك ﻋﺪة ﺧﯿﺎرات ﺗﻈﮭﺮ ﻋﻨﺪ ﻣﻮاﺟﮭﺔ ﻣﺴﺄﻟﺔ ﺗﻌﺘﺒﺮ ﺻﻌﺒﺔ اﻟﺤﻞ وھﻲ‪:‬‬

‫ﻣﻦ ﺧﻼل ﺗﺤﺪﯾﺪ وﻓﮭﻢ اﻟﺠﺎﻧﺐ اﻟﺼﻌﺐ ﻣﻦ اﻟﻤﺴﺄﻟﺔ وﻣﺤﺎوﻟﺔ اﺳﺘﺒﺪاﻟﮫ ﻣﻤﺎ ﻗﺪ ﯾﺠﻌﻞ ﺣﻞ اﻟﻤﺴﺄﻟﺔ أﻛﺜﺮ‬ ‫‪.1‬‬
‫ﺳﮭﻮﻟﺔ‪.‬‬
‫ﺣﺼﺮ ﺧﯿﺎرات اﻟﺤﻞ ﻓﻲ ﺣﻞ واﺣﺪ ﯾﻜﻮن ھﻮ اﻷﻣﺜﻞ وﻓﻲ ﺑﻌﺾ اﻟﺤﺎﻻت إﯾﺠﺎد ﺣﻠﻮل ﺗﻘﺮب ﻣﻦ اﻟﺤﻞ اﻟﺼﺤﯿﺢ‬ ‫‪.2‬‬
‫وﺗﺠﻌﻞ اﻟﺤﻞ ﺻﺤﯿﺢ ﻧﺴﺒﯿﺎ‪.‬‬
‫ﺑﻌﺾ اﻟﻤﺴﺎﺋﻞ ﺗﻌﺘﺒﺮ ﺻﻌﺒﺔ ﻓﻲ ﺣﺎﻻت ﻣﻌﯿﻨﺔ ﻓﻘﻂ وﻟﻜﻨﮭﺎ ﻣﻌﻈﻢ اﻟﻮﻗﺖ ﺗﻌﺘﺒﺮ ﺳﮭﻠﺔ‪ .‬وﺣﺴﺐ اﻟﺘﻄﺒﯿﻖ‬ ‫‪.3‬‬
‫‪ Application‬ﻓﺈﻧﮫ ﻗﺪ ﯾﻜﻮن ﻛﺎﻓﯿﺎ أﯾﺠﺎد إﺟﺮاء ‪ Procedure‬ﻗﺪ ﯾﺴﺘﻐﺮق اﻟﻮﺻﻮل إﻟﯿﮫ زﻣﻨﺎ ﻃﻮﯾﻼ‬
‫وﻟﻜﻨﮫ ﻋﺎدة ﯾﻨﻔﺬ ﺑﺴﺮﻋﺔ‪.‬‬
‫ﯾﻤﻜﻦ اﻋﺘﻤﺎد أﻧﻮاع ﺑﺪﯾﻠﺔ ﻟﻠﺤﻮﺳﺒﺔ ﻣﺜﻞ اﻟﺤﻮﺳﺒﺔ اﻟﻌﺸﻮاﺋﯿﺔ ‪ Randomized Computation‬اﻟﺘﻲ‬ ‫‪.4‬‬
‫ﯾﻤﻜﻨﮭﺎ ﺗﺴﺮﯾﻊ ﺑﻌﺾ اﻟﻤﮭﺎم ‪. Tasks‬‬

‫‪22‬‬
‫أﺣﺪ اﻟﻤﺠﺎﻻت اﻟﺘﻄﺒﯿﻘﯿﺔ اﻟﺘﻲ ﺗﺘﺄﺛﺮ ﻣﺒﺎﺷﺮة ﺑﻨﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ھﻮ ﻋﻠﻢ اﻟﺘﺸﻔﯿﺮ ‪ Cryptography‬وﻓﻲ‬
‫أﻏﻠﺐ اﻟﻤﺠﺎﻻت ﯾﺘﻢ ﺗﻔﻀﯿﻞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺴﺎﺋﻞ اﻟﺴﮭﻠﺔ ﻋﻠﻰ اﻟﻤﺴﺎﺋﻞ اﻟﺼﻌﺒﺔ ﻷن ﺣﻞ ھﻜﺬا ﻧﻮع ﻣﻦ اﻟﻤﺴﺎﺋﻞ ﯾﻌﺘﺒﺮ‬
‫اﺳﮭﻞ وأرﺧﺺ ﺛﻤﻨﺎ‪ .‬وﯾﻌﺘﺒﺮ اﻟﺘﺸﻔﯿﺮ ﺷﯿﺌﺎ ﻏﯿﺮ ﻋﺎدﯾﺎ ﻷﻧﮫ ﯾﺘﺼﻒ ﺑﺎﻟﺤﺎﺟﺔ إﻟﻰ ﺣﻠﻮل ﺣﺎﺳﻮﺑﯿﺔ ﺻﻌﺒﺔ وﺳﺒﺐ ذﻟﻚ‬
‫أن اﻟﺮﻣﻮز اﻟﺴﺮﯾﺔ أو اﻷﻛﻮاد اﻟﻤﺴﺘﺨﺪﻣﺔ ﯾﺠﺐ أن ﺗﻜﻮن ﺻﻌﺒﺔ اﻟﻜﺴﺮ )أي ﻣﻌﺮﻓﺘﮭﺎ ﺻﻌﺒﺔ( ﺑﺪون اﻟﺤﺼﻮل ﻋﻠﻰ‬
‫ﻛﻠﻤﺔ اﻟﺴﺮ أو اﻟﻤﻔﺘﺎح‪ .‬ﻟﺬﻟﻚ ﻓﺈن ﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ﺗﻮﺟﮫ اﻟﻌﺎﻣﻠﯿﻦ ﻓﻲ ﻣﺠﺎل اﻟﺘﺸﻔﯿﺮ ﺑﺎﺗﺠﺎه اﻟﻤﺴﺎﺋﻞ ﺻﻌﺒﺔ‬
‫اﻟﺤﻞ وﺗﺴﺎﻋﺪ ﻓﻲ ﻋﻤﻠﮭﻢ ﻟﺘﺼﻤﯿﻢ ﺷﻔﺮات ﺟﺪﯾﺪة وﻗﻮﯾﺔ‪.‬‬

‫ﻧﻈﺮﯾﺔ اﻟﺘﺤﺴﯿﺐ‪ :‬ﻓﻲ اﻟﻨﺼﻒ اﻷول ﻣﻦ اﻟﻘﺮن اﻟﻌﺸﺮﯾﻦ اﻛﺘﺸﻒ ﺑﻌﺾ ﻋﻠﻤﺎء اﻟﺮﯾﺎﺿﯿﺎت ﻣﺜﻞ ﻛﻮرت ﻏﻮدﯾﻞ و‬
‫آﻻن ﺗﻮرﯾﻨﻎ وﻏﯿﺮھﻢ أن ﺑﻌﺾ اﻟﻤﺴﺎﺋﻞ اﻷﺳﺎﺳﯿﺔ ﻻ ﯾﻤﻜﻦ ﺣﻠﮭﺎ ﺑﻮاﺳﻄﺔ اﻟﺤﺎﺳﻮب‪ .‬إﺣﺪى ھﺬه اﻟﻈﻮاھﺮ ھﻲ ﻣﺴﺄﻟﺔ‬
‫ﺗﺤﺪﯾﺪ ﻓﯿﻤﺎ إذا ﻛﺎﻧﺖ ﻋﺒﺎرة رﯾﺎﺿﯿﺔ ﻣﺎ ﺻﺎﺋﺒﺔ أم ﺧﺎﻃﺌﺔ ﻷن ﺣﻞ ھﺬه اﻟﻤﺴﺄﻟﺔ ﺑﻮاﺳﻄﺔ اﻟﺤﺎﺳﻮب ﻗﺪ ﯾﺒﺪو ﺷﯿﺌﺎ ﻣﻤﻜﻨﺎ‬
‫وﻟﻜﻦ ﻓﻲ اﻟﻮاﻗﻊ ﻻ ﺗﻮﺟﺪ أﯾﺔ ﺧﻮارزﻣﯿﺔ ﺗﺴﺘﻄﯿﻊ إﻧﺠﺎز ھﺬه اﻟﻤﮭﻤﺔ‪ .‬وﻧﻈﺮا ﻷھﻤﯿﺔ ھﺬه اﻟﻨﺘﯿﺠﺔ ﻓﻘﺪ ﺗﻢ ﺗﻄﻮﯾﺮ ﺑﻌﺾ‬
‫اﻷﻓﻜﺎر اﻟﺘﻲ ﺗﮭﺘﻢ ﺑﺎﻟﻨﻤﺎذج اﻟﻨﻈﺮﯾﺔ ﻟﻠﺤﺎﺳﻮب ‪ Theoretical Models of Computers‬واﻟﺘﻲ ﺳﻮف ﺗﺴﺎﻋﺪ‬
‫ﻓﻲ إﯾﺠﺎد ﺗﺮاﻛﯿﺐ ﻟﺤﻮاﺳﯿﺐ ﺣﻘﯿﻘﯿﺔ‪.‬‬

‫إن ﻧﻈﺮﯾﺔ اﻟﺘﺤﺴﯿﺐ وﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ﻗﺮﯾﺒﺘﺎن ﺟﺪا ﻣﻦ ﺑﻌﻀﮭﻤﺎ ﻓﻔﻲ ﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ اﻟﻤﻮﺿﻮع‬
‫اﻷﺳﺎﺳﻲ ھﻮ ﺗﺼﻨﯿﻒ اﻟﻤﺴﺎﺋﻞ وﻓﺮزھﺎ إﻟﻰ ﺻﻌﺒﺔ وﺳﮭﻠﺔ ﻓﻲ ﺣﯿﻦ ﻧﻈﺮﯾﺔ اﻟﺘﺤﺴﯿﺐ ﺗﻘﻮم ﺑﺘﺼﻨﯿﻒ اﻟﻤﺴﺎﺋﻞ إﻟﻰ‬
‫ﻣﺴﺎﺋﻞ ﻗﺎﺑﻠﺔ ﻟﻠﺤﻞ أو ﻏﯿﺮ ﻗﺎﺑﻠﺔ ﻟﻠﺤﻞ‪.‬‬

‫ﻧﻈﺮﯾﺔ اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ‪ :‬ﺗﺘﻌﺎﻣﻞ ھﺬه اﻟﻨﻈﺮﯾﺔ ﻣﻊ ﺗﻌﺮﯾﻔﺎت وﺧﺼﺎﺋﺺ اﻟﻨﻤﺎذج اﻟﺮﯾﺎﺿﯿﺔ‪ .‬وھﺬه اﻟﻨﻤﺎذج ﺗﻠﻌﺐ‬
‫دورا ﻣﮭﻤﺎ ﻓﻲ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﺠﺎﻻت اﻟﺘﻄﺒﯿﻘﯿﺔ ﻟﻌﻠﻮم اﻟﺤﺎﺳﻮب‪ .‬أﺣﺪ ھﺬه اﻟﻨﻤﺎذج ﯾﺴﻤﻰ "اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪود"‬
‫‪ Finite Automaton‬واﻟﺬي ﯾﺴﺘﺨﺪم ﻓﻲ ﻣﻌﺎﻟﺠﺔ اﻟﻨﺼﻮص وﻓﻲ اﻟﻤﺘﺮﺟﻤﺎت وﻛﺬﻟﻚ ﻓﻲ ﺗﺼﻤﯿﻢ ﻣﻌﺪات‬
‫اﻟﺤﺎﺳﻮب‪ .‬ﻧﻤﻮذج آﺧﺮ ﯾﺴﻤﻰ "ﻗﺎﻋﺪة اﻟﺴﯿﺎق اﻟﺤﺮ" ‪ Context-Free Grammar‬واﻟﺬي ﯾﺴﺘﺨﺪم ﻓﻲ ﻟﻐﺎت‬
‫اﻟﺒﺮﻣﺠﺔ واﻟﺬﻛﺎء اﻻﺻﻄﻨﺎﻋﻲ‪ .‬وﺗﻌﺘﺒﺮ دراﺳﺔ ﻧﻈﺮﯾﺔ اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ ﺑﺪاﯾﺔ ﻣﻨﺎﺳﺒﺔ ﻟﺪراﺳﺔ ﻧﻈﺮﯾﺔ اﻟﺤﻮﺳﺒﺔ وذﻟﻚ‬
‫ﻷن ﻧﻈﺮﯾﺔ اﻟﺘﺤﺴﯿﺐ وﻧﻈﺮﯾﺔ اﻟﺘﻌﻘﯿﺪ اﻟﺤﺴﺎﺑﻲ ﺗﺘﻄﻠﺐ ﺗﻌﺮﯾﻔﺎت دﻗﯿﻘﺔ ﻟﻠﺤﻮﺳﺒﺔ أﻣﺎ ﻧﻈﺮﯾﺔ اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ ﻓﺘﺴﻤﺢ‬
‫ﺑﺎﻟﺘﻄﺒﯿﻖ ﻣﻦ ﺧﻼل ﺗﻌﺮﯾﻔﺎت ﺷﻜﻠﯿﺔ ﻟﻠﺤﻮﺳﺒﺔ ﺣﯿﺚ أﻧﮭﺎ ﺗﻘﻮم ﺑﺘﻘﺪﯾﻢ ﻣﺒﺎدئ ﻟﮭﺎ ﻋﻼﻗﺔ ﺑﺎﻟﺠﻮاﻧﺐ ﻏﯿﺮ اﻟﻨﻈﺮﯾﺔ ﻟﻌﻠﻮم‬
‫اﻟﺤﺎﺳﻮب‪.‬‬

‫ﺗﺒﺪأ ﻧﻈﺮﯾﺔ اﻟﺤﻮﺳﺒﺔ ﺑﺎﻟﺴﺆال "ﻣﺎ ھﻮ اﻟﺤﺎﺳﻮب؟" ﻗﺪ ﯾﺒﺪو ھﺬا ﺳﺆاﻻ ﺳﺎذﺟﺎ ﻟﻜﻦ ﻓﻲ واﻗﻊ اﻷﻣﺮ ﻓﺈن اﻟﺤﺎﺳﻮب‬
‫اﻟﺤﻘﯿﻘﻲ ﻣﻌﻘﺪ ﺟﺪا ﻟﺪرﺟﺔ ﻻ ﺗﺴﻤﺢ ﺑﺘﻄﺒﯿﻖ اﻟﻨﻈﺮﯾﺎت اﻟﺮﯾﺎﺿﯿﺔ ﻋﻠﯿﮭﺎ ﻣﺒﺎﺷﺮة وﺑﺪﻻ ﻣﻦ ذﻟﻚ ﻓﺈﻧﻨﺎ ﻧﺴﺘﺨﺪم ﺣﺎﺳﻮﺑﺎ‬
‫ﻣﺜﺎﻟﯿﺎ ﯾﺴﻤﻰ اﻟﻨﻤﻮذج اﻟﺤﺎﺳﻮﺑﻲ ‪. Computational Model‬‬

‫وﻛﻤﺎ ھﻮ اﻟﺤﺎل ﺑ ﺎﻟﻨﺴﺒﺔ ﻷي ﻧﻤﻮذج ﻋﻠﻤﻲ ﻓﺈن اﻟﻨﻤﺎذج اﻟﺤﺎﺳﻮﺑﯿﺔ ﻗﺪ ﺗﻜﻮن دﻗﯿﻘﺔ ﻓﻲ ﺑﻌﺾ اﻷﺣﯿﺎن وﻏﯿﺮ دﻗﯿﻘﺔ‬
‫ﻓﻲ ﺑﻌﻀﮭﺎ اﻵﺧﺮ‪ .‬وﺑﺎﻟﺘﺎﻟﻲ ﻓﺈﻧﻨﺎ ﺳﻮف ﻧﺴﺘﺨﺪم ﻧﻤﺎذج ﻣﺨﺘﻠﻔﺔ وذﻟﻚ ﺣﺴﺐ اﻟﺠﻮاﻧﺐ اﻟﺘﻲ ﯾﺘﻢ اﻟﺘﺮﻛﯿﺰ ﻋﻠﯿﮭﺎ‪.‬‬
‫وﺳﻮف ﻧﺒﺪأ ﺑﺄﺑﺴﻂ ﻧﻤﻮذج واﻟﺬي ﯾﺴﻤﻰ ﻧﻤﻮذج اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪود ‪ Finite State Machine‬أو ‪Finite‬‬
‫‪. Automaton‬‬

‫ﻧﻤﺎذج اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪودة ‪: Finite Automata‬‬

‫ﺗﻌﺘﺒﺮ ھﺬه اﻟﻨﻤﺎذج ﻣﻨﺎﺳﺒﺔ ﻟﻠﺤﻮاﺳﯿﺐ اﻟﺘﻲ ﺗﻤﺘﻠﻚ ذاﻛﺮة ﻣﺤﺪودة ﺟﺪا‪ .‬وھﺬا ﻻ ﯾﻘﻠﻞ ﻣﻦ اﻷﺷﯿﺎء اﻟﺘﻲ ﯾﻤﻜﻦ ﻟﮭﻜﺬا‬
‫ﺣﻮاﺳﯿﺐ ﻓﻌﻠﮭﺎ‪ .‬وﻧﺤﻦ ﻓﻲ واﻗﻊ اﻷﻣﺮ ﻧﺘﻌﺎﻣﻞ ﻣﻊ ھﻜﺬا ﺣﻮاﺳﯿﺐ ﻃﻮل اﻟﻮﻗﺖ ﺣﯿﺚ أﻧﮭﺎ ﺗﻘﻊ ﻓﻲ اﻟﻘﻠﺐ ﻣﻦ ﻣﺨﺘﻠﻒ‬

‫‪23‬‬
‫اﻵﻻت اﻟﻜﮭﺮوﻣﯿﻜﺎﻧﯿﻜﯿﺔ ﻣﺜﻞ اﻷﺑﻮاب اﻵﻟﯿﺔ اﻟﺘﻲ ﻧﺮاھﺎ ﻋﺎدة ﻓﻲ ﻣﺪاﺧﻞ اﻟﻤﻄﺎرات واﻟﻤﺤﻼت اﻟﺘﺠﺎرﯾﺔ وﻏﯿﺮھﺎ‬
‫واﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﻣﺘﺤﻜﻢ ‪ Controller‬ﯾﻘﻮم ﺑﺎﻟﺘﺤﻜﻢ ﻓﻲ ﻓﺘﺢ اﻟﺒﺎب ﻋﻨﺪ اﻗﺘﺮاب ﺟﺴﻢ ﻣﺎدي ﻟﻤﺴﺎﻓﺔ ﻣﻌﯿﻨﺔ‪.‬‬

‫‪Front‬‬ ‫‪Rear‬‬
‫‪pad‬‬ ‫‪pad‬‬

‫‪Automatic door‬‬

‫ﻓﻲ ھﺬه اﻷﻧﻮاع ﻣﻦ اﻷﺑﻮاب ﺗﻜﻮن ھﻨﺎك ﻣﻨﻄﻘﺔ أﻣﺎم اﻟﺒﺎب )‪ (Front Pad‬ﻓﻲ ﺣﺎﻟﺔ ﺗﻮاﺟﺪ أي ﺟﺴﻢ ﻣﺎدي‬
‫ﻓﻲ ھﺬه اﻟﻤﻨﻄﻘﺔ ﻓﺈن ھﻨﺎك ﻣﺠﺴﺎت ﺗﺸﻌﺮ ﺑﮭﺬا اﻟﺠﺴﻢ وﺗﻨﻘﻞ اﻹﺷﺎرة إﻟﻰ ﻣﺘﺤﻜﻢ ‪ Controller‬اﻟﺬي ﯾﻘﻮم‬
‫ﺑﺘﺤﻠﯿﻞ وﺗﻔﺴﯿﺮ ھﺬه اﻹﺷﺎرة ﺛﻢ ﯾﺼﺪر أﻣﺮا إﻟﻰ اﻷﺟﺰاء اﻟﻤﯿﻜﺎﻧﯿﻜﯿﺔ ﻟﺘﻘﻮم ﺑﻔﺘﺢ اﻟﺒﺎب وھﻲ اﻟﺤﺎﻟﺔ ‪ .Open‬ﻛﻤﺎ‬
‫أن ھﻨﺎك ﻣﻨﻄﻘﺔ ﺧﻠﻒ اﻟﺒﺎب )‪ (Rear Pad‬إذا ﺗﻮاﺟﺪ ﻓﯿﮭﺎ ﺟﺴﻢ ﻣﺎدي ﯾﻘﻮم اﻟﻤﺘﺤﻜﻢ ﺑﺈﺻﺪار إﺷﺎرات ﺗﺒﻘﻲ‬
‫اﻟﺒﺎب ﻣﻔﺘﻮﺣﺎ ﺑﺎﻟﻘﺪر اﻟﻜﺎﻓﻲ ﻣﻦ اﻟﺰﻣﻦ ﻟﻜﻲ ﯾﻌﺒﺮ ھﺬا اﻟﺠﺴﻢ ﻣﻦ ﺧﻼل اﻟﺒﺎب وإذا ﻛﺎﻧﺖ ﺣﺎﻟﺔ اﻟﺒﺎب ‪Open‬‬
‫وﺗﻮاﺟﺪ ﺟﺴﻢ ﺧﻠﻒ اﻟﺒﺎب ﻓﺈن ﺣﺎﻟﺔ اﻟﺒﺎب ﺗﺒﻘﻰ ‪ Open‬وذﻟﻚ ﺣﺘﻰ ﻻ ﯾﺘﻌﺮض ھﺬا اﻟﺠﺴﻢ ﻟﻸذى إذا ﺗﻢ إﻏﻼق‬
‫اﻟﺒﺎب‪ .‬أي أن ﻣﮭﻤﺔ اﻟﻤﺘﺤﻜﻢ ھﻮ ﺗﻐﯿﯿﺮ ﺣﺎﻟﺔ اﻟﺒﺎب ﻣﻦ ‪ Open‬إﻟﻰ ‪ Closed‬واﻟﻌﻜﺲ‪.‬‬

‫‪Rear‬‬ ‫‪Front‬‬
‫‪Both‬‬ ‫‪Rear‬‬
‫‪Neither‬‬ ‫‪Front‬‬ ‫‪Both‬‬

‫‪Closed‬‬ ‫‪Open‬‬

‫‪Neither‬‬

‫اﻟﺸﻜﻞ أﻋﻼه ھﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺨﻄﻂ ﺣﺎﻟﺔ ﻣﺘﺤﻜﻢ اﻟﺒﺎب اﻵﻟﻲ‪ .‬وﻣﻦ ھﺬا اﻟﻤﺨﻄﻂ ﻧﻼﺣﻆ أن ھﻨﺎك ﺣﺎﻟﺘﺎن‬
‫ﻟﻠﻤﺘﺤﻜﻢ ھﻲ ‪ Open‬و ‪ Closed‬وﻛﺬﻟﻚ أرﺑﻌﺔ اﺣﺘﻤﺎﻻت ﻟﻠﻘﯿﻢ اﻟﺘﻲ ﯾﻤﻜﻦ إدﺧﺎﻟﮭﺎ إﻟﻰ ھﺬا اﻟﻨﻈﺎم‪ .‬وﺑﻨﺎءا ﻋﻠﻰ‬
‫ھﺬه اﻟﻤﺪﺧﻼت ﯾﻘﻮم اﻟﻤﺘﺤﻜﻢ ﺑﺘﻐﯿﯿﺮ ﺣﺎﻟﺘﮫ ﻣﻦ ‪ Open‬إﻟﻰ ‪ Close‬واﻟﻌﻜﺲ‪ .‬وھﺬه اﻟﻤﺪﺧﻼت ھﻲ‪:‬‬

‫أﻣﺎم )‪ (Front‬وﺗﻌﻨﻲ أن ھﻨﺎك ﺟﺴﻤﺎ ﻣﺎدﯾﺎ أﻣﺎم اﻟﺒﺎب‬ ‫‪-‬‬


‫ﺧﻠﻒ )‪ (Rear‬وﺗﻌﻨﻲ أن ھﻨﺎك ﺟﺴﻤﺎ ﻣﺎدﯾﺎ ﺧﻠﻒ اﻟﺒﺎب‬ ‫‪-‬‬
‫اﻻﺛﻨﺎن )‪ (Both‬وﺗﻌﻨﻲ أن ھﻨﺎك ﺟﺴﻤﺎن أﺣﺪھﻤﺎ أﻣﺎم اﻟﺒﺎب واﻟﺜﺎﻧﻲ ﺧﻠﻒ اﻟﺒﺎب‬ ‫‪-‬‬
‫ﻻ أﺣﺪ )‪ (Neither‬وﺗﻌﻨﻲ أن ﻻ أﺟﺴﻢ أﻣﺎم أو ﺧﻠﻒ اﻟﺒﺎب‬ ‫‪-‬‬

‫‪24‬‬
‫وﯾﻮﺿﺢ ھﺬا اﻟﻤﺨﻄﻂ أﻧﮫ إذا ﻛﺎﻧﺖ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪ Closed‬وﺗﻢ إدﺧﺎل إﺷﺎرة ‪ Neither‬أو إﺷﺎرة ‪ Rear‬ﻓﺈن‬
‫اﻟﺒﺎب ﺳﯿﺒﻘﻰ ﻓﻲ ﺣﺎﻟﺔ ‪ Closed‬وﻛﺬﻟﻚ اﻟﺤﺎل إذا ﻛﺎﻧﺖ اﻹﺷﺎرة ‪ Both‬ﻓﻠﻦ ﯾﺘﻢ ﻓﺘﺢ اﻟﺒﺎب وﺗﺒﻘﻰ اﻟﺤﺎﻟﺔ ‪Closed‬‬
‫وذﻟﻚ ﺣﺘﻰ ﻻ ﯾﺘﻌﺮض ﻟﻸذى اﻟﺸﺨﺺ اﻟﻤﻮﺟﻮد ﺧﻠﻒ اﻟﺒﺎب إذا ﺗﻢ ﻓﺘﺤﮫ‪ .‬وﻟﻜﻦ ﻓﻲ ﺣﺎﻟﺔ ﻛﺎﻧﺖ اﻹﺷﺎرة اﻟﻤﺪﺧﻠﺔ‬
‫‪ Front‬ﻓﻌﻨﺪھﺎ ﻓﻘﻂ ﺗﺘﻐﯿﺮ اﻟﺤﺎﻟﺔ إﻟﻰ ‪ .Open‬أﻣﺎ إذا ﻛﺎﻧﺖ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪ Open‬ﻓﺈن اﺳﺘﻘﺒﺎل اﻹﺷﺎرات‬
‫‪ Front, Rear‬و ‪ Both‬ﺳﯿﺒﻘﻲ اﻟﺒﺎب ﻓﻲ ﺣﺎﻟﺔ ‪ Open‬وﻓﻘﻂ ﻓﻲ ﺣﺎﻟﺔ واﺣﺪة ھﻲ اﺳﺘﻘﺒﺎل اﻹﺷﺎرة ‪Neither‬‬
‫ﯾﺘﻢ اﻹﻏﻼق‪.‬‬

‫ﻣﺜﺎل‪ :‬إذا ﻛﺎﻧﺖ ﺣﺎﻟﺔ اﻟﻤﺘﺤﻜﻢ اﻻﺑﺘﺪاﺋﯿﺔ ‪ Closed‬وﺗﻢ اﺳﺘﻘﺒﺎل اﻹﺷﺎرات اﻟﺘﺎﻟﯿﺔ ﺑﺎﻟﺘﺮﺗﯿﺐ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪Front → Rear→ Neither → Front → Both → Neither →Rear → Neither‬‬

‫ﻓﺈن اﻟﻤﺘﺤﻜﻢ ﺳﻮف ﯾﻨﺘﻘﻞ إﻟﻰ اﻟﺤﺎﻻت اﻟﺘﺎﻟﯿﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪Open → Open → Closed → Open → Open → Closed → Closed → Closed‬‬

‫إن دراﺳﺔ ﻣﺘﺤﻜﻢ اﻟﺒﺎب اﻵﻟﻲ ﻛﻨﻤﻮذج ﻟﻠﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪود ﺗﻌﺘﺒﺮ ﻣﻔﯿﺪة وذﻟﻚ ﻷﻧﮭﺎ ﺗﻘﺪم ﻃﺮﯾﻘﺔ واﺿﺤﺔ‬
‫ﻟﺘﻤﺜﯿﻞ ھﺬا اﻟﻨﻮع ﻣﻦ اﻟﻨﻈﻢ ﻛﻤﺎ ھﻮ واﺿﺢ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‪ .‬ﻓﺎﻟﻤﺘﺤﻜﻢ ھﻮ ﻋﺒﺎرة ﻋﻦ ﺣﺎﺳﻮب ﯾﻤﺘﻠﻚ ﺑﺖ واﺣﺪ ﻣﻦ‬
‫اﻟﺬاﻛﺮة ﯾﻤﻜﻨﮫ ﺗﺴﺠﯿﻞ اﻟﺤﺎﻟﺔ اﻟﺘﻲ ﯾﻜﻮن ﻋﻠﯿﮭﺎ اﻟﻤﺘﺤﻜﻢ ھﻞ ھﻲ ‪ Close‬أم ‪ . Open‬وھﻨﺎك ﺑﻌﺾ اﻷﺟﮭﺰة اﻟﺘﻲ‬
‫ﺗﻤﺘﻠﻚ ذاﻛﺮة ﻣﺤﺪودة وﻟﻜﻨﮭﺎ أﻛﺒﺮ ﻗﻠﯿﻼ ﻣﻦ ھﺬه‪ .‬ﻓﻤﺜﻼ ﺣﺎﻟﺔ ﻣﺘﺤﻜﻢ اﻟﻤﺼﻌﺪ اﻵﻟﻲ ‪ Elevator‬ﯾﻤﺜﻠﮭﺎ رﻗﻢ اﻟﻄﺎﺑﻖ‬
‫اﻟﺬي ﯾﻮﺟﺪ ﻋﻠﯿﮫ اﻟﻤﺼﻌﺪ ﻓﻲ ﻟﺤﻈﺔ ﻣﺎ‪ .‬أﻣﺎ اﻟﻤﺪﺧﻼت ﻓﯿﻤﻜﻦ أن ﺗﻜﻮن اﻹﺷﺎرات اﻟﺘﻲ ﯾﺘﻢ إرﺳﺎﻟﮭﺎ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ‬
‫أزرار ﻣﻮﺟﻮدة ﻋﻠﻰ ﻟﻮﺣﺎت ﻟﻠﺘﺤﻜﻢ ﻓﻲ اﻟﻌﻤﻠﯿﺎت اﻟﻤﻄﻠﻮﺑﺔ ﻣﻦ اﻟﻤﺼﻌﺪ اﻟﻘﯿﺎم ﺑﮭﺎ‪ .‬وھﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤﺘﺤﻜﻤﺎت ﯾﻮﺟﺪ‬
‫ﻓﻲ اﻟﻜﺜﯿﺮ ﻣﻦ اﻷﺟﮭﺰة اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ اﻟﺒﯿﻮت ﻣﺜﻞ اﻟﻐﺴﺎﻻت وأﺟﮭﺰة اﻟﺘﺒﺮﯾﺪ واﻟﺘﻜﯿﯿﻒ وﻛﺬﻟﻚ ﺗﻮﺟﺪ ﻓﻲ اﻵﻻت‬
‫اﻟﺤﺎﺳﺒﺔ واﻟﺴﺎﻋﺎت اﻹﻟﻜﺘﺮوﻧﯿﺔ وﻏﯿﺮھﺎ‪.‬‬

‫ﻟﻮﺻﻒ اﻟﻨﻈﺮﯾﺎت اﻟﺮﯾﺎﺿﯿﺔ ﻟﻠﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪود ﻓﺈﻧﮫ ﯾﺠﺐ ﻓﻌﻞ ذﻟﻚ ﺑﻄﺮﯾﻘﺔ ﻣﺠﺮدة أي دون رﺑﻂ ذﻟﻚ ﺑﺄﯾﺔ‬
‫ﺗﻄﺒﯿﻘﺎت ﻣﺤﺪدة‪.‬‬

‫اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﯾﺼﻮر ﻧﻤﻮذﺟﺎ ﻟﻠﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ ﯾﺴﻤﻰ ‪: M1‬‬

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

‫‪q1‬‬ ‫‪q3‬‬
‫‪q2‬‬

‫‪0,1‬‬

‫ﻧﻼﺣﻆ ﻣﻦ ھﺬا اﻟﺸﻜﻞ اﻟﺬي ﯾﺴﻤﻰ ﻣﺨﻄﻂ ﺣﺎﻟﺔ ‪ M1‬أن ﻟﮭﺬا اﻟﻨﻤﻮذج ﺛﻼث ﺣﺎﻻت ﺗﻤﺜﻞ ﺑﺎﻟﺮﻣﻮز ‪ q3,q2,q1‬ﺣﯿﺚ‪:‬‬

‫‪ q1 -‬ﺗﺴﻤﻰ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪Start State‬‬

‫‪ q2 -‬ﺗﺴﻤﻰ ﺣﺎﻟﺔ اﻟﻘﺒﻮل ‪Accept State‬‬

‫‪25‬‬
‫‪ q3 -‬ﺗﺴﻤﻰ ﺣﺎﻟﺔ اﻟﺮﻓﺾ ‪Reject State‬‬

‫أﻣﺎ اﻷﺳﮭﻢ ﻓﻲ اﻟﻤﺨﻄﻂ ﻓﮭﻲ ﺗﻤﺜﻞ ﻋﻤﻠﯿﺔ اﻻﻧﺘﻘﺎل ﻣﻦ ﺣﺎﻟﺔ إﻟﻰ أﺧﺮى وﺗﺴﻤﻰ ﻣﻘﺎﻃﻊ اﻟﺘﺤﻮل ‪. Transitions‬‬

‫ﻟﻮ ﻓﺮﺿﻨﺎ أن ھﺬا اﻟﻨﻤﻮذج ﺗﻠﻘﻰ ﻣﺪﺧﻼت ﻋﻠﻰ ﺷﻜﻞ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ 1101‬ﻓﺈن ھﺬه اﻟﻤﺘﺴﻠﺴﻠﺔ ﯾﺘﻢ ﻣﻌﺎﻟﺠﺘﮭﺎ‬
‫ﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻣﺨﺮﺟﺎت ﺗﻜﻮن إﻣﺎ ﻗﺒﻮل أو رﻓﺾ‪ .‬وﺳﻮف ﻧﻌﺘﺒﺮ ھﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤﺨﺮﺟﺎت ھﻮ ﻣﻦ ﻧﻮع‬
‫‪ yes/no‬ﺑﻤﻌﻨﻰ أن ﻟﮭﺎ ﺣﺎﻟﺘﺎن ﻓﻘﻂ‪.‬‬

‫ﺗﺒﺪأ ﻣﻌﺎﻟ ﺠﺔ اﻟﻤﺪﺧﻼت ﻓﻲ ھﺬا اﻟﻨﻈﺎم ﻓﻲ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ﺣﯿﺚ ﯾﺘﻢ اﺳﺘﻘﺒﺎل ﻋﻨﺎﺻﺮ اﻟﻤﺘﺴﻠﺴﻠﺔ واﺣﺪا ﺗﻠﻮ‬
‫اﻵﺧﺮ ﻣﻦ اﻟﯿﺴﺎر إﻟﻰ اﻟﯿﻤﯿﻦ‪ .‬ﺑﻌﺪ ﻗﺮاءة ﻛﻞ ﻋﻨﺼﺮ ﯾﻨﺘﻘﻞ ‪ M1‬ﻣﻦ ﺣﺎﻟﺔ إﻟﻰ أﺧﺮى وﻋﻨﺪ ﻗﺮاءة آﺧﺮ ﻋﻨﺼﺮ‬
‫ﯾﻘﻮم ‪ M1‬ﺑﺈﻧﺘﺎج اﻟﻤﺨﺮﺟﺎت‪ .‬وھﺬه اﻟﻤﺨﺮﺟﺎت ﺗﻜﻮن ‪ Accept‬إذا ﻛﺎن ‪ M1‬ﻓﻲ ﺣﺎﻟﺔ ‪ Accept‬ﻋﻨﺪ ﻗﺮاءة‬
‫آﺧﺮ ﻋﻨﺼﺮ ﻣﻦ اﻟﻤﺪﺧﻼت وﺗﻜﻮن ‪ Reject‬إذا ﻛﺎﻧﺖ ﺣﺎﻟﺔ ‪ M1‬ھﻲ ‪ Reject‬ﻋﻨﺪ ﻗﺮاءة آﺧﺮ ﻋﻨﺼﺮ ﻣﻦ‬
‫اﻟﻤﺪﺧﻼت‪.‬‬

‫ﻓﻤﺜﻼ ﻋﻨﺪ إدﺧﺎل اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ 1101‬إﻟﻰ اﻵﻟﺔ ‪ M1‬اﻟﺘﻲ ﯾﻤﺜﻞ اﻟﻤﺨﻄﻂ أﻋﻼه ﻃﺮﯾﻘﺔ ﻋﻤﻠﮭﺎ ﻓﺈن اﻟﻌﻤﻠﯿﺎت ﺗﺘﻢ‬
‫ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ ‪:‬‬

‫اﺑﺪأ ﻓﻲ اﻟﺤﺎﻟﺔ ‪q1‬‬ ‫‪.1‬‬


‫اﻗﺮأ ‪ , 1‬وﯾﺘﻢ اﻻﻧﺘﻘﺎل ﻣﻦ ‪ q1‬إﻟﻰ ‪q2‬‬ ‫‪.2‬‬
‫اﻗﺮأ ‪ , 1‬وﯾﺘﻢ اﻻﻧﺘﻘﺎل ﻣﻦ ‪ q2‬إﻟﻰ ‪q2‬‬ ‫‪.3‬‬
‫اﻗﺮأ ‪ , 0‬وﯾﺘﻢ اﻻﻧﺘﻘﺎل ﻣﻦ ‪ q2‬إﻟﻰ ‪q3‬‬ ‫‪.4‬‬
‫اﻗﺮأ ‪ , 1‬وﯾﺘﻢ اﻻﻧﺘﻘﺎل ﻣﻦ ‪ q3‬إﻟﻰ ‪q2‬‬ ‫‪.5‬‬
‫اﻗﺒﻞ ‪ ,‬ﻷن ‪ M1‬ﻓﻲ ﺣﺎﻟﺔ اﻟﻘﺒﻮل ‪ q2‬ﻋﻨﺪ إﻧﮭﺎء اﻹدﺧﺎل‪.‬‬ ‫‪.6‬‬

‫وھﺬا ﯾﻌﻨﻲ أن اﻟﻤﺨﺮﺟﺎت ﺳﻮف ﺗﻜﻮن ﺣﺎﻟﺔ ‪. Accept‬‬

‫وﻋﻨﺪ ﺗﺠﺮﺑﺔ ﻋﺪد ﻛﺒﯿﺮ ﻣﻦ اﻟﻤﺘﺴﻠﺴﻼت ﻋﻠﻰ ھﺬه اﻟﻨﻈﺎم ﯾﻤﻜﻦ اﺳﺘﻨﺘﺎج اﻟﺘﺎﻟﻲ‪:‬‬

‫‪ -‬ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻨﺘﮭﻲ ﺑﺎﻟﻌﻨﺼﺮ ‪ 1‬ﻣﺜﻞ ‪ 0101010101 , 111101 , 01 ,1‬ﻣﺨﺮﺟﺎﺗﮭﺎ ‪accept‬‬
‫‪ -‬ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻨﺘﮭﻲ ﺑﻌﺪد زوﺟﻲ ﻣﻦ اﻷﺻﻔﺎر ﺑﻌﺪ ‪ 1‬ﻣﺜﻞ ‪ 1000000 , 100‬ﻣﺨﺮﺟﺎﺗﮭﺎ ‪accept‬‬
‫‪ -‬ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻨﺘﮭﻲ ﺑﻌﺪد ﻓﺮدي ﻣﻦ اﻷﺻﻔﺎر ﻣﺜﻞ ‪ 01000‬ﻣﺨﺮﺟﺎﺗﮭﺎ ‪reject‬‬

‫اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ‪ Formal Definition‬ﻟﻨﻤﺎذج اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪودة‪:‬‬

‫ﻓﻲ اﻷﻣﺜﻠﺔ اﻟﺴﺎﺑﻘﺔ ﻗﻤﻨﺎ ﺑﺎﺳﺘﺨﺪام ﻣﺨﻄﻄﺎت اﻟﺤﺎﻟﺔ ‪ State Diagrams‬وذﻟﻚ ﻟﺘﻌﺮﯾﻒ ‪Finite‬‬
‫‪ Automata‬وذﻟﻚ ﻷن ھﺬه اﻟﻤﺨﻄﻄﺎت ﺗﺴﺎﻋﺪ ﻛﺜﯿﺮا ﻓﻲ ﻓﮭﻢ واﺳﺘﯿﻌﺎب ھﺬه اﻟﻨﻈﻢ وﻣﻊ ذﻟﻚ ﻓﺈﻧﻨﺎ ﺑﺤﺎﺟﺔ إﻟﻰ‬
‫اﺳﺘﺨﺪام اﻟﺘﻌﺮﯾﻒ اﻟﺮﯾﺎﺿﻲ أو ﻣﺎ ﯾﺴﻤﻰ اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ‪ Formal Definition‬وذﻟﻚ ﻟﺴﺒﺒﯿﻦ رﺋﯿﺴﯿﯿﻦ‬
‫ھﻤﺎ‪:‬‬

‫‪ .1‬اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﯾﻜﻮن دﻗﯿﻘﺎ ﺣﯿﺚ ﯾﻘﻮم ﺑﺈزاﻟﺔ أي ﻏﻤﻮض أو ﻋﺪم دﻗﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺎ ﯾﺴﻤﺢ ﺑﮫ ﻓﻲ ھﺬه‬
‫اﻟﻨﻤﺎذج‪.‬‬
‫‪ .2‬اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﯾﻜﻮن ﻋﻠﻰ ﺷﻜﻞ ﻣﺠﻤﻮﻋﺔ رﻣﻮز ﻣﻜﺘﻮﺑﺔ وھﺬا ﯾﺴﺎﻋﺪ ﻓﻲ اﻟﺘﻔﻜﯿﺮ وﻛﺬﻟﻚ ﻓﻲ اﻟﺘﻌﺒﯿﺮ ﻋﻦ‬
‫اﻷﻓﻜﺎر ﺑﺸﻜﻞ واﺿﺢ‪.‬‬

‫‪26‬‬
‫ﯾﺘﻜﻮن ‪ Finite Automaton‬ﻣﻦ ﻣﺠﻤﻮﻋﺔ أﺟﺰاء‪ .‬ﺣﯿﺚ أن ﻟﮫ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺤﺎﻻت وﻣﺠﻤﻮﻋﺔ ﻗﻮاﻋﺪ‬
‫ﻟﻼﻧﺘﻘﺎل ﻣﻦ ﺣﺎﻟﺔ إﻟﻰ أﺧﺮى ﺣﺴﺐ ﻋﻨﺼﺮ اﻹدﺧﺎل ﻛﻤﺎ أن ﻟﮫ أﺑﺠﺪﯾﺔ إدﺧﺎل ﺗﻈﮭﺮ أﯾﺔ ﻋﻨﺎﺻﺮ ﯾﺴﻤﺢ ﺑﮭﺎ ﻛﻤﺪﺧﻼت‪.‬‬
‫ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ذﻟﻚ ﻓﺈﻧﮫ ﯾﻤﺘﻠﻚ ﺣﺎﻟﺔ اﺑﺘﺪاﺋﯿﺔ وﻛﺬﻟﻚ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﺣﺎﻻت اﻟﻘﺒﻮل‪ .‬ﺑﺎﻻﻋﺘﻤﺎد ﻋﻠﻰ ﻣﺎ ﺳﺒﻖ ﻓﺈن اﻟﺘﻌﺮﯾﻒ‬
‫اﻟﺸﻜﻠﻲ ﯾﻘﻮل أن ‪ Finite Automaton‬ھﻮ ﻋﺒﺎرة ﻋﻦ ﻗﺎﺋﻤﺔ ﻣﻦ ھﺬه اﻟﻤﻜﻮﻧﺎت اﻟﺨﻤﺴﺔ‪.‬‬

‫اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﯾﺴﺘﺨﺪم ﻣﺎ ﯾﺴﻤﻰ داﻟﺔ اﻻﻧﺘﻘﺎل ‪ Transition Function‬واﻟﺘﻲ ﯾﺘﻢ ﺗﻤﺜﯿﻠﮭﺎ ﺑﺎﻟﺮﻣﺰ ‪ δ‬وذﻟﻚ‬
‫ﻟﺘﻌﺮﯾﻒ ﻗﻮاﻋﺪ اﻻﻧﺘﻘﺎل‪ .‬ﻓﻤﺜﻼ إذا ﻛﺎن اﻟﻤﺨﻄﻂ ﯾﻈﮭﺮ ﻋﻤﻠﯿﺔ اﻻﻧﺘﻘﺎل ﻣﻦ اﻟﺤﺎﻟﺔ ‪ x‬إﻟﻰ اﻟﺤﺎﻟﺔ ‪ y‬ﺑﻮاﺳﻄﺔ ﺳﮭﻢ وذﻟﻚ‬
‫ﻋﻨﺪ ﻗﺮاءة ﻋﻨﺼﺮ اﻹدﺧﺎل ‪ 1‬ﻓﺈن ھﺬا ﯾﻌﻨﻲ أﻧﮫ إذا ﻛﺎن اﻟﻨﻤﻮذج ﻓﻲ ﺣﺎﻟﺔ ‪ x‬ﻓﺈﻧﮫ ﻋﻨﺪ ﻗﺮاءة ﻋﻨﺼﺮ اﻹدﺧﺎل ‪ 1‬ﺳﻮف‬
‫ﯾﻨﺘﻘﻞ إﻟﻰ اﻟﺤﺎﻟﺔ ‪ . y‬ﻧﻔﺲ اﻟﺸﻲء ﯾﻤﻜﻦ اﻟﺘﻌﺒﯿﺮ ﻋﻨﮫ ﺑﺎﺳﺘﺨﺪام داﻟﺔ اﻻﻧﺘﻘﺎل ﻛﺎﻟﺘﺎﻟﻲ ‪. δ (x,1) = y‬‬

‫اﻟﺘﻌﺒﯿﺮ ﺑﮭﺬا اﻟﺸﻜﻞ ھﻮ ﻋﺒﺎرة ﻋﻦ ﻧﻮع ﻣﻦ اﻻﺧﺘﺼﺎر اﻟﺮﯾﺎﺿﻲ وﻋﻨﺪ وﺿﻊ ﻛﻞ اﻟﻤﻜﻮﻧﺎت ﻣﻊ ﺑﻌﻀﮭﺎ اﻟﺒﻌﺾ‬
‫ﻓﺈﻧﻨﺎ ﺑﺬﻟﻚ ﻧﺼﻞ إﻟﻰ اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﻟﻨﻤﻮذج اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪود‪.‬‬

‫ﯾﺘﻜﻮن ‪ Finite Automaton‬ﻣﻦ اﻟﺨﻤﺎﺳﯿﺔ اﻟﺘﺎﻟﯿﺔ ‪ (Q,∑ , δ,q0,F) :‬ﺣﯿﺚ‪:‬‬

‫‪ : Q .1‬ھﻲ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﺤﺪودة ﺗﺴﻤﻰ اﻟﺤﺎﻻت ‪. States‬‬


‫‪ : ∑ .2‬ھﻲ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﺤﺪودة ﺗﺴﻤﻰ أﺑﺠﺪﯾﺔ ‪. Alphabet‬‬
‫‪δ:‬‬ ‫∑‪Qx‬‬ ‫‪ : δ .3‬ھﻲ داﻟﺔ اﻻﻧﺘﻘﺎل ‪ Transition Function‬ﺣﯿﺚ ‪Q‬‬
‫‪ : q0 .4‬ھﻲ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪ Start State‬ﺣﯿﺚ ‪q0 Q‬‬
‫‪ : F .5‬ھﻲ ﻣﺠﻤﻮﻋﺔ ﺣﺎﻻت اﻟﻘﺒﻮل ‪ Accept States‬ﺣﯿﺚ ‪F Q‬‬

‫وھﺬا ﯾﻌﻨﻲ أﻧﮫ ﯾﻤﻜﻦ اﺳﺘﺨﺪام رﻣﻮز اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﻷن ھﺬا ﯾﻌﻄﻲ وﺻﻔﺎ دﻗﯿﻘﺎ ﻟﻨﻤﻮذج اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ‬
‫اﻟﻤﺤﺪود‪ .‬ﻓﻤﺜﻼ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻨﻤﻮذج ‪ M1‬اﻟﻮارد ذﻛﺮه ﺳﺎﺑﻘﺎ ﻓﺈﻧﮫ ﺑﺎﺳﺘﺨﺪام اﻟﺮﻣﻮز ﯾﻤﻜﻦ وﺻﻒ ھﺬا اﻟﻨﻤﻮذج ﻋﻠﻰ‬
‫اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫)‪M1 = (Q,∑ , δ,q1,F‬‬

‫}‪∑ = {q1, q2, q3‬‬

‫‪δ‬‬ ‫‪ :‬وﯾﺘﻢ وﺻﻔﮭﺎ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‬

‫‪0‬‬ ‫‪1‬‬
‫‪q1 q1 q2‬‬
‫‪q2 q3 q2‬‬
‫‪q3 q2 q2‬‬

‫)اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ( ‪q 1 : Start State‬‬

‫}‪F = {q2‬‬

‫‪27‬‬
‫وإذا اﻋﺘﺒﺮﻧﺎ ‪ A‬ھﻲ ﻣﺠﻤﻮﻋﺔ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻘﺒﻠﮭﺎ اﻵﻟﺔ ‪ M‬ﻓﺈﻧﮫ ﯾﻤﻜﻦ اﻟﻘﻮل أن ‪ A‬ھﻲ ﻟﻐﺔ اﻵﻟﺔ ‪M‬‬
‫وﯾﺘﻢ ﻛﺘﺎﺑﺔ ذﻟﻚ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪ L(M) = A :‬ﻛﻤﺎ ﯾﻤﻜﻦ اﻟﻘﻮل أن اﻵﻟﺔ ‪ M‬ﯾﻤﻜﻨﮭﺎ ﺗﻤﯿﯿﺰ أو إدراك‬
‫‪ Recognize‬اﻟﻠﻐﺔ ‪ A‬أو ﺑﺘﻌﺒﯿﺮ آﺧﺮ أن ‪ M‬ﺗﻘﺒﻞ ‪ . A‬وﺑﻤﺎ أن اﻟﻤﺼﻄﻠﺢ ﻗﺒﻮل ‪ Accept‬ﯾﺤﻤﻞ ﻣﻌﺎﻧﻲ ﻛﺜﯿﺮة‬
‫ﻣﺨﺘﻠﻔﺔ ﻓﺈﻧﮫ ﯾﻔﻀﻞ اﺳﺘﺨﺪام اﻟﻤﺼﻄﻠﺢ ‪ Recognize‬وذﻟﻚ ﺗﻔﺎدﯾﺎ ﻷي إرﺑﺎك أو ﺗﺸﻮﯾﺶ ﻓﻲ ﻓﮭﻢ اﻟﻤﻌﻨﻰ اﻟﺼﺤﯿﺢ‪.‬‬

‫إن اﻵﻟﺔ ﯾﻤﻜﻨﮭﺎ ﻗﺒﻮل ﻋﺪة ﻣﺘﺴﻠﺴﻼت وﻟﻜﻨﮭﺎ داﺋﻤﺎ ﺗﺪرك ﻟﻐﺔ واﺣﺪة ﻓﻘﻂ‪ .‬وﻓﻲ ﺣﺎﻟﺔ ﻛﺎﻧﺖ اﻵﻟﺔ ﻻ ﺗﻘﺒﻞ أﯾﺔ‬
‫ﻣﺘﺴﻠﺴﻠﺔ ﻓﺈﻧﮭﺎ ﻣﻊ ذﻟﻚ ﻻ ﺗﺰال ﺗﺪرك ﻟﻐﺔ واﺣﺪة ﻓﻘﻂ ﺗﺴﻤﻰ اﻟﻠﻐﺔ اﻟﺨﺎﻟﯿﺔ ‪ . Ø‬وﻟﮭﺬه اﻵﻟﺔ ﺗﻌﺮف اﻟﻠﻐﺔ ﻋﻠﻰ اﻟﺸﻜﻞ‬
‫اﻟﺘﺎﻟﻲ‪:‬‬

‫}‪A={w/w contains at least one 1 and an even numbers of 0s follow the last 1‬‬

‫وﻋﻨﺪھﺎ ﻧﻘﻮل أن اﻵﻟﺔ ﺗﺪرك اﻟﻠﻐﺔ ‪ A‬وﯾﻜﺘﺐ ذﻟﻚ ﻛﺎﻟﺘﺎﻟﻲ ‪. L(M1) = A‬‬

‫ﻣﺜﺎل‪ :‬اﻟﻤﺨﻄﻂ اﻟﺘﺎﻟﻲ ﯾﻤﺜﻞ ‪ Finite Automaton‬اﺳﻤﮫ ‪: M2‬‬

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

‫‪q1‬‬
‫‪q2‬‬

‫‪0‬‬

‫اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﻟﮭﺬا اﻟﻨﻈﺎم ﺳﯿﻜﻮن ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫)}‪M2 = ({q1, q2}, {0,1}, δ, q1, {q2‬‬

‫ﻓﺘﻤﺜﻞ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬ ‫أﻣﺎ داﻟﺔ اﻻﻧﺘﻘﺎل ‪δ‬‬


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

‫وﯾﺠﺐ اﻟﺘﺄﻛﯿﺪ ھﻨﺎ أن ﻣﺨﻄﻂ اﻟﺤﺎﻟﺔ ‪ State Diagram‬واﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ‪ Formal Definition‬ﯾﺤﺘﻮﯾﺎن‬
‫ﻋﻠﻰ ﻧﻔﺲ اﻟﻤﻌﻠﻮﻣﺎت وﻟﻜﻦ ﺑﺄﺷﻜﺎل ﻣﺨﺘﻠﻔﺔ ﺑﺤﯿﺚ ﯾﻤﻜﻦ اﻻﻧﺘﻘﺎل ﻣﻦ اﺣﺪھﻤﺎ إﻟﻰ اﻵﺧﺮ إذا ﻛﺎن ذﻟﻚ ﺿﺮورﯾﺎ‪.‬‬

‫‪28‬‬
‫إن أﻓﻀﻞ ﻃﺮﯾﻘﺔ ﻟﻠﺒﺪء ﻓﻲ ﻓﮭﻢ أﯾﺔ آﻟﺔ ھﻲ ﺗﺠﺮﺑﺘﮭﺎ ﻣﻦ ﺧﻼل ﻋﯿﻨﺔ ﻣﻦ ﻣﺘﺴﻠﺴﻼت اﻹدﺧﺎل ﺑﺤﯿﺚ ﻧﺮى ﻣﻦ‬
‫ﺧﻼﻟﮭﺎ ﻛﯿﻒ ﺗﻌﻤﻞ اﻵﻟﺔ وﻛﺬﻟﻚ ﺣﺘﻰ ﺗﺼﺒﺢ ﻃﺮﯾﻘﺔ ﻋﻤﻠﮭﺎ واﺿﺤﺔ وﺟﻠﯿﺔ‪ .‬ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل إذا أﺧﺬﻧﺎ اﻟﻤﺘﺴﻠﺴﻠﺔ‬
‫‪ 1101‬ﻛﻌﯿﻨﺔ إدﺧﺎل ﻓﺈن اﻵﻟﺔ ‪ M2‬ﺳﻮف ﺗﺒﺪأ ﻋﻤﻠﮭﺎ ﻓﻲ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪ q1‬ﺛﻢ ﺗﻨﺘﻘﻞ إﻟﻰ اﻟﺤﺎﻟﺔ ‪ q2‬ﺑﻌﺪ ﻗﺮاءة‬
‫أول ﻋﻨﺼﺮ ﻓﻲ اﻟﻤﺘﺴﻠﺴﻠﺔ وھﻮ ‪ 1‬ﺛﻢ ﺗﻨﺘﻘﻞ إﻟﻰ اﻟﺤﺎﻻت ‪ q2, q1, q1‬ﻋﻠﻰ اﻟﺘﻮاﻟﻲ ﺑﻌﺪ ﻗﺮاءة ﺑﺎﻗﻲ ﻋﻨﺎﺻﺮ‬
‫اﻟﻤﺘﺴﻠﺴﻠﺔ‪ .‬ھﺬه اﻟﻤﺘﺴﻠﺴﻠﺔ ﺗﻢ ﻗﺒﻮﻟﮭﺎ ﻷن ‪ q2‬ھﻲ ﺣﺎﻟﺔ اﻟﻘﺒﻮل واﻟﺘﻲ ﺗﻮﺟﺪ ﻓﯿﮭﺎ اﻵﻟﺔ ﺑﻌﺪ ﻗﺮاءة آﺧﺮ ﻋﻨﺼﺮ‪ .‬وﻟﻜﻦ‬
‫ﻟﻮ أﺧﺬﻧﺎ اﻟﻤﺘﺴﻠﺴﻠﺔ ‪ 110‬ﻛﻌﯿﻨﺔ إدﺧﺎل ﻓﺈن ﺗﻨﻔﯿﺬھﺎ ﺳﻮف ﯾﺠﻌﻞ اﻵﻟﺔ ﻓﻲ ﺣﺎﻟﺔ ‪ q1‬وھﻲ ﺣﺎﻟﺔ اﻟﺮﻓﺾ ﺑﻌﺪ ﻗﺮاءة‬
‫آﺧﺮ ﻋﻨﺼﺮ ﻓﯿﮭﺎ أي أن اﻟﻤﺘﺴﻠﺴﻠﺔ ﻗﺪ ﺗﻢ رﻓﻀﮭﺎ‪ .‬وﺑﻌﺪ ﺗﺠﺮﺑﺔ أﻛﺜﺮ ﻣﻦ ﻋﯿﻨﺔ إدﺧﺎل ﻧﺼﻞ إﻟﻰ ﻧﺘﯿﺠﺔ ﻣﻔﺎدھﺎ أن ‪M2‬‬
‫ﺗﻘﺒﻞ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻨﺘﮭﻲ ﺑﺎﻟﻌﻨﺼﺮ ‪ 1‬وﯾﻤﻜﻦ ﺻﯿﺎﻏﺔ ھﺬا ﻛﺎﻟﺘﺎﻟﻲ‪L(M2) = {w/w ends in a 1} :‬‬
‫أي أن ﻟﻐﺔ ھﺬه اﻵﻟﺔ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﻨﺘﮭﻲ ﺑﺎﻟﺮﻣﺰ ‪. 1‬‬

‫ﻣﺜﺎل‪ :‬اﻟﻤﺨﻄﻂ اﻟﺘﺎﻟﻲ ﯾﻤﺜﻞ ‪ Finite Automaton‬وﻟﺘﻜﻦ اﻵﻟﺔ ‪: M3‬‬

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

‫‪q2‬‬
‫‪q1‬‬

‫‪0‬‬

‫ھﺬه اﻵﻟﺔ ﻣﺸﺎﺑﮭﺔ ﺟﺪا ﻟﻶﻟﺔ ‪ M2‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﺳﻮى أن ﺣﺎﻟﺔ اﻟﻘﺒﻮل ھﻨﺎ ھﻲ ‪ q1‬وﺣﺎﻟﺔ اﻟﺮﻓﺾ ھﻲ ‪. q2‬‬
‫اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﻟﮭﺬه اﻵﻟﺔ ھﻮ ‪:‬‬

‫)}‪M3 = ({q1, q2}, {0,1}, δ, q1, {q1‬‬

‫أﻣﺎ داﻟﺔ اﻻﻧﺘﻘﺎل ‪ δ‬ﻓﯿﺘﻢ ﺗﻤﺜﯿﻠﮭﺎ ﻛﺎﻟﺘﺎﻟﻲ ‪:‬‬

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

‫‪29‬‬
‫ﻛﻤﺎ ﻧﻌﻠﻢ أن اﻵﻟﺔ ﺗﻘﺒﻞ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺗﺠﻌﻠﮭﺎ ﻓﻲ ﺣﺎﻟﺔ ﻗﺒﻮل ﺑﻌﺪ ﻗﺮاءة آﺧﺮ رﻣﺰ ﻣﻦ رﻣﻮز ھﺬه اﻟﻤﺘﺴﻠﺴﻠﺔ‪.‬‬
‫وﻧﻼﺣﻆ ھﻨﺎ أن اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ﻟﮭﺬه اﻵﻟﺔ ھﻲ ﺣﺎﻟﺔ اﻟﻘﺒﻮل وھﺬا اﻟﻨﻮع ﻣﻦ اﻵﻻت ﯾﻘﺒﻞ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺨﺎﻟﯿﺔ ‪ ε‬ﻷﻧﮫ‬
‫ﺑﻌﺪ ﻗﺮاءة ھﺬه اﻟﻤﺘﺴﻠﺴﻠﺔ ﺗﺒﻘﻰ اﻵﻟﺔ ﻓﻲ ﻧﻔﺲ اﻟﻮﺿﻊ أي وﺿﻊ اﻟﻘﺒﻮل‪ .‬ﺑﺎﻹﺿﺎﻓﺔ إﻟﻰ ھﺬا ﻓﺈن اﻵﻟﺔ ﺗﻘﺒﻞ أﯾﺔ‬
‫ﻣﺘﺴﻠﺴﻠﺔ ﺗﻨﺘﮭﻲ ﺑﺎﻟﺮﻣﺰ ‪ . 0‬ﻟﺬﻟﻚ ﻓﺈن ﻟﻐﺔ ھﺬه اﻵﻟﺔ ﯾﺘﻢ اﻟﺘﻌﺒﯿﺮ ﻋﻨﮫ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫}‪L(M3) = {w/w is the empty string ε or ends in a 0‬‬

‫ﻣﺜﺎل‪ :‬اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﯾﻤﺜﻞ ﻣﺨﻄﻂ اﻟﺤﺎﻟﺔ ﻟﻶﻟﺔ ‪: M4‬‬


‫‪S‬‬
‫‪a‬‬ ‫‪b‬‬
‫‪a‬‬ ‫‪q1‬‬ ‫‪r1‬‬ ‫‪b‬‬

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

‫‪q2‬‬ ‫‪r2‬‬ ‫‪a‬‬


‫‪b‬‬

‫ﯾﻈﮭﺮ ﻣﻦ ھﺬا اﻟﻤﺨﻄﻂ أن اﻵﻟﺔ ﺗﻤﺘﻠﻚ ﺧﻤﺴﺔ ﺣﺎﻻت ھﻲ ‪ q2, q1, r2, r1, s‬وﻛﺬﻟﻚ ﺣﺎﻟﺘﺎ ﻗﺒﻮل ھﻤﺎ ‪q1, r1‬‬
‫أﻣﺎ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ﻓﮭﻲ ‪ .s‬وﻋﻠﻰ ﻛﻞ ﺣﺎل ﻓﺈن اﻟﺘﻌﺮﯾﻒ اﻟﺸﻜﻠﻲ ﻟﮭﺬه اﻵﻟﺔ ھﻮ‪:‬‬

‫}‪M4 = ({s, r1, r2, q1, q2}, {a,b}, δ , s, {q1, r1‬‬

‫أﻣﺎ داﻟﺔ اﻻﻧﺘﻘﺎل ﻓﻨﺼﻔﮭﺎ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬

‫‪a‬‬ ‫‪b‬‬
‫‪s‬‬ ‫‪q1‬‬ ‫‪r1‬‬
‫‪r1‬‬ ‫‪r2‬‬ ‫‪r1‬‬
‫‪r2‬‬ ‫‪r2‬‬ ‫‪r1‬‬
‫‪q1‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪30‬‬
‫‪q2 q1 q2‬‬

‫ھﺬا اﻟﻨﻮع ﻣﻦ اﻵﻻت ﯾﺒﺪأ ﻓﻲ اﻟﺤﺎﻟﺔ ‪ s‬وﺑﻌﺪ ﻗﺮاءة أول رﻣﺰ ﻓﻲ اﻟﻤﺪﺧﻼت ﻓﺈن اﻵﻟﺔ ﺳﺘﻨﺘﻘﻞ إﻣﺎ إﻟﻰ اﻟﯿﻤﯿﻦ أي‬
‫إﻟﻰ اﻟﺤﺎﻟﺔ ‪ r1‬أو إﻟﻰ اﻟﯿﺴﺎر إﻟﻰ ‪ q1‬وﻓﻲ اﻟﺤﺎﻟﺘﯿﻦ ﻓﺈﻧﮭﺎ ﻟﻦ ﺗﻌﻮد إﻟﻰ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ أﺑﺪا‪.‬‬

‫وﯾﻌﺘﻤﺪ اﺗﺠﺎه ﻋﻤﻞ اﻵﻟﺔ ﻋﻠﻰ أول رﻣﺰ ﻓﻲ ﻣﺘﺴﻠﺴﻠﺔ اﻹدﺧﺎل ﻓﺈذا ﻛﺎن ‪ a‬ﺳﺘﺬھﺐ إﻟﻰ اﻟﺤﺎﻟﺔ ‪ q1‬وھﻲ ﺣﺎﻟﺔ‬
‫اﻟﻘﺒﻮل وﺳﺘﻌﻮد أﯾﻀﺎ إﻟﻰ ﺣﺎﻟﺔ اﻟﻘﺒﻮل إذا ﻛﺎن آﺧﺮ رﻣﺰ ﻓﻲ اﻟﻤﺘﺴﻠﺴﻠﺔ ھﻮ ‪ a‬أﯾﻀﺎ أي أن أﯾﺔ ﻣﺘﺴﻠﺴﻠﺔ ﺗﺒﺪأ‬
‫وﺗﻨﺘﮭﻲ ﺑﺎﻟﺮﻣﺰ‪ a‬ﺳﯿﺘﻢ ﻗﺒﻮﻟﮭﺎ‪ .‬أﻣﺎ إذا ﻛﺎن أول رﻣﺰ ‪ b‬ﻓﺴﯿﻜﻮن اﻻﺗﺠﺎه إﻟﻰ اﻟﺤﺎﻟﺔ ‪ r1‬واﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺗﺒﺪأ‬
‫وﺗﻨﺘﮭﻲ ﺑﺎﻟﺮﻣﺰ ‪ b‬ﺳﻮف ﺗﻜﻮن ﻣﺘﺴﻠﺴﻠﺔ ﻗﺒﻮل أﯾﻀﺎ‪ .‬وﻓﻲ ھﺬه اﻟﺤﺎﻟﺔ ﻧﻘﻮل أن اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﺘﻲ ﺗﺒﺪأ وﺗﻨﺘﮭﻲ ﺑﻨﻔﺲ‬
‫اﻟﺮﻣﺰ ھﻲ ﻣﺘﺴﻠﺴﻠﺔ ﻗﺒﻮل‪ .‬ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﺎﻟﯿﺔ ‪ bab, aba, bb, aa, b, a‬ﺟﻤﯿﻌﮭﺎ ﻣﺘﺴﻠﺴﻼت‬
‫ﻗﺒﻮل ﻋﻠﻰ اﻟﻌﻜﺲ ﻣﻦ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﺎﻟﯿﺔ ‪ bbba, ba, ab‬ﻓﺠﻤﯿﻌﮭﺎ ﻻ ﯾﺘﻢ ﻗﺒﻮﻟﮭﺎ‪ .‬أﻣﺎ ﻟﻐﺔ ھﺬه اﻵﻟﺔ ﻓﺘﻌﺮﯾﻔﮭﺎ ھﻮ‪:‬‬

‫} ‪L(M4) = {w/w is the string that begins and ends with the same symbol‬‬

‫ﻣﺜﺎل‪ :‬ﻣﺜﺎﻟﻨﺎ اﻟﺘﺎﻟﻲ ھﻮ ﻋﺒﺎرة ﻋﻦ ﻣﺘﺤﻜﻢ ﻣﺼﻌﺪ آﻟﻲ ‪ elevator controller‬ﯾﻘﻮم ﺑﺨﺪﻣﺔ ﻃﺎﺑﻘﯿﻦ ﻓﻘﻂ‪.‬‬
‫ﻣﺪﺧﻼت ھﺬا اﻟﻨﻈﺎم ھﻲ ﻋﺒﺎرة ﻋﻦ اﺳﺘﺪﻋﺎءات ‪ calls‬ﯾﺘﻢ ادﺧﺎﻟﮭﺎ إﻟﻰ اﻟﻨﻈﺎم ﻣﻦ داﺧﻞ اﻟﻤﺼﻌﺪ أو ﻣﻦ اﻟﻄﻮاﺑﻖ‬
‫وھﺬه اﻟﻤﺪﺧﻼت ھﻲ‪:‬‬

‫‪0 – no calls‬‬ ‫)ﻻ ﯾﺘﻢ اﺳﺘﺪﻋﺎء اﻟﻤﺼﻌﺪ(‬

‫)اﺳﺘﺪﻋﺎء إﻟﻰ اﻟﻄﺎﺑﻖ اﻷول( ‪1 – call to floor 1‬‬

‫)اﺳﺘﺪﻋﺎء إﻟﻰ اﻟﻄﺎﺑﻖ اﻟﺜﺎﻧﻲ( ‪2 – call to floor 2‬‬

‫ھﺬا اﻟﻤﺼﻌﺪ ﯾﻤﻜﻨﮫ اﻟﺼﻌﻮد إﻟﻰ أﻋﻠﻰ ‪ ,‬اﻟﮭﺒﻮط إﻟﻰ أﺳﻔﻞ وﻛﺬﻟﻚ اﻻﻧﺘﻈﺎر ﻋﻠﻰ أﺣﺪ اﻟﻄﻮاﺑﻖ‪ .‬ﻓﻲ ﺣﺎﻟﺔ ﻛﺎن‬
‫اﻟﻤﺼ ﻌﺪ ﻋﻠﻰ ﻃﺎﺑﻖ ﻣﺎ ﻓﺈﻧﮫ ﯾﻤﻜﻦ أن ﯾﻜﻮن ﻓﻲ ﺣﺎﻟﺔ اﻧﺘﻈﺎر اﺳﺘﺪﻋﺎء أو أن ﯾﻜﻮن ﻋﻠﻰ وﺷﻚ اﻻﻧﺘﻘﺎل إﻟﻰ ﻃﺎﺑﻖ‬
‫آﺧﺮ‪ .‬ھﺬا ﯾﻘﻮدﻧﺎ إﻟﻰ أن ھﻨﺎك ﺳﺖ ﺣﺎﻻت ﯾﻤﻜﻦ ﻟﻠﻤﺼﻌﺪ أن ﯾﻜﻮن ﻓﯿﮭﺎ وھﻲ‪:‬‬

‫)اﻧﺘﻈﺎر ﻋﻠﻰ اﻟﻄﺎﺑﻖ اﻷول( ‪W1 – waiting on first floor‬‬

‫)ﻋﻠﻰ وﺷﻚ اﻟﺼﻌﻮد( ‪U1 – about to go up‬‬

‫)ﺣﺎﻟﺔ اﻟﺼﻌﻮد( ‪UP – going up‬‬

‫)ﺣﺎﻟﺔ اﻟﮭﺒﻮط( ‪DN – going down‬‬

‫)اﻧﺘﻈﺎر ﻋﻠﻰ اﻟﻄﺎﺑﻖ اﻟﺜﺎﻧﻲ( ‪W2 – waiting on second floor‬‬

‫)ﻋﻠﻰ وﺷﻚ اﻟﮭﺒﻮط( ‪D2 – about to go down‬‬

‫وﺣﺴﺐ اﻹﺷﺎرات اﻟﻤﺮﺳﻠﺔ ﻟﻠﻤﺼﻌﺪ وردة ﻓﻌﻞ اﻟﻤﺼﻌﺪ ﻋﻠﯿﮭﺎ ﻓﺈﻧﮫ ﯾﻤﻜﻦ ﺗﻜﻮﯾﻦ ﺟﺪول اﻟﺤﺎﻻت اﻟﺘﺎﻟﻲ‪:‬‬

‫‪State‬‬ ‫‪Input‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪31‬‬
‫‪W1‬‬ ‫‪W1‬‬ ‫‪W1‬‬ ‫‪UP‬‬
‫‪U1‬‬ ‫‪UP‬‬ ‫‪U1‬‬ ‫‪UP‬‬
‫‪UP‬‬ ‫‪W2‬‬ ‫‪D2‬‬ ‫‪W2‬‬
‫‪DN‬‬ ‫‪W1‬‬ ‫‪W1‬‬ ‫‪U1‬‬
‫‪W2‬‬ ‫‪W2‬‬ ‫‪DN‬‬ ‫‪W2‬‬
‫‪D2‬‬ ‫‪DN‬‬ ‫‪DN‬‬ ‫‪D2‬‬

‫ﺑﻨﺎءً ﻋﻠﻰ ھﺬا اﻟﺠﺪول ﯾﻤﻜﻦ ﺗﺼﻤﯿﻢ ﻣﺨﻄﻂ اﻟﺤﺎﻟﺔ ﻟﻤﺘﺤﻜﻢ اﻟﻤﺼﻌﺪ اﻵﻟﻲ واﻟﺬي ﺳﯿﻜﻮن ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪0,2‬‬ ‫‪2‬‬

‫‪W2‬‬ ‫‪D2‬‬
‫‪0,2‬‬ ‫‪0,1‬‬

‫‪UP‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪DN‬‬

‫‪0,2‬‬ ‫‪0,1‬‬
‫‪2‬‬
‫‪2‬‬ ‫‪W1‬‬ ‫‪U1‬‬

‫‪0,1‬‬ ‫ﻧﺴﺘﻄﯿﻊ ﻣﻼﺣﻈﺔ ﻣﺎ ﯾﻠﻲ‪:‬‬


‫‪1‬‬ ‫ﻣﻦ ﺧﻼل ھﺬا اﻟﺘﺼﻤﯿﻢ‬

‫إذا ﻛﺎن اﻟﻤﺼﻌﺪ ﻓﻲ ﺣﺎﻟﺔ ﻋﻠﻰ وﺷﻚ اﻟﺘﺤﺮك ﺳﻮاءً إﻟﻰ أﻋﻠﻰ أو إﻟﻰ أﺳﻔﻞ )اﻟﺤﺎﻻت ‪ ( D2, U1‬وﺗﻢ‬ ‫‪-‬‬
‫اﺳﺘﺪﻋﺎؤه إﻟﻰ ﻧﻔﺲ اﻟﻄﺎﺑﻖ اﻟﻤﻮﺟﻮد ﻋﻠﯿﮫ ﻓﻌﻼ ﻓﺈﻧﮫ ﺳﯿﻈﻞ ﻋﻠﻰ ھﺬا اﻟﻄﺎﺑﻖ وﺳﯿﺒﻘﻰ ﻓﻲ ﻧﻔﺲ ﺣﺎﻟﺘﮫ‪.‬‬
‫إذا ﻛﺎن اﻟﻤﺼﻌﺪ ﻓﻲ ﺣﺎﻟﺔ ﺻﻌﻮد أو ھﺒﻮط )اﻟﺤﺎﻻت ‪ ( DN, UP‬وﺗﻢ اﺳﺘﺪﻋﺎؤه إﻟﻰ اﻟﺠﮭﺔ اﻟﻤﻌﺎﻛﺴﺔ‬ ‫‪-‬‬
‫ﻻﺗﺠﺎه ﺣﺮﻛﺘﮫ ﻓﺈﻧﮫ ﺳﯿﺨﺰن اﻻﺳﺘﺪﻋﺎء ﺑﺎﻟﺬھﺎب إﻣﺎ إﻟﻰ ‪ U1‬أو ‪) . D2‬ﻣﺜﻼ إذا ﻛﺎن ﻓﻲ ﺣﺎﻟﺔ ﺻﻌﻮد ﻣﻦ‬
‫اﻟﻄﺎﺑﻖ اﻷول إﻟﻰ اﻟﺜﺎﻧﻲ ‪ UP‬وﺗﻢ اﺳﺘﺪﻋﺎؤه ﺧﻼل ذﻟﻚ إﻟﻰ اﻟﻄﺎﺑﻖ اﻷول ﻓﺈﻧﮫ ﺳﻮف ﯾﻨﺘﻘﻞ إﻟﻰ ﺣﺎﻟﺔ ﻋﻠﻰ‬
‫وﺷﻚ اﻟﮭﺒﻮط ‪ D2‬ﻋﻨﺪ وﺻﻮﻟﮫ اﻟﻄﺎﺑﻖ اﻟﺜﺎﻧﻲ(‪.‬‬
‫ﻟﺘﺴﮭﯿﻞ ﻋﻤﻠﯿ ﺔ ﻓﮭﻢ ﻋﻤﻞ اﻟﻨﻈﺎم ﻟﻢ ﯾﺘﻀﻤﻦ ھﺬا اﻟﺘﺼﻤﯿﻢ ﺣﺎﻻت أﺧﺮى ﯾﻔﺘﺮض وﺟﻮدھﺎ ﻓﻲ اﻟﻨﻈﺎم ﻣﺜﻞ‬ ‫‪-‬‬
‫ﻋﻤﻠﯿﺔ ﻓﺘﺢ وإﻏﻼق أﺑﻮاب اﻟﻤﺼﻌﺪ‪ ,‬اﻧﻘﻄﺎع اﻟﺘﯿﺎر اﻟﻜﮭﺮﺑﺎﺋﻲ‪ ,‬زﯾﺎدة اﻟﻮزن ﻋﻦ اﻟﻘﺪر اﻟﻤﺤﺪد وﻛﺬﻟﻚ ﺗﻌﻄﻞ‬
‫اﻟﻤﺼﻌﺪ‪.‬‬
‫ﺣﺎﻻت اﻟﻘﺒﻮل واﻟﺮﻓﺾ ﻟﯿﺴﺖ ﻣﻮﺿﻮع ﻧﻘﺎش ﻓﻲ اﻟﻨﻈﺎم ﻟﺬﻟﻚ ﻟﻢ ﯾﺘﻢ اﻟﺘﻄﺮق إﻟﯿﮭﺎ‪.‬‬ ‫‪-‬‬
‫ﯾﻤﻜﻦ ﺗﺼﻤﯿﻢ ھﺬا اﻟﻨﻈﺎم واﻷﺧﺬ ﺑﻌﯿﻦ اﻻﻋﺘﺒﺎر اﻟﺤﺎﻻت اﻟﺘﻲ ﻟﻢ ﯾﺘﻢ اﻟﺘﻄﺮق إﻟﯿﮭﺎ وھﺬا ﯾﺠﻌﻞ اﻟﺘﺼﻤﯿﻢ أﻋﻘﺪ‬ ‫‪-‬‬
‫وأﻛﺜﺮ ﺻﻌﻮﺑﺔ وﺧﺎﺻﺔ إذا ﺗﺼﻮرﻧﺎ اﻟﻤﺼﻌﺪ اﻵﻟﻲ اﻟﺬي ﯾﺨﺪم ‪ 100‬ﻃﺎﺑﻖ ﻣﺜﻼ‪.‬‬

‫ﺗﺼﻤﯿﻢ ﻧﻤﺎذج اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﻲ اﻟﻤﺤﺪودة ‪: Designing Finite Automata‬‬

‫إن اﻟﺘﺼﻤﯿﻢ ﺑﺤﺪ ذاﺗﮫ ﯾﻌﺘﺒﺮ ﻋﻤ ﻠﯿﺔ إﺑﺪاﻋﯿﺔ ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ اﻟﺸﻲء اﻟﺬي ﻧﻘﻮم ﺑﺘﺼﻤﯿﻤﮫ وذﻟﻚ ﻷﻧﮫ ﻣﻦ ﻏﯿﺮ‬
‫اﻟﻤﻤﻜﻦ إﯾﺠﺎز أو اﺧﺘﺼﺎر ﻋﻤﻠﯿﺔ اﻟﺘﺼﻤﯿﻢ ﻓﻲ وﺻﻔﺔ ﺑﺴﯿﻄﺔ أو ﺻﯿﻐﺔ ﻣﺤﺪدة‪ .‬وﻣﻊ ذﻟﻚ ﯾﻤﻜﻦ إﯾﺠﺎد ﺑﻌﺾ‬
‫اﻟﻤﻘﺎرﺑﺎت واﻟﺘﻔﺼﯿﻼت اﻟﺘﻲ ﺗﺴﺎﻋﺪ ﻓﻲ ﻋﻤﻠﯿﺔ ﺗﺼﻤﯿﻢ اﻷﻧﻮاع اﻟﻤﺨﺘﻠﻔﺔ ﻣﻦ ﻧﻤﺎذج اﻟﺘﺸﻐﯿﻞ اﻟﺬاﺗﯿﺔ‪ .‬ﻓﻤﺜﻼ ﯾﻤﻜﻦ‬
‫ﻟﻠﻤﺼﻤﻢ أن ﯾﺘﺨﯿﻞ ﻛﯿﻒ ﺳﯿﻜﻮن ﺳﯿﺮ اﻟﻌﻤﻠﯿﺎت اﻟﻤﻄﻠﻮب ﻣﻦ اﻵﻟﺔ إﻧﺠﺎزھﺎ أي أن ﯾﻀﻊ ﻧﻔﺴﮫ ﻣﻜﺎن ھﺬه اﻵﻟﺔ وﻛﯿﻒ‬

‫‪32‬‬
‫ﺳﺘﻌﻤﻞ ھﺬه اﻵﻟﺔ‪ .‬ھﺬا اﻻﻓﺘﺮاض ھﻮ ﺣﯿﻠﺔ ﻧﻔﺴﯿﺔ ﺗﺴﺎﻋﺪ ﻓﻲ ﺗﺴﺨﯿﺮ ﻛﺎﻣﻞ اﻟﻘﺪرات اﻟﻌﻘﻠﯿﺔ ﻟﻠﻤﺼﻤﻢ ﻓﻲ ﻋﻤﻠﯿﺔ‬
‫اﻟﺘﺼﻤﯿﻢ‪.‬‬

‫ﻟﻮ ﻓﺮﺿﻨﺎ أﻧﻨﺎ ﻧﺮﯾﺪ ﺗﺼﻤﯿﻢ آﻟﺔ ذاﺗﯿﺔ اﻟﺤﺮﻛﺔ ‪ Finite Automaton‬ﺑﺤﯿﺚ ﺗﻜﻮن ھﺬه اﻵﻟﺔ ﻗﺎدرة ﻋﻠﻰ إدراك‬
‫ﻟﻐﺔ ﻣﺎ وھﺬا ﯾﻌﻨﻲ أﻧﮫ ﻋﻨﺪﻣﺎ ﺗﺒﺪأ اﻵﻟﺔ ﺑﺎﺳﺘﻘﺒﺎل ﻣﺘﺴﻠﺴﻠﺔ اﻹدﺧﺎل ﻓﺈن ﻋﻠﯿﮭﺎ أن ﺗﻘﺮر إذا ﻣﺎ ﻛﺎﻧﺖ ھﺬه اﻟﻤﺘﺴﻠﺴﻠﺔ‬
‫ﺟﺰءاً ﻣﻦ اﻟﻠﻐﺔ اﻟﺘﻲ ﯾﻔﺘﺮض أن ﺗﺪرﻛﮭﺎ اﻵﻟﺔ‪ .‬رﻣﻮز اﻟﻤﺘﺴﻠﺴﻠﺔ ﯾﺘﻢ ﻗﺮاءﺗﮭﺎ ‪ -‬ﻛﻤﺎ ھﻮ ﻣﻌﺮوف – واﺣﺪا ﺗﻠﻮ اﻵﺧﺮ‬
‫وﺑﻌﺪ ﻗﺮاءة ﻛﻞ رﻣﺰ ﯾﺠﺐ أن ﺗﻜﻮن اﻵﻟﺔ ﻗﺎدرة ﻋﻠﻰ اﻹﺟﺎﺑﺔ ﻋﻦ اﻟﺴﺆال "ھﻞ اﻟﻤﺘﺴﻠﺴﻠﺔ ﺟﺰء ﻣﻦ ھﺬه اﻟﻠﻐﺔ؟"‬
‫واﻟﺴﺒﺐ ھﻮ أن اﻵﻟﺔ ﻻ ﺗﻌﺮف ﻣﺘﻰ ﺳﺘﻨﺘﮭﻲ ھﺬه اﻟﻤﺘﺴﻠﺴﻠﺔ ﻟﺬﻟﻚ ﯾﺠﺐ أن ﺗﻜﻮن اﻵﻟﺔ ﺟﺎھﺰة داﺋﻤﺎ وﻓﻲ أﯾﺔ ﻟﺤﻈﺔ‬
‫ﻟﻺﺟﺎﺑﺔ ﻋﻠﻰ ھﺬا اﻟﺴﺆال‪ .‬ﻟﻺﺟﺎﺑﺔ ﻋﻠﻰ ھﺬا اﻟﺴﺆال ﯾﺠﺐ أوﻻ ﺗﺤﺪﯾﺪ ﻣﺎ ھﻲ اﻷﺷﯿﺎء اﻟﺘﻲ ﯾﺠﺐ ﻋﻠﻰ ذاﻛﺮة اﻵﻟﺔ‬
‫ﺣﻔﻈﮭﺎ أو ﺗﺨﺰﯾﻨﮭﺎ ﻋﻦ اﻟﻤﺘﺴﻠﺴﻠﺔ‪ .‬وﺑﻤﺎ أن ھﺬا اﻟﻨﻮع ﻣﻦ اﻵﻻت ﯾﻤﺘﻠﻚ ذاﻛﺮة ﻣﺤﺪودة ﺟﺪا ﻷﻧﮭﺎ ﺗﻤﺘﻠﻚ ﻋﺪد ﻣﺤﺪود‬
‫ﻣﻦ اﻟﺤﺎﻻت ‪ States‬وھﺬا ﯾﻌﻨﻲ أن اﻵﻟﺔ ﻻ ﺗﺴﺘﻄﯿﻊ ﺗﺬﻛﺮ أو ﺗﺨﺰﯾﻦ ﻛﻤﯿﺔ ﻛﺒﯿﺮة ﻣﻦ اﻟﺒﯿﺎﻧﺎت‪ .‬وﻟﻮ ﻓﺮﺿﻨﺎ أن‬
‫ﻣﺪﺧﻼت ھﺬه اﻵﻟﺔ ھﻲ ﻣﺘﺴﻠﺴﻠﺔ ﻃﻮﯾﻠﺔ ﯾﺒﻠﻎ ﻃﻮﻟﮭﺎ ﻣﻼﯾﯿﻦ اﻟﻜﯿﻠﻮﻣﺘﺮات ﻓﺈﻧﮫ ﻣﻦ اﻟﻤﺴﺘﺤﯿﻞ ﻋﻠﻰ ھﺬا اﻟﻨﻮع ﻣﻦ‬
‫اﻵﻻت ﺣﻔﻆ أو ﺗﺬﻛﺮ ﺟﻤﯿﻊ رﻣﻮز اﻟﻤﺘﺴﻠﺴﻠﺔ‪ .‬وﻟﺤﺴﻦ اﻟﺤﻆ ﻓﺈﻧﮫ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻌﺪﯾﺪ ﻣﻦ اﻟﻠﻐﺎت ﻟﯿﺴﺖ ھﻨﺎك ﺿﺮورة‬
‫ﻟﺤﻔﻆ اﻟﻤﺪﺧﻼت ﻛﻠﮭﺎ وإﻧﻤﺎ ﯾﻜﻔﻲ ﻓﻘﻂ ﺣﻔﻆ ﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﮭﻤﺔ‪ .‬أﻣﺎ ﺗﺤﺪﯾﺪ ﻣﺎ ھﻲ اﻟﻤﻌﻠﻮﻣﺎت اﻟﺘﻲ ﺗﻌﺘﺒﺮ ﻣﮭﻤﺔ‬
‫ﻓﯿﻌﺘﻤﺪ ﻋﻠﻰ ﺧﺼﻮﺻﯿﺔ اﻟﻠﻐﺔ ذاﺗﮭﺎ ﺑﻤﻌﻨﻰ أن ﻟﻜﻞ ﻟﻐﺔ ﻣﻌﻠﻮﻣﺎت ﻣﮭﻤﺔ ﻗﺪ ﻻ ﺗﻜﻮن ﻣﮭﻤﺔ ﻓﻲ ﻟﻐﺔ أﺧﺮى‪.‬‬

‫ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ﻟﻮ أردﻧﺎ ﺗﺼﻤﯿﻢ ‪ Finite Automata‬وﻟﺘﻜﻦ ‪ E1‬ﺑﺤﯿﺚ ﺗﺴﺘﻄﯿﻊ ھﺬه اﻵﻟﺔ إدراك ﻟﻐﺔ ﺗﻨﺘﻤﻲ‬
‫رﻣﻮزھﺎ إﻟﻰ اﻷﺑﺠﺪﯾﺔ }‪ {0,1‬وﺗﺘﻜﻮن ھﺬه اﻟﻠﻐﺔ ﻣﻦ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﻋﺪد ﻓﺮدي ﻣﻦ اﻵﺣﺎد‪.‬‬
‫ﻓﺈﻧﮫ ﺑﺪاﯾﺔ ﯾﺠﺐ أن ﺗﺒﺪأ ھﺬه اﻵﻟﺔ ﺑﺎﺳﺘﻘﺒﺎل ﻣﺘﺴﻠﺴﻠﺔ اﻹدﺧﺎل اﻟﻤﻜﻮﻧﺔ ﻣﻦ اﻷﺻﻔﺎر واﻵﺣﺎد رﻣﺰا ﺗﻠﻮ اﻵﺧﺮ‪.‬‬
‫واﻟﺴﺆال اﻟﻤﮭﻢ ھﻨﺎ "ھﻞ ﯾﺠﺐ ﻋﻠﻰ ھﺬه اﻵﻟﺔ ﺗﺬﻛﺮ )ﺣﻔﻆ( ﺟﻤﯿﻊ رﻣﻮز ﻣﺘﺴﻠﺴﻠﺔ اﻹدﺧﺎل؟" ﺣﺘﻰ ﺗﻘﺮر ھﻞ ﻋﺪد‬
‫اﻵﺣﺎد ﻓﯿﮭﺎ ﻓﺮدي‪ .‬واﻹﺟﺎﺑﺔ ھﻲ ﻻ‪ .‬وذﻟﻚ ﻷﻧﮫ ﺑﺒﺴﺎﻃﺔ ﯾﻜﻔﻲ ﻓﻘﻂ ﺣﻔﻆ ﻣﻌﻠﻮﻣﺔ ﻣﮭﻤﺔ واﺣﺪة ھﻲ "ھﻞ ﻋﺪد اﻵﺣﺎد‬
‫اﻟﺘﻲ ﺗﻤﺖ ﻗﺮاءﺗﮭﺎ ﺣﺘﻰ اﻵن ﻓﺮدي أم زوﺟﻲ؟" وﻣﻊ ﻗﺮاءة ﻛﻞ واﺣﺪ ﺟﺪﯾﺪ ﺳﻮف ﺗﺘﻐﯿﺮ اﻟﻘﯿﻤﺔ اﻟﻤﺨﺰﻧﺔ‪.‬‬

‫ﻋﻨﺪﻣﺎ ﺗﺒﺪأ اﻵﻟﺔ ﻓﻲ ﻗﺮاءة اﻟﻤﺪﺧﻼت ﻓﺈن اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﮭﻤﺔ اﻟﺘﻲ ﯾﺠﺐ ﺣﻔﻈﮭﺎ ﻋﻦ اﻟﻤﺘﺴﻠﺴﻠﺔ ھﻲ ﻋﺒﺎرة ﻋﻦ‬
‫‪ .2‬اﻟﻌﺪد ﻓﺮدي‬ ‫ﻗﺎﺋﻤﺔ ﻣﻦ اﺣﺘﻤﺎﻟﯿﻦ ھﻤﺎ ‪ .1‬اﻟﻌﺪد زوﺟﻲ‬

‫ﺗﺒﻌﺎ ﻟﺬﻟﻚ ﻓﺈﻧﮫ ﺳﯿﺘﻢ اﺧﺘﯿﺎر ﺣﺎﻻت اﻵﻟﺔ ‪ E1‬ﺣﺴﺐ اﻟﻤﺨﻄﻂ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪q even‬‬ ‫‪q odd‬‬

‫ﺣﯿﺚ ‪ q even :‬ﺗﻤﺜﻞ اﻟﺤﺎﻟﺔ اﻟﺘﻲ ﯾﻜﻮن ﻓﯿﮭﺎ ﻋﺪد اﻟﺤﺎﻻت اﻟﺘﻲ ﺗﻤﺖ ﻗﺮاءﺗﮭﺎ زوﺟﻲ‬

‫‪ q odd‬ﺗﻤﺜﻞ اﻟﺤﺎﻟﺔ اﻟﺘﻲ ﯾﻜﻮن ﻓﯿﮭﺎ ﻋﺪد اﻟﺤﺎﻻت اﻟﺘﻲ ﺗﻤﺖ ﻗﺮاءﺗﮭﺎ ﻓﺮدي‬

‫اﻟﺨﻄﻮة اﻟﺘﺎﻟﯿﺔ ھﻲ ﺿﺒﻂ ﻋﻤﻠﯿﺔ اﻻﻧﺘﻘﺎل ﺑﯿﻦ اﻟﺤﺎﻟﺘﯿﻦ ﺑﻌﺪ ﻗﺮاءة ﻛﻞ رﻣﺰ ﻓﻲ اﻟﻤﺘﺴﻠﺴﻠﺔ‪ .‬وﻧﻼﺣﻆ ھﻨﺎ أﻧﮫ ﺑﻌﺪ‬
‫ﻗﺮاءة اﻟﺮﻣﺰ ‪ 0‬ﻓﺈن ﻋﺪد اﻵﺣﺎد ﻟﻦ ﯾﺘﻐﯿﺮ وھﺬا ﯾﻌﻨﻲ أن اﻵﻟﺔ ﺳﻮف ﺗﺒﻘﻰ ﻓﻲ ﻧﻔﺲ اﻟﺤﺎﻟﺔ اﻟﻤﻮﺟﻮدة ﻓﯿﮭﺎ ﻓﻌﻼ‬
‫وﻋﻨﺪ ﻗﺮاءة اﻟﺮﻣﺰ ‪ 1‬ﻓﺄن اﻵﻟﺔ ﺳﻮف ﺗﻨﺘﻘﻞ ﻣﻦ اﻟﺤﺎﻟﺔ اﻟﻤﻮﺟﻮدة ﻓﯿﮭﺎ إﻟﻰ اﻟﺤﺎﻟﺔ اﻷﺧﺮى‪.‬‬

‫ﺑﻌﺪ ھﺬه اﻟﻤﺮﺣﻠﺔ ﯾﺠﺐ ﺗﺤﺪﯾﺪ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ اﻟﺘﻲ ﺳﻮف ﺗﺒﺪأ اﻵﻟﺔ ﻋﻤﻠﮭﺎ ﻣﻨﮭﺎ‪ .‬اﻟﺮﻣﺰ اﻷول اﻟﺬي ﺳﻮف ﺗﺒﺪأ‬
‫اﻵﻟﺔ ﺑﻘﺮاءﺗﮫ ھﻮ ‪ 0‬وھﻮ ﯾﻌﺘﺒﺮ ﻋﺪد زوﺟﻲ ﻟﺬﻟﻚ ﺳﻨﻌﺘﻤﺪ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪ q even‬ﻛﻤﺎ ھﻮ ﻣﻮﺿﺢ أدﻧﺎه‪:‬‬

‫‪33‬‬
‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬

‫‪q even‬‬ ‫‪q odd‬‬

‫‪1‬‬

‫وأﺧﯿﺮا ﯾﺒﻘﻰ اﺧﺘﯿﺎر ﺣﺎﻟﺔ اﻟﻘﺒﻮل ‪ Accept State‬وھﻲ ﺑﻼ ﺷﻚ ﺳﺘﻜﻮن اﻟﺤﺎﻟﺔ ‪ q odd‬ﻷﻧﮭﺎ ھﻲ اﻟﺤﺎﻟﺔ‬
‫اﻟﻤﻄﻠﻮﺑﺔ‪ .‬وﺑﺬﻟﻚ ﯾﺼﺒﺢ اﻟﺸﻜﻞ اﻟﻨﮭﺎﺋﻲ ﻟﻤﺨﻄﻂ ھﺬه اﻵﻟﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪1‬‬

‫‪q even‬‬ ‫‪q odd‬‬

‫‪1‬‬

‫ﻣﺜﺎل‪ :‬ﺳﻮف ﻧﻘﻮم ﻓﻲ ھﺬا اﻟﻤﺜﺎل ﺑﺘﺼﻤﯿﻢ ‪ Finite Automaton‬وﻟﯿﻜﻦ ‪ E1‬ﺑﺤﯿﺚ ﺗﻜﻮن ھﺬه اﻵﻟﺔ ﻗﺎدرة‬
‫ﻋﻠﻰ إدراك ﻟﻐﺔ ھﻲ ﻋﺒﺎرة ﻋﻦ ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﻔﺮﻋﯿﺔ ‪ 001‬ﻣﺜﻞ‬
‫اﻟﻤﺘﺴﻠﺴﻼت ‪ 1110011 ,001 ,1001 ,0010 :‬وھﻜﺬا ﺣﯿﺚ أن ﺟﻤﯿﻊ اﻟﻤﺘﺴﻠﺴﻼت ﺟﺰء ﻣﻦ ھﺬه اﻟﻠﻐﺔ‪ .‬ﻓﻲ‬
‫ﺣﯿﻦ اﻟﻤﺘﺴﻠﻼت ‪ 11110 ,0000 ,11‬ﻻ ﺗﻌﺘﺒﺮ ﺟﺰءاً ﻣﻦ ھﺬه اﻟﻠﻐﺔ‪.‬‬

‫ﯾﺘﻠﺨﺺ ﻣﺒﺪأ ﻋﻤﻞ ھﺬه اﻵﻟﺔ ﻓﻲ أﻧﮫ ﻋﻨﺪﻣﺎ ﺗﺒﺪأ اﻟﺮﻣﻮز ﺑﺎﻟﺪﺧﻮل ﻓﺈن اﻵﻟﺔ ﺳﻮف ﺗﺘﺠﺎھﻞ ﺟﻤﯿﻊ اﻵﺣﺎد اﻟﺘﻲ‬
‫ﯾﺘﻢ إدﺧﺎﻟﮭﺎ أي أﻧﮭﺎ ﻟﻦ ﺗﻘﻮم ﺑﺘﺬﻛﺮھﺎ‪ .‬أﻣﺎ إذا ﺗﻢ إدﺧﺎل اﻟﺮﻣﺰ ‪ 0‬ﻓﺈﻧﮭﺎ ﺳﺘﻘﻮم ﺑﺘﺬﻛﺮ ھﺬه اﻟﺤﺎﻟﺔ ﻋﻠﻰ اﻋﺘﺒﺎر أن‬
‫ھﺬا اﻟﺮﻣﺰ ھﻮ أول رﻣﺰ ﻣﻦ اﻟﺮﻣﻮز اﻟﺜﻼﺛﺔ ﻓﻲ اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﻔﺮﻋﯿﺔ اﻟﻤﻄﻠﻮﺑﺔ‪ .‬ﻋﻨﺪ ھﺬه اﻟﻨﻘﻄﺔ إذا ﺗﻢ إدﺧﺎل‬
‫اﻟﺮﻣﺰ ‪ 1‬ﻓﺈن اﻵﻟﺔ ﺳﺘﻘﻮم ﺑﺘﺠﺎھﻞ ھﺬا اﻟﺮﻣﺰ وﺗﻌﻮد اﻵﻟﺔ إﻟﻰ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ أي ﻓﻲ اﻧﺘﻈﺎر إدﺧﺎل ‪ 0‬ﻣﻦ‬
‫ﺟﺪﯾﺪ‪ .‬أﻣﺎ إذا ﺗﻢ إدﺧﺎل ‪ 0‬ﺛﺎﻧﻲ ﻓﺈن اﻵﻟﺔ ﺳﻮف ﺗﺘﺬﻛﺮ ھﺬه اﻟﺤﺎﻟﺔ ﻋﻠﻰ اﻋﺘﺒﺎر أﻧﮫ ﺗﻢ اﺳﺘﻘﺒﺎل رﻣﺰﯾﻦ ﻣﻦ‬
‫اﻟﺮﻣﻮز اﻟﺜﻼﺛﺔ اﻟﻤﻄﻠﻮﺑﺔ‪ .‬ﺑﻌﺪ ذﻟﻚ إذا ﺗﻢ إدﺧﺎل ‪ 0‬ﻣﻦ ﺟﺪﯾﺪ ﻓﺈن اﻵﻟﺔ ﺳﻮف ﺗﺒﻘﻰ ﻓﻲ ﻧﻔﺲ اﻟﺤﺎﻟﺔ ﻓﻲ اﻧﺘﻈﺎر‬
‫وﺻﻮل اﻟﺮﻣﺰ اﻷﺧﯿﺮ وھﻮ ‪ .1‬وﻋﻨﺪ وﺻﻮل اﻟﺮﻣﺰ ‪ 1‬وﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻦ ﻋﺪد اﻷﺻﻔﺎر اﻟﺘﻲ ﺗﻢ إدﺧﺎﻟﮭﺎ ﻗﺒﻠﮫ ﻓﺈن‬
‫اﻵﻟﺔ ﺳﻮف ﺗﺘﺬﻛﺮ ھﺬه اﻟﺤﺎﻟﺔ ﻋﻠﻰ أﻧﮭﺎ اﻟﺤﺎﻟﺔ اﻟﻤﻄﻠﻮﺑﺔ وھﻲ ﻣﺘﺴﻠﺴﻠﺔ ﻓﺮﻋﯿﺔ ﻣﻜﻮﻧﺔ ﻣﻦ ‪ .001‬ﺑﻌﺪ ذﻟﻚ‬
‫ﺳﺘﺒﻘﻰ اﻵﻟﺔ ﻓﻲ ﻧﻔﺲ اﻟﺤﺎﻟﺔ ﻣﮭﻤﺎ ﻛﺎﻧﺖ اﻟﺮﻣﻮز اﻟﺘﻲ ﯾﺘﻢ إدﺧﺎﻟﮭﺎ‪.‬‬

‫ﺑﻨﺎءاً ﻋﻠﻰ ﻣﺎ ﺳﺒﻖ ﻓﺈن ھﻨﺎك أرﺑﻊ ﺣﺎﻻت ھﻲ‪:‬‬

‫‪ .1‬ﻋﺪم ﻣﺸﺎھﺪة أي رﻣﺰ ﻣﻦ رﻣﻮز اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﻔﺮﻋﯿﺔ‬


‫‪ .2‬ﻣﺸﺎھﺪة اﻟﺮﻣﺰ ‪0‬‬
‫‪ .3‬ﻣﺸﺎھﺪة اﻟﺮﻣﺰﯾﻦ ‪00‬‬

‫‪34‬‬
‫‪ .4‬ﻣﺸﺎھﺪة اﻟﺮﻣﻮز ‪001‬‬

‫وھﺬه اﻟﺤﺎﻻت ﺟﻤﯿﻌﮭﺎ ﯾﻤﻜﻦ ﺗﻤﺜﯿﻞ ﻛﻞ ﻣﻨﮭﺎ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪ : q‬اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ )وھﻲ ﺣﺎﻟﺔ ﻋﺪم ﻣﺸﺎھﺪة أي رﻣﺰ ﻣﻦ رﻣﻮز اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﻤﻄﻠﻮﺑﺔ(‪.‬‬

‫‪ : q0‬ﺣﺎﻟﺔ ﻣﺸﺎھﺪة اﻟﺮﻣﺰ ‪. 0‬‬

‫‪ : q00‬ﺣﺎﻟﺔ ﻣﺸﺎھﺪة اﻟﺮﻣﺰﯾﻦ ‪. 00‬‬

‫‪ : q001‬ﺣﺎﻟﺔ ﻣﺸﺎھﺪة اﻟﺮﻣﻮز ‪) 001‬ﺣﺎﻟﺔ ﻣﺸﺎھﺪة اﻟﻤﺘﺴﻠﺴﻠﺔ اﻟﻔﺮﻋﯿﺔ اﻟﻤﻄﻠﻮﺑﺔ(‪.‬‬

‫أﻣﺎ ﻋﻤﻠﯿﺔ اﻻﻧﺘﻘﺎل ﺑﯿﻦ اﻟﺤﺎﻻت ﻓﺴﻮف ﺗﻜﻮن ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪ .1‬ﻓﻲ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪ : q‬إذا ﺗﻢ ﻗﺮاءة اﻟﺮﻣﺰ ‪ 1‬ﻓﺈن اﻻﻧﺘﻘﺎل ﺳﯿﺘﻢ إﻟﻰ اﻟﺤﺎﻟﺔ ﻧﻔﺴﮭﺎ وإذا ﺗﻢ ﻗﺮاءة ‪ 0‬ﻓﺴﯿﺘﻢ‬
‫اﻻﻧﺘﻘﺎل‬

‫إﻟﻰ اﻟﺤﺎﻟﺔ ‪. q0‬‬

‫‪ .2‬ﻓﻲ اﻟﺤﺎﻟﺔ ‪ : q0‬إذا ﺗﻢ ﻗﺮاءة ‪ 1‬ﯾﺘﻢ اﻻﻧﺘﻘﺎل إﻟﻰ اﻟﺤﺎﻟﺔ اﻻﺑﺘﺪاﺋﯿﺔ ‪ q‬وإذا ﺗﻢ ﻗﺮاءة ‪ 0‬ﯾﺘﻢ اﻻﻧﺘﻘﺎل إﻟﻰ اﻟﺤﺎﻟﺔ‬
‫‪. q00‬‬
‫‪ .3‬ﻓﻲ اﻟﺤﺎﻟﺔ ‪ :q00‬ﺑﻌﺪ ﻗﺮاءة اﻟﺮﻣﺰ ‪ 1‬ﯾﺘﻢ اﻻﻧﺘﻘﺎل إﻟﻰ ‪ q001‬ﻓﻲ ﺣﯿﻦ ﻗﺮاءة ‪ 0‬ﺗﺒﻘﻲ اﻵﻟﺔ ﻓﻲ اﻟﺤﺎﻟﺔ ﻧﻔﺴﮭﺎ‪.‬‬
‫‪ .4‬ﻓﻲ اﻟﺤﺎﻟﺔ ‪ : q001‬ﻗﺮاءة اﻟﺮﻣﺰ ‪ 0‬أو ﻗﺮاءة اﻟﺮﻣﺰ ‪ 1‬ﺳﻮف ﺗﺒﻘﻲ اﻵﻟﺔ ﻓﻲ اﻟﺤﺎﻟﺔ ﻧﻔﺴﮭﺎ‪.‬‬

‫أﻣﺎ ﺣﺎﻟﺔ اﻟﻘﺒﻮل ﻓﮭﻲ اﻟﺤﺎﻟﺔ ‪ . q001‬وﺑﺬﻟﻚ ﯾﻜﻮن ﻣﺨﻄﻂ اﻟﺤﺎﻟﺔ ﻟﮭﺬه اﻵﻟﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪1‬‬ ‫‪0‬‬
‫‪0,1‬‬

‫‪0‬‬

‫‪q‬‬ ‫‪q0‬‬ ‫‪0‬‬ ‫‪q 00‬‬ ‫‪1‬‬


‫‪q 001‬‬

‫‪1‬‬

‫‪35‬‬

You might also like