Машина Поста (див.Еміль Пост) — це абстрактна (тобто така, що не існує в арсеналі техніки), але дуже проста обчислювальна машина. Машина Поста, хоча зовнішньо проста, може здійснювати різні обчислення, для чого потрібно задати початковий стан каретки і програму, яка виконає ці обчислення. Машиною ця математична конструкція названа тому, що при її побудові використовуються деякі поняття реальних машин (елемент пам'яті, команда тощо).
Машину Поста можна розглядати як спрощену модель комп'ютера. Насправді, як комп'ютер, так і машина Поста мають:
- неподільні носії інформації (комірки — біти), які можуть бути заповненими або незаповненими;
- обмежений набір елементарних дій — команд, кожна з яких виконується за один такт (крок).
Обидві машини працюють на основі програми. Проте у машині Поста інформація розташовується лінійно і читається підряд, а в комп'ютері можна читати інформацію за адресою; набір команд комп'ютера значно ширший і виразніший за команди машини Поста.
Склад машини Поста
Машина Поста складається із стрічки та каретки (яка також називається головкою зчитування/запису). Стрічка є безмежною і розділена на комірки однакового розміру. Комірка стрічки може бути порожньою, або у ній може перебувати мітка V. Інформація про те, які комірки порожні, а які містять мітки, утворює стан стрічки. Іншими словами, стан стрічки — це розподіл міток по комірках. Стан стрічки змінюється у процесі роботи машини. Зауважимо, що наявність міток у комірці можна інтерпретувати як «1», а відсутність як «0». Таке двійкове представлення інформації подібне до уявлення, яке використовується практично у всіх сучасних комп'ютерах.
Каретка може пересуватися вздовж стрічки вліво і вправо. Коли вона нерухома — вона перебуває навпроти однієї комірки стрічки. У такому випадку говорять, що каретка оглядає одну комірку. За одиницю часу каретка може зробити одну із трьох дій: стерти мітку, поставити мітку, зробити рух до сусідньої комірки. Стан машини Поста складається із стану стрічки і розташування каретки. Дії каретки підпорядковані програмі, яка складається з пронумерованого набору команд (команди можна представляти як рядки програми). Команди бувають шести типів:
- записати 1 (мітку), перейти до i-го рядка програми;
- записати 0 (стерти мітку), перейти до i-го рядка програми;
- переміститися вліво, перейти до i-го рядка програми;
- переміститися вправо, перейти до i-го рядка програми;
- зупинитися;
- якщо 0, то перейти до i-го рядка програми, інакше перейти до j-го рядка програми.
Наведемо перелік неприпустимих дій, які ведуть до аварійної зупинки машини:
- спроба записати 1 (мітку) в заповнену комірку;
- спроба стерти мітку в порожній комірці;
- нескінченне виконання (зациклення).
Програма Поста
Кожна програма машини Поста складається з команд. Кожна команда програми складається з номера команди, операції та переходу. Наприклад:
- команда зміщення праворуч i → j
- команда зміщення ліворуч i ← j
- команда встановлення мітки i j j
- команда знищення мітки i ε j
- команда передачі керування i ?→ j1, j2
- команда зупинки i стоп або і ! (знак оклику)
Відповідно, програма машини Поста — це скінчений перелік команд, що має наступні властивості:
- на n-му місці записується команда з номером N;
- передача керування повинна відбуватися тільки до існуючого номеру команди.
Необхідні умови роботи машини Поста
- визначеність стану машини Поста (місцерозташування каретки і міток);
- наявність програми машини Поста.
Зауваження щодо роботи машини Поста
- виконання команди встановлення/знищення мітки не призводить до переміщення каретки і можливе тільки за умови пустої / відміченої комірки;
- виконання команди передачі керування з верхнім та нижнім індексом не змінює стан машини Поста. Верхній перехід відбувається у випадку, коли комірка, яку визначає каретка, пуста, і навпаки.
Результат виконання програми машини Поста
- в ході виконання програми машина Поста зустрічається із командою зупинки, що призводить до результативної зупинки.
- в ході виконання програми машина Поста зустрічається із не коректною командою, що призводить до без результативної зупинки.
- в ході виконання програми машина Поста не зустрічається ні з однією з вищевказаних команд, що призводить до «зациклення».
Зауваження
Різні програми, що опрацьовують один і той же стан, можуть призводити до всіх трьох результатів, і навпаки, одна і та ж програма може давати різні результати для різних початкових станів.
Графічне представлення команд машини Поста
n. → m | Крок вправо |
n. ← m | Крок вліво |
n. V m | Записати мітку |
n. X m | Стерти мітку |
n. ? a: b | Переглянути комірку: якщо в комірці знаходиться 0, тоді перейти на команду з номером а, інакше на команду з номером b. |
n. ! | Зупинка |
Будемо розуміти, що ми можемо застосувати програму до біжучого стану машини Поста, якщо виконання програми не призведе до зациклювання, тобто рано чи пізно ми виконаємо команду «Зупинка».
Програмою для машини Поста називається непорожній список послідовно пронумерованих команд наступної структури: n K m, де n — порядковий номер команди, K − дія, яка виконується кареткою, m — номер наступної команди, яку необхідно виконати.
З погляду властивостей алгоритмів, що вивчаються за допомогою машини Поста, найбільший інтерес представляють причини зупинки машини під час виконанні програми:
- зупинка за командою «стоп». Така зупинка називається результативною і вказує на коректність алгоритму;
- зупинка при виконанні неприпустимої команди. У цьому випадку зупинка називається безрезультатною;
- машина не зупиняється ніколи. У цьому і у попередньому випадку ми маємо справу з некоректним алгоритмом.
Під початковим станом каретки розумітимемо її положення навпроти порожньої комірки лівіше за найлівішу мітку на стрічці.
Приклад 1
На стрічці в одній з комірок поставлена мітка (решта комірок є порожніми). Каретка стоїть на деякій відстані лівіше за цю комірку. Потрібно підвести каретку до комірки, стерти мітку і зупинити каретку зліва від цієї комірки.
Розв'язок. Спочатку спробуємо описати алгоритм звичайною мовою. Оскільки нам відомо, що каретка стоїть навпроти порожньої комірки, але невідомо, скільки кроків потрібно зробити до заповненої комірки, ми можемо відразу зробити крок вправо; перевірити, чи заповнена комірка; якщо вона порожня, то повторювати ці дії доти, поки не наштовхнемося на заповнену комірку. Щойно ми її знайдемо, ми виконаємо операцію стирання, після чого потрібно буде лише змістити каретку вліво і зупинити виконання програми. Програма пошуку і стирання єдиної мітки на стрічці для машини Поста має такий вигляд:
- → 2
- ? 1: 3
- X 4
- ← 5
- !
Приклад 2
На стрічці заданий масив міток. Збільшити довжину масиву на 2 мітки. Каретка знаходиться або зліва від масиву, або над однією з комірок масиву.
Розв'язок.
- ? 2: 3 (команди 1 і 2 — пересуваємо каретку до масиву)
- → 1
- → 4 (команди 3 і 4 — пересуваємо каретку до кінця масиву)
- ? 5: 3
- V 6 (команди 5–7 — ставимо 2 мітки в кінець масиву)
- → 7
- V 8
- ! (стоп)
Приклад 3
Задано два масиви міток, які знаходяться на деякій відстані один від одного. Потрібно об'єднати їх в один масив. Каретка знаходиться над крайньою лівою міткою першого масиву (в початковому стані).
- X 2
- → 3
- ? 4: 2
- V 5
- → 6
- ? 8; 7
- !
- ← 9
- ? 10: 8
- → 1
Див. також
Посилання
Навчальні матеріали з інформатики " Основні поняття інформатики " Машина Поста [ 29 травня 2014 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Mashina Posta div Emil Post ce abstraktna tobto taka sho ne isnuye v arsenali tehniki ale duzhe prosta obchislyuvalna mashina Mashina Posta hocha zovnishno prosta mozhe zdijsnyuvati rizni obchislennya dlya chogo potribno zadati pochatkovij stan karetki i programu yaka vikonaye ci obchislennya Mashinoyu cya matematichna konstrukciya nazvana tomu sho pri yiyi pobudovi vikoristovuyutsya deyaki ponyattya realnih mashin element pam yati komanda tosho Mashinu Posta mozhna rozglyadati yak sproshenu model komp yutera Naspravdi yak komp yuter tak i mashina Posta mayut nepodilni nosiyi informaciyi komirki biti yaki mozhut buti zapovnenimi abo nezapovnenimi obmezhenij nabir elementarnih dij komand kozhna z yakih vikonuyetsya za odin takt krok Obidvi mashini pracyuyut na osnovi programi Prote u mashini Posta informaciya roztashovuyetsya linijno i chitayetsya pidryad a v komp yuteri mozhna chitati informaciyu za adresoyu nabir komand komp yutera znachno shirshij i viraznishij za komandi mashini Posta Sklad mashini PostaMashina Posta skladayetsya iz strichki ta karetki yaka takozh nazivayetsya golovkoyu zchituvannya zapisu Strichka ye bezmezhnoyu i rozdilena na komirki odnakovogo rozmiru Komirka strichki mozhe buti porozhnoyu abo u nij mozhe perebuvati mitka V Informaciya pro te yaki komirki porozhni a yaki mistyat mitki utvoryuye stan strichki Inshimi slovami stan strichki ce rozpodil mitok po komirkah Stan strichki zminyuyetsya u procesi roboti mashini Zauvazhimo sho nayavnist mitok u komirci mozhna interpretuvati yak 1 a vidsutnist yak 0 Take dvijkove predstavlennya informaciyi podibne do uyavlennya yake vikoristovuyetsya praktichno u vsih suchasnih komp yuterah Karetka mozhe peresuvatisya vzdovzh strichki vlivo i vpravo Koli vona neruhoma vona perebuvaye navproti odniyeyi komirki strichki U takomu vipadku govoryat sho karetka oglyadaye odnu komirku Za odinicyu chasu karetka mozhe zrobiti odnu iz troh dij sterti mitku postaviti mitku zrobiti ruh do susidnoyi komirki Stan mashini Posta skladayetsya iz stanu strichki i roztashuvannya karetki Diyi karetki pidporyadkovani programi yaka skladayetsya z pronumerovanogo naboru komand komandi mozhna predstavlyati yak ryadki programi Komandi buvayut shesti tipiv zapisati 1 mitku perejti do i go ryadka programi zapisati 0 sterti mitku perejti do i go ryadka programi peremistitisya vlivo perejti do i go ryadka programi peremistitisya vpravo perejti do i go ryadka programi zupinitisya yaksho 0 to perejti do i go ryadka programi inakshe perejti do j go ryadka programi Navedemo perelik nepripustimih dij yaki vedut do avarijnoyi zupinki mashini sproba zapisati 1 mitku v zapovnenu komirku sproba sterti mitku v porozhnij komirci neskinchenne vikonannya zaciklennya Programa PostaKozhna programa mashini Posta skladayetsya z komand Kozhna komanda programi skladayetsya z nomera komandi operaciyi ta perehodu Napriklad komanda zmishennya pravoruch i j komanda zmishennya livoruch i j komanda vstanovlennya mitki i j j komanda znishennya mitki i e j komanda peredachi keruvannya i j1 j2 komanda zupinki i stop abo i znak okliku Vidpovidno programa mashini Posta ce skinchenij perelik komand sho maye nastupni vlastivosti na n mu misci zapisuyetsya komanda z nomerom N peredacha keruvannya povinna vidbuvatisya tilki do isnuyuchogo nomeru komandi Neobhidni umovi roboti mashini Posta viznachenist stanu mashini Posta misceroztashuvannya karetki i mitok nayavnist programi mashini Posta Zauvazhennya shodo roboti mashini Posta vikonannya komandi vstanovlennya znishennya mitki ne prizvodit do peremishennya karetki i mozhlive tilki za umovi pustoyi vidmichenoyi komirki vikonannya komandi peredachi keruvannya z verhnim ta nizhnim indeksom ne zminyuye stan mashini Posta Verhnij perehid vidbuvayetsya u vipadku koli komirka yaku viznachaye karetka pusta i navpaki Rezultat vikonannya programi mashini Posta v hodi vikonannya programi mashina Posta zustrichayetsya iz komandoyu zupinki sho prizvodit do rezultativnoyi zupinki v hodi vikonannya programi mashina Posta zustrichayetsya iz ne korektnoyu komandoyu sho prizvodit do bez rezultativnoyi zupinki v hodi vikonannya programi mashina Posta ne zustrichayetsya ni z odniyeyu z vishevkazanih komand sho prizvodit do zaciklennya Zauvazhennya Rizni programi sho opracovuyut odin i toj zhe stan mozhut prizvoditi do vsih troh rezultativ i navpaki odna i ta zh programa mozhe davati rizni rezultati dlya riznih pochatkovih staniv Grafichne predstavlennya komand mashini Postan mKrok vpravon mKrok vlivon V mZapisati mitkun X mSterti mitkun a b Pereglyanuti komirku yaksho v komirci znahoditsya 0 todi perejti na komandu z nomerom a inakshe na komandu z nomerom b n Zupinka Budemo rozumiti sho mi mozhemo zastosuvati programu do bizhuchogo stanu mashini Posta yaksho vikonannya programi ne prizvede do zaciklyuvannya tobto rano chi pizno mi vikonayemo komandu Zupinka Programoyu dlya mashini Posta nazivayetsya neporozhnij spisok poslidovno pronumerovanih komand nastupnoyi strukturi n K m de n poryadkovij nomer komandi K diya yaka vikonuyetsya karetkoyu m nomer nastupnoyi komandi yaku neobhidno vikonati Z poglyadu vlastivostej algoritmiv sho vivchayutsya za dopomogoyu mashini Posta najbilshij interes predstavlyayut prichini zupinki mashini pid chas vikonanni programi zupinka za komandoyu stop Taka zupinka nazivayetsya rezultativnoyu i vkazuye na korektnist algoritmu zupinka pri vikonanni nepripustimoyi komandi U comu vipadku zupinka nazivayetsya bezrezultatnoyu mashina ne zupinyayetsya nikoli U comu i u poperednomu vipadku mi mayemo spravu z nekorektnim algoritmom Pid pochatkovim stanom karetki rozumitimemo yiyi polozhennya navproti porozhnoyi komirki livishe za najlivishu mitku na strichci Priklad 1Na strichci v odnij z komirok postavlena mitka reshta komirok ye porozhnimi Karetka stoyit na deyakij vidstani livishe za cyu komirku Potribno pidvesti karetku do komirki sterti mitku i zupiniti karetku zliva vid ciyeyi komirki Rozv yazok Spochatku sprobuyemo opisati algoritm zvichajnoyu movoyu Oskilki nam vidomo sho karetka stoyit navproti porozhnoyi komirki ale nevidomo skilki krokiv potribno zrobiti do zapovnenoyi komirki mi mozhemo vidrazu zrobiti krok vpravo pereviriti chi zapovnena komirka yaksho vona porozhnya to povtoryuvati ci diyi doti poki ne nashtovhnemosya na zapovnenu komirku Shojno mi yiyi znajdemo mi vikonayemo operaciyu stirannya pislya chogo potribno bude lishe zmistiti karetku vlivo i zupiniti vikonannya programi Programa poshuku i stirannya yedinoyi mitki na strichci dlya mashini Posta maye takij viglyad 2 1 3 X 4 5 Priklad 2Na strichci zadanij masiv mitok Zbilshiti dovzhinu masivu na 2 mitki Karetka znahoditsya abo zliva vid masivu abo nad odniyeyu z komirok masivu Rozv yazok 2 3 komandi 1 i 2 peresuvayemo karetku do masivu 1 4 komandi 3 i 4 peresuvayemo karetku do kincya masivu 5 3 V 6 komandi 5 7 stavimo 2 mitki v kinec masivu 7 V 8 stop Priklad 3Zadano dva masivi mitok yaki znahodyatsya na deyakij vidstani odin vid odnogo Potribno ob yednati yih v odin masiv Karetka znahoditsya nad krajnoyu livoyu mitkoyu pershogo masivu v pochatkovomu stani X 2 3 4 2 V 5 6 8 7 9 10 8 1Div takozhMashina TyuringaPosilannyaNavchalni materiali z informatiki Osnovni ponyattya informatiki Mashina Posta 29 travnya 2014 u Wayback Machine