Программа тузишга мисоллар Режа: Тьюринг машинасида (ТМ) автоматни силжитиш, белгиларни алмаштириш
Download 311.8 Kb.
|
Тьюринг машинаси учун программа тузишга мисоллар
- Bu sahifa navigatsiya:
- 21-расм. 8-мисол. Сўзни янги жойда расмийлаштириш.
- 9-мисол. Лентада жойни фиксирлаш.
7-мисол. Сўзни ёйиш.
A={a,b,c}. Р сўзидаги биринчи учраган с белгисидан сўнг а белгисини қўйинг, агар шундай белги Р да учраса. Ечилиши. Кириш сўзини чапдан ўнгга томон бўш катакгача ёки биринчи учраган с белгисигача кўриб чиқамиз. Биринчи ҳолда с белгиси Р га кирмайди, шунинг учун ҳеч нарса қилинмайди. Иккинчи ҳолда қўйиладиган а белгиси учун жой ажратиш керак бўлади, бунинг учун Р сўзининг бошини битта белги чапга силжитамиз (биринчи белгидан бошлаб токи с белгисигача). Шунда ўнгдан чапга томон с белгисидан сўз бошигача силжиш амалга оширилади. Бундай чапга томон циклик силжиш 5-мисолдаги ўнгга силжиш каби амалга оширилганлиги боис, уни тушунтириб ўтирмаймиз ва бирданига ТМ учун программани келтирамиз:
21-расм. 8-мисол. Сўзни янги жойда расмийлаштириш. A={a,b,c}. Р сўзидаги учраган барча а белгиларини ўчиринг. Ечилиши. Олдинги мисоллар шуни кўрсатадики, ТМда сўзга бирор белгиларни қўшиш ва уларни олиб ташлаш анча қийин реализация қилинар экан. Шу сабабли баъзан кириш сўзини сиқишга қараганда, чиқиш сўзини лентанинг бошқа бир бўш жойида расмийлаштириш осонроқдир. Бу масалани айнан мана шундай усулда ечишга ҳаракат қиламиз. Айнан амалларни бажариш қуйидагича таклиф этилади: 1.Чиқиш сўзини кириш сўзининг ўнг томонидан бошлаб қурамиз. Бу сўзларни фарқлаш учун уларни бирор ёрдамчи белги билан ажратамиз, масалан, А алфавитдаги белгилардан фарқли бўлган = белгиси билан (1- қадамга қаранг). Лентада алфавитдаги белгилардан ташқари бошқа белгилар ҳам бўлиши мумкинлигини эслатиб ўтамиз. 2.Бундан сўнг кириш сўзининг бошига қайтилади (2- қадамга қаранг).
3
2 1 22-расм.
5 4 3.Бизнинг эндиги ишимиз-циклда кириш сўзидаги а белгисидан бошқа барча белгиларни = белгисидан ўнг томонга, чиқиш сўзи расмийлаштириладиган жойга ўтказинг. Бунинг учун кириш сўзининг биринчи белгиси таҳлил қилинади. Агар бу а бўлса, у ўчирилади ва кейинги белгига ўтилади (3-қадамга қаранг). Агар биринчи белги b ёки с бўлса, у ҳолда уни ўчириб, ўнг томонга шу белгини ёзиш жойи, биринчи бўш катакгача “югурамиз” (4-5 қадамларга қаранг). 6
23-расм.
8 7 Яна чап томондаги кириш сўзида биринчи бўлган белгига қайтамиз ва ўша амалларни қайтарамиз, аммо мана шу белгига нисбатан (6-9 қадамларга қаранг). 9
24-расм.
10 4.Қайтган пайтда чап томонда кириш сўзининг биринчи белгиси сифатида = белгисини кўрсак, бу цикл тугайди. Бу кириш сўзини тўлиқ кўриб чиққанлигимизнинг белгиси бўлиб, а дан бошқа барча белгиларни чиқиш сўзи сифатида ўтказганлигимизни билдиради. Бу белгини ўчириш керак, ўнгга чиқиш сўзининг остига силжишни ва тўхташ кераклигини билдиради (10-қадамга қаранг).
25-расм.
26-расм.
A={a,b}. P кириш сўзи билан унинг нусхаси орасига = белгисини қўйиб иккилантиринг. Масалан:
27-расм.
. сўз ва унинг нусҳаси орасига = белгисини қўйиб, уни иккилантиринг. Масалан,
28-расм.
Бу масала қуйидагича ечилади: кирувчи сўзнинг охирига = белгисини қўямиз, кейин сўзнинг бошига қайтамиз ва циклда унинг барча символларини (а ни ҳам) бўш катакларга кўчирамиз:
29-расм.
Биз дуч келган муаммо умуман олганда қуйидагича: тасмада биз бўлган вазиятни ва кейин келишимиз керак бўлган вазиятни (позиция) қандай белгилашимиз мумкин? Одатда бу масала қуйидагича ечилади. Биз шу позицияга биринчи мартта келганимизда унда турган белгини унинг ўхшаши (янги ёрдамчи белги) билан алмаштирамиз, бунда турли хил белгилар турли хил ўхшашлар билан алмаштирилади, масалан, белги га ва белги га. Бундан кейин биз тасманинг бошқа жойларида қандайдир амаллар бажарамиз. Кейинчалик бизнинг позицияга қайтиш учун тасмада ёки белгилар жойлашган катакни топиш керак. Агар кейинчалик бизга бу позиция керак бўлмаса, шу катакка аввалги белгини тиклашимиз мумкин (айнан аввалги белгини тиклаш учун бизга турли белгиларни турли ўхшашлар билан алмаштириш керак эди). Қуйидаги амалларни бажариб бу усулдан қўйилган масалани ечишда фойдаланамиз: 1. Аввал айтилгандек, киритилувчи сўздан кейин = белгисини қўямиз (юқоридаги 1-қадамга қаранг). 2. Кейин киритилувчи сўзнинг биринчи белгисига қайтамиз (юқоридаги 2-қадамга қаранг). 3. Кейин қаралаётган белгини унинг ўхшаши га алмаштирамиз (пастдаги 3-қадамга қаранг), ўнгдаги биринчи бўш катакка “югурамиз” ва унга белгини ёзамиз (4-қадамга қаранг). Сўнг ўхшаш турган катакка қайтамиз (5-қадамга қаранг), аввалги белгини тиклаймиз ва ўнгда турган кейинги белгига ўтамиз (6-қадам қаранг).
30-расм.
4. Кирувчи сўзнинг охирги белгисидан нусҳа олиб унинг ўхшашига қайтамиз (12-қадамдан сўнг), сўнг ўнгга битта катак сурилганда биз = белгисини топамиз (13-қадам). Бу кирувчи сўздан бутунлай нусҳа олиб бўлинганлиги ҳақида сигнал, шунинг учун ТМ нинг ишини тамомлаш керак. Барча айтилганларни ҳисобга олиб ТМ учун қуйидаги дастурни оламиз:
31-расм.
32-расм.
Саволлар: Тьюринг машинасида (ТМ) автоматни силжитиш, белгиларни алмаштириш қандай бажарилади? ТМ да Р сўзнинг биринчи белгисини унинг охирига ўтказиш алгоритмини тушунтиринг. ТМ да кириш сўзидаги иккинчи белгини ўчириш программаси қандай бажарилади? Сўзга белги қўйиш алгоритмини тушунтиринг. Download 311.8 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling