ÀËÃÎÐÈÒÌÛ (Ëåêöèè ïî äèñêðåòíîé ìàòåìàòèêå) Ì.È. Äåõòÿðü
Ñîäåðæàíèå 1 ×òî òàêîå àëãîðèòì?
2
2 Ñòðóêòóðèðîâàííûå ïðîãð...
129 downloads
199 Views
464KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ÀËÃÎÐÈÒÌÛ (Ëåêöèè ïî äèñêðåòíîé ìàòåìàòèêå) Ì.È. Äåõòÿðü
Ñîäåðæàíèå 1 ×òî òàêîå àëãîðèòì?
2
2 Ñòðóêòóðèðîâàííûå ïðîãðàììû
3
2.1
Çàäà÷è . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 ×àñòè÷íî ðåêóðñèâíûå ôóíêöèè 3.1 3.2 3.3 3.4
Îñíîâíûå îïðåäåëåíèÿ . . . . . . . . . . . . . . . . . 3.1.1 Ïðèìåðû . . . . . . . . . . . . . . . . . . . . Ïðîãðàììíàÿ âû÷èñëèìîñòü ðåêóðñèâíûõ ôóíêöèé . Ëåììû î ðåêóðñèâíûõ ôóíêöèÿõ . . . . . . . . . . . Çàäà÷è . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
4 Ìàøèíû Òüþðèíãà 4.1 4.2
4.3
Îñíîâíûå îïðåäåëåíèÿ . . . . . . . . . . . . . . . . . . . . . . . . . . . Òüþðèíãîâî ïðîãðàììèðîâàíèå . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Ñòàíäàðòíàÿ çàêëþ÷èòåëüíàÿ êîíôèãóðàöèÿ . . . . . . . . . . 4.2.2 Îäíîñòîðîííèå ìàøèíû Òüþðèíãà . . . . . . . . . . . . . . . . 4.2.3 Ïîñëåäîâàòåëüíàÿ è ïàðàëëåëüíàÿ êîìïîçèöèè ìàøèí Òüþðèíãà . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 Âåòâëåíèå (óñëîâíûé îïåðàòîð) . . . . . . . . . . . . . . . . . 4.2.5 Ïîâòîðåíèå (öèêë) . . . . . . . . . . . . . . . . . . . . . . . . . Çàäà÷è . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Ìàøèíû Òüþðèíãà, ÷.ð.ô. è ñòðóêòóðèðîâàííûå ïðîîãðàììû 5.1 5.2 5.3 5.4
. . . . .
Âû÷èñëèìîñòü ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé ïî Òüþðèíãó . . . . Ìîäåëèðîâàíèå ñòðóêòóðèðîâàííûõ ïðîãðàìì ìàøèíàìè Òüþðèíãà ×àñòè÷íàÿ ðåêóðñèâíîñòü ôóíêöèé, âû÷èñëèìûõ ïî Òüþðèíãó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Çàäà÷è . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
7
. 7 . 9 . 11 . 14 . 17 . . . . . . . .
19
19 22 23 24 25 26 27 28
30
. . 30 . . 32 . . 33 . . 35
1 ×òî òàêîå àëãîðèòì?
2
6 Òåçèñ Òüþðèíãà-×åð÷à è àëãîðèòìè÷åñêè íåðàçðåøèìûå ïðîáëåìû 35 6.1
Çàäà÷è . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1 ×òî òàêîå àëãîðèòì? Ïåðâîíà÷àëüíîé öåëüþ òåîðèè àëãîðèòìîâ ÿâëÿåòñÿ êëàññèôèêàöèÿ âñåõ çàäà÷ íà àëãîðèòìè÷åñêè ðàçðåøèìûå è íåðàçðåøèìûå, ò.å. íà òå, äëÿ êîòîðûõ ñóùåñòâóþò ðåøàþùèå èõ àëãîðèòìû, è òå, äëÿ êîòîðûõ òàêèõ àëãîðèòìîâ íåò. Íåôîðìàëüíî ïîä àëãîðèòìîì A ìîæíî ïîíèìàòü âûðàæåííûé â íåêîòîðîì ÿçûêå íàáîð ïðàâèë (ïðåäïèñàíèå, ðåöåïò, ñïîñîá), ïîçâîëÿþùèé ïðèìåíèòü ê èñõîäíûì (âõîäíûì) äàííûì x èç íåêîòîðîãî ìíîæåñòâà äîïóñòèìûõ äàííûõ X ïîñëåäîâàòåëüíîñòü äèñêðåòíûõ äåéñòâèé (îïåðàöèé, êîìàíä), ïðèâîäÿùóþ ê îïðåäåëåííîìó ðåçóëüòàòó - âûõîäíûì äàííûì y = A(x) èç íåêîòîðîãî ìíîæåñòâà Y .  ýòîì ñëó÷àå ãîâîðÿò, ÷òî àëãîðèòì A âû÷èñëÿåò ôóíêöèþ F (x) = A(x) òèïà X → Y. Ýòî íåñòðîãîå îïðåäåëåíèå âïîëíå ïîäõîäèò â òåõ ñëó÷àÿõ, êîãäà äëÿ íåêîòîðîé ôóíêöèè íàì ïðåäúÿâëÿåòñÿ îáúåêò, íàçûâàåìûé àëãîðèòìîì åå âû÷èñëåíèÿ (íàïðèìåð, àëãîðèòì Ýâêëèäà äëÿ âû÷èñëåíèÿ íàèáîëüøåãî îáùåãî äåëèòåëÿ äâóõ öåëûõ ÷èñåë), è ìîæíî ëåãêî ïðîâåðèòü ïîçâîëÿåò ëè îí äåéñòâèòåëüíî âû÷èñëèòü òðåáóåìóþ ôóíêöèþ. Îäíàêî îíî ñîâåðøåííî íå ãîäèòñÿ, äëÿ äîêàçàòåëüñòâà òîãî, ÷òî äëÿ çàäàííîé ôóíêöèè íèêàêîãî àëãîðèòìà íåò. Íà÷èíàÿ ñ òðèäöàòûõ ãîäîâ ÕÕ âåêà, áûë ïðåäïðèíÿò ðÿä èññëåäîâàíèé äëÿ ôîðìàëèçàöèè ïîíÿòèÿ àëãîðèòìà. Ïåðå÷èñëèì íåêîòîðûå èç ïðåäëîæåííûõ ðàçíûìè àâòîðàìè â ðàçíîå âðåìÿ ôîðìàëüíûõ ìîäåëåé: ìàøèíû Òüþðèíãà-Ïîñòà, ÷àñòè÷íîðåêóðñèâíûå ôóíêöèè (Ãåäåëü, Êëèíè), ε-èñ÷èñëåíèå (×åð÷, Êëèíè), èòåðàòèâíûå àâòîìàòû Íåéìàíà, íîðìàëüíûå àëãîðèôìû Ìàðêîâà, ñ÷åò÷èêîâûå àâòîìàòû Ìèíñêîãî, àâòîìàòû íà ãðàôàõ Êîëìîãîðîâà-Áàðçäèíÿ è äð. Çàëîæåííûå â íèõ èäåè â çíà÷èòåëüíîé ñòåïåíè ïîâëèÿëè çàòåì íà àðõèòåêòóðó è ÿçûêè ïðîãðàììèðîâàíèÿ ðåàëüíûõ êîìïüþòåðîâ (íàïðèìåð, íà áàçå λ-èñ÷èñëåíèÿ ïîñòðîåí øèðîêî ïðèìåíÿåìûé â çàäà÷àõ èñêóññòâåííîãî èíòåëëåêòà ÿçûê ËÈÑÏ, à èç íîðìàëüíûõ àëãîðèôìîâ Ìàðêîâà ïðîèçîøåë õîðîøî ïîäõîäÿùèé äëÿ òåêñòîâîé îáðàáîòêè ÿçûê ÐÅÔÀË). Êàæäûé èç ìíîãî÷èñëåííûõ ÿçûêîâ ïðîãðàììèðîâàíèÿ òàêæå çàäàåò íåêîòîðóþ ôîðìàëüíóþ ìîäåëü àëãîðèòìîâ. Ìû âíà÷àëå ðàññìîòðèì îäèí èç ïðîñòåéøèõ òàêèõ ÿçûêîâ ïðîñòûå ñòðóêòóðèðîâàííûå ïðîãðàììû. À çàòåì ñðàâíèì èõ ñ äâóìÿ äðóãèìè ìîäåëÿìè àëãîðèòìîâ: îïèñàíèÿìè ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé è ìàøèíàìè Òüþðèíãà. Õîòÿ àëãîðèòìû â ðàçíûõ ïðèêëàäíûõ îáëàñòÿõ èìåþò äåëî ñ äèñêðåòíûìè îáúåêòàìè ðàçëè÷íûõ âèäîâ: öåëûìè è ðàöèîíàëüíûìè ÷èñëàìè, ñòðîêàìè, ôîðìóëàìè, ðàçíîãî ðîäà âûðàæåíèÿìè, ãðàôàìè, ìàòðèöàìè, òàáëèöàìè, òî÷å÷íûìè èçîáðàæåíèÿìè è äð. ìû â ýòîé ÷àñòè êóðñà áóäåì ðàññìàòðèâàòü òîëüêî çàäà÷è âû÷èñëåíèÿ ôóíêöèé îò íàòóðàëüíûõ àðãóìåíòîâ, ïðèíèìàþùèõ íàòóðàëüíûå çíà÷åíèÿ. Òàêèå
3 ôóíêöèè ÷àñòî íàçûâàþò àðèôìåòè÷åñêèìè. Äåëî â òîì, ÷òî äëÿ ëþáîãî åñòåñòâåííîãî ìíîæåñòâà äèñêðåòíûõ îáúåêòîâ (â ÷àñòíîñòè, äëÿ âñåõ ïåðå÷èñëåííûõ âûøå) èìååòñÿ ïðîñòîå êîäèðîâàíèå åãî ýëåìåíòîâ öåëûìè ÷èñëàìè. Ïîýòîìó çàäà÷è âû÷èñëåíèÿ ôóíêöèé íà ýòèõ ìíîæåñòâàõ ïðåâðàùàþòñÿ â çàäà÷è âû÷èñëåíèÿ àðèôìåòè÷åñêèõ ôóíêöèé. Íàïîìíèì, ÷òî ÷åðåç N îáîçíà÷àåòñÿ ìíîæåñòâî íàòóðàëüíûõ ÷èñåë, ò.å. N = {0, 1, 2, . . .}. Äëÿ ÷àñòè÷íîé n- ìåñòíîé àðèôìåòè÷åñêîé ôóíêöèè f : Nn → N ÷åðåç δf îáîçíà÷èì îáëàñòü åå îïðåäåëåíèÿ. ×òîáû óêàçàòü, ÷òî f íå îïðåäåëåíà íà íåêîòîðîì íàáîðå ÷èñåë a1 , . . . , an áóäåì ïèñàòü f (a1 , . . . , an ) = ∞, à åñëè f íà ýòîì íàáîðå îïðåäåëåíà, òî áóäåì ïèñàòü f (a1 , . . . , an ) < ∞. Òàêèì îáðàçîì, δf = {(a1 , . . . , an ) | f (a1 , . . . , an ) < ∞}.
2 Ñòðóêòóðèðîâàííûå ïðîãðàììû  ýòîì ðàçäåëå ðàññìîòðèì â êà÷åñòâå ñðåäñòâà îïèñàíèÿ àëãîðèòìîâ ñòðóêòóðèðîâàííûå ïðîãðàììû. Îíè âû÷èñëÿþò ôóíêöèè, èñïîëüçóÿ ìèíèìàëüíûå ñðåäñòâà: ýëåìåíòàðíûå ïðèñâàèâàíèÿ, óñëîâíûå îïåðàòîðû è öèêëû. Îïðåäåëèì âíà÷àëå ñèíòàêñèñ ñòðóêòóðèðîâàííûõ ïðîãðàìì. Çàôèêñèðóåì äëÿ ýòîãî íåêîòîðîå ñ÷åòíîå ìíîæåñòâî èìåí ïåðåìåííûõ V ar, êîòîðûå áóäóò èñïîëüçîâàòüñÿ â ïðîãðàììàõ. Êàê îáû÷íî, áóäåì ñ÷èòàòü, ÷òî îíî âêëþ÷àåò èìåíà x, x1 , x2 , . . . , y, y1 , ..., z, z1 , ... è ò.ï.  ïîñëåäóþùèõ îïðåäåëåíèÿõ x, y, z ýòî ïðîèçâîëüíûå ïåðåìåííûå èç V ar.
Îïðåäåëåíèå 2.1. Îïåðàòîð ïðèñâàèâàíèÿ. Ïðèñâàèâàíèå ýòî âûðàæåíèå
îäíîãî èç ñëåäóþùèõ òðåõ âèäîâ: à) x := x + 1 á) x := 0 â) x := y .
Îïðåäåëåíèå 2.2. Óñëîâèÿ. Óñëîâèå ýòî âûðàæåíèå îäíîãî èç äâóõ âèäîâ:
à) x = y
èëè á) x < y .
Ñòðóêòóðèðîâàííûå ïðîãðàììû îïðåäåëÿþòñÿ èíäóêòèâíî.
Îïðåäåëåíèå 2.3. Ñòðóêòóðèðîâàííûå ïðîãðàììû.
à) Êàæäîå ïðèñâàèâàíèå ýòî ñòðóêòóðèðîâàííàÿ ïðîãðàììà. á) Åñëè Π1 è Π2 ñòðóêòóðèðîâàííûå ïðîãðàììû, òî è Π = Π1 ; Π2 ýòî ñòðóêòóðèðîâàííàÿ ïðîãðàììà. â) Åñëè Π1 è Π2 ñòðóêòóðèðîâàííûå ïðîãðàììû, à Φ ýòî óñëîâèå, òî Π = åñëè Φ òî Π1 èíà÷å Π2 êîíåö ÿâëÿåòñÿ ñòðóêòóðèðîâàííîé ïðîãðàììîé. ã) Åñëè Π1 ñòðóêòóðèðîâàííàÿ ïðîãðàììà, à Φ ýòî óñëîâèå, òî
4
2
Ñòðóêòóðèðîâàííûå ïðîãðàììû
Π = ïîêà Φ äåëàé Π1 âñå ÿâëÿåòñÿ ñòðóêòóðèðîâàííîé ïðîãðàììîé. ä) Äðóãèõ ñòðóêòóðèðîâàííûõ ïðîãðàìì íåò. Êîíñòðóêöèÿ â ï. (á) íàçûâàåòñÿ ïîñëåäîâàòåëüíûì ïðèìåíåíèåì èëè êîìïîçèöèåé ïðîãðàìì Π1 è Π2 , êîíñòðóêöèÿ â ï. (â) íàçûâàåòñÿ óñëîâíûì îïåðàòîðîì, à êîíñòðóêöèÿ â ï. (ã) ýòî îïåðàòîð öèêëà, Φ ýòî óñëîâèå öèêëà, à Π1 ýòî òåëî öèêëà. Ñ ïîìîùüþ ñòðóêòóðèðîâàííûõ ïðîãðàìì (äàëåå íàçûâàåìûõ ïðîñòî ïðîãðàììàìè) âû÷èñëÿþòñÿ (÷àñòè÷íûå) ôóíêöèè îò íàòóðàëüíûõ àðãóìåíòîâ, ïðèíèìàþùèå íàòóðàëüíûå çíà÷åíèÿ. Ñ êàæäîé ïðîãðàììîé Π ñâÿæåì åñòåñòâåííûì îáðàçîì ìíîæåñòâî âõîäÿùèõ â íåå ïåðåìåííûõ V arΠ (îïðåäåëèòå ýòî ìíîæåñòâî èíäóêöèåé ïî ïîñòðîåíèþ ïðîãðàììû).  ïðîöåññå ðàáîòû ïðîãðàììà èçìåíÿåò çíà÷åíèÿ ýòèõ ïåðåìåííûõ. Îïåðàöèîííàÿ ñåìàíòèêà çàäàåò ïðàâèëà òàêîãî èçìåíåíèÿ.
Îïðåäåëåíèå 2.4. Ñîñòîÿíèå ýòî îòîáðàæåíèå σ èç ìíîæåñòâà ïåðåìåííûõ V ar âî ìíîæåñòâî N. Äëÿ x ∈ V ar ÷åðåç σ(x) îáîçíà÷èì çíà÷åíèå ïåðåìåííîé x â ñîñòîÿíèè σ . ×åðåç S îáîçíà÷èì ìíîæåñòâî âñåõ ñîñòîÿíèé. Ðàçóìååòñÿ, ïðè ðàññìîòðåíèè êîíêðåòíîé ïðîãðàììû Π íàñ áóäóò èíòåðåñîâàòü çíà÷åíèÿ ïåðåìåííûõ èç V arΠ .
Îïðåäåëåíèå 2.5. Îïåðàöèîííàÿ ñåìàíòèêà ïðîãðàììû ïðîãðàììû Π ýòî îòáðàæåíèå (âîîáùå ãîâîðÿ, ÷àñòè÷íîå) òèïà S → S, êîòîðîå ïðîãðàììà Π èíäóöè-
ðóåò íà ìíîæåñòâå âñåõ ñîñòîÿíèé. ×åðåç Π(σ) îáîçíà÷èì ñîñòîÿíèå - ðåçóëüòàò ïðèìåíåíèÿ ïðîãðàììû Π ê ñîñòîÿíèþ σ. Îíî îïðåäåëÿåòñÿ èíäóêöèåé ïî ïîñòðîåíèþ ïðîãðàììû. à) (x := x + 1)(σ) = σ1 , ãäå σ1 (y) = σ(y) ïðè y 6= x, è σ1 (x) = σ(x) + 1. á) (x := 0)(σ) = σ1 , ãäå σ1 (y) = σ(y) ïðè y 6= x, è σ1 (x) = 0. â) (x := y)(σ) = σ1 , ãäå σ1 (z) = σ(z) ïðè z 6= x, è σ1 (x) = σ(y) ã) Ïóñòü Π = Π1 ; Π2 . Òîãäà Π(σ) = (Π1 ; Π2 )(σ) = Π2 (Π1 (σ)), ïðè ýòîì, åñëè Π1 (σ) = ∞ èëè σ1 = Π1 (σ) è Π2 (σ1 ) = ∞, òî è Π(σ) = ∞. ä) Ïóñòü Π = åñëè x = y òî Π1 èíà÷å Π2 êîíåö. Òîãäà Π1 (σ), åñëè Π1 (σ) < ∞ è σ(x) = σ(y) Π2 (σ), åñëè Π2 (σ) < ∞ è σ(x) 6= σ(y) Π(σ) = ∞ â îñòàëüíûõ ñëó÷àÿõ å)Ïóñòü Π = åñëè x < y òî Π1 Π1 (σ), Π2 (σ), Π(σ) = ∞
èíà÷å Π2 êîíåö. Òîãäà åñëè Π1 (σ) < ∞ è σ(x) < σ(y) åñëè Π2 (σ) < ∞ è σ(x) ≥ σ(y) â îñòàëüíûõ ñëó÷àÿõ
5
æ) Ïóñòü Π = ïîêà x = y äåëàé Π1 âñå . Òîãäà ïðè σ(x) 6= σ(y) Π(σ) = σ , à ïðè σ(x) = σ(y) Π(σ) ýòî ïåðâîå òàêîå ñîñòîÿíèå σm â ïîñëåäîâàòåëüíîñòè ñîñòîÿíèé σ0 = σ, σ1 = Π(σ0 ), . . . , σi+1 = Π(σi ), . . ., ÷òî ïðè i ≤ m âñå ñîñòîÿíèÿ σi îïðåäåëåíû, ïðè i < m èìååò ìåñòî σi (x) = σi (y), è σm (x) 6= σm (y). ç) Ñåìàíòèêó äëÿ öèêëà ñ óñëîâèåì x < y îïðåäåëèòå ñàìîñòîÿòåëüíî (ñì. çàäà÷ó 2.1). Ïóñòü Π ïðîãðàììà, V arΠ ìíîæåñòâî åå ïåðåìåííûõ. Âûäåëèì ñðåäè ýòè ïåðåìåííûõ íåêîòîðîå ïîäìíîæåñòâî âõîäíûõ ïåðåìåííûõ x1 , . . . , xn è îäíó ðåçóëüòèðóþùóþ (âûõîäíóþ) ïåðåìåííóþ y (îíà ìîæåò áûòü îäíîé èç âõîäíûõ). Ïåðåìåííûå èç V arΠ , íå ÿâëÿþùèåñÿ âõîäíûìè áóäåì íàçûâàòü âñïîìîãàòåëüíûìè.
Îïðåäåëåíèå 2.6. Ïðîãðàììà Π ñ âõîäíûìè ïåðåìåííûìè x1 , . . . , xn è ðåçóëüòèðóþùåé ïåðåìåííîé y âû÷èñëÿåò ÷àñòè÷íóþ ôóíêöèþ F : Nn → N, åñëè äëÿ ëþáîãî íàáîðà çíà÷åíèé àðãóìåíòîâ a1 , . . . , an (ai ∈ N), îíà ïåðåâîäèò íà÷àëüíîå ñîñòîÿíèå σ , â êîòîðîì σ(xi ) = ai ïðè 1 ≤ i ≤ n è σ(z) = 0 ïðè z ∈ V ar \ {x1 , . . . , xn }, â ñîñòîÿíèå σ1 = Π(σ) òîãäà è òîëüêî òîãäà, êîãäà (a1 , . . . , an ) ∈ δF è F (a1 , . . . , an ) = σ1 (y). Ôóíêöèþ, âû÷èñëÿåìóþ ïðîãðàììîé Π ñ âõîäíûìè ïåðåìåííûìè x1 , . . . , xn â (ðåçóëüòèðóþùåé) ïåðåìåííîé y îáîçíà÷èì ΦΠ,y (x1 , . . . , xn ). Àðèôìåòè÷åñêàÿ ôóíêöèÿ F (x1 , . . . , xn ) ïðîãðàììíî âû÷èñëèìà, åñëè îíà âû÷èñëèìà íåêîòîðîé ïðîãðàììîé Π â íåêîòîðîé ïåðåìåííîé y ïðè íåêîòîðîì ðàçáèåíèè ïåðåìåííûõ V arΠ íà âõîäíûå: x1 , . . . , xn è âñïîìîãàòåëüíûå.
Çàìåòèì, ÷òî â íàøåì ÿçûêå íåò ïîíÿòèÿ ïðîöåäóðû (ïîäïðîãðàììû). Äëÿ ñîêðàùåíèÿ çàïèñè ìû áóäåì èíîãäà èñïîëüçîâàòü èìÿ îäíîé ðàíåå íàïèñàííîé ïðîãðàììû âíóòðè òåêñòà äðóãîé: Π = ...Π1 ... Òàêàÿ çàïèñü áóäåò îçíà÷àòü òåêñòîâóþ (in-line) ïîäñòàíîâêó òåêñòà (êîäà) ïðîãðàììû Π1 â ñîîòâåòñòâóþùåå ìåñòî ïðîãðàììû Π. Ïîä÷åðêíåì, ÷òî ïðè ýòîì ïåðåìåííûå Π1 íå ïåðåèìåíîâûâàþòñÿ è ïðîãðàììèñò ñàì äîëæåí çàáîòèòüñÿ î ïðàâèëüíîé èíèöèàëèçàöèè ïåðåìåííûõ èç V arΠ1 . Íàïðèìåð, åñëè Π èñïîëüçóåò îòäåëüíî íàïèñàííóþ ïðîãðàììó Π+ èç ïðèâåäåííîãî íèæå ïðèìåðà 2.3 äëÿ ñëîæåíèÿ ïåðåìåííûõ a è b è ïîëó÷åíèÿ ðåçóëüòàòà â t, òî áåçîïàñíûé è êîððåêòíûé ñïîñîá ñäåëàòü ýòî ìîæåò âûãëÿäåòü òàê: Π : . . . ; x0 := x; y 0 := y; z 0 := z; x := a; y := b; Π+ ; t := x; x := x0 ; y := y 0 ; z := z 0 ; . . ., ò.å. âíà÷àëå ñîõðàíÿþòñÿ òåêóùèå çíà÷åíèÿ ïåðåìåííûõ x, y, z , èñïîëüçóåìûõ â Π+ , çàòåì âõîäíûì ïåðåìåííûì x è y ïðèñâàèâàþòñÿ íóæíûå çíà÷åíèÿ a è b è âûçûâàåòñÿ Π+ , åå ðåçóëüòàò ïåðåäàåòñÿ â t, çàòåì âîññòàíàâëèâàþòñÿ çíà÷åíèÿ x, y, z . Ðàññìîòðèì íåñêîëüêî ïðèìåðîâ ïðîãðàìì.
Ïðèìåð 2.1. Π0 : x := 0
ßñíî, ÷òî ΦΠ0 ,x (x) òîæäåñòâåííî ðàâíà 0.
2
6
Ñòðóêòóðèðîâàííûå ïðîãðàììû
Ïðèìåð 2.2.
Π1 : x := x + 1 À çäåñü ΦΠ1 ,x (x) = x + 1 äëÿ ëþáîãî x.
Ïðèìåð 2.3. Π+ : ïîêà z < y äåëàé z := z + 1; x := x + 1âñå
Çàôèêñèðóåì âõîäíûå ïåðåìåííûå x, y è âûõîäíóþ ïåðåìåííóþ x ( z - ðàáî÷àÿ ïåðåìåííàÿ). Ëåãêî ïîêàçàòü, ÷òî ΦΠ+ ,x (x, y) = x + y. Äåéñòâèòåëüíî, ïðè y = 0 òåëî öèêëà íå âûïîëíÿåòñÿ è âûõîä ðàâåí x = x+0. Ïðè y ≥ 1 òåëî öèêëà âûïîëíÿåòñÿ y ðàç è ïðè êàæäîì åãî âûïîëíåíèè x óâåëè÷èâàåòñÿ íà 1.
Ïðèìåð 2.4.
Π4 (n, i) : x1 := x1 ; . . . ; xn := xn ; x1 := xi Π4 (n, i) âû÷èñëÿåò â x1 ôóíêöèþ âûáîðà i-ãî àðãóìåíòà: ΦΠ4 (n,i),x1 (x1 , . . . , xn ) = xi .
Ïðèìåð 2.5.
Π5 (n) : x1 := x1 ; . . . ; xn := xn ; ïîêà x1 = x1 äåëàé x1 := x1 âñå Íåòðóäíî ïîíÿòü, ÷òî Π5 (n) âû÷èñëÿåò íèãäå íå îïðåäåëåííóþ ôóíêöèþ îò n ïåðåìåííûõ: ΦΠ5 (n),x1 (x1 , . . . , xn ) = ∞.
2.1 Çàäà÷è Çàäà÷à 2.1. Îïðåäåëèòå (ïî àíàëîãèè ñ ï. (æ)) îïðåäåëåíèÿ 2.5ñåìàíòèêó äëÿ ïðîãðàìì âèäà Π = ïîêà x < y äåëàé Π1 âñå .
Çàäà÷à 2.2. Ïîñòðîèòü ñòðóêòóðèðîâàííûå ïðîãðàììû, âû÷èñëÿþùèå â z ñëåäó-
þùèå ôóíêöèè, è äîêàçàòü èõ êîððåêòíîñòü: a) f× (x, y) = x ∗ y; á) ff act (x) = x!; ˙ , ãäå 0−1 ˙ = 0 è (x + 1)−1 ˙ = x; â) f−1 (x) = x−1 ˙ ãäå x−y ˙ = x − y, åñëè x ≥ y è x−y ˙ = 0, åñëè x < y ; ã) f− (x, y) = √ x−y, ä) fsqr (x) = [ x]; å) fexp (x) = 2x ; æ) flog (x) = [log2 x]; ç) f/ (x, y) = [x/y].
7
Çàäà÷à 2.3. Ïóñòü Π ñòðóêòóðèðîâàííàÿ ïðîãðàììà è |V arΠ | = m. Èç îïðåäåëåíèé ñëåäóåò, ÷òî ïðè ðàçëè÷íîé ôèêñàöèè âõîäíûõ ïåðåìåííûõ è âûõîäíîé ïåðåìåííîé îíà ìîæåò âû÷èñëÿòü ðàçëè÷íûå ôóíêöèè. à) Êàêîâî ìàêñèìàëüíîå ÷èñëî ôóíêöèé îò n ≤ m ïåðåìåííûõ, êîòîðîå ìîæåò âû÷èñëÿòü Π? Ñêîëüêî âñåãî ðàçíûõ ôóíêöèé ìîæåò âû÷èñëèòü Π? á) Ïîñòðîéòå ïðîãðàììó Π(m, n), êîòîðàÿ âû÷èñëÿåò ìàêñèìàëüíîå ÷èñëî ðàçëè÷íûõ ôóíêöèé îò n ≤ m ïåðåìåííûõ? â) Ïîñòðîéòå ïðîãðàììó Π(m) ñ |V arΠ | = m , êîòîðàÿ äëÿ êàæäîãî n ≤ m âû÷èñëÿåò ìàêñèìàëüíîå ÷èñëî ðàçëè÷íûõ ôóíêöèé îò n ïåðåìåííûõ? Çàäà÷à 2.4. Ïîñòðîèòü ñòðóêòóðèðîâàííûå ïðîãðàììû, âû÷èñëÿþùèå â z ñëåäóþùèå ôóíêöèè: à)
f1 (x, y) =
á)
f2 (x, y) =
â)
f3 (x, y) =
ã)
p(x)
=
x2 y 3 , [ (x+y)/2 ] , 3y , |x − y|, [x ∗ y/2], x[y/2] , 1, 0,
åñëè x < y â ïðîòèâíîì ñëó÷àå
åñëè log2 (x + 1) ≥ y â ïðîòèâíîì ñëó÷àå åñëè log2 x ≤ y + 2 â ïðîòèâíîì ñëó÷àå
åñëè x ïðîñòîå ÷èñëî â ïðîòèâíîì ñëó÷àå
3 ×àñòè÷íî ðåêóðñèâíûå ôóíêöèè  ýòîì ðàçäåëå ìû èçó÷èì àëãåáðàè÷åñêèé ïîäõîä ê îïðåäåëåíèþ êëàññà âû÷èñëèìûõ ôóíêöèé. Êàæäàÿ âû÷èñëèìàÿ ôóíêöèÿ áóäåò ïîëó÷àòüñÿ èç íåêîòîðûõ ïðîñòåéøèõ î÷åâèäíî âû÷èñëèìûõ áàçèñíûõ ôóíêöèé ñ ïîìîùüþ íåêîòîðûõ îïåðàöèé, âû÷èñëèìîñòü êîòîðûõ òàêæå íå âûçûâàåò ñîìíåíèÿ. Îïåðàöèÿ, êîòîðàÿ äàëà íàçâàíèå ýòîìó ïîäõîäó ðåêóðñèÿ ýòî ñïîñîá çàäàíèÿ ôóíêöèè ïóòåì îïðåäåëåíèÿ êàæäîãî åå çíà÷åíèÿ â òåðìèíàõ ðàíåå îïðåäåëåííûõ åå çíà÷åíèé è äðóãèõ óæå îïðåäåëåííûõ ôóíêöèé.
3.1 Îñíîâíûå îïðåäåëåíèÿ Ìû áóäåì ðàññìàòðèâàòü ÷àñòè÷íûå àðèôìåòè÷åñêèå ôóíêöèè f n (x1 , . . . , xn ) : Nn → N. Çäåñü âåðõíèé èíäåêñ n ó èìåíè ôóíêöèè f îáîçíà÷àåò ÷èñëî åå àðãóìåíòîâ (àðíîñòü). Åñëè àðíîñòü ÿñíà èç êîíòåêñòà èëè íåñóùåñòâåííà, òî ýòîò èíäåêñ áóäåì îïóñêàòü. Îïðåäåëèì âíà÷àëå òðè îïåðàòîðà, ïîçâîëÿþùèõ ïî îäíèì ôóíêöèÿì ïîëó÷àòü äðóãèå.
8
3
×àñòè÷íî ðåêóðñèâíûå ôóíêöèè
Îïðåäåëåíèå 3.1. Ñóïåðïîçèöèÿ. Ïóñòü F m è f1n , . . . , fmn àðèôìåòè÷åñêèå n ôóíêöèè. Ñêàæåì, ÷òî ôóíêöèÿ Gn ïîëó÷åíà èç F m , f1n , . . . , fm ñ ïîìîùüþ îïån m n n ðàòîðà ñóïåðïîçèöèè (îáîçíà÷åíèå: G = [F ; f1 , . . . , fm ] ), åñëè äëÿ âñåõ íàáîðîâ àðãóìåíòîâ (x1 , . . . , xn ) n Gn (x1 , . . . , xn ) = F m (f1n (x1 , . . . , xn ), . . . , fm (x1 , . . . , xn )).
Ïðè ýòîì äëÿ êàæäîãî íàáîðà àðãóìåíòîâ (a1 , . . . , an ) ôóíêöèÿ Gn (a1 , . . . , an ) < ∞ n (ò.å. îïðåäåëåíà), åñëè îïðåäåëåíû âñå çíà÷åíèÿ f1n (a1 , . . . , an ) = b1 , . . . , fm (a1 , . . . , an ) = m bm è F (b1 , . . . , bm ) < ∞.
Îïðåäåëåíèå 3.2. Ïðèìèòèâíàÿ ðåêóðñèÿ. Ñêàæåì, ÷òî ôóíêöèÿ F n+1 (x1 , . . . , xn , y) ïîëó÷åíà ñ ïîìîùüþ îïåðàòîðà ïðèìèòèâíîé ðåêóðñèè èç ôóíêöèé g n (x1 , . . . , xn ) è hn+2 (x1 , . . . , xn , y, z), åñëè îíà ìîæåò áûòü çàäàíà ñõåìîé ïðèìèòèâíîé ðåêóðñèè ( F n+1 (x1 , . . . , xn , 0) = g n (x1 , . . . , xn ) F n+1 (x1 , . . . , xn , y + 1) = hn+2 (x1 , . . . , xn , y, F n+1 (x1 , . . . , xn , y))  ýòîì ñëó÷àå áóäåì ïèñàòü F n+1 = R(g n , hn+2 ). Ïðè ýòîì F (a1 , . . . , an , 0) < ∞ ⇐⇒ g n (a1 , . . . , an ) < ∞ è äëÿ êàæäîãî b F (a1 , . . . , an , b + 1) < ∞ ⇐⇒ F (a1 , . . . , an , b) = c < ∞ è hn+2 (a1 , . . . , an , b, c) < ∞.  ñëó÷àå, êîãäà n = 0, ò.å. F çàâèñèò îò îäíîãî àðãóìåíòà y , à àðãóìåíòîâ x1 , . . . , xn íåò, ñõåìà ïðèìèòèâíîé ðåêóðñèè ïðèíèìàåò âèä ( F 1 (0) = a F 1 (y + 1) = h2 (y, F 1 (y)), ãäå a ∈ N. Çàìåòèì, ÷òî åñëè èñõîäíûå ôóíêöèè â îïåðàòîðàõ ñóïåðïîçèöèè è ïðèìèòèâíîé ðåêóðñèè âñþäó îïðåäåëåíû, òî è ðåçóëüòèðóþùèå ôóíêöèè òàêæå âñþäó îïðåäåëåíû. Ñëåäóþùèé îïåðàòîð ïîçâîëÿåò çàäàâàòü íå âñþäó îïðåäåëåííûå, ò.å. ÷àñòè÷íûå, ôóíêöèè.
Îïðåäåëåíèå 3.3. Ìèíèìèçàöèÿ. Ñêàæåì, ÷òî ôóíêöèÿ F n (x1 , . . . , xn ) ïîëó÷åíà ñ ïîìîùüþ îïåðàòîðà ìèíèìèçàöèè (µ-îïåðàòîðà) èç ôóíêöèè g n+1 (x1 , . . . , xn , y), åñëè F n (x1 , . . . , xn ) îïðåäåëåíà è ðàâíà y òîãäà è òîëüêî òîãäà, êîãäà âñå çíà÷åíèÿ g n+1 (x1 , . . . , xn , 0), . . . , g n+1 (x1 , . . . , xn , y − 1) îïðåäåëåíû è íå ðàâíû 0, à g n+1 (x1 , . . . , xn , y) = 0.  ýòîì ñëó÷àå áóäåì ïèñàòü
F n (x1 , . . . , xn ) = µy[g n+1 (x1 , . . . , xn , y) = 0].
3.1 Îñíîâíûå îïðåäåëåíèÿ
9
Îïðåäåëåíèå 3.4. Ïðîñòåéøèå ôóíêöèè. Ôóíêöèÿ íàçûâàåòñÿ ïðîñòåéøåé,
åñëè îíà ÿâëÿåòñÿ îäíîé èç ñëåäóþùèõ ôóíêöèé: à) o1 (x) = 0 - òîæäåñòâåííûé íóëü; á) s1 (x) = x + 1 - ñëåäóþùåå ÷èñëî (ïëþñ îäèí); n â) ôóíêöèè âûáîðà àðãóìåíòà Im (x1 , . . . , xn ) = xm (1 ≤ m ≤ n).
Çàìåòèì, ÷òî âñå ïðîñòåéøèå ôóíêöèè âû÷èñëèìû â èíòóèòèâíîì ñìûñëå. Êðîìå òîãî, îïåðàòîðû ñóïåðïîçèöèè, ïðèìèòèâíîé ðåêóðñèè è ìèíèìèçàöèè òàæå âû÷èñëèìû: ïîíÿòíû àëãîðèòìû, ïî êîòîðûì èç ïðîãðàìì äëÿ èñõîäíûõ ôóíêöèé ìîæíî ïîëó÷èòü ïðîãðàììû äëÿ ðåçóëüòèðóþùèõ. Ñëåäóþùåå îïðåäåëåíèå ââîäèò èíòåðåñóþøèé íàñ êëàññ ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé è åãî âàæíûå ïîäêëàññû.
Îïðåäåëåíèå 3.5. ×àñòè÷íî ðåêóðñèâíûå ôóíêöèè. Ôóíêöèÿ f íàçûâàåòñÿ
÷àñòè÷íî ðåêóðñèâíîé ôóíêöèåé (÷.ð.ô.), åñëè îíà ÿâëÿåòñÿ îäíîé èç ïðîñòåéøèõ ôóíêöèé èëè ìîæåò ïîëó÷èòüñÿ èç íèõ ñ ïîìîùüþ êîíå÷íîãî ÷èñëà ïðèìåíåíèé îïåðàòîðîâ ñóïåðïîçèöèè, ïðèìèòèâíîé ðåêóðñèè è ìèíèìèçàöèè, ò.å. ñóùåñòâóåò ïîñëåäîâàòåëüíîñòü ôóíêöèé f1 , f2 , . . . , fn = f, êàæäàÿ èç êîòîðûõ ÿâëÿåòñÿ ëèáî ïðîñòåéøåé, ëèáî ïîëó÷åíà èç ïðåäûäóøèõ ñ ïîìîùüþ îäíîãî èç óêàçàííûõ îïåðàòîðîâ. Óêàçàííàÿ ïîñëåäîâàòåëüíîñòü ôóíêöèé íàçûâàåòñÿ ÷àñòè÷íî ðåêóðñèâíûì îïèñàíèåì ôóíêöèè f. Ôóíêöèÿ f íàçûâàåòñÿ îáùåðåêóðñèâíîé ôóíêöèåé (î.ð.ô.), åñëè îíà ÷àñòè÷íî ðåêóðñèâíà è âñþäó îïðåäåëåíà. Ôóíêöèÿ f íàçûâàåòñÿ ïðèìèòèâíî ðåêóðñèâíîé ôóíêöèåé (ï.ð.ô.), åñëè îíà ÷àñòè÷íî ðåêóðñèâíà è äëÿ íåå ñóùåñòâóåò îïðåäåëåíèå, èñïîëüçóþùåå ëèøü îïåðàòîðû ñóïåðïîçèöèè è ïðèìèòèâíîé ðåêóðñèè. Íåòðóäíî ïðîâåðèòü, ÷òî êàæäàÿ ïðèìèòèâíî ðåêóðñèâíàÿ ôóíêöèÿ âñþäó îïðåäåëåíà, ò.å. ÿâëÿåòñÿ îáùåðåêóðñèâíîé (îáðàòíîå, âîîáùå ãîâîðÿ, íåâåðíî).
3.1.1
Ïðèìåðû
Ïðèâåäåì íåêîòîðûå ïðèìåðû ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé.
Ïðèìåð 3.1. Ïîñòîÿííûå ôóíêöèè. Ïóñòü f n (x1 , . . . , xn ) = k äëÿ âñåõ íàáîðîâ àðãóìåíòîâ (x1 , . . . , xn ) è ÷èñëà k ∈ N. Òîãäà f n = [s1 ; [s1 ; . . . [s1 ;[o1 ; I1n ]]] . . .]]. | {z } k ðàç
Ïðèìåð 3.2. Ñëîæåíèå: +2 (x, y) = x + y.
3
10
×àñòè÷íî ðåêóðñèâíûå ôóíêöèè
Ôóíêöèÿ ñëîæåíèÿ îïðåäåëÿåòñÿ ñëåäóþùåé ïðèìèòèâíîé ðåêóðñèåé. ( x + 0 = x = I11 (x) x + (y + 1) = (x + y) + 1 = [s1 ; (x + y)] = [s1 ; I33 (x, y, x + y)] Ñëåäîâàòåëüíî, +2 = R(I11 , [s1 ; I33 ]).
Ïðèìåð 3.3. Óìíîæåíèå: ×2 (x, y) = x × y . Èñïîëüçóÿ ñëîæåíèå, óìíîæåíèå ìîæíî çàäàòü ñëåäóþùåé ïðèìèòèâíîé ðåêóðñèåé: ( x × 0 = 0 = o1 x × (y + 1) = (x × y) + x = I33 (x, y, x × y) + I13 (x, y, x × y) Ñëåäîâàòåëüíî, ×2 = R(o11 , [+; I33 , I13 ]).
˙ ˙ Ïðèìåð 3.4. Ìèíóñ 1: −1(0) = 0, −1(x + 1) = x. ˙ = R(0, I12 ). Íåòðóäíî ïðîâåðèòü, ÷òî −1 ˙ = x − y, åñëè x ≥ y è x−y ˙ = 0, åñëè x < y. Ïðèìåð 3.5. Âû÷èòàíèå : x−y Âû÷èòàíèå îïðåäåëÿåòñÿ ñëåäóþùåé ïðèìèòèâíî ðåêóðñèâíîé ñõåìîé: ( ˙ = x = I11 (x) x−0 ˙ + 1) = (x−y) ˙ −1 ˙ = [−1 ˙ 1 ; I33 (x, y, x−y)] ˙ x−(y
˙ 2 = R(I11 , [−1 ˙ 1 ; I33 ]). Ñëåäîâàòåëüíî, −
Ïðèìåð 3.6. Ïðåäèêàòû ðàâåíñòâà è íåðàâåíñòâà íóëþ: ( sg(x) =
0, 1,
åñëè x = 0 åñëè x = 6 0
( sg(x) =
1, 0,
åñëè x = 0 åñëè x = 6 0
Ïðèìèòèâíàÿ ðåêóðñèâíîñòü ýòèõ ôóíêöèé ñëåäóåò èç ðàâåíñòâ sg = R(0, [s1 ; [o1 ; I12 ]]) ˙ è sg(x) = 1−sg(x).
˙ + (y −x). ˙ Ïðèìåð 3.7. Ìîäóëü ðàçíîñòè: |x − y| = (x−y)
Ïðèìåð 3.8. rm(x, y) = îñòàòîê îò äåëåíèÿ y íà x (ïðè x = 0 ïîëîæèì rm(0, y) = y ).
3.2 Ïðîãðàììíàÿ âû÷èñëèìîñòü ðåêóðñèâíûõ ôóíêöèé
11
Çàìåòèì, ÷òî
rm(x, y + 1) =
0, rm(x, y) + 1,
åñëè rm(x, y) + 1 = x åñëè rm(x, y) + 1 6= x
Òîãäà ôóíêöèþ rm(x, y) ìîæíî çàäàòü ïðèìèòèâíî ðåêóðñèâíîé ñõåìîé ( rm(x, 0) = 0, rm(x, y + 1) = (rm(x, y) + 1)sg(|x − (rm(x, y) + 1)|) Ïðàâóþ ÷àñòü âòîðîãî ðàâåíñòâà ëåãêî ïðåäñòàâèòü êàê ôóíêöèþ g(x, y, rm(x, y)), ïîëó÷åííóþ ñ ïîìîùüþ ñóïåðïîçèöèè óæå ïîñòðîåííûõ ïðèìèòèâíî ðåêóðñèâíûõ ôóíêöèé.
Ïðèìåð 3.9. Íèãäå íå îïðåäåëåííàÿ ôóíêöèÿ ω(x). Ýòà ôóíêöèÿ ìîæåò áûòü çàäàíà, íàïðèìåð, ñîîòíîøåíèåì ω(x) = µy[ s1 (y)+x =
0 ]. Îòìåòèì, ÷òî âñå ôóíêöèè â ïðèìåðàõ 2.1 - 2.8 ÿâëÿþòñÿ ïðèìèòèâíî ðåêóðñèâíûìè.
3.2 Ïðîãðàììíàÿ âû÷èñëèìîñòü ðåêóðñèâíûõ ôóíêöèé  ýòîì ïàðàãðàôå ðàññìîòðèì ñîîòíîøåíèå ìåæäó ïðîãðàììíî âû÷èñëèìûìè è ÷àñòè÷íî ðåêóðñèâíûìè ôóíêöèÿìè. Ñïðàâåäëèâà ñëåäóþùàÿ
Òåîðåìà 3.1. Êàæäàÿ ÷àñòè÷íî ðåêóðñèâíàÿ ôóíêöèÿ ïðîãðàììíî âû÷èñëèìà. Äîêàçàòåëüñòâî èíäóêöèåé ïî îïðåäåëåíèþ ÷.ð.ô. Áàçèñ: ïðîãðàììíàÿ âû÷èñëèìîñòü ïðîñòåéøèõ ôóíêöèé áûëà óñòàíîâëåíà â ïðèìåðàõ 1.1, 1.2 è 1.4. Èíäóêöèîííûé øàã: ïîêàæåì ïðîãðàììíóþ âû÷èñëèìîñòü îïåðàòîðîâ ñóïåðïîçèöèè, ïðèìèòèâíîé ðåêóðñèè è ìèíèìèçàöèè. Ñóïåðïîçèöèÿ. Ïóñòü F m è f1n , . . . , fmn àðèôìåòè÷åñêèå ôóíêöèè, âû÷èñëèìûå ïðîãðàììàìè Π, Π1 , . . . , Πm òàê, ÷òî ΦΠ,x1 (x1 , . . . , xm ) = F m (x1 , . . . , xm ), è ΦΠi ,x1 (x1 , . . . , xn ) = fin (x1 , . . . , xn ) ïðè i = 1, . . . , n. Ïóñòü ïåðåìåííûå y1 , . . . , ym , z1 , . . . , zn íå èñïîëüçóþòñÿ â ïðîãðàììàõ Π, Π1 , . . . , Πm . Êðîìå òîãî, ïóñòü âñå âñïîìîãàòåëüíûå ïåðåìåííûå ýòèõ ïðîãðàìì ýòî w1 , . . . , wr . Ðàññìîòðèì ñëåäóþùóþ ïðîãðàììó P: z1 := x1 ; . . . ; zn := xn ; Π1 ; y1 := x1 ; x1 := z1 ; . . . ; xn := zn ; w1 := 0; . . . ; wr := 0;
12
3
×àñòè÷íî ðåêóðñèâíûå ôóíêöèè
Π2 ; y2 := x1 ; x1 := z1 ; . . . ; xn := zn ; w1 := 0; . . . ; wr := 0; ... Πm ; ym := x1 ; x1 := y1 ; . . . ; xm := ym ; w1 := 0; . . . ; wr := 0; Π Â êà÷åñòâå âõîäíûõ ïåðåìåííûõ çàôèêñèðóåì x1 , . . . , xn , à âûõîäíîé x1 . Ïóñòü â èñõîäíîì ñîñòîÿíèè x1 = a1 , . . . , xn = an . Òîãäà â ïåðâîé ñòðîêå ýòè çíà÷åíèÿ ñîõðàíÿþòñÿ â ïåðåìåííûõ z1 , . . . , zn , êîòîðûå ñâîèõ çíà÷åíèé äàëåå íå ìåíÿþò. Ïîýòîìó äëÿ êàæäîãî i = 1, . . . , m − 1 ïîñëå âûïîëíåíèÿ ôðàãìåíòà Πi ; yi := x1 ; x1 := z1 ; . . . ; xn := zn ; w1 := 0; . . . ; wr := 0; çíà÷åíèåì ïåðåìåííîé yi ÿâëÿåòñÿ fin (a1 , . . . , an ), x1 = a1 , . . . , xn = an , à çíà÷åíèÿ âñåõ âñïîìîãàòåëüíûõ ïåðåìåííûõ ðàâíû 0. Òîãäà ïîñëå âûïîëíåíèÿ Πm ; ym := x1 ; x1 := y1 ; . . . ; xm := ym ; çíà÷åíèåì êàæäîãî xi òàêæå ÿâëÿåòñÿ fin (a1 , . . . , an ), à ïîñëå âûïîëíåíèÿ Π çíà÷ån íèå x1 ðàâíî ΦP,x1 (x1 , . . . , xm ) = F m (f1n (a1 , . . . , an ), . . . , fm (a1 , . . . , an )). Òàêèì îáðàçîì, ΦP,x1 = [F ; f1 , . . . , fn ]. Ïðèìèòèâíàÿ ðåêóðñèÿ. Ðàññìîòðèì äëÿ ïðîñòîòû ñëó÷àé n = 1. Ïóñòü ôóíêöèÿ F 2 (x1 , y) ïîëó÷åíà ñ ïîìîùüþ îïåðàòîðà ïðèìèòèâíîé ðåêóðñèè èç ôóíêöèé g 1 (x1 ) è h3 (x1 , y, z), ò.å. F 2 = R(g 1 , h3 ). Ïðåäïîëîæèì, ÷òî ñóùåñòâóþò ïðîãðàììû Π1 è Π2 , âû÷èñëÿþùèå ôóíêöèè g 1 è h3 òàê, ÷òî ΦΠ1 ,x1 (x1 ) = g 1 (x1 ) è ΦΠ2 ,x1 (x1 , y, z) = h3 (x1 , y, z). Ïóñòü âñïîìîãàòåëüíûå ïåðåìåííûå Π2 ýòî z1 , . . . , zm è îíè íå âñòðå÷àþòñÿ â Π1 , à ïåðåìåííûå u1 , y1 è v íå èñïîëüçóþòñÿ â ïðîãðàììàõ Π1 è Π2 . Ðàññìîòðèì ïðîãðàììó P : u1 := x1 ; y1 := y; v := 0; Π1 ; ïîêà v < y1 äåëàé z := x1 ; x1 := u1 ; y := v; Π2 ; z1 := 0; . . . ; zm := 0; v := v + 1 âñå  êà÷åñòâå âõîäíûõ ïåðåìåííûõ P âîçüìåì x1 è y , à âûõîäíîé x1 . Ðàññìîòðèì ðàáîòó P íà èñõîäíîì ñîñòîÿíèè σ , â êîòîðîì σ(x1 ) = a, σ(y) = b. Ïðè b = 0 öèêë íå âûïîëíÿåòñÿ è â ðåçóëüòèðóþùåì ñîñòîÿíèè σ1 = P (σ) èìååì σ1 (x1 ) = Π1 (σ)(x1 ) = g 1 (a) = F 2 (a, 0). Ïðè b > 0 öèêë áóäåò âûïîëíÿòüñÿ b ðàç, òàê êàê â åãî òåëå v âñÿêèé ðàç óâåëè÷èâàåòñÿ íà 1, à çíà÷åíèå y1 = b è íå ìåíÿåòñÿ. Ïåðåä ïåðâûì âûïîëíåíèåì Π2 âñå åå ðàáî÷èå ïåðåìåííûå zi ðàâíû 0, x1 = a, y = 0, z = F 2 (a, 0), à ïîñëå åå âûïîëíåíèÿ x1 = h3 (a, 0, F (a, 0)) = F (a, 1). Ïðåäïîëîæèì òåïåðü ïî èíäóêöèè, ÷òî ïåðåä (i + 1)-ûì âûïîëíåíèåì Π2 âñå åå ðàáî÷èå ïåðåìåííûå zi ðàâíû 0, x1 = a, y = i è z = F 2 (a, i). Ïîñëå ýòîãî âûïîëíåíèÿ x1 = h3 (a, i, z) = h3 (a, i, F (a, i)) = F (a, i + 1). Òîãäà ïðèñâàèâàíèÿ z1 := 0; . . . ; zm := 0; v := v + 1 ïîñëå Π2 è z := x1 ; x1 := u1 ; y := v; ïåðåä åå ñëåäóþùèì âûïîëíåíèåì óñòàíîâÿò çíà÷åíèÿ ïåðåìåííûõ Π2 òàê, ÷òî âñå åå ðàáî÷èå ïåðåìåííûå zi ðàâíû 0, x1 = a, y = i + 1 è z = F 2 (a, i + 1). Ñëåäîâàòåëüíî, ïîñëå b-ãî âûïîëíåíèÿ òåëà öèêëà x1 =
3.2 Ïðîãðàììíàÿ âû÷èñëèìîñòü ðåêóðñèâíûõ ôóíêöèé
13
h3 (a, b − 1, F (a, b − 1)) = F (a, b). Ìèíèìèçàöèÿ. Ïðåäïîëîæèì, ÷òî ôóíêöèÿ F n (x1 , . . . , xn ) ïîëó÷åíà ñ ïîìîùüþ îïåðàòîðà ìèíèìèçàöèè (µ-îïåðàòîðà) èç ôóíêöèè g n+1 (x1 , . . . , xn , y), ò.å. F n (x1 , . . . , xn ) = µy[g n+1 (x1 , . . . , xn , y) = 0]. Ïóñòü ïðîãðàììà Π1 âû÷èñëÿåò g n+1 , òàê ÷òî ΦΠ1 ,x1 (x1 , . . . , xn , y) = g n+1 (x1 , . . . , xn , y), è ïóñòü ðàáî÷èå ïåðåìåííûå Π1 ýòî z1 , . . . , zm . Çàôèêñèðóåì ïåðåìåííûå x01 , . . . , x0n , y 0 , u, z , íå âõîäÿøèå â V arΠ1 . Ðàññìîòðèì ñëåäóþùóþ ïðîãðàììó Π: x01 := x1 ; . . . ; x0n := xn ; z := 0; u := 0; u := u + 1; y 0 := 0; ïîêà z < u äåëàé x1 := x01 ; . . . ; xn := x0n ; y := y 0 ; Π1 ; u := x1 ; z1 := 0; . . . ; zm := 0; åñëè u = z òî x1 := y 0 èíà÷å y 0 := y 0 + 1 êîíåö
âñå
Ðàññìîòðèì ðàáîòó Π íà âõîäíûõ çíà÷åíèõ xi = ai (i = 1, . . . , n).  ïåðâîé ñòðîêå îíè ñîõðàíÿþòñÿ â ïåðåìåííûõ x0i , êîòîðûå íèãäå â Π íå èçìåíÿþòñÿ, z ïîëó÷àåò çíà÷åíèå 0, êîòîðîå òîæå íå ìåíÿåòñÿ ïî õîäó âû÷èñëåíèÿ, à u âíà÷àëå ïîëó÷àåò çíà÷åíèå 1. Ïîýòîìó óñëîâèå öèêëà ïîñëå ïåðâîé ñòðîêè âûïîëíåíî è îí õîòü îäèí ðàç âûïîëíÿåòñÿ. Äîêàæåì, ÷òî äëÿ êàæäîãî i ≥ 1, (i + 1)-àÿ èòåðàöèÿ öèêëà âûïîëíÿåòñÿ òîãäà è òîëüêî òîãäà, êîãäà g(a1 , . . . , an , 0) = b1 > 0, . . . , g(a1 , . . . , an , i−1) = bi−1 > 0, Π îñòàíàâëèâàåòñÿ ïîñëå (i + 1)-îé èòåðàöèè öèêëà ñ ðåçóëüòàòîì x1 = i òîãäà è òîëüêî òîãäà, êîãäà g(a1 , . . . , an , i) = 0. Ïðè ýòîì ïåðåä âûïîëíåíèåì Π1 âõîäíûå ïåðåìåííûå x1 , . . . , xn , y èìåþò çíà÷åíèÿ a1 , . . . , an , i, ñîîòâåòñòâåííî, y 0 = i, à âñå ðàáî÷èå ïåðåìåííûå zj (j = 1, . . . , m) ðàâíû 0. Äåéñòâèòåëüíî, ïðåäïîëîæèâ ýòî óñëîâèå, ïîëó÷èì, ÷òî ïîñëå î÷åðåäíîãî âûïîëíåíèÿ ôðàãìåíòà Π1 ; z1 := 0; . . . ; zm := 0; u := x1 ; çíà÷åíèå u = x1 = g(a1 , . . . , an , i), à ðàáî÷èå ïåðåìåííûå âîññòàíàâëèâàþò íóëåâûå çíà÷åíèÿ. Åñëè g(a1 , . . . , an , i) = 0, òî u = z è â óñëîâíîì îïåðàòîðå x1 ïîëó÷àåò çíà÷åíèå y 0 = i. Ïîñëå ýòîãî óñëîâèå öèêëà íàðóøåíî è Π çàâåðøàåò ðàáîòó ñ âûõîäíûì çíà÷åíèåì x1 = i = F (a1 , . . . , an ). Åñëè æå g(a1 , . . . , an , i) > 0, òî u > z è â óñëîâíîì îïåðàòîðå y 0 óâåëè÷èâàåò çíà÷åíèå äî (i + 1). Òîãäà óñëîâèå öèêëà âûïîëíåíî è ïåðåä (i + 2)-ûì âûïîëíåíèåì Π1 åå âõîäíûå ïåðåìåííûå x1 , . . . , xn , y èìåþò çíà÷åíèÿ a1 , . . . , an , i + 1, ñîîòâåòñòâåííî, y 0 = i + 1, à âñå ðàáî÷èå ïåðåìåííûå ðàâíû 0. Èç äîêàçàííîãî óòâåðæäåíèÿ íåïîñðåäñòâåííî ñëåäóåò, ÷òî ΦΠ,x1 (a1 , . . . , an ) = µy[g(a1 , . . . , an , y) = 0]. 2 Èìååò ìåñòî è óòâåðæäåíèå, îáðàòíîå òåîðåìå 3.1, êîòîðîå ìû ïðèâîäèì çäåñü áåç äîêàçàòåëüñòâà.
Òåîðåìà 3.2. Êàæäàÿ ïðîãðàììíî âû÷èñëèìàÿ ôóíêöèÿ ÿâëÿåòñÿ ÷àñòè÷íî ðåêóðñèâíîé.
3
14
×àñòè÷íî ðåêóðñèâíûå ôóíêöèè
3.3 Ëåììû î ðåêóðñèâíûõ ôóíêöèÿõ  ýòîì ïàðàãðàôå ìû óñòàíîâèì ïðèìèòèâíóþ (÷àñòè÷íóþ) ðåêóðñèâíîñòü íåêîòîðûõ âàæíûõ êëàññîâ ôóíêöèé - òàáëèö è íóìåðàöèé, è ðàñøèðèì âîçìîæíîñòè îïðåäåëåíèÿ ôóíêöèé ñ ïîìîùüþ ðàçáîðà ñëó÷àåâ è âçàèìíîé ðåêóðñèè.
Ëåììà 3.1. Ðåêóðñèâíîñòü òàáëè÷íûõ ôóíêöèé. Ïóñòü âñþäó îïðåäåëåííàÿ ôóíêöèÿ f (x) íà âñåõ àðãóìåíòàõ, êðîìå êîíå÷íîãî ÷èñëà, ðàâíà íåêîòîðîé êîíñòàíòå c (òàêóþ ôóíêöèþ íàçîâåì òàáëè÷íîé). Òîãäà îíà ÿâëÿåòñÿ ïðèìèòèâíî ðåêóðñèâíîé.
Äîêàçàòåëüñòâî Ïóñòü äëÿ ôóíêöèè f èç óñëîâèÿ ëåììû nf = max{x|f (x) 6= c}. Äîêàçàòåëüñòâî ïðîâåäåì èíäóêöèåé ïî nf . Ïðè nf = 0 ôóíêöèÿ f ÿâëÿåòñÿ ïîñòîÿííîé è ïîýòîìó ïðèìèòèâíî ðåêóðñèâíîé (ïðèìåð 3.1 íà ñòð. 9). Ïðåäïîëîæèì ÷òî âñå òàáëè÷íûå ôóíêöèè g ñî çíà÷åíèåì ng ≤ k ïðèìèòèâíî ðåêóðñèâíû è ïóñòü nf = k + 1 è f (0) = a. Îïðåäåëèì òàáëè÷íóþ ôóíêöèþ f 0 (x) = f (x + 1). ßñíî, ÷òî nf 0 = k, è ïî ïðåäïîëîæåíèþ èíäóêöèè f 0 ïðèìèòèâíî ðåêóðñèâíà. Ëåãêî ïðîâåðèòü, ÷òî òîãäà f çàäàåòñÿ ñëåäóþùåé ñõåìîé: ( f (0) = a, f (x + 1) = g(x, f (x)) = I12 (f 0 (x), f (x)) è, ñëåäîâàòåëüíî, òàêæå ïðèìèòèâíî ðåêóðñèâíà.2 Ïîêàæåì çàìêíóòîñòü êëàññà ÷.ð.ô. (ï.ð.ô.) îòíîñèòåëüíî îïåðàöèé ñóììèðîâàíèÿ è ïðîèçâåäåíèÿ.
Ëåììà 3.2. Ñóììèðîâàíèå è ïðîèçâåäåíèå. Ïóñòü ôóíêöèÿ f (x1 , . . . , xn , y)
ÿâëÿåòñÿ ÷àñòè÷íî (ïðèìèòèâíî) ðåêóðñèâíîé. Òîãäà è ôóíêöèè F n+1 è Gn+1 , çàäàííûå ñëåäóþùèìè ðàâåíñòâàìè
F (x1 , . . . , xn , y) =
y X
f (x1 , . . . , xn , i),
i=0
G(x1 , . . . , xn , y) =
y Y
f (x1 , . . . , xn , i),
i=0
ÿâëÿåòñÿ ÷àñòè÷íî (ïðèìèòèâíî) ðåêóðñèâíûìè. Äîêàçàòåëüñòâî Äåéñòâèòåëüíî, ýòè ôóíêöèè çàäàþòñÿ ñëåäóþùèìè ïðèìèòèâíî ðåêóðñèâíûìè ñõåìàìè: ( F (x1 , . . . , xn , 0) = f (x1 , . . . , 0) F (x1 , . . . , xn , y + 1) = F (x1 . . . , xn , y) + f (x1 , . . . , xn , y + 1)
3.3 Ëåììû î ðåêóðñèâíûõ ôóíêöèÿõ
(
15
G(x1 , . . . , xn , 0) = f (x1 , . . . , 0) G(x1 , . . . , xn , y + 1) = G(x1 . . . , xn , y) × f (x1 , . . . , xn , y + 1)
2 Ïðèâåäåì ïðèìåðû èñïîëüçîâàíèÿ ëåììû 3.2.
Ïðèìåð 3.10. max_deg _div(x, y) = ìàêñèìàëüíàÿ ñòåïåíü x, íà êîòîðóþ íàöåëî äåëèòñÿ y .
Íåòðóäíî ïðîâåðèòü, ÷òî ýòà ôóíêöèÿ çàäàåòñÿ ñîîòíîøåíèåì
max_deg _div(x, y) =
y X
˙ sg(rm(exp(x, i), y))−1
i=0
è, ñëåäîâàòåëüíî, ÿâëÿåòñÿ ïðèìèòèâíî ðåêóðñèâíîé.
Ïðèìåð 3.11. Îãðàíè÷åííàÿ ìèíèìèçàöèÿ. Ïóñòü ïðèìèòèâíî ðåêóðñèâíàÿ
ôóíêöèÿ g(x, y) òàêîâà, ÷òî äëÿ êàæäîãî x íàéäåòñÿ y ≤ x, äëÿ êîòîðîãî g(x, y) = 0. Ïîëîæèì F (x) = µy[g(x, y) = 0]. Òîãäà, ïî îïðåäåëåíèþ, F (x) ÿâëÿåòñÿ ÷àñòè÷íî ðåêóðñèâíîé ôóíêöèåé. Ïîêàæåì, ÷òî,Qíà ñàìîì äåëå, îíà ïðèìèòèâíî ðåêóðñèâíà. Äåéñòâèòåëüíî, îïðåäåëèì h(x, y) = yi=0 sg(g(x, i)). Ïî ëåììå 3.2 ýòà ôóíêöèÿ ïðèìèòèâíî ðåêóðñèâíà. Ïóñòü äëÿ äàííîãî x y0 = µy[g(x, y) = 0]. Òîãäà ïðè i < y0 èìååì h(x, i) = 1,P à ïðè i ≥ y0 h(x, i) = 0. Ïîýòîìó èñêîìàÿ ôóíêöèÿ F çàäàåòñÿ ðàâåíñòâîì F (x) = yi=0 h(x, i) è òàêæå ÿâëÿåòñÿ ïðèìèòèâíî ðåêóðñèâíîé.
Ëåììà 3.3. Êóñî÷íîå çàäàíèå èëè ðàçáîð ñëó÷àåâ. Ïóñòü h1 (x1 , . . . , xn ), . . . ,
hk (x1 , . . . , xn ) ïðîèçâîëüíûå ÷.ð.ô., à âñþäó îïðåäåëåííûå ÷.ð.ô. f1 (x1 , . . . , xn ), . . . , fk (x1 , . . . , xn ) òàêîâû, ÷òî íà ëþáîì íàáîðå àðãóìåíòîâ (a1 , . . . , an ) îäíà è òîëüêî îäíà èç ýòèõ ôóíêöèé ðàâíà 0. Òîãäà ôóíêöèÿ g(x1 , . . . , xn ), îïðåäåëåííàÿ ñîîòíîøåíèÿìè: h1 (x1 , . . . , xn ), åñëè f1 (x1 , . . . , xn ) = 0 h2 (x1 , . . . , xn ), åñëè f2 (x1 , . . . , xn ) = 0 g(x1 , . . . , xn ) = ... ... hk (x1 , . . . , xn ), åñëè fk (x1 , . . . , xn ) = 0 ÿâëÿåòñÿ ÷àñòè÷íî ðåêóðñèâíîé. Äîêàçàòåëüñòâî Äåéñòâèòåëüíî, g n ìîæíî ïðåäñòàâèòü êàê ñóììó k ïðîèçâåäåíèé:
g(x1 , . . . , xn ) = h1 (x1 , . . . , xn )sg(f1 (x1 , . . . , xn )) + . . . + hk (x1 , . . . , xn )sg(fk (x1 , . . . , xn )). Ñëåäóþùèé êëàññ ôóíêöèé, êîòîðûé íàñ áóäåò èíòåðåñîâàòü, ýòî ôóíêöèè äëÿ îäíîçíà÷íîé íóìåðàöèè ïàð è n-îê öåëûõ ÷èñåë è îáðàòíûå èì. Îïðåäåëèì äëÿ
3
16
×àñòè÷íî ðåêóðñèâíûå ôóíêöèè
ëþáîé ïàðû ÷èñåë (x, y) åå íîìåð c2 (x, y) = 2x (2y + 1) − 1. Íàïðèìåð, c(0, 0) = 0, c(1, 0) = 1, c(0, 1) = 2, c(1, 1) = 5, c(2, 1) = 19. Èç åäèíñòâåííîñòè ðàçëîæåíèÿ ÷èñåë íà ïðîñòûå ìíîæèòåëè ñëåäóåò, ÷òî ôóíêöèÿ c2 : N2 → N âçàèìíî îäíîçíà÷íî íóìåðóåò ïàðû öåëûõ ÷èñåë. Îïðåäåëèì òåïåðü îáðàòíûå ôóíêöèè: c21 (z) = ìàêñèìàëüíàÿ ñòåïåíü 2, íà êîòîðóþ äåëèòñÿ z + 1 è ˙ c22 (z) = [(ìàêñèìàëüíîå íå÷åòíîå ÷èñëî, íà êîòîðîå äåëèòñÿ z + 1)−1]/2. Èç ýòèõ îïðåäåëåíèé íåïîñðåäñòâåííî ñëåäóåò, ÷òî äëÿ ëþáîãî z âûïîëíåíî ðàâåíñòâî c2 (c21 (z), c22 (z)) = z. Îïðåäåëèì òåïåðü ïî èíäóêöèè ôóíêöèè cn íóìåðàöèè n-îê ÷èñåë ïðè n > 2 è îáðàòíûå èì êîîðäèíàòíûå ôóíêöèè cni (1 ≤ i ≤ n) : cn (x1 , x2 , x3 , . . . , xn ) = cn−1 (c2 (x1 , x2 ), x3 , . . . , xn ), cn1 (z) = c21 (c(n−1)1 (z)), cn2 (z) = c22 (c(n−1)1 (z)), cn(i+2) (z) = c(n−1)(i+1) (z) (i = 1, . . . , n − 2). Èç ýòèõ îïðåäåëåíèé òàêæå íåïîñðåäñòâåííî ñëåäóåò, ÷òî äëÿ ëþáîãî z èìååò ìåñòî ðàâåíñòâî cn (cn1 (z), cn2 (z), . . . , cnn (z)) = z. (Ïðîâåðüòå ýòî ñâîéñòâî èíäóêöèåé ïî n.)
Ëåììà 3.4. Ðåêóðñèâíîñòü íóìåðàöèîííûõ ôóíêöèé. Äëÿ ëþáûõ n ≥ 2 è 1 ≤ i ≤ n âñå îïðåäåëåííûå âûøå ôóíêöèè cn ðåêóðñèâíûìè.
è cni
ÿâëÿþòñÿ ïðèìèòèâíî
Äîêàçàòåëüñòâî Ïðèìèòèâíàÿ ðåêóðñèâíîñòü c2 (x, y) óñòàíàâëèâàåòñÿ íåïîñðåäñòâåííî (ñì. çàäà÷ó 3.1(à)). Ôóíêöèÿ c21 (z) çàäàåòñÿ ðàâåíñòâîì c21 (z) = max_deg _div(2, z + 1) è ÿâëÿåòñÿ ïðèìèòèâíî ðåêóðñèâíîé (ýòî ïîêàçàíî â ïðèìåðå 3.10 íà ñòð. 15). Äëÿ ôóíêöèè c22 (z) ñïðàâåäëèâî îïðåäåëåíèå c22 (z) = ˙ (çäåñü ìû èñïîëüçóåì ïðèìèòèâíóþ ðåêóðñèâíîñòü ôóíêdiv(2, div(2c21 (z) , z + 1)−1) öèè öåëî÷èñëåííîãî äåëåíèÿ div(x, y) èç çàäà÷è 3.1(e)). Ïðèìèòèâíàÿ ðåêóðñèâíîñòü îñòàëüíûõ íóìåðàöèîííûõ ôóíêöèé ñëåäóåò ïî èíäóêöèè èç èõ îïðåäåëåíèé (ñì. çàäà÷ó 3.10).2  ñëåäóþùåé ëåììå îáîáùàåòñÿ îïåðàòîð ïðèìèòèâíîé ðåêóðñèè.
Ëåììà 3.5. (ñîâìåñòíàÿ ðåêóðñèÿ) Ïpåäïîëîæèì, ÷òî ôyíêöèè αin (x1 , . . . , xn ) (1 ≤ i ≤ k) è ôyíêöèè βin+k+1 (x1 , . . . , xn , y, y1 , . . . , yk ) (1 ≤ i ≤ k) ïpèìèòèâíî påêypñèâíû. Òîãäà ôyíêöèè f1n+1 (x1 , . . . , xn , y), . . . , fkn+1 (x1 , . . . , xn , y), îïpåäåëÿåìûå ñëåäyþùåé ñîâìåñòíîé påêypñèåé (
fi (x1 , . . . , xn , 0) = αi (x1 , . . . , xn ) (1 ≤ i ≤ k) fi (x1 , . . . , xn , y + 1) = βi (x1 , . . . , xn , y, f1 (x1 , . . . , xn , y), . . . , fk (x1 , . . . , xn , y)) (1 ≤ i ≤ k)
òàêæå ÿâëÿþòñÿ ïpèìèòèâíî påêypñèâíûìè. Äîêàçàòåëüñòâî Îáîçíà÷èì (äëÿ ïpîñòîòû) ÷åpåç x íàáîp ïåpåìåííûõ x1 , . . . , xn . Îïpåäåëèì ñëåäyþùèå ïpèìèòèâíî påêypñèâíûå ôyíêöèè: g n (x) = ck (α1 (x), . . . , αk (x),
3.4 Çàäà÷è
17
βˆi (x, y, z) = βi (x, y, ck1 (z), . . . , ckk (z)), 1 ≤ i ≤ k, è ïîëîæèì ( n+1 F (x, 0) = g n (x) F n+1 (x, y + 1) = ck (βˆ1 (x, y, F (x, y)), . . . βˆk (x, y, F (x, y))) Ôyíêöèÿ F n+1 ïîëy÷åíà ïpèìèòèâíîé påêypñèåé èç ïpèìèòèâíî påêypñèâíûõ ôyíêöèé è, ñëåäîâàòåëüíî, ñàìà ïpèìèòèâíî påêypñèâíà. Ñïpàâåäëèâîñòü ëåììû òåïåpü ñëåäyåò èç òîãî, ÷òî äëÿ âñÿêîãî i ∈ [1, k] fi (x, y) = cik (F n+1 (x, y)).
3.4 Çàäà÷è Çàäà÷à 3.1. Ïîêàçàòü, ÷òî ñëåäóþùèå ôóíêöèè ÿâëÿþòñÿ ÷àñòè÷íî ( ïðèìèòèâ-
íî) ðåêóðñèâíûìè. à) exp(x, y) = xy ; á) f act(x) = x !; â) min(x, y) = íàèìåíüøåå èç x è y ; ã) max(x, y) = íàèáîëüøåå èç x è y ; ä) div(x, y) = ÷àñòíîå îò äåëåíèÿ y íà x (ïóñòü div(0, y) = y ). å) ïðåäèêàòû ðàâåíñòâà è íåðàâåíñòâà: 1, åñëè x = y 0, åñëè x = y eq(x, y) = eq(x) = 0, åñëè x 6= y 1, åñëè x = 6 y x
æ) f (x) = 22 .
Çàäà÷à 3.2. Äîêàæèòå, ÷òî åñëè f (x1 , . . . , xn ) ÿâëÿåòñÿ ÷.ð.ô. (ï.ð.ô.), òî è
ôóíêöèÿ g(x1 , . . . , xn ) = f (xi1 , . . . , xin ) ÿâëÿåòñÿ ÷.ð.ô. (ï.ð.ô.) äëÿ ëþáîé ïåðåñòàíîâêè (i1 , . . . , in ) ÷èñåë 1, 2, . . . , n.
Çàäà÷à 3.3. Îïåðàòîð ñäâèãà.
Ïóñòü g(x1 , . . . , xn ) ÷àñòè÷íî (ïðèìèòèâíî) ðåêóðñèâíàÿ ôóíêöèÿ, a è b > 0 ÷èñëà èç N. Òîãäà è ôóíêöèÿ a, åñëè xn ≤ b f (x1 , . . . , xn ) = g(x1 , . . . , xn − b), åñëè xn > b ÿâëÿåòñÿ ÷àñòè÷íî (ïðèìèòèâíî) ðåêóðñèâíîé.
Çàäà÷à 3.4. Ïîêàçàòü, ÷òî ñëåäóþùèå ôóíêöèè ÿâëÿþòñÿ ïðèìèòèâíî ðåêóðñèâíûìè. √ à) rt(n, x) = b n xc êîðåíü n-îé ñòåïåíè èç x (öåëàÿ ÷àñòü).
3
18
×àñòè÷íî ðåêóðñèâíûå ôóíêöèè
á) log(i, x) = blogi xc (ïóñòü ïðè i ∈ {0, 1} èëè x = 0 log(i, x) = 0). â) p(x) = 1, åñëè x ïðîñòîå ÷èñëî, è p(x) = 0, åñëè x ñîñòàâíîå. ã) pn(k) k -îå ïðîñòîå ÷èñëî â ïîðÿäêå âîçðàñòàíèÿ (pn(0) = 0, pn(1) = 2, pn(2) = 3, pn(3) = 5...). ä) t(x) = ÷èñëî pàçëè÷íûõ äåëèòåëåé ÷èñëà x (t(0) = 0). P i å) d(n, m, i) i-ûé çíàê â m-è÷íîì ðàçëîæåíèè ÷èñëà n, ò.å. åñëè n = ∞ 0 ai m , òî d(n, m, i) = ai .
Çàäà÷à 3.5. Ïóñòü F (x) çàäàíà ñîîòíîøåíèÿìè F (0) = 1, F (1) = 2, F (x + 2) = F (x − 1) + F (x) ( ýëåìåíòû ïîñëåäîâàòåëüíîñòè F (x) íàçûâàþòñÿ ÷èñëàìè Ôèáîíà÷÷è). Ïîêàæèòå, ÷òî ôóíêöèÿ F 1 ïðèìèòèâíî ðåêóðñèâíà. (Óêàçàíèå: ïîêàæèòå ñíà÷àëà, ÷òî ôóíêöèÿ g(x) = 2F (x) 3F (x+1) ïðèìèòèâíî ðåêóðñèâíà.)
Çàäà÷à 3.6. Äîêàæèòå, ÷òî åñëè çíà÷åíèÿ îáùåðåêóðñèâíîé ôóíêöèè f (x) èçìåíèòü íà êîíå÷íîì ìíîæåñòâå, òî ïîëó÷èâøàÿñÿ ôóíêöèÿ f 0 (x) òàêæå áóäåò îáùåðåêóðñèâíîé.
Çàäà÷à 3.7. Äîêàçàòü, ÷òî èç ôóíêöèè o(x) = 0 è èç ôóíêöèé âûáîðà Imn (x1 , ..., xn ) = xm ñ ïîìîùüþ ñóïåðïîçèöèè è ïðèìèòèâíîé ðåêóðñèè íåëüçÿ ïîëó÷èòü ôóíêöèþ s(x) = x + 1 è ôóíêöèþ d(x) = 2 ∗ x.
Çàäà÷à 3.8. Ïóñòü g(x1 , ..., xn , y) - ïðèìèòèâíî ðåêóðñèâíà. Äîêàçàòü, ÷òî ôóíê-
öèÿ
Pz f (x1 , ..., xn , y, z) =
0,
i=0
g(x1 , ...xn , y + i),
ïðè y ≤ z ïðè y > z
ïðèìèòèâíî ðåêóðñèâíà.
Çàäà÷à 3.9. Äîêàçàòü, ÷òî åñëè ôóíêöèè f (x1 , ..., xn , y), g(x1 , ..., xn , y) è h(x1 , ..., xn , y) ÷àñòè÷íî ðåêóðñèâíû, òî è ôóíêöèÿ F (x1 , ..., xn ) = min{y| f (x1 , ..., xn , y) = 0 èëè g(x1 , ..., xn , y) > h(x1 , ..., xn , y)} ÿâëÿåòñÿ ÷àñòè÷íî ðåêóðñèâíîé.
Çàäà÷à 3.10. Äîêàæèòå, ÷òî îïðåäåëåííûå âûøå ôóíêöèÿ íóìåðàöèè n-îê cn (x1 , . . . , xn ) è îáðàòíûå åé ôóíêöèè âûáîðà i-ãî ýëåìåíòà íàáîðà cni (z)(1 ≤ i ≤ n) ÿâëÿþòñÿ ïðèìèòèâíî ðåêóðñèâíûìè.
Çàäà÷à 3.11. Ïðåäïîëîæèì, ÷òî âñå ïàðû (x, y) íàòóðàëüíûõ ÷èñåë óïîðÿäî÷åíû ïî
âîçðàñòàíèþ ñóììû (x + y), à âíóòðè ãðóïïû ïàð ñ îäèíàêîâîé ñóììîé ïî âîçðàñòàíèþ x-êîîðäèíàòû. Ýòîò ïîðÿäîê âûãëÿäèò òàê: (0, 0), (0, 1), (1, 0), (0, 2), (1, 1), (2, 0), . . . , (0, x + y), (1, x + y − 1), . . . , (x, y), . . . , (x + y, 0), . . . . Ïóñòü d(x, y) ýòî íîìåð ïàðû (x, y) â ýòîì ïîðÿäêå (áóäåì ñ÷èòàòü, ÷òî ïàðà (0,0) èìååò íîìåð 0). Òîãäà ôóíêöèÿ d2 îäíîçíà÷íî íóìåðóåò âñå ïàðû.
19
à) Äîêàæèòå, ÷òî d(x, y) = (x+y)(x+y+1) + x − 1. 2 á) Íàéäèòå îáðàòíûå ôóíêöèè d1 (z) è d2 (z) òàêèå, ÷òî d1 (d(x, y)) = x, d2 (d(x, y)) = y è, ñëåäîâàòåëüíî, d(d1 (z), d2 (z)) = z .
4 Ìàøèíû Òüþðèíãà 4.1 Îñíîâíûå îïðåäåëåíèÿ Ðàññìàòðèâàåìàÿ â ýòîì ðàçäåëå ìîäåëü àëãîðèòìîâ áûëà ïðåäëîæåíà àíãëèéñêèì ìàòåìàòèêîì Òüþðèíãîì â 1937ã. åùå äî ñîçäàíèÿ ñîâðåìåííûõ êîìïüþòåðîâ1 . Îí èñõîäèë èç îáùåé èäåè ìîäåëèðîâàíèÿ ðàáîòû âû÷èñëèòåëÿ, îïåðèðóþùåãî â ñîîòâåòñòâèè ñ íåêîòîðûì ñòðîãèì ïðåäïèñàíèåì.  ìàøèíå Òüþðèíãà ðàñ÷ëåíåíèå ïðîöåññà âû÷èñëåíèÿ íà ýëåìåíòàðíûå øàãè äîâåäåíî â èçâåñòíîì ñìûñëå äî ïðåäåëà. Ýëåìåíòàðíûì äåéñòâèåì ÿâëÿåòñÿ çàìåíà îäíîãî ñèìâîëà â ÿ÷åéêå íà äðóãîé è ïåðåìåùåíèå ê ñîñåäíåé ÿ÷åéêå. Ïðè òàêîì ïîäõîäå ïðîöåññ âû÷èñëåíèÿ çíà÷èòåëüíî óäëèíÿåòñÿ, íî çàòî ëîãè÷åñêàÿ ñòðóêòóðà ïðîöåññà ñèëüíî óïðîùàåòñÿ è ïðèîáðåòàåò óäîáíûé äëÿ òåîðåòè÷åñêîãî èññëåäîâàíèÿ âèä. Ìàøèíà Òüþðèíãà (ì.Ò.) ñîñòîèò èç íåîãðàíè÷åííîé â îáå ñòîðîíû ëåíòû, ðàçáèòîé íà ÿ÷åéêè, ïî êîòîðîé ïåðåäâèãàåòñÿ ãîëîâêà ìàøèíû. Òàêàÿ áåñêîíå÷íîñòü ëåíòû ÿâëÿåòñÿ ìàòåìàòè÷åñêîé àáñòðàêöèåé, îòðàæàþùåé ïîòåíöèàëüíóþ íåîãðàíè÷åííîñòü ïàìÿòè âû÷èñëèòåëÿ. Ðàçóìååòñÿ, â êàæäîì çàâåðøàþùåìñÿ âû÷èñëåíèè èñïîëüçóåòñÿ òîëüêî êîíå÷íàÿ ÷àñòü ýòîé ïàìÿòè êîíå÷íîå ÷èñëî ÿ÷ååê.  êàæäîé ÿ÷åéêå ëåíòû çàïèñàí îäèí ñèìâîë èç êîíå÷íîãî âíåøíåãî àëôàâèòà ìàøèíû Σ = {a0 , a1 , . . . , am }. Ãîëîâêà ìàøèíû ïðåäñòàâëÿåò êîíå÷íûé àâòîìàò, êîòîðûé â êàæäûé ìîìåíò âðåìåíè íàõîäèòñÿ â îäíîì èç âíóòðåííèõ ñîñòîÿíèé Q = {q0 , q1 , . . . , qn }. Íà êàæäîì øàãå ãîëîâêà â çàâèñèìîñòè îò ñâîåãî âíóòðåííåãî ñîñòîÿíèÿ è ñèìâîëà â ÿ÷åéêå, êîòîðóþ îíà íàáëþäàåò, èçìåíÿåò ñâîå âíóòðåííåå ñîñòîÿíèå è ñîäåðæèìîå íàáëþäàåìîé ÿ÷åéêè è ìîæåò ñäâèíóòüñÿ íà îäíó ÿ÷åéêó âïðàâî èëè âëåâî, ëèáî îñòàòüñÿ íà ìåñòå. Äàäèì áîëåå ôîðìàëüíîå îïðåäåëåíèå.
Îïðåäåëåíèå 4.1. Ìàøèíà Òüþðèíãà ýòî ñèñòåìà âèäà
M =< Q, Σ, P, q0 , qf >, âêëþ÷àþùàÿ ñëåäóþùèå êîìïîíåíòû: Q = {q0 , q1 , . . . , qn } - âíóòðåííèé àëôàâèò (àëôàâèò ñîñòîÿíèé); Σ = {a0 , a1 , . . . , am−1 } - âíåøíèé àëôàâèò (àëôàâèò ëåíòû); P - ïðîãðàììà ìàøèíû, â êîòîðîé äëÿ êàæäîé ïàðû qi ∈ Q\{qf }, aj ∈ Σ èìååòñÿ 1 Àíàëîãè÷íàÿ
ìîäåëü âû÷èñëåíèé áûëà ïðèìåðíî â òî æå âðåìÿ îïðåäåëåíà Å. Ïîñòîì. Ïîýòîìó èíîãäà òàêèå ìàøèíû íàçûâàþò ìàøèíàìè Òüþðèíãà-Ïîñòà.
4 Ìàøèíû Òüþðèíãà
20
(îäíà!) êîìàíäà âèäà
qi aj → qk al C, qk ∈ Q, al ∈ Σ, C ∈ {Ë, Ï, Í } çàäàåò ñäâèã ãîëîâêè âïðàâî, âëåâî èëè íà ìåñòå; q0 ∈ Q íà÷àëüíîå ñîñòîÿíèå; qf ∈ Q - çàêëþ÷èòåëüíîå ñîñòîÿíèå. Âûäåëèì â àëôàâèòå Σ ñïåöèàëüíûé ïóñòîé ñèìâîë a0 = ∧ è áóäåì ñ÷èòàòü, ÷òî âî âñåõ ÿ÷åéêàõ ëåíòû, êðîìå êîíå÷íîãî èõ ÷èñëà, â íà÷àëüíûé è âî âñå ïîñëåäóþùèå ìîìåíòû íàõîäèòñÿ ïóñòîé ñèìâîë. Áóäåì ãîâîðèòü, ÷òî íåêîòîðûé ñèìâîë ñòèðàåòñÿ, åñëè îí çàìåíÿåòñÿ íà ïóñòîé. Äâà ñëîâà èç Σ∗ áóäåì ñ÷èòàòü ðàâíûìè, åñëè îíè ñîâïàäàþò ïîñëå îòáðàñûâàíèÿ âñåõ ïóñòûõ ñèìâîëîâ ñëåâà è ñïðàâà. Íàïðèìåð, ∧ ∧ ab ∧ c∧ = ∧ab ∧ c = ab ∧ c, íî ab ∧ c 6= abc. Êàê è äëÿ êîíå÷íûõ àâòîìàòîâ, ïðîãðàììó P ìîæíî çàäàâàòü ñ ïîìîùüþ òàáëèöû. ðàçìåðà n × m, ñòðîêè êîòîðîé ñîîòâåòñòâóþò ñîñòîÿíèÿì èç Q, à ñòîëáöû ñèìâîëàì èç âõîäíîãî àëôàâèòà Σ, â êîòîðîé íà ïåðåñå÷åíèè ñòðîêè qi è ñòîëáöà aj ñòîèò òðîéêà qk al C ïðàâàÿ ÷àñòü êîìàíäû qi aj → qk al C .
Îïðåäåëåíèå 4.2. Íàçîâåì êîíôèãóðàöèåé ì.Ò. M â íåêîòîðûé ìîìåíò âðåìåíè ñëîâî K = wë qi aj wï , ãäå wë ∈ Σ∗ - ñëîâî íà ëåíòå ëåâåå òåêóøåãî ïîëîæåíèÿ ãîëîâêè, qi - âíóòðåííåå ñîñòîÿíèå â äàííûé ìîìåíò, aj - ñèìâîë, îáîçðåâàåìûé ãîëîâêîé, wï ∈ Σ∗ - ñëîâî íà ëåíòå ïðàâåå òåêóøåãî ïîëîæåíèÿ ãîëîâêè.
Áóäåì ñ÷èòàòü, ÷òî ñëîâî wë aj wï ñîäåðæèò âñå çíà÷àùèå ñèìâîëû íà ëåíòå. Ïîýòîìó, ñ òî÷íîñòüþ äî îïèñàííîãî âûøå ðàâåíñòâà ñëîâ, êîíôèãóðàöèÿ îïðåäåëåíà îäíîçíà÷íî.  ÷àñòíîñòè, åñëè wë = ε, ò.å. ïóñòî, òî ëåâåå ïîëîæåíèÿ ãîëîâêè âñå ÿ÷åéêè ïóñòû, à åñëè wï = ε, òî ïðàâåå ïîëîæåíèÿ ãîëîâêè âñå ÿ÷åéêè ïóñòû. Íà÷àëüíàÿ êîíôèãóðàöèÿ - ýòî êîíôèãóðàöèÿ âèäà q0 w, ò.å. â íà÷àëüíûé ìîìåíò âðåìåíè ãîëîâêà â ñîñòîÿíèè q0 îáîçðåâàåò ïåðâûé ñèìâîë âõîäíîãî ñëîâà w. Çàêëþ÷èòåëüíàÿ êîíôèãóðàöèÿ - ýòî êîíôèãóðàöèÿ âèäà w1 qf w2 , â êîòîðîé ìàøèíà íàõîäèòñÿ â çàêëþ÷èòåëüíîì ñîñòîÿíèè qf .
Îïðåäåëåíèå 4.3. Ñêàæåì, ÷òî êîíôèãóðàöèÿ K = w1 qi aj w2 ì.Ò. M çà îäèí øàã
(òàêò) ïåðåõîäèò â êîíôèãóðàöèþ K 0 = w10 qk aj 0 w20 (K `M K 0 ), åñëè â ïðîãðàììå èìååòñÿ êîìàíäà qi aj → qk al C è ïðè ýòîì, (à) åñëè Ñ=Í, òî w10 = w1 , w20 = w2 è aj 0 = al ; (á) åñëè Ñ=Ë, òî w1 = w10 a, aj 0 = a, w20 = al w2 (åñëè w1 = ε, òî w10 = ε è aj 0 = ∧); (â) åñëè Ñ=Ï, òî w2 = aw20 , aj 0 = a, w10 = w1 al (åñëè w2 = ε, òî w20 = ε è aj 0 = ∧). Êàê îáû÷íî, ÷åðåç `∗M îáîçíà÷èì ðåôëåêñèâíîå è òðàíçèòèâíîå çàìûêàíèå îòíîøåíèÿ `M , à K `nM K 0 áóäåò îçíà÷àòü, ÷òî êîíôèãóðàöèÿ K çà n øàãîâ ïåðåõîäèò â K 0 . (Åñëè èç êîíòåêñòà ÿñíî, î êàêîé ìàøèíå èäåò ðå÷ü, òî èíäåêñ M áóäåì îïóñêàòü).
4.1 Îñíîâíûå îïðåäåëåíèÿ
21
K : . . . ∧ ∧ 1 0 1 ∧ 0 ∧ ∧ . . . K 0 :. . . ∧ ∧ 1 1 1 ∧ 0 ∧ ∧ . . . @ q3@
q@ 5@
Ðèñ. 1: Âûïîëíåíèå êîìàíäû q3 0 → q5 1Ï
Ïðèìåð 4.1. Íàïðèìåð, ñèòóàöèè, ïðåäñòàâëåííîé íà ðèñ. 1 ñëåâà ñîîòâåòñòâóåò êîíôèãóðàöèÿ K = 1q3 01 ∧ 0. Ïðåäïîëîæèì, ÷òî ïðîãðàììà P ñîäåðæèò êîìàíäó q3 0 → q5 1Ï. Òîãäà ïîñëå âûïîëíåíèÿ ýòîé êîìàíäû K ïåðåéäåò çà îäèí øàã â êîíôèãóðàöèþ K 0 = 11q5 1 ∧ 0, ïîêàçàííóþ íà ýòîì ðèñóíêå ñïðàâà. Ñëåäîâàòåëüíî, K ` K 0 .
Îïðåäåëåíèå 4.4. Âû÷èñëåíèå ì.Ò. M íà âõîäå w - ýòî êîíå÷íàÿ èëè áåñêîíå÷-
íàÿ ïîñëåäîâàòåëüíîñòü êîíôèãóðàöèé K0 ` K1 ` . . . ` Kt ` Kt+1 . . . òàêàÿ, ÷òî K0 = q0 w - íà÷àëüíàÿ êîíôèãóðàöèÿ. Ýòà ïîñëåäîâàòåëüíîñòü êîíå÷íà, êîãäà åå ïîñëåäíÿÿ êîíôèãóðàöèÿ Kn = v1 qf v2 - çàêëþ÷èòåëüíàÿ.  ýòîì ñëó÷àå âû÷èñëåíèå íàçîâåì ðåçóëüòàòèâíûì, à ñëîâî v = v1 v2 - åãî ðåçóëüòàòîì íà âõîäå w (âñåãäà áóäåì ïðåäïîëàãàòü, ÷òî v íå ñîäåðæèò ïóñòûõ ñèìâîëîâ ñëåâà è ñïðàâà).
Îïðåäåëåíèå 4.5. Ñêàæåì, ÷òî ì.Ò. M âû÷èñëÿåò ÷àñòè÷íóþ ñëîâàðíóþ ôóíê-
öèþ f : Σ∗ → Σ∗ , åñëè äëÿ êàæäîãî ñëîâà w èç îáëàñòè îïðåäåëåíèÿ f ñóùåñòâóåò ðåçóëüòàòèâíîå âû÷èñëåíèå M ñ ðåçóëüòàòîì f (w), à åñëè f (w) íå îïðåäåëåíà (f (w) = ∞), òî âû÷èñëåíèå M íà âõîäå w áåñêîíå÷íî. Ñêàæåì, ÷òî äâå ì.Ò. M1 è M2 ýêâèâàëåíòíû, åñëè îíè âû÷èñëÿþò îäèíàêîâûå ôóíêöèè. Äàëåå ìû áóäåì òàêæå ðàññìàòðèâàòü âû÷èñëåíèÿ àðèôìåòè÷åñêèõ ôóíêöèé, ò.å. ôóíêöèé ñ íàòóðàëüíûìè àðãóìåíòàìè, ïðèíèìàþùèõ íàòóðàëüíûå çíà÷åíèÿ. Äëÿ ïðåäñòàâëåíèÿ íàòóðàëüíûõ ÷èñåë èñïîëüçóåì óíàðíîå êîäèðîâàíèå: ÷èñëî n áóäåò ïðåäñòàâëÿòüñÿ êàê ñëîâî èç n ïàëî÷åê |n , à ïîñëåäîâàòåëüíûå àðãóìåíòû áóäåì îòäåëÿòü *.
Îïðåäåëåíèå 4.6. Ñêàæåì, ÷òî ì.Ò. M âû÷èñëÿåò ÷àñòè÷íóþ àðèôìåòè÷åñêóþ
ôóíêöèþ f : Nk → N, åñëè äëÿ ëþáîãî íàáîðà ÷èñåë (x1 , x2 , . . . , xk ), íà êîòîðîì f îïðåäåëåíà, ñóùåñòâóåò ðåçóëüòàòèâíîå âû÷èñëåíèå M íà âõîäå |x1 ∗ |x2 ∗ . . . ∗ |xk ñ ðåçóëüòàòîì |f (x1 ,x2 ,...,xk ) , à åñëè f (x1 , x2 , . . . , xk ) = ∞, òî âû÷èñëåíèå M íà ñîîòâåòñòâóþùåì âõîäå áåñêîíå÷íî. Àíàëîãè÷íîå îïðåäåëåíèå ìîæíî äàòü è äëÿ äðóãèõ ñïîñáîâ êîäèðîâàíèÿ ÷èñåë (äâîè÷íîãî, äåñÿòè÷íîãî è äð.). Íèæå ìû ïîêàæåì, ÷òî êëàññ âû÷èñëèìûõ ôóíêöèé íå çàâèñèò îò âûáîðà îäíîãî èç òàêèõ êîäèðîâàíèé.
4 Ìàøèíû Òüþðèíãà
22
4.2 Òüþðèíãîâî ïðîãðàììèðîâàíèå  ýòîì ðàçäåëå ìû ïðèâåäåì ïðèìåðû âû÷èñëåíèé íà ìàøèíàõ Òüþðèíãà è ðàññìîòðèì íåêîòîðûå îáùèå ïðèåìû, ïîçâîëÿþùèå êîìáèíèðîâàòü ïðîãðàììû ðàçëè÷íûõ ì. Ò. äëÿ ïîëó÷åíèÿ áîëåå ñëîæíûõ âû÷èñëåíèé. Áóäåì ñ÷èòàòü, ÷òî ÿ÷åéêè ëåíòû ì.Ò. çàíóìåðîâàíû îò −∞ äî +∞, ïðè÷åì â íà÷àëüíîé êîíôèãóðàöèè ãîëîâêà íàõîäèòñÿ â 1-îé ÿ÷åéêå:
−4−3−2−1 1 2 3 4 5 . . . ... ∧ ∧ ∧ ∧ a b c ∧ ∧ ... q@0@ Ðèñ. 2: Íóìåðàöèÿ ÿ÷ååê ëåíòû ìàøèíû Òüþðèíãà
Ïðèìåð 4.2. Ôóíêöèÿ f (x) = x + 1 a) Óíàðíîå êîäèðîâàíèå. Ïóñòü ì.Ò. M1 =< {q0 , qf }, {∧, |}, P1 , q0 , qf >, ãäå P1 : q0 | → q0 |Ï, q0 ∧ → qf |Í. ßñíî, ÷òî ì.Ò. M1 ïðîõîäèò ïî ìàññèâó ïàëî÷åê ñëåâà íàïðàâî è çàïèñûâàåò â ïåðâîé ïóñòîé ÿ÷åéêå íîâóþ |. á) Áèíàðíîå êîäèðîâàíèå. Ïóñòü ì.Ò. M01 =< {q0 , q1 , qf }, {∧, 0, 1}, P10 , q0 , qf >, ãäå P10 :
q0 0 → q0 0Ï, q0 1 → q0 1Ï, q0 ∧ → q1 ∧ Ë, q1 0 → qf 1Í, q1 1 → q1 0Ï, q1 ∧ → qf 1Í. Íåòðóäíî âèäåòü, ÷òî ýòà ìàøèíà â ñîñòîÿíèè q0 íàõîäèò ìëàäøèé ðàçðÿä äâîè÷íîãî âõîäà, çàòåì â ñîñòîÿíèè q1 , èäÿ ñïðàâà íàëåâî, çàìåíÿåò åäèíèöû íà íóëè äî òåõ ïîð, ïîêà íå íàõîäèò 0 (èëè ∧) è çàìåíÿåò åãî íà 1. Ñëåäîâàòåëüíî, ì.Ò. M01 âû÷èñëÿåò ôóíêöèþ f (x) = x + 1.
Ïðèìåð 4.3. Êîïèðîâàíèå Ðàññìîòðèì ôóíêöèþ êîïèðîâàíèÿ (äóáëèðîâàíèÿ) ñëîâ â àëôàâèòå Σ : copy(x) = x ∗ x (ìû ïðåäïîëàãàåì, ÷òî ∗ ∈ / Σ).
Äëÿ åå ðåàëèçàöèè èñïîëüçóåì îäèí èç òèïè÷íûõ ïðåìîâ Òüþðèíãîâà ïðîãðàììèðîâàíèÿ - ðàñøèðåíèå àëôàâèòà. Ïóñòü Σ0 = {a0 |a ∈ Σ} è Σ1 = Σ ∪ Σ0 . Ì.Ò. M2 , êîïèðóþùàÿ âõîä, ðàáîòàåò ñëåäóþùèì îáðàçîì: 1) îòìå÷àåò 1-ûé ñèìâîë âõîäà, èäåò íàïðàâî, ñòàâèò * ïîñëå âõîäà è âîçâðàùàåòñÿ â íà÷àëî: q0 a → q1 a0 Ï (a ∈ Σ); q1 a → q1 aÏ (a ∈ Σ\{∧}; q1 ∧ → q2 ∗ Ë;
4.2 Òüþðèíãîâî ïðîãðàììèðîâàíèå
23
q2 a → q2 aË (a ∈ Σ ∪ {∗}); q2 a0 → qa a0 Ï (a ∈ Σ); 2) â ñîñòîÿíèè qa äâèæåòñÿ íàïðàâî è çàïèñûâàåò a â ïåðâóþ ñâîáîäíóþ ÿ÷åéêó: qa b → qa bÏ (b ∈ Σ ∪ {∗}); qa ∧ → q4 aË ; 3) âîçâðàùàåòñÿ â îòìå÷åííóþ ÿ÷åéêó è ïåðåäâèãàåò ìåòêó 0 íà îäíó ÿ÷åéêó âïðàâî, ñíîâà ïåðåõîäÿ â ñîñòîÿíèå q2 : q4 a → q4 aË (a ∈ Σ ∪ {∗}); q4 a0 → q5 aÏ (a ∈ Σ); q5 a → q2 a0 Í (a ∈ Σ); 4) óâèäåâ ñèìâîë * â ñîñòîÿíèè q5 , îñòàíàâëèâàåòñÿ: q5 ∗ → qf ∗ Í. Èç ýòîãî îïèñàíèÿ íåïîñðåäñòâåííî ñëåäóåò, ÷òî q0 x`∗ xqf ∗ x äëÿ ëþáîãî x ∈ Σ∗ .
4.2.1 Ñòàíäàðòíàÿ çàêëþ÷èòåëüíàÿ êîíôèãóðàöèÿ Íàçîâåì çàêëþ÷èòåëüíóþ êîíôèãóðàöèþ ñòàíäàðòíîé, åñëè â íåé ãîëîâêà íàáëþäàåò ïåðâûé çíà÷àùèé ñèìâîë ðåçóëüòàòà, êîòîðûé íàõîäèòñÿ â 1-îé ÿ÷åéêå (ò.å. â òîé æå ÿ÷åéêå, ãäå íà÷èíàëîñü âõîäíîå ñëîâî).
Ëåììà 4.1. Äëÿ âñÿêîé ì.Ò. M ìîæíî ïîñòðîèòü ýêâèâàëåíòíóþ ì.Ò. M0 , ó êîòîðîé âñå çàêëþ÷èòåëüíûå êîíôèãóðàöèè ñòàíäàðòíû.
Äîêàçàòåëüñòâî. Ïóñòü M =< Q, Σ, P, q0 , qf > . Îïðåäåëèì ïî íåé ì.Ò. M0 = < Q0 , Σ0 , P 0 , q00 , qf0 >, êîòîðàÿ óäîâëåòâîðÿåò òðåáîâàíèÿì ëåììû. Ïîëîæèì Σ0 = Σ ∪ {a0 |a ∈ Σ} ∪ {#}, ãäå # - íîâûé ñèìâîë. M0 ðàáîòàåò ñëåäóþùèì îáðàçîì. 1) Îòìå÷àåò ñèìâîë â ïåðâîé ÿ÷åéêå øòðèõîì è ïåðåõîäèò â íà÷àëüíîå ñîñòîÿíèå M : q00 a → q0 a0 Í. 2) Äàëåå ðàáîòàåò êàê M, íî ñîõðàíÿåò øòðèõ â ïåðâîé ÿ÷åéêå è âìåñòî ïóñòîãî ñèìâîëà ∧ çàïèñûâàåò #. Äëÿ ýòîãî äëÿ êàæäîé êîìàíäû qi aj → qk al C èç P â P 0 äîáàâëÿåòñÿ åå äóáëèêàò qi a0j → qk a0l C, â ïðàâûõ ÷àñòÿõ êîìàíä ñèìâîë ∧ âñþäó çàìåíÿåòñÿ íà # è äëÿ êàæäîé êîìàíäû âèäà qi ∧ → qk al C â P 0 äîáàâëÿåòñÿ êîìàíäà qi # → qk al C. Ïîñëå çàâåðøåíèÿ ýòîãî ýòàïà âñå ïîñåùåííûå â ïðîöåññå ðàáîòû ãîëîâêîé M ÿ÷åéêè ñîñòàâëÿåò íåïðåðûâíûé îòðåçîê, íå ñîäåðæàùèé ïóñòûõ ñèìâîëîâ. 3) Äàëåå M0 ñòèðàåò íåíóæíûå ñèìâîëû # ñëåâà è ñïðàâà îò áëîêà ÿ÷ååê, ñîäåðæàùåãî ïåðâóþ ÿ÷åéêó è âñå ÿ÷åéêè ñ ñèìâîëàìè ðåçóëüòàòà, è ïåðåõîäèò â îäíó èç òðåõ ñëåäóþùèõ êîíôèãóðàöèé:
K1 = që #0 # . . . #w∧, K2 = ∧qï w# . . . ##0 , K3 = ∧qí w1 a0 w2 ∧, ãäå w - ðåçóëüòàò ðàáîòû M (ñ çàìåíîé ñèìâîëîâ ∧ âíóòðè w íà #) è w1 aw2 = w. 4) Ñäâèãàåò â íóæíîì íàïðàâëåíèè ðåçóëüòàò, ñîâìåùàÿ åãî íà÷àëî ñ ÿ÷åéêîé, ïîìå÷åííîé øòðèõîì, çàìåíÿåò âñå # âíóòðè w íà ∧, ñíèìàåò øòðèõ â 1-îé ÿ÷åéêå è îñòàíàâëèâàåòñÿ. Íàïðèìåð, äëÿ K1 ýòî äîñòèãàåòñÿ ñ ïîìîùüþ ñëåäóþùèõ êîìàíä (ìû ïðåäïîëàãàåì, ÷òî íè îäíî èç èñïîëüçóåìûõ íèæå ñîñòîÿíèé që , q1 , p, p1 , p2 , p3 , pa , pa0 (a ∈
4 Ìàøèíû Òüþðèíãà
24
Σ ∪ {#}) íå âõîäèò â Q) : à) ïîèñê ëåâîãî êîíöà w: që a → që aÏ (a ∈ {#0 , #}); që a → q1 a0 Ï (a ∈ Σ) (îòìåòèëè ïåðâûé ñèìâîë w), që ∧ → p3 ∧ Ë; (ðåçóëüòàò ïóñò); á) ïîèñê ïðàâîãî êîíöà w: q1 a → q1 aÏ (a ∈ Σ ∪ {#}), q1 ∧ → p ∧ Ë (â ñîñòîÿíèè p íàáëþäàåò ïîñëåäíèé ñèìâîë w); â) ñäâèã ðåçóëüòàòà íà 1 ÿ÷åéêó âëåâî: pa → pa ∧ Ë; pa b → pb aË; pa b0 → pb0 aÏ; pb0 # → p1 b0 Ï; ã) âîçâðàò ê ïðàâîìó êîíöó è ïåðåõîä ê ñëåäóþùåìó ñäâèãó: p1 a → p1 aÏ (a 6= ∧); p1 ∧ → p ∧ Ë; ä) ïðè ñäâèãå äî 1-îé ÿ÷åéêè çàìåíà ñèìâîëîâ # íà ∧ è óäàëåíèå øòðèõà: pa0 #0 → p2 a0 Í; p2 b → p2 bÏ; p2 ∧ → p3 ∧ Ë; p3 # → p3 ∧ Ë; p3 b → p3 bÏ (b 6= #, b 6= a0 ); p3 a0 → qf0 aÍ. Èç ïîñòðîåíèÿ íåïîñðåäñòâåííî ñëåäóåò, ÷òî ì.Ò. M0 óäîâëåòâîðÿåò òðåáîâàíèÿì ëåììû. 2
4.2.2 Îäíîñòîðîííèå ìàøèíû Òüþðèíãà Ìàøèíà Òüþðèíãà M íàçûâàåòñÿ îäíîñòîðîííåé, åñëè â ïðîöåññå âû÷èñëåíèÿ åå ãîëîâêà íèêîãäà íå ñäâèãàåòñÿ ëåâåå íà÷àëüíîé ÿ÷åéêè (ò.å. âñåãäà íàõîäèòñÿ â ÿ÷åéêàõ ñ ïîëîæèòåëüíûìè íîìåðàìè).
Ëåììà 4.2. Äëÿ âñÿêîé ì.Ò. M ìîæíî ïîñòðîèòü ýêâèâàëåíòíóþ îäíîñòîðîííþþ ì.Ò. M0 .
Äîêàçàòåëüñòâî. Ïóñòü M =< Q, Σ, P, q0 , qf > . Áóäåì ñ÷èòàòü (èñïîëüçóÿ ëåììó 1 ), ÷òî M çàâåðøàåò ðàáîòó â ñòàíäàðòíûõ êîíôèãóðàöèÿõ. Òðåáóåìàÿ ì.Ò. M0 =< Q0 , Σ0 , P 0 , q00 , qf0 > áóäåò ìîäåëèðîâàòü ðàáîòó M, èñïîëüçóÿ ìíîãîýòàæíóþ ëåíòó. Ñîäåðæèìîå ÿ÷ååê íà 1-îì (íèæíåì) ýòàæå áóäåò íà êàæäîì òàêòå ñîâïàäàòü ñ ñîäåðæèìûì òåõ æå ÿ÷ååê M, íà 2-îì ýòàæå áóäåò êîïèðîâàòüñÿ ñîäåðæèìîå ëåâîé ïîëóëåíòû: íà íåì â i-îé ÿ÷åéêå M0 áóäåò òîò æå ñèìâîë, ÷òî è â −i-îé ÿ÷åéêå M. Êðîìå òîãî, íà 3-åì ýòàæå â 1-îé ÿ÷åéêå áóäåò ñòîÿòü îòìå÷àþùèé åå ñèìâîë #. Òàêèì îáðàçîì, Σ0 = Σ × Σ × {∧, #} ∪ Σ. Ðàáîòà M0 áóäåò ïðîèñõîäèòü ñëåäóþùèì îáðàçîì. 1) Íà ïåðâîì ýòàïå îòìå÷àåòñÿ 1-ÿ ÿ÷åéêà è ñîäåðæèìîå âõîäà ïåðåïèñûâàåòñÿ íà 1-ûé ýòàæ ëåíòû: òðåõýòàæíîé #
∧
q00 a → p1 ∧a Ï (a ∈ Σ); p1 a → p1 ∧a Ï (a ∈ Σ\{∧}; p1 ∧ → p2 ∧ Ë; ∧ ∧ # # p2 ∧a → p2 ∧a Ë (a ∈ Σ); p2 ∧a → q0 ∧a Ë (a ∈ Σ). 2) Çàòåì M0 ìîäåëèðóåò ðàáîòó M , èñïîëüçóÿ äëÿ ðàáîòû íà 2-îì ýòàæå äóáëèêàòû ñîñòîÿíèé (ñî øòðèõàìè) è êîìàíäû ñî ñäâèãàìè â îáðàòíîì íàïðàâëåíèè. Äëÿ êîìàíäû q a → r b C èç P â P 0 ïîìåñòèì êîìàíäû:
4.2 Òüþðèíãîâî ïðîãðàììèðîâàíèå
∧ c
q
a
∧ → r
c
b
∧ C
è q0
a
c
25
∧ → r0
b
c
Ï Ë C 0 , ãäå C 0 = Í
ïðè ïðè ïðè
C=Ë C=Ï C=Í
äëÿ âñåõ c ∈ Σ. Êðîìå òîãî, äëÿ a = ∧ ñîõðàíèì è ñòàðûå êîìàíäû äëÿ ðàáîòû íà âïåðâûå ïîñåùàåìûõ ÿ÷åéêàõ: ∧ ∧ 0 ∧ q ∧ → r b C è q ∧ → r0 ∧b C 0 . Ñäâèãè M èç 1-îé ÿ÷åéêè íàëåâî â -1-þ è îáðàòíî ìîäåëèðóþòñÿ ïåðåõîäîì ñ îäíîãî 0 ýòàæà íà äðóãîé â 1-îé ÿ÷åéêå M :
q
# c
a
→ r
# c
b
C , ãäå ïðè C = Ë r = r0 , C = Í, à ïðè C 6= Ë r = r,
C =#C # 0 q ac → r cb C, ãäå ïðè C = Ï r = r, C = Í, à ïðè C 6= Ï r = r0 , C = C. 3) Ïîñëå çàâåðøåíèÿ ìîäåëèðîâàíèÿ M ðåçóëüòàò çàïèñàí â íà÷àëüíûõ ÿ÷åéêàõ íà 1-îì ýòàæå. M0 ïåðåâîäèò åãî â ïåðâîíà÷àëüíûé àëôàâèò Σ. c qf ∧ → qf a Ï (a ∈ Σ\{∧}, c ∈ {∧, #} ), qf ∧ → qf0 ∧ Í. a Ïðîâåðêà ïðàâèëüíîñòè ðàáîòû ì.Ò. M0 ïðåäîñòàâëÿåòñÿ ÷èòàòåëþ ( ñì. çàäà÷ó 4.4). 2.
4.2.3
Ïîñëåäîâàòåëüíàÿ è ïàðàëëåëüíàÿ êîìïîçèöèè ìàøèí Òüþðèíãà
Èñïîëüçóÿ âîçìîæíîñòü ìîäåëèðîâàíèÿ ïðîèçâîëüíîé ì.Ò. íà ì.Ò. ñî ñòàíäàðòíûìè çàêëþ÷èòåëüíûìè êîíôèãóðàöèÿìè, ëåãêî óñòàíîâèòü ñïðàâåäëèâîñòü ñëåäóþùåé ëåììû î ïîñëåäîâàòåëüíîé êîìïîçèöèè ìàøèí Òüþðèíãà.
Ëåììà 4.3. (Ïîñëåäîâàòåëüíàÿ êîìïîçèöèÿ) Ïóñòü ì.Ò. M1 âû÷èñëÿåò ôóíêöèþ
f (x), à ì.Ò. M2 - ôóíêöèþ g(x). Òîãäà ñóùåñòâóåò ì.Ò. M, âû÷èñëÿþùàÿ ôóíêöèþ h(x) = f (g(x)). Äîêàçàòåëüñòâî. Äåéñòâèòåëüíî, ïóñòü M1 =< Q1 , Σ1 , P1 , q01 , qf1 >, à M2 =< Q2 , Σ2 , P2 , q02 , qf2 > . Èñïîëüçóÿ ëåììó 4.1, áóäåì ñ÷èòàòü, ÷òî ó M2 çàêëþ÷èòåëüíûå êîíôèãóðàöèè ñòàíäàðòíû. Òîãäà ëåãêî ïðîâåðèòü, ÷òî ôóíêöèÿ h âû÷èñëÿåòñÿ ñëåäóþùåé ì.Ò. M =< Q1 ∪ Q2 , Σ1 ∪ Σ2 , P, q02 , qf1 >, ãäå P = P1 ∪ P2 ∪ {qf2 a → q01 a Í|a ∈ Σ2 }. 2 Ïîêàæåì, ÷òî ðàáîòó äâóõ ì.Ò. ìîæíî êîìáèíèðîâàòü òàê, ÷òîáû â çàêëþ÷èòåëüíîé êîíôèãóðàöèè ñîäåðæàëèñü ðåçóëüòàòû ðàáîòû êàæäîé èç íèõ íàä íåçàâèñèìûìè âõîäàìè.
4 Ìàøèíû Òüþðèíãà
26
Ëåììà 4.4. (Ïàðàëëåëüíàÿ êîìïîçèöèÿ) Ïóñòü ì.Ò. M1 âû÷èñëÿåò ôóíêöèþ f (x),
à ì.Ò. M2 - ôóíêöèþ g(x) è ñèìâîë * íå âõîäèò â àëôàâèò ì.Ò. M1 . Òîãäà ñóùåñòâóåò ì.Ò. M, êîòîðàÿ ïî ëþáîìó âõîäó âèäà x∗y âûäàåò ðåçóëüòàò f (x)∗g(y), ò.å. âû÷èñëÿåò ôóíêöèþ H(x ∗ y) = f (x) ∗ g(y). Äîêàçàòåëüñòâî. Ïóñòü M1 =< Q1 , Σ1 , P1 , q01 , qf1 >, è M2 =< Q2 , Σ2 , P2 , q02 , qf2 > . ì.Ò. èõ óñëîâèÿ. Íå îãðàíè÷èâàÿ îáùíîñòè, áóäåì ñ÷èòàòü, ÷òî ýòè ìàøèíû îäíîñòîðîííèå (ïî Ëåììå 2). Îïðåäåëèì òåïåðü ì.Ò. M =< Q1 ∪ Q2 ∪ Q0 , Σ1 ∪ Σ2 ∪ {∗}, P1 ∪ P2 ∪ P 0 , p0 , pf >, êîòîðàÿ ðàáîòàåò ñëåäóþùèì îáðàçîì. 1) Íà÷àâ â êîíôèãóðàöèè (p0 x ∗ y), íàõîäèò 1-ûé ñèìâîë y è ïåðåõîäèò â êîíôèãóðàöèþ (x ∗ q02 y). 2) Ðàáîòàÿ êàê M2 , âû÷èñëÿåò g(y) è ïåðåõîäèò ïðè ýòîì â êîíôèãóðàöèþ (x ∗ qf2 g(y)). 3) Ïåðåïèñûâàåò ∗x ïîñëå g(y) è ïåðåõîäèò â êîíôèãóðàöèþ g(y) ∗ q01 x). 4) Ðàáîòàÿ êàê M1 , âû÷èñëÿåò f (x) è ïåðåõîäèò ïðè ýòîì â êîíôèãóðàöèþ (g(y) ∗ qf1 f (x). 5) Ìåíÿåò g(y) è f (x) ìåñòàìè è îñòàíàâëèâàåòñÿ. Êîððåêòíîñòü ýòàïîâ 2 è 4 ñëåäóåò èç îäíîñòîðîííîñòè M2 è M1 , à ðåàëèçàöèÿ ýòàïîâ 1, 3 è 5 äîñòàòî÷íî î÷åâèäíà (ñì. çàäà÷ó 4.6).2 Ïîñòðîåííóþ â ýòîé ëåììå ì.Ò. M, ïîëó÷åííóþ â ðåçóëüòàòå ïàðàëëåëüíîé êîìïîçèöèè M1 è M2 , áóäåì îáîçíà÷àòü êàê par∗ (M1 , M2 ). Çäåñü èíäåêñ * óêàçûâàåò ñèìâîë, êîòîðûì îòäåëÿþòñÿ àðãóìåíòû M1 è M2 íà ëåíòå M. Ýòîò ñèìâîë ìîæåò áûòü ëþáûì ñèìâîëîì, íå âõîäÿùèì â àëôàâèò ìàøèíû M1 . Íàïðèìåð, par# (M1 , M2 ) áóäåò îáîçíà÷àòü ïàðàëëåëüíóþ êîìïîçèöèþ ìàøèí M1 è M2 , â êîòîðîé èõ àðãóìåíòû îòäåëåíû ñèìâîëîì #. Êîíñòðóêöèþ ïàðàëëåëüíîé êîìïîçèöèè ìîæíî îáîáùèòü íà ïðîèçâîëüíîå êîíå÷íîå ÷èñëî ìàøèí Òüþðèíãà. Ñëåäñòâèå. Ïóñòü M1 , . . . , Mm ìàøèíû Òüþðèíãà, âû÷èñëÿþùèå ôóíêöèè f1 , . . . , fm , ñîîòâåòñòâåííî. Ïóñòü ñèìâîë * íå âõîäèò â àëôàâèòû ýòèõ ìàøèí. Òîãäà ñóùåñòâóåò ì.Ò. M, ïåðåðàáàòûâàþùàÿ ëþáîé âõîä âèäà x1 ∗ x2 ∗ . . . ∗ xm (xi ∈ Σ∗i , i = 1, . . . , m) â âûõîä f1 (x1 ) ∗ f2 (x2 ) ∗ . . . ∗ fm (xm ). Äåéñòâèòåëüíî, â êà÷åñòâå M ìîæíî âçÿòü ì.Ò., îïðåäåëÿåìóþ âûðàæåíèåì par∗ (M1 , par∗ (M2 , par∗ (M3 , . . . par∗ (Mm−1 , Mm ) . . .))). Áóäåì îáîçíà÷àòü ýòó ìàøèíó Òüþðèíãà êàê par∗ (M1 , M2 , . . . , Mm ).
4.2.4
Âåòâëåíèå (óñëîâíûé îïåðàòîð)
Ìàøèíó Òüþðèíãà Φ áóäåì íàçûâàòü ðàñïîçíàþùåé, åñëè äëÿ íåêîòîðîãî àëôàâèòà Σ è êàæäîãî âõîäà x ∈ Σ∗ , íà êîòîðîì Φ îñòàíàâëèâàåòñÿ, åå ðåçóëüòàò Φ(x) ∈ {0, 1}, ò.å. Φ âû÷èñëÿåò íåêîòîðóþ äâóçíà÷íóþ ôóíêöèþ (âîçìîæíî ÷àñòè÷íóþ) íà ñëîâàõ èç Σ.
4.2 Òüþðèíãîâî ïðîãðàììèðîâàíèå
27
Ëåììà 4.5. Ïóñòü Φ - ðàñïîçíàþùàÿ ì.Ò., ì.Ò. M1 âû÷èñëÿåò ôóíêöèþ f (x), à ì.Ò. M2 - ôóíêöèþ g(x). Òîãäà ñóùåñòâóåò ì.Ò. M, âû÷èñëÿþùàÿ ôóíêöèþ f (x) ïðè Φ(x) = 0 h(x) = g(x) ïðè Φ(x) = 1
Äîêàçàòåëüñòâî. Òðåáóåìàÿ ì.Ò. M âíà÷àëå êîïèðóåò âõîä x è ïîëó÷àåò íà ëåíòå ñëîâî x ∗ x , çàòåì âû÷èñëÿåò ïàðàëëåëüíóþ êîìïîçèöèþ ôóíêöèé Φ(x) è g(x) = x è ïåðåõîäèò â êîíôèãóðàöèþ pΦ(x) ∗ x. Âûáîð ìåæäó f è g ïðîèñõîäèò ïî ñëåäóþùèì êîìàíäàì: p0 → p0 ∧ Ï ; p1 → p1 ∧ Ï; p0 ∗ → q01 ∧ Ï; p1 ∗ → q02 ∧ Ï Êðîìå òîãî, îáåñïå÷èì ïåðåõîä â íîâîå çàêëþ÷èòåëüíîå ñîñòîÿíèå:
qf1 a → qf a Í ;
qf2 a → qf a Í (a ∈ Σ).
2 Òàêèì îáðàçîì, ìû ðåàëèçîâàëè â òåðìèíàõ ìàøèí Òüþðèíãà îáû÷íûé â ÿçûêàõ ïðîãðàììèðîâàíèÿ îïåðàòîð âåòâëåíèÿ:
if Φ(x) = 0 then f (x) else g(x) endif . 4.2.5 Ïîâòîðåíèå (öèêë) Èñïîëüçóÿ êîíñòðóêöèþ äëÿ âåòâëåíèÿ ëåãêî ðåàëèçîâàòü â òåðìèíàõ ìàøèí Òüþðèíãà è îïåðàòîð öèêëà.
Ëåììà 4.6. Ïóñòü Φ - ðàñïîçíàþùàÿ ì.Ò., à ì.Ò. M1 âû÷èñëÿåò ôóíêöèþ f (x). Òîãäà ñóùåñòâóåò ì.Ò. N , âû÷èñëÿþùàÿ ôóíêöèþ, çàäàâàåìóþ âûðàæåíèåì:
g(x) = 0 while Φ(x) = 0 do
x := f (x) enddo0
Äîêàçàòåëüñòâî. Äåéñòâèòåëüíî, ïóñòü ì.Ò. M2 - âû÷èñëÿåò òîæäåñòâåííóþ ôóíêöèþ g(x) = x. Ïîñòðîèì ïî ì.Ò. Φ, M1 è M2 ì.Ò. M, ðåàëèçóþùóþ âåòâëåíèå êàê â ëåììå 4.5. Òîãäà èñêîìàÿ ì.Ò. N ïîëó÷àåòñÿ èç M çàìåíîé êîìàíä qf1 a → qf aH (a ∈ Σ) íà ñîîòâåòñòâóþùèå êîìàíäû qf1 a → q0 aH (a ∈ Σ), îáåñïå÷èâàþùèå çàöèêëèâàíèå.2 Ðåàëèçîâàííûå âûøå îïåðàöèè íàä ìàøèíàìè Òüþðèíãà è âû÷èñëèìûìè ôóíêöèÿìè ïîçâîëÿþò ïîëó÷àòü ïðîãðàììû íîâûõ ì.Ò., èñïîëüçóÿ îáû÷íûå êîíñòðóêöèè ÿçûêà ïðîãðàììèðîâàíèÿ âûñîêîãî óðîâíÿ: ïîñëåäîâàòåëüíóþ è ïàðàëëåëüíóþ êîìïîçèöèþ, âåòâëåíèå è öèêë. Ïóñòü M, M1 , M2 , . . . , Mm , Φ - ìàøèíû Òüþðèíãà. Ïîñëåäîâàòåëüíóþ êîìïîçèöèþ M1 è M2 áóäåì îáîçíà÷àòü M1 ; M2 , ïàðàëëåëüíóþ êîìïîçèöèþ M1 , M2 , . . . , Mm îáîçíà÷àåì êàê parb (M1 , M2 , . . . , Mm ) (çäåñü b ýòî ñèìâîë, ðàçäåëÿþùèé àðãóìåíòû è ðåçóëüòàòû ýòèõ ìàøèí), âåòâëåíèå - if Φ then M1 else M2 endif, öèêë - while Φ do M enddo.
28
4 Ìàøèíû Òüþðèíãà
Ïðèìåð 4.4. Ðàññìîòðèì â êà÷åñòâå ïðèìåðà çàäà÷ó ïåðåâîäà ÷èñåë èç óíàðíîé ñèñòåìû ñ÷èñëåíèÿ â äâîè÷íóþ. Ïóñòü f ub (|n ) = n(2) äëÿ âñåõ n ∈N, ãäå n(2) äâîè÷íàÿ çàïèñü ÷èñëà n.
Ïóñòü M1 - ì.Ò., êîòîðàÿ íà÷àëüíóþ êîíôèãóðàöèþ q0 |n ïåðåâîäèò â êîíôèãóðàöèþ q1 0 ∗ |n ; M2 - ì.Ò., êîòîðàÿ ïðèáàâëÿåò 1 ê äâîè÷íîìó ÷èñëó-àðãóìåíòó ( ñì. ïðèìåð 4.2 íà ñòð. 22); M3 - ì.Ò., êîòîðàÿ âû÷èòàåò 1 èç óíàðíîãî ÷èñëà; Φ ì.Ò., êîòîðàÿ íà àðãóìåíòå âèäà x ∗ |y âûäàåò 0, åñëè ÷èñëî y > 0, è âûäàåò 1 ïðè y = 0 (ò.å. íà àðãóìåíòå x ∗ ∧)); M4 - ì.Ò., êîòîðàÿ ñòèðàåò * â àðãóìåíòå âèäà x∗ è îñòàíàâëèâàåòñÿ. Ðåàëèçàöèÿ êàæäîé èç óêàçàííûõ ì.Ò. î÷åâèäíà. Òåïåðü òðåáóåìàÿ ì.Ò. Mub , âû÷èñëÿþùàÿ f ub , ïîëó÷àåòñÿ êàê M1 ; while Φ do par∗ (M2 , M3 ) enddo ; M4 . Äåéñòâèòåëüíî, ïîñëå ðàáîòû M1 ïîëó÷àåì êîíôèãóðàöèþ q1 0 ∗ |n . Ïðåäïîëîæèì òåïåðü ïî èíäóêöèè, ÷òî ïîñëå i (i < n) èòåðàöèé öèêëà while ïîëó÷àåòñÿ êîíôèãóðàöèÿ q1 i(2) ∗|n−i . Òîãäà íà (i+1)-îé èòåðàöèè öèêëà ïîñëå ïàðàëëåëüíîãî ïðèìåíåíèÿ M2 ê i(2) è M3 ê |n−i ïîëó÷àåì êîíôèãóðàöèþ q1 (i + 1)(2) ∗ |n−i−1 . Ïîýòîìó ïîñëå n èòåðàöèé ïîëó÷èòñÿ êîíôèãóðàöèÿ q1 n(2) ∗ ∧. Íà íåé Φ âûäàñò 1, è öèêë çàâåðøèòñÿ ñ çàïèñüþ n(2) ∗ ∧ íà ëåíòå, èç êîòîðîé M4 ñîòðåò * è îñòàâèò òðåáóåìûé ðåçóëüòàò n(2) . Îòìåòèì, ÷òî èç ïðèâåäåííîãî ïðèìåðà è èç çàäà÷è 4.7(a) ñëåäóåò, ÷òî êëàññ âû÷èñëèìûõ íà ì.Ò. àðèôìåòè÷åñêèõ ôóíêöèé íå çàâèñèò îò âûáîðà óíàðíîãî èëè äâîè÷íîãî êîäèðîâàíèÿ àðãóìåíòîâ è ðåçóëüòàòîâ. Ýòî æå ñïðàâåäëèâî è äëÿ òðîè÷íîé, äåñÿòè÷íîé è äðóãèõ ïîçèöèîííûõ ñèñòåì ñ÷èñëåíèÿ ( ïî÷åìó ?).
4.3 Çàäà÷è Çàäà÷à 4.1. Ïîñòðîéòå ì.Ò. äëÿ ôóíêöèè êîïèðîâàíèÿ, íå óâåëè÷èâàÿ èñõîäíûé àëôàâèò Σ.
Çàäà÷à 4.2. Ïîñòðîéòå ïðîãðàììó ì.Ò., êîòîðàÿ âûïîëíÿëà áû ïåðåíîñ íåïóñòî-
ãî ñëîâà â çàäàííîå ìåñòî ëåíòû, ò.å. äëÿ ëþáîãî ñëîâà w ∈ (Σ\{∧})∗ è n > 0 âûïîëíÿëà ïðåîáðàçîâàíèå êîíôèãóðàöèé: q1 w ∧n # `∗ ∧n q2 #w .
Çàäà÷à 4.3. Äîñòðîéòå ïðîãðàììó ì.Ò. M0 èç ëåììû 4.1 íà ñòð. 23 íà ýòàïàõ 3 è 4.
Çàäà÷à 4.4. Äîêàæèòå, ÷òî îäíîñòîðîííÿÿ ì.Ò. M0 , ïîñòðîåííàÿ â ëåììå 4.2 íà ñòð. 24 êîððåêòíî ìîäåëèðóåò èñõîäíóþ ì.Ò. M.
Çàäà÷à 4.5. Äðóãîé, ïî ñðàâíåíèþ ñ êîíñòðóêöèåé ëåììû 4.2, ïîäõîä ê ìîäåëèðî-
âàíèþ äâóõñòîðîííåé ëåíòû íà îäíîñòîðîííåé çàêëþ÷àåòñÿ â òîì, ÷òîáû ñîäåðæèìîå ïðàâîé ïîëóëåíòû M õðàíèòü â ÷åòíûõ ÿ÷åéêàõ M0 , à ñîäåðæèìîå ëåâîé
4.3 Çàäà÷è
29
ïîëóëåíòû - â íå÷åòíûõ, ïîìåñòèâ â 1-þ ÿ÷åéêó ñïåöèàëüíûé ìàðêåð. Ïîñòðîéòå ïðîãðàììó, ðåàëèçóþùóþ ýòîò ïîäõîä (åå äîñòîèíñòâî - óâåëè÷åíèå àëôàâèòà ëåíòû âñåãî íà 1 ñèìâîë).
Çàäà÷à 4.6. Äîñòðîéòå ïðîãðàììó ì.Ò. M èç ëåììû 4.4 íà ýòàïàõ 1, 3 è 5. Çàäà÷à 4.7. Ïîñòðîèòü ïðîãðàììû ìàøèí Òüþðèíãà, âû÷èñëÿþùèõ ñëåäóþùèå
ôóíêöèè. à) Ïåðåâîä èç äâîè÷íîé ñèñòåìû â óíàðíóþ: f bu (n(2) ) = |n . á) Ñëîæåíèå è âû÷èòàíèå â äâîè÷íîé ñèñòåìå: sum(n∗m) = n+m è sub(n∗m) = ˙ ˙ ñîâïàäàåò ñ - ïðè n ≥ m è n−m ˙ = 0 ïðè m > n). n−m, (− â) Óìíîæåíèå â äâîè÷íîé ñèñòåìå: mul(n ∗ m) = n × m. ( Ðåàëèçóéòå àëãîðèòì óìíîæåíèÿ â ñòîëáèê.) ã) Âîçâåäåíèå â ñòåïåíü: exp(n ∗ m) = nm . √ ä) Èçâëå÷åíèå êâàäðàòíîãî êîðíÿ: sqr(n) = b nc. å) Ëîãàðèôìèðîâàíèå: log(n) = blog2 nc. n c (m 6= 0). æ) Äåëåíèå: div(n ∗ m) = b m ç) Îñòàòîê îò äåëåíèÿ: rest(n ∗ m) = n mod m. n x1 è) Ôóíêöèÿ âûáîðà àðãóìåíòà: Im (| ∗ |x2 ∗ . . . ∗ |xn ) = |xm (1 ≤ m ≤ n).
Çàäà÷à 4.8. Èñïîëüçóÿ ìàøèíû Òüþðèíãà èç ïðåäûäóùåé çàäà÷è, ïîñòðîèòü ïðîãðàììû ìàøèí Òüþðèíãà, âû÷èñëÿþùèõ ñëåäóþùèå ôóíêöèè. 2 3 xy , åñëè x < y à) f1 (x, y) = b(x + y)/2c, â ïðîòèâíîì ñëó÷àå á) f2 (x, y)
√ b x c, = 2(x +y),
åñëè x + 1 ≥ y â ïðîòèâíîì ñëó÷àå
blog2 (1 + b xy c) c, xy,
â) f3 (x, y)
=
ã) f (x, y)
√ [ x ], = (x mod y),
åñëè x > 2y â ïðîòèâíîì ñëó÷àå
åñëè 2x ≥ y â ïðîòèâíîì ñëó÷àå
Çàäà÷à 4.9. Äîêàæèòå, ÷òî âñÿêóþ àðèôìåòè÷åñêóþ ôóíêöèþ f (x), âû÷èñëèìóþ íà íåêîòîðîé ì. Ò. M , ìîæíî òàêæå âû÷èñëèòü íà ì. Ò. M 0 , , àëôàâèò ëåíòû êîòîðîé ñîäåðæèò ëèøü äâà ñèìâîëà ∧ è | . (Óêàçàíèå: èñïîëüçóéòå äëÿ ìîäåëèðîâàíèÿ îäíîãî ñèìâîëà M áëîê èç íåñêîëüêèõ ïîäðÿä èäóùèõ ÿ÷ååê, ñîäåðæàùèõ åãî êîä â àëôàâèòå {∧, |}) è çàìåíèòå êàæäóþ êîìàíäó M ãðóïïîé êîìàíä, îáðàáàòûâàþùèõ ñîîòâåòñòâóþùèé áëîê ÿ÷ååê).
30
5 Ìàøèíû Òüþðèíãà, ÷.ð.ô. è ñòðóêòóðèðîâàííûå ïðîîãðàììû
Çàäà÷à 4.10. Ïîñòðîèòü ìàøèíó Òüþðèíãà, îïðåäåëÿþùóþ ïî ñëîâó x â àëôàâèòå {1, 2} ñèììåòðè÷íî ëè îíî, ò. å. âû÷èñëÿþùóþ ôóíêöèþ: 1, åñëè ñëîâî x ñèììåòðè÷íî f (x) = 2, â ïðîòèâíîì ñëó÷àå
Çàäà÷à 4.11. Ïîñòðîèòü ìàøèíó Òüþðèíãà, ñðàâíèâàþùóþ äâà ñëîâà x = x1 x2 . . . xn
è y = y1 y2 . . . ym â àëôàâèòå {1, 2, 3} ëåêñèêîãðàôè÷åñêè: x ≺ y ⇔ ∃i ≤ n[(x1 = y1 ) & (x2 = y2 ) & . . . (xi−1 = yi−1 ) & (xi < yi )] èëè äëÿ íåêîòîðîãî íåïóñòîãî ñëîâà x0 âûïîëíåíî y = xx0 . Ýòà ìàøèíà Òüþðèíãà äîëæíà âû÷èñëÿòü ôóíêöèþ: 1, åñëè x ≺ y 2, åñëè x = y f (x, y) = 3, åñëè y ≺ x
5 Ìàøèíû Òüþðèíãà, ÷.ð.ô. è ñòðóêòóðèðîâàííûå ïðîîãðàììû  ýòîì ðàçäåëå ìû óñòàíîâèì, ÷òî êëàññû ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé, ôóíêöèé, âû÷èñëèìûõ ñòðóêòóðèðîâàííûìè ïðîãðàììàìè, è ôóíêöèé, âû÷èñëèìûõ ìàøèíàìè Òüþðèíãà, ñîâïàäàþò. Íàïîìíèì, ÷òî â òåîðåìå 3.1 íà ñòð. 11 ìû óæå ïîêàçàëè, ÷òî êàæäàÿ ÷.ð.ô. âû÷èñëèìà íåêîòîðîé ñòðóêòóðèðîâàííîé ïðîãðàììîé.
5.1 Âû÷èñëèìîñòü ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé ïî Òüþðèíãó Òåîðåìà 5.1. Äëÿ âñÿêîé ÷.ð.ô. f ñóùåñòâóåò ì.Ò. Mf , âû÷èñëÿþùàÿ ôóíêöèþ
f.
Äîêàçàòåëüñòâî. Äîêàçàòåëüñòâî ïðîâåäåì èíäóêöèåé ïî îïðåäåëåíèþ ÷àñòè÷íî ðåêóðñèâíîé ôóíêöèè f. Áàçèñ. Âû÷èñëèìîñòü ïðîñòåéøèõ ôóíêöèé ìàøèíàìè Òüþðèíãà î÷åâèäíà. Èíäóêöèîííûé øàã. Ïîêàæåì, ÷òî îïåðàòîðû ñóïåðïîçèöèè, ïðèìèòèâíîé ðåêóðñèè è ìèíèìèçàöèè ñîõðàíÿþò âû÷èñëèìîñòü ïî Òüþðèíãó. Âñå èñïîëüçóåìûå ì.Ò. áóäåì ïðåäïîëàãàòü îäíîñòîðîííèìè ñî ñòàíäàðòíûìè çàêëþ÷èòåëüíûìè êîíôèãóðàöèÿìè. n - ÷.ð.ô., âû÷èñëèìûå íà ì.Ò. MF , Mf1 , . . . , Mfn , Ñóïåðïîçèöèÿ. Ïóñòü F m è f1n , . . . , fm n ñîîòâåòñòâåííî. Ïóñòü ôóíêöèÿ G ïîëó÷åíà èç íèõ ñ ïîìîùüþ ñóïåðïîçèöèè: Gn = n ]. Òîãäà ì.Ò. MG , âû÷èñëÿþùàÿ G, ðàáîòàåò ñëåäóþùèì îáðàçîì: [F m ; f1n , . . . , fm 1) m ðàç êîïèðóåò âõîä |x1 ∗ . . . ∗ |xn , îòäåëÿÿ îäíó êîïèþ îò äðóãîé ñèìâîëîì #; 2) íà ïîëó÷åííîì ñëîâå âèäà |x1 ∗ . . . ∗ |xn # . . . #|x1 ∗ . . . ∗ |xn çàïóñêàåò ïàðàëëåëüíóþ
5.1 Âû÷èñëèìîñòü ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé ïî Òüþðèíãó
31
êîìïîçèöèþ ìàøèí Mf1 , . . . , Mfn è ïîëó÷àåò êîíôèãóðàöèþ âèäà |y1 # . . . #|yn , ãäå yi = fi (x1 , . . . , xn ) (i ∈ [1, m]). 3) çàìåíÿåò âñå ñèìâîëû # íà *; 4) çàòåì çàïóñêàåò ïðîãðàììó ì.Ò. MF íà ïîëó÷èâøåìñÿ ïîñëå ýòàïà 3) âõîäå âèäà |y1 ∗ . . . ∗ |yn , è âû÷èñëÿåò òðåáóåìîå çíà÷åíèå G(x1 , . . . , xn ) = F (y1 , . . . , ym ). Åñëè îáîçíà÷èòü ì.Ò., âûïîëíÿþùóþ êîïèðîâàíèå íà ýòàïå (1), ÷åðåç Êîïm , à ì.Ò., âûïîëíÿþùóþ çàìåíó # íà * íà ýòàïå (3), ÷åðåç Çàì# ∗ , òî òðåáóåìóþ äëÿ ñóïåðïîçèöèè ì.Ò. MG ìîæíî ïðåäñòàâèòü êàê Êîïm ; par# (Mf1 , . . . , Mfn ); Çàì# ∗ ; MF .
Ïðèìèòèâíàÿ ðåêóðñèÿ. Ïóñòü ôóíêöèÿ F n+1 (x1 , . . . , xn , y) ïîëó÷åíà ñ ïîìîùüþ îïåðàòîðà ïðèìèòèâíîé ðåêóðñèè èç ôóíêöèé g n (x1 , . . . , xn ) è f n+2 (x1 , . . . , xn , y, z), êîòîðûå âû÷èñëèìû íà ì.Ò. Mg è Mf . Îïðåäåëèì âñïîìîãàòåëüíûå ì.Ò.: - M1 , èñïîëüçóÿ Mg , ñòðîèò ïî âõîäó âèäà |x1 ∗ . . . ∗ |xn ∗ |y êîíôèãóðàöèþ íà ëåíòå |y ∗ |x1 ∗ . . . ∗ |xn ∗ ∧ ∗ |g(x1 ,...,xn ) ; - M2 , èñïîëüçóÿ Mf , ñòðîèò ïî âõîäó âèäà |y ∗ |x1 ∗ . . . ∗ |xn ∗ |u ∗ |z êîíôèãóðàöèþ |y ∗ |x1 ∗ . . . ∗ |xn ∗ |u+1 ∗ |f (x1 ,...,xn ,u,z) ; - M3 íà âõîäå âèäà |y ∗ |x1 ∗ . . . ∗ |xn ∗ |u ∗ |z âûäàåò â êà÷åñòâå ðåçóëüòàòà |z ; - Φ íà âõîäå âèäà |y ∗ |x1 ∗ . . . ∗ |xn ∗ |u ∗ |z ïðîâåðÿåò óñëîâèå y 6= u. Ïîñòðîåíèå êàæäîé èç óêàçàííûõ ì.Ò. äîñòàòî÷íî î÷åâèäíî. Èç íèõ ìîæíî ïîëó÷èòü, èñïîëüçóÿ îïðåäåëåííûå â ïðåäûäóùåì ðàçäåëå êîíñòðóêöèè ÿçûêà ïðîãðàììèðîâàíèÿ äëÿ ìàøèí Òüþðèíãà, òðåáóåìóþ ì.Ò. MF :
M1 ; while Φ do M2 enddo; M3 Ìèíèìèçàöèÿ. Ïóñòü f n (x1 , . . . , xn ) = µy[g n+1 (x1 , . . . , xn , y) = 0] è ì.Ò. Mg âû÷èñëÿåò ôóíêöèþ g n+1 . Îïðåäåëèì ñëåäóþùèå âñïîìîãàòåëüíûå ì.Ò.: N1 ïðèïèñûâàåò àðãóìåíò 0 êî âõîäó, ò.å. âõîä âèäà |x1 ∗ . . . ∗ |xn ïåðåâîäèò â êîíôèãóðàöèþ íà ëåíòå |x1 ∗ . . . ∗ |xn ∗ ∧ (íàïîìíèì, ÷òî ïðè óíàðíîì êîäèðîâàíèè 0 ñîîòâåòñòâóåò ïóñòîé ñèìâîë). N2 êîïèðóåò ñâîé âõîä ñ ðàçäåëèòåëåì #, ò.å. ïî ëþáîìó âõîäó w âûäàåò w#w. ×åðåç E îáîçíà÷èì ì.Ò., êîòîðàÿ íè÷åãî íå äåëàåò. Ïóñòü N3 = par# (E, Mg ), ò.å. âõîä âèäà |x1 ∗ . . . ∗ |xn ∗ |y #|x1 ∗ . . . ∗ |xn ∗ |y ìàøèíà N3 ïåðåðàáàòûâàåò, èñïîëüçóÿ Mg , â |x1 ∗ . . . ∗ |xn ∗ |y #|z , ãäå z = g(x1 , . . . , xn , y) Φ íà âõîäå âèäà w#v ïðîâåðÿåò íåïóñòîòó v (ò.å. óñëîâèå v > 0). ( 0, åñëè v 6= ∧ Φ(w#v) = 1 åñëè v = ∧ Òàêèì îáðàçîì, ïðè v = g(x1 , . . . , xn , y) ìàøèíà Φ ïðîâåðÿåò óñëîâèå g(x1 , . . . , xn , y) 6= 0.
32
5 Ìàøèíû Òüþðèíãà, ÷.ð.ô. è ñòðóêòóðèðîâàííûå ïðîîãðàììû
N4 ïî âõîäó âèäà |x1 ∗ . . . ∗ |xn ∗ |y #w ñòèðàåò #w è ïðèáàâëÿåò ê y åäèíèöó, ò.å. âûäàåò ðåçóëüòàò: |x1 ∗ . . . ∗ |xn ∗ |y+1 . Íàêîíåö, N5 ïî âõîäó |x1 ∗. . .∗|xn ∗|y #w âûäàåò |y , ñòèðàÿ íåíóæíûå áëîêè ñèìâîëîâ. ßñíî, ÷òî êàæäàÿ èç ïåðå÷èñëåííûõ ì.Ò. N1 , N2 , N3 , N4 , N5 è Φ ëåãêî ðåàëèçóåìà. Ïîñòðîèì òåïåðü ñ èõ ïîìîùüþ ñëåäóþùóþ ì.Ò. Mf : N1 ; N2 ; N3 ; while Φ do N4 ; N2 ; N3 enddo; N5 . Èç ýòîãî îïðåäåëåíèÿ íåïîñðåäñòâåííî ñëåäóåò, ÷òî Mf âû÷èñëÿåò ôóíêöèþ f n (x1 , . . . , xn ), çàäàííóþ ñ ïîìîùüþ îïåðàòîðà ìèíèìèçàöèè. 2
5.2 Ìîäåëèðîâàíèå ñòðóêòóðèðîâàííûõ ïðîãðàìì ìàøèíàìè Òüþðèíãà Íà ïåðâûé âçãëÿä ìîãëî ïîêàçàòüñÿ, ÷òî ìàøèíû Òüþðèíãà ñ èõ ïðèìèòèâíûìè ýëåìåíòàðíûìè äåéñòâèÿìè ÿâëÿþòñÿ áîëåå ñëàáûìè âû÷èñëèòåëüíûìè ìîäåëÿìè, ÷åì ñòðóêòóðèðîâàííûå ïðîãðàììû. Íî ïîñëå òîãî, êàê ìû íàó÷èëèñü ðåàëèçîâûâàòü ñ èõ ïîìîùüþ îïåðàòîðû âûñîêîãî óðîâíÿ óñëîâèÿ è öèêëû, óæå íå óäèâèòåëüíî, ÷òî îíè ïîçâîëÿþò âû÷èñëèòü íå ìåíüøå, ÷åì ñòðóêòóðèðîâàííûå ïðîãðàììû.
Òåîðåìà 5.2. Âñÿêàÿ àðèôìåòè÷åñêàÿ ôóíêöèÿ, âû÷èñëèìàÿ íåêîòîðîé ñòðóêòóðèðîâàííîé ïðîãðàììîé, ìîæåò áûòü âû÷èñëåíà òàêæå íåêîòîðîé ìàøèíîé Òüþðèíãà.
Äîêàçàòåëüñòâî. Ïóñòü ñòðóêòóðèðîâàííàÿ ïðîãðàììà Π âû÷èñëÿåò àðèôìåòè÷åñêóþ ôóíêöèþ f (x1 , . . . , xn ). Íå îãðàíè÷èâàÿ îáùíîñòè, áóäåì ñ÷èòàòü, ÷òî V arΠ = {x1 , . . . , xn , xn+1 , . . . , xm } è ÷òî ðåçóëüòèðóþùåé ïåðåìåííîé ÿâëÿåòñÿ x1 . Ì.Ò. MΠ , ìîäåëèðóþùàÿ Π, áóäåò èìåòü m-ýòàæíóþ ëåíòó ñ àëôàâèòîì Σ = {∧, |, ∗} ∪ {∧, |}m . Îáîçíà÷èì êîíôèãóðàöèþ ëåíòû MΠ , â êîòîðîé íà i-îì ýòàæå, íà÷èíàÿ ñ 1-îé ÿ÷åéêè çàïèñàíî ñëåâà íàïðàâî ki ñèìâîëîâ '|' (i = 1, 2, . . . , m), à äàëåå èäóò ïóñòûøêè ∧, êàê (k1 , k2 , . . . , km ). Òîãäà ñîñòîÿíèþ σ : V arΠ → N ïðîãðàììû Π áóäåò ñîîòâåòñòâîâàòü êîíôèãóðàöèÿ ëåíòû MΠ : Kσ = (σ(x1 ), σ(x2 ), . . . , σ(xm )). MΠ ïîëó÷àåòñÿ ñ ïîìîùüþ êîíñòðóêöèé ïîñëåäîâàòåëüíîé êîìïîçèöèè, óñëîâíîãî îïåðàòîðà è öèêëà èç ïðîñòûõ ìàøèí Òüþðèíãà, ðåàëèçóþùèõ ýëåìåíòàðíûå ïðèñâàèâàíèÿ è óñëîâèÿ ñòðóêòóðèðîâàííûõ ïðîãðàìì. Êîìàíäó xi := 0 (i = 1, . . . , m) ïðîãðàììû Π ðåàëèçóåò ì.Ò. M0i , îáíóëÿþùàÿ i-ûé ýòàæ M , ò.å. ïåðåâîäÿùàÿ ëþáóþ êîíôèãóðàöèþ (k1 , . . . , ki−1 , ki , ki+1 . . . , km ) â êîíôèãóðàöèþ (k1 , . . . , ki−1 , 0, ki+1 , . . . , km ). Êîìàíäó xi := xi + 1 (i = 1, . . . , m) i , äîáàâëÿþùàÿ îäèí ñèìâîë '|' ñïðàâà íà i-îì ïðîãðàììû Π ðåàëèçóåò ì.Ò. M+1 ýòàæå, ò.å. ïåðåâîäÿùàÿ ëþáóþ êîíôèãóðàöèþ (k1 , . . . , ki−1 , ki , ki+1 . . . , km ) â êîíôèãóðàöèþ (k1 , . . . , ki−1 , ki + 1, ki+1 , . . . , km ). Êîìàíäó xi := xj (i, j = 1, . . . , m) ïðîãðàììû Π ðåàëèçóåò ì.Ò. M ij , ïåðåïèñûâàþùàÿ ñîäåðæèìîå j -ãî ýòàæà íà i-ûé,
5.3 ×àñòè÷íàÿ ðåêóðñèâíîñòü ôóíêöèé, âû÷èñëèìûõ ïî Òüþðèíãó
33
ò.å. ïåðåâîäÿùàÿ ëþáóþ êîíôèãóðàöèþ (k1 , . . . , ki , . . . , kj , . . . , km ) â êîíôèãóðàöèþ (k1 , . . . , kj , . . . , kj , . . . , km ). Óñëîâèå xi = xj ðåàëèçóåòñÿ ìàøèíîé Φij = , êîòîðàÿ, ðàáîòàÿ íà êîíôèãóðàöèè (k1 , . . . , ki , . . . , kj , . . . , km ) âûäàåò 0, åñëè ki = kj , è 1 â ïðîòèâíîì ñëó÷àå. Óñëîâèå xi < xj ðåàëèçóåòñÿ ìàøèíîé Φij < , êîòîðàÿ, ðàáîòàÿ íà êîíôèãóðàöèè (k1 , . . . , ki , . . . , kj , . . . , km ) âûäàåò 0, åñëè ki < kj , è 1 â ïðîòèâíîì ñëó÷àå. Äàëåå ïî èíäóêöèè: ïóñòü Π1 è Π2 ñòðóêòóðèðîâàííûå ïðîãðàììû, äëÿ êîòîðûõ ïîñòðîåíû ñîîòâåòñòâóþùèå ìàøèíû Òüþðèíãà MΠ1 è MΠ2 , à Φ íåêîòîðîå óñëîâèå, ðåàëèçóåìîå ì.Ò. MΦ . Òîãäà ïðîãðàììà Π = Π1 ; Π2 ðåàëèçóåòñÿ ìàøèíîé MΠ = MΠ1 ; MΠ2 ïðîãðàììà Π = åñëè Φ òî Π1 èíà÷å Π2 êîíåö ðåàëèçóåòñÿ ìàøèíîé MΠ = if MΦ then MΠ1 else MΠ2 endif , à ïðîãðàììà Π = ïîêà Φ äåëàé Π1 âñå ðåàëèçóåòñÿ ìàøèíîé MΠ = while MΦ do MΠ1 enddo. Èñïîëüçóÿ äîêàçàííûå âûøå ñâîéñòâà êîíñòðóêöèé ìàøèí Òüþðèíãà, íåòðóäíî ïðîâåðèòü ïî èíäóêöèè ñëåäóþùåå Óòâåðæäåíèå 1. Ïóñòü ì.Ò. MΠ ðåàëèçóåò â ñîîòâåòñòâèè ñ ïðèâåäåííûìè îïðåäåëåíèÿìè ñòðóêòóðèðîâàííóþ ïðîãðàììó Π. Òîãäà äëÿ ëþáîãî ñîñòîÿíèÿ σ ïðîãðàììû Π Π(σ) = σ1 òîãäà è òîëüêî òîãäà, êîãäà ì.Ò MΠ , íà÷àâ ðàáîòó â êîíôèãóðàöèè Kσ çàâåðøèò åå â êîíôèãóðàöèè Kσ1 . Òåïåðü äëÿ çàâåðøåíèÿ äîêàçàòåëüñòâà òåîðåìû äîñòàòî÷íî âçÿòü â êà÷åñòâå ðåçóëüòèðóþùåé ñëåäóþùóþ ì.Ò.: M = Mstart ; MΠ ; Mend , ãäå ì.Ò. Mstart ïåðåâîäèò îäíîýòàæíóþ íà÷àëüíóþ êîíôèãóðàöèþ |x1 ∗ |x2 ∗ . . . |xn â m-ýòàæíóþ êîíôèãóðàöèþ (x1 , x2 , . . . , xn , 0, . . . , 0), à ì.Ò. Mend çàêëþ÷èòåëüíóþ m-ýòàæíóþ êîíôèãóðàöèþ (x1 , 0, . . . , 0) ïåðåâîäèò â îäíîýòàæíóþ çàêëþ÷èòåëüíóþ êîíôèãóðàöèþ |x1 .2
5.3 ×àñòè÷íàÿ ðåêóðñèâíîñòü ôóíêöèé, âû÷èñëèìûõ ïî Òüþðèíãó  ýòîì ïàðàãðàôå ïîêàæåì, êàê ìîæíî ïðîìîäåëèðîâàòü ðàáîòó ìàøèíû Òüþðèíãà, èñïîëüçóÿ ÷àñòè÷íî ðåêóðñèâíûå îïðåäåëåíèÿ.
Òåîðåìà 5.3. Âñÿêàÿ àðèôìåòè÷åñêàÿ ôóíêöèÿ, âû÷èñëèìàÿ íà ìàøèíàõ Òüþðèíãà, ÿâëÿåòñÿ ÷àñòè÷íî ðåêóðñèâíîé ôóíêöèåé.
Äîêàçàòåëüñòâî ýòîé òåîðåìû äîïîëíèòåëüíûé ìàòåðèàë, êîòîðûé ìîæíî ïðè ïåðâîì ÷òåíèè îïóñòèòü. Äîêàçàòåëüñòâî Ïóñòü ì.Ò. M =< Q, Σ, P, q0 , qf > âû÷èñëÿåò ôóíêöèþ f (x1 , . . . , xn ). Ïóñòü òàêæå Q = {q0 , q1 , . . . , qk−1 }, qf = q1 è Σ = {a0 = ∧, a1 , . . . , aR−1 = |}. Ïðåäïîëîæèì òàêæå, íå îãðàíè÷èâàÿ îáùíîñòè, ÷òî M íèêîãäà íå ïèøåò ïóñòîé ñèìâîë ∧ (êàê ïåðåñòðîèòü ïðîãðàììó ïðîèçâîëüíîé ì.Ò., ÷òîáû îíà óäîâëåòâîðÿëà ýòîìó óñëîâèþ ?). Îïðåäåëèì êîäèðîâàíèå ýëåìåíòîâ êîíôèãóðàöèé M öåëûìè ÷èñëàìè. Êîäîì ñèìâîëà aj ∈ Σ áóäåò ÷èñëî j, êîäîì ñîñòîÿíèÿ qi - ÷èñëî i. Ïóñòü êîíôèãóðàöèÿ M èìååò âèä K = (w1 , qi , aj , w2 ), ãäå w1 = aim aim−1 . . . ai0 è w2 = aj0 aj1 . . . ajp . Òîãäà w1 è w2 ìîæíî
34
5 Ìàøèíû Òüþðèíãà, ÷.ð.ô. è ñòðóêòóðèðîâàííûå ïðîîãðàììû
ðàññìàòðèâàòü êàê ÷èñëà â R-è÷íîé ñèñòåìå ñ÷èñëåíèÿ, ÷èòàåìûå â ïðîòèâîïîëîæíûõ íàïðàâëåíèÿõ (èç íàøèõ ïðåäïîëîæåíèé ñëåäóåò, ÷òî im 6= 0 ïðè m > 0 è jp 6= 0 ïðè p > 0) : p m X X l code1 (w1 ) = R il code2 (w2 ) = Rl jl . l=0
l=0
Íàïðèìåð, åñëè Σ = {∧, ∗, |}, òî äëÿ êîíôèãóðàöèè K = (| ∗ ∗, q3 , |, ∗||) èìååì code1 (w1 ) = 30 1 + 31 1 + 32 2 = 22 = [211]3 = 22 è code2 (w2 ) = 30 1 + 31 2 + 32 2 = 19 = [221]3 = 25. Ïî ïðîãðàììå P îïðåäåëèì ñëåäóþùèå òàáëè÷íûå ôóíêöèè, êîäèðóþùèå åå êîìàíäû: A(i, j) − êîä ñèìâîëà, êîòîðûé ïèøåò M, êîãäà îíà â ñîñòîÿíèè qi âèäèò ñèìâîë aj ; Q(i, j) − êîä ñîñòîÿíèÿ, â êîòîðîå ïåðåõîäèò M, êîãäà îíà â ñîñòîÿíèè qi âèäèò ñèìâîë aj ; C(i, j) − êîä íàïðàâëåíèÿ ñäâèãà ãîëîâêè M, êîãäà îíà â ñîñòîÿíèè qi âèäèò ñèìâîë aj (0 - íà ìåñòå, 1 - âïðàâî, 2 - âëåâî). Ïóñòü ïðè i ≥ k èëè j ≥ R ýòè ôóíêöèè ïðèíèìàþò êàêîå-íèáóäü ôèêñèðîâàííîå çíà÷åíèå (íàïðèìåð, 0). Òîãäà ïî ëåììå 1 âñå îíè ïðèìèòèâíî ðåêóðñèâíû. Îïðåäåëèì ôóíêöèè, êîòîðûå ïî êîäàì êîìïîíåíò îäíîé êîíôèãóðàöèè K = (w1 , qi , aj , w2 ) âû÷èñëÿþò êîäû êîìïîíåíò ñëåäóþùåé êîíôèãóðàöèè K 0 = (w10 , qm , ap , w20 ). lf (code1 (w1 ), i, j, code2 (w2 )) = code1 (w10 ); rt(code1 (w1 ), i, j, code2 (w2 )) = code2 (w20 ); q(code1 (w1 ), i, j, code2 (w2 )) = m; a(code1 (w1 ), i, j, code2 (w2 )) = p. Ïîêàæåì, ÷òî âñå ýòè ôóíêöèè ïðèìèòèâíî ðåêóðñèâíû. Äëÿ q ýòî ñëåäóåò èç òîãî, ÷òî äëÿ ëþáûõ i, j q(l, i, j, m) = Q(i, j). Îïðåäåëåíèÿ îñòàëüíûõ òðåõ ôóíêöèé çàâèñÿò îò ñäâèãà. Ïðè C(i, j) = 0 èìååì lf (l, i, j, r) = l, rt(l, i, j, r) = r, a(l, i, j, r) = A(i, j). Åñëè C(i, j) = 2, òî lf (l, i, j, r) = l : R, rt(l, i, j, r) = rR + A(i, j), a(l, i, j, r) = rm(R, l). Åñëè æå C(i, j) = 1, òî lf (l, i, j, r) = lR + A(i, j), rt(l, i, j, r) = r : R, a(l, i, j, r) = rm(R, r). Îáúåäèíÿÿ ýòè ñëó÷àè ïîëó÷àåì, ÷òî
lf (l, i, j, r) = eq(C(i, j), 0)l + eq(C(i, j), 2)(l : R) + eq(C(i, j), 1)(lR + A(i, j)). Àíàëîãè÷íûå ïðåäñòàâëåíèÿ ñïðàâåäëèâû è äëÿ ôóíêöèé rt(l, i, j, r) è a(l, i, j, r). Ñëåäîâàòåëüíî, âñå ýòè ôóíêöèè ïðèìèòèâíî ðåêóðñèâíû. Ïóñòü èç äàííîé êîíôèãóðàöèè K ÷åðåç t òàêòîâ ïîëó÷àåòñÿ êîíôèãóðàöèÿ K t . Îïðåäåëèì êîäû êîìïîíåíò K t êàê ôóíêöèè îò êîìïîíåíò K è t : A(l, i, j, r, 0) = j, Q(l, i, j, r, 0) = i, Lf (l, i, j, r, 0) = l, Rt(l, i, j, r, 0) = r, A(l, i, j, r, t + 1) = a(Lf (l, i, j, r, t), Q(l, i, j, r, t), A(l, i, j, r, t), Rt(l, i, j, r, t)), Q(l, i, j, r, t + 1) = q(Lf (l, i, j, r, t), Q(l, i, j, r, t), A(l, i, j, r, t), Rt(l, i, j, r, t)), Lf (l, i, j, r, t + 1) = lf (Lf (l, i, j, r, t), Q(l, i, j, r, t), A(l, i, j, r, t), Rt(l, i, j, r, t)), Rt(l, i, j, r, t + 1) = rt(Lf (l, i, j, r, t), Q(l, i, j, r, t), A(l, i, j, r, t), Rt(l, i, j, r, t)). Ýòî îïðåäåëåíèå çàäàåò ôóíêöèè A(4) , Q(4) , Lf (4) , Rt(4) ñ ïîìîùüþ ñîâìåñòíîé ðåêóðñèè. Ñëåäîâàòåëüíî, ïî ëåììå 4 îíè ïðèìèòèâíî ðåêóðñèâíû.
5.4 Çàäà÷è
35
Ïóñòü ì.Ò. M âû÷èñëÿåò ôóíêöèþ f (x), (ò.å. n = 1). Òîãäà äëÿ íà÷àëüíîé êîíôèãóðàöèè Kx = K 0 = (∧, q0 , |, |x−1 ) code1 (w1 ) = 0, code(q0 ) = 0, code(|) = R − 1, code2 (w2 ) = (R − ¯ t) = Q(0, 0, R−1, Rx−1 −1) è 1)Rx−2 +(R−1)Rx−3 +. . .+(R−1)R0 = Rx−1 −1. Ïîëîæèì Q(x, x−1 ¯ ¯ t) = 1) çàäàåò ÷èñëî øàãîâ Rt(x, t) = Q(0, 0, R−1, R −1). Òîãäà ôóíêöèÿ τ (x) = µt(Q(x, äî ïåðåõîäà M â çàêëþ÷èòåëüíîå ñîñòîÿíèå íà âõîäå x. Ýòà ôóíêöèÿ, î÷åâèäíî, ÷àñòè÷íî ˆ ¯ ðåêóðñèâíà. Òîãäà ôóíêöèÿ Rt(x) = Rt(x, τ (x)) çàäàåò êîä ïðàâîé ÷àñòè çàêëþ÷èòåëüíîé f (x)−1 êîíôèãóðàöèè, èìåþùèé âèä R − 1. Îòñþäà ïîëó÷àåì, ÷òî
ˆ f (x) = 1 + logR (Rt(x)) + 1) = 1 + logR (Rt(0, 0, R − 1, Rx−1 ) + 1), è ñëåäîâàòåëüíî, ôóíêöèÿ f (x) ÷àñòè÷íî ðåêóðñèâíà.
5.4 Çàäà÷è Çàäà÷à 5.1. Äîêàæèòå, ÷òî ìàøèíû Òüþðèíãà MF è Mf , îïðåäåëåííûå â äîêàçàòåëü-
ñòâå òåîðåìû 5.1 íà ñòð. 30 äëÿ ïðèìèòèâíîé ðåêóðñèè è ìèíèìèçàöèè äåéñòâèòåëüíî ïðàâèëüíî ðåàëèçóþò óêàçàííûå îïåðàòîðû. i , M ij , Φij , Φij , M Çàäà÷à 5.2. Ïîñòðîéòå ìàøèíû Òüþðèíãà M0i , M+1 start è Mend , < =
îïðåäåëåííûå â äîêàçàòåëüñòâå òåîðåìû 5.2 íà ñòð. 32.
Çàäà÷à 5.3. Äîêàæèòå óòâåðæäåíèå 1, ñôîðìóëèðîâàííîå â äîêàçàòåëüñòâå òåîðåìû 5.2
íà ñòð. 32, èñïîëüçóÿ èíäóêöèþ ïî ïîñòðîåíèþ ïðîãðàììû Π è ñîîòâåòñòâóþùåé ì.Ò. MΠ .
Çàäà÷à 5.4.  äîêàçàòåëüñòâå òåîðåìû 5.3 íà ñòð. 33 ðàññìîòðåí ñëó÷àé ôóíêöèé îò îäíîãî àðãóìåíòà f (x) . Ïîêàæèòå, ÷òî òåîðåìà âåðíà è â îáùåì ñëó÷àå äëÿ ôóíêöèé f (x1 , . . . , xn ) ïðè ëþáîì n.
6 Òåçèñ Òüþðèíãà-×åð÷à è àëãîðèòìè÷åñêè íåðàçðåøèìûå ïðîáëåìû Ìû ðàññìîòðåëè òðè ìàòåìàòè÷åñêèå ìîäåëè äëÿ îïèñàíèÿ àëãîðèòìîâ è âû÷èñëÿåìûõ èìè ôóíêöèé, îòðàæàþùèå ðàçëè÷íûå àñïåêòû è ïðåäñòàâëåíèÿ î ðàáîòå àáñòðàêòíîãî âû÷èñëèòåëÿ. Èç òåîðåì 3.1 íà ñòð. 11,5.2 íà ñòð. 32 è 5.3 íà ñòð. 33 íåïîñðåäñòâåííî ïîëó÷àåì Ñëåäñòâèå. Êëàññû ôóíêöèé, âû÷èñëèìûõ ñ ïîìîùüþ ñòðóêòóðèðîâàííûõ ïðîãðàìì, ìàøèí Òüþðèíãà è ÷àñòè÷íî ðåêóðñèâíûõ îïèñàíèé, ñîâïàäàþò. Åñòåñòâåííî âîçíèêàåò âîïðîñ î òîì, íàñêîëüêî îáùèì ÿâëÿåòñÿ ýòîò ðåçóëüòàò? Âåðíî ëè, ÷òî êàæäûé àëãîðèòì ìîæåò áûòü çàäàí îäíèì èç ðàññìîòðåííûõ ñïîñîáîâ? Íà ýòè âîïðîñû òåîðèÿ àëãîðèòìîâ îòâå÷àåò ñëåäóþùåé ãèïîòåçîé. Òåçèñ Òüþðèíãà-×åð÷à: Âñÿêèé àëãîðèòì ìîæåò áûòü çàäàí â âèäå ñîîòâåòñòâóþùåé ìàøèíû Òüþðèíãà èëè ÷àñòè÷íî ðåêóðñèâíîãî îïðåäåëåíèÿ, à êëàññ
36
6 Òåçèñ Òüþðèíãà-×åð÷à è àëãîðèòìè÷åñêè íåðàçðåøèìûå ïðîáëåìû
âû÷èñëèìûõ ôóíêöèé ñîâïàäàåò ñ êëàññîì ÷àñòè÷íî ðåêóðñèâíûõ ôóíêöèé è ñ êëàññîì ôóíêöèé, âû÷èñëèìûõ íà ìàøèíàõ Òüþðèíãà. Çíà÷åíèå ýòîãî òåçèñà çàêëþ÷àåòñÿ â òîì, ÷òî îí óòî÷íÿåò îáùåå íåôîðìàëüíîå îïðåäåëåíèÿ âñÿêîãî àëãîðèòìà è âû÷èñëèìîé ôóíêöèè ÷åðåç òî÷íûå ôîðìàëüíûå ïîíÿòèÿ ìàøèíû Òüþðèíãà, ÷àñòè÷íî ðåêóðñèâíîãî îïðåäåëåíèÿ è ñîîòâåòñòâóþùèõ èì êëàññîâ ôóíêöèé. Ïîñëå ýòîãî ìîæíî îñìûñëåííî ñòàâèòü âîïðîñ î ñóùåñòâîâàíèè èëè íåñóùåñòâîâàíèè àëãîðèòìà, ðåøàþùåãî òîò èëè èíîé êëàññ çàäà÷. Òåïåðü ýòîò âîïðîñ ñëåäóåò ïîíèìàòü êàê âîïðîñ î î ñóùåñòâîâàíèè èëè íåñóùåñòâîâàíèè ñîîòâåòñòâóþùåé ìàøèíû Òüþðèíãà èëè (÷òî ýêâèâàëåíòíî) ñòðóêòóðèðîâàííîé ïðîãðàììû èëè ÷àñòè÷íî ðåêóðñèâíîãî îïðåäåëåíèÿ ñîîòâåòñòâóþùåé ôóíêöèè. Ìîæíî ëè äîêàçàòü ýòîò òåçèñ êàê òåîðåìó? Íåò, ïîñêîëüêó â åãî ôîðìóëèðîâêå ðå÷ü èäåò î íåòî÷íûõ ïîíÿòèÿõ âñÿêîãî àëãîðèòìà è âû÷èñëèìîé ôóíêöèè, êîòîðûå íå ìîãóò áûòü îáúåêòàìè ìàòåìàòè÷åñêèõ ðàññóæäåíèé. Íà ÷åì æå òîãäà îñíîâàíà óâåðåííîñòü â ñïðàâåäëèâîñòè òåçèñà Òüþðèíãà-×åð÷à?  ïåðâóþ î÷åðåäü íà îïûòå. Âñå èçâåñòíûå àëãîðèòìû, ïðèäóìàííûå çà ìíîãèå âåêà ìàòåìàòèêàìè ìîãóò áûòü çàäàíû ñ ïîìîùüþ ìàøèí Òüþðèíãà. Äëÿ âñåõ ìíîãî÷èñëåííûõ ìîäåëåé àëãîðèòìîâ, ïîÿâèâøèõñÿ çà ïîñëåäíèå 70 ëåò (íåêîòîðûå èç íèõ ìû óïîìèíàëè â íà÷àëå ëåêöèé), áûëà äîêàçàíà èõ ðàâíîñèëüíîñòü ìàøèíàì Òüþðèíãà.  êà÷åñòâå äîâîäîâ â ïîëüçó òåçèñà Òüþðèíãà-×åð÷à ìîæíî òàêæå ðàññìàòðèâàòü çàìêíóòîñòü êëàññà ìàøèí Òüþðèíãà è ÷.ð.ô. îòíîñèòåëüíî ìíîãî÷èñëåííûõ åñòåñòâåííûõ îïåðàöèé íàä àëãîðèòìàìè è ôóíêöèÿìè. Îòìåòèì òàêæå, ÷òî òåçèñ Òüþðèíãà-×åð÷à îáðàùåí è â áóäóùåå: îí ïðåäïîëàãàåò, ÷òî êàêèå áû íîâûå ôîðìàëüíûå îïðåäåëåíèÿ àëãîðèòìîâ íå áûëè ïðåäëîæåíû (à òàêîâûìè, íàïðèìåð, ÿâëÿþòñÿ íîâûå ÿçûêè ïðîãðàììèðîâàíèÿ) âñå îíè íå âûéäóò èç êëàññà àëãîðèòìîâ, çàäàâàåìûõ ìàøèíàìè Òüþðèíãà. ×òîáû ïîêàçàòü ñâÿçü òåîðèè àëãîðèòìîâ ñ ïðàêòè÷åñêèì ïðîãðàììèðîâàíèåì ðàññìîòðèì íåêîòîðûå àëãîðèòìè÷ñêèå ïðîáëåìû, ñâÿçàííûå ñî ñòðóêòóðèðîâàííûìè ïðîãðàììàìè. Çàôèêñèðóåì êîíå÷íûé àëôàâèò A = {a0 , a1 , . . . , am−1 }, âêëþ÷àþùèé âñå ñèìâîëû ëàòèíñêîãî àëôàâèòà, öèôðû, çíàê ïðîáåëà (ïóñòü ýòî áóäåò a0 ), çíàêè ';', '=', '<', ':=' , à òàêæå çíàêè-êëþ÷åâûå ñëîâà åñëè , òî , êîíåö , ïîêà , äåëàé è âñå. Òîãäà êàæäàÿ ñòðóêòóðèðîâàííàÿ ïðîãðàììà Π ïðåäñòàâëÿåò ñîáîé íåêîòîðîå ñëîâî wΠ = ai1 ai2 . . . aik â àëôàâèòå A. Íå îãðàíè÷èâàÿ îáùíîñòè, áóäåì ñ÷èòàòü, ÷òî ýòî ñëîâî íà÷èíàåòñÿ íå ñ ïðîáåëà, ò.å. i1 > 0. Òîãäà ñëîâî wΠ îäíîçíà÷íî îïðåäåëÿåò íàPk k−j òóðàëüíîå ÷èñëî nΠ , m-è÷íîé çàïèñüþ êîòîðîãî îíî ÿâëÿåòñÿ, ò.å. nΠ = j=1 ij m . Íàçîâåì ýòî ÷èñëî íîìåðîì ïðîãðàììû Π. Ïî òåêñòó ïðîãðàììû Π åå íîìåð nΠ îïðåäåëÿåòñÿ îäíîçíà÷íî. Ðàññìîòðèì òåïåðü îáðàòíîå ñîîòâåòñòâèå. Êîíå÷íî, íå êàæäîå ÷èñëî ÿâëÿåòñÿ íîìåðîì íåêîòîðîé ñòðóêòóðèðîâàííîé ïðîãðàììû. Ïîýòîìó ñîïîñòàâèì êàæäîìó ÷èñëó n ∈ N ñòðóêòóðèðîâàííóþ ïðîãðàììó Πn ñëåäóþùèì îáðàçîì: åñëè n = nΠ äëÿ íåêîòîðîé ïðîãðàììû Π, òî Πn = Π, èíà÷å, ò.å. êîãäà n íå ÿâëÿåòñÿ åñòåñòâåííûì íîìåðîì íèêàêîé ïðîãðàììû, ñîïîñòàâèì åìó â êà÷åñòâå
37
Πn íåêîòîðóþ íèêîãäà íå îñòàíàâëèâàþùóþñÿ ïðîãðàììó P (íàïðèìåð, ïðîãðàììó Π5 (1) : x1 := x1 ; ïîêà x1 = x1 äåëàé x1 := x1 âñå èç ïðèìåðà 2.5 íà ñòð. 6). Ïðîáëåìà ñàìîïðèìåíèìîñòè çàêëþ÷àåòñÿ â ïðîâåðêå äëÿ êàæäîé ïðîãðàììû Π ñ âõîäíîé ïåðåìåííîé x è âûõîäíîé ïåðåìåííîé y òîãî, îñòàíîâèòñÿ ëè Π íà ñîáñòâåííîì íîìåðå nΠ , ò.å â âû÷èñëåíèè âñþäó îïðåäåëåííîé ôóíêöèè ( 1, åñëè ΦΠx ,y (nΠx ) < ∞ Fs (x) = 0 â ïðîòèâíîì ñëó÷àå
Òåîðåìà 6.1. Ïðîáëåìà ñàìîïðèìåíèìîñòè àëãîðèòìè÷åñêè íåðàçðåøèìà, ò.å. íå ñóùåñòâóåò ñòðóêòóðèðîâàííîé ïðîãðàììû, âû÷èñëÿþùåé ôóíêöèþ Fs (x).
Äîêàçàòåëüñòâî îò ïðîòèâíîãî. Ïðåäïîëîæèì, ÷òî ñóùåñòâóåò ïðîãðàììà P , âû÷èñëÿþùàÿ ôóíêöèþ Fs (x). Áåç îãðàíè÷åíèÿ îáùíîñòè, ìîæíî ñ÷èòàòü, ÷òî åå âûõîäíàÿ ïåðåìåííàÿ åñòü y (ïî÷åìó?) è ïîýòîìó ΦP,y (x) = Fs (x) äëÿ âñåõ x. Ïóñòü ïåðåìåííàÿ z íå âõîäèò â P . Ðàññìîòðèì ñëåäóþùóþ ïðîãðàììó P 0 : P ; z := 0; åñëè z < y òî Π5 (1) èíà÷å y := z êîíåö. Ëåãêî ïðîâåðèòü, ÷òî åñëè P íà âõîäå x âûäàåò ðåçóëüòàò y = 1, òî P 0 íà ýòîì âõîäå íå îñòàíàâëèâàåòñÿ, à åñëè P âûäàåò ðåçóëüòàò y = 0, òî P 0 îñòàíàâëèâàåòñÿ ( è òîæå âûäàåò 0). Ïóñòü n0 = nP 0 íîìåð ïðîãðàììû P 0 . ×åìó òîãäà ðàâíî çíà÷åíèå ΦP,y (n0 )? Åñëè îíî ðàâíî 1, òî íà âõîäå x = n0 ïðîãðàììà P 0 íå îñòàíîâèòñÿ, ò.å. ΦP 0 ,y (n0 ) = ∞, íî òîãäà Fs (n0 ) = 0 6= ΦP,y (n0 ). Åñëè æå ΦP,y (n0 ) = 0, òî P 0 íà âõîäå x = n0 îñòàíàâëèâàåòñÿ ñ ðåçóëüòàòîì 0, ò.å. ΦP 0 ,y (n0 ) < ∞. Íî òîãäà Fs (n0 ) = 1 6= ΦP,y (n0 ) = 0. Âî âñåõ ñëó÷àÿõ ïîëó÷èëè, ÷òî Fs 6= ΦP,y è, ñëåäîâàòåëüíî, ïðåäïîëîæåíèå î ñóùåñòâîâàíèè ïðîãðàììû äëÿ âû÷èñëåíèÿ ôóíêöèè Fs íåâåðíî. Çàìåòèì, ÷òî íà ñàìîì äåëå ìû äîêàçàëè îòñóòñòâèå ñòðóêòóðèðîâàííîé ïðîãðàììû äëÿ âû÷èñëåíèÿ ôóíêöèè Fs . Íî òåçèñ Òüþðèíãà-×åð÷à è ýêâèâàëåíòíîñòü ñòðóêòóðèðîâàííûõ ïðîãðàìì ìàøèíàì Òüþðèíãà è ÷.ð.ô. ïîçâîëÿþò ñäåëàòü âûâîä îá àëãîðèòìè÷åñêîé íåðàçðåøèìîñòè ðàññìàòðèâàåìîé ïðîáëåìû. Ïðîáëåìà ñàìîïðèìåíèìîñòè ìîæåò ïîêàçàòüñÿ íå î÷åíü èíòåðåñíîé ñ ïðàêòè÷åñêîé (ïðîãðàììèñòñêîé) òî÷êè çðåíèÿ. Íî îêàçûâàåòñÿ, ÷òî åå ìîæíî èñïîëüçîâàòü äëÿ äîêàçàòåëüñòâà àëãîðèòìè÷åñêîé íåðàçðåøèìîñòè ìíîãèõ äðóãèõ àëãîðèòìè÷åñêèõ ïðîáëåì, áîëåå òåñíî ñâÿçàííûõ ñ ïðàêòèêîé ïðîãðàììèðîâàíèÿ. 1. Ïðîáëåìà îñòàíîâà: ïî ïðîèçâîëüíîé ñòðóêòóðèðîâàííîé ïðîãðàììå Π îïðåäåëèòü çàâåðøèòñÿ ëè âû÷èñëåíèå Π íà âõîäå 0, ò.å âû÷èñëèòü âñþäó îïðåäåëåííóþ ôóíêöèþ 1, åñëè ΦΠn ,y (0) < ∞ Fh0 (n) = 0 â ïðîòèâíîì ñëó÷àå  áîëåå îáùåì âèäå ïðîáëåìà îñòàíîâà ñîñòîèò â âû÷èñëåíèè ñëåäóþùåé ôóíêöèè: 1, åñëè ΦΠn ,y (a) < ∞ Fh (n, a) = 0 â ïðîòèâíîì ñëó÷àå
38
6 Òåçèñ Òüþðèíãà-×åð÷à è àëãîðèòìè÷åñêè íåðàçðåøèìûå ïðîáëåìû
Èç ýòîãî îïðåäåëåíèÿ ñëåäóåò, ÷òî ïðîãðàììà Πn îñòàíàâëèâàåòñÿ íà âõîäå a òîãäà è òîëüêî òîãäà, êîãäà Fh (n, a) = 1. 2. Ïðîáëåìà òîòàëüíîñòè: ïî ïðîèçâîëüíîé ñòðóêòóðèðîâàííîé ïðîãðàììå Π îïðåäåëèòü çàâåðøàåò ëè îíà ðàáîòó ïðè âñåõ çíà÷åíèÿõ âõîäíîé ïåðåìåííîé, ò.å âû÷èñëèòü âñþäó îïðåäåëåííóþ ôóíêöèþ 1, åñëè äëÿ âñåõ a ΦΠn ,y (a) < ∞ Ft (n) = 0 â ïðîòèâíîì ñëó÷àå 3. Ïðîáëåìà ýêâèâàëåíòíîñòè: ïî ïðîèçâîëüíûì äâóì ñòðóêòóðèðîâàííûì ïðîãðàììàì Π è Π0 îïðåäåëèòü ýêâèâàëåíòíû ëè îíè, ò.å âû÷èñëÿþò ëè îíè îäíó è òó æå ôóíêöèþ: 1, åñëè äëÿ âñåõ a ΦΠn ,y (a) = ΦΠm ,y (a) Feq (n, m) = 0 â ïðîòèâíîì ñëó÷àå 4. Ïðîáëåìû îïòèìèçàöèè òåêñòà ïðîãðàììû. Îäíà èç âîçìîæíûõ îïòèìèçàöèé (òåêñòà) ïðîãðàììû ñîñòîèò â óäàëåíèè èç íåå îïåðàòîðîâ ïðèñâàèâàíèÿ, êîòîðûå íèêîãäà íå ðàáîòàþò, à äðóãàÿ â çàìåíå óñëîâíûõ îïåðàòîðîâ âèäà åñëè ϕ òî Π1 èíà÷å Π2 êîíåö, íà Π1 â ñëó÷àå, êîãäà óñëîâèå ϕ èñòèííî íà ëþáûõ âõîäíûõ äàííûõ, è íà Π2 , åñëè îíî íà ëþáîì âõîäå ëîæíî. Îïðåäåëèì ñîîòâåòñòâóþùèå ýòèì îïòèìèçàöèÿì ôóíêöèè: 1, åñëè ñóùåñòâóåò âõîä a, ïðè ðàáîòå íà êîòîðîì â ïðîãðàììå Πn ñðàáàòûâàåò m-ûé ïî ñ÷åòó Fopt1 (n, m) = îïåðàòîð ïðèñâàèâàíèÿ 0 â ïðîòèâíîì ñëó÷àå Èç ýòîãî îïðåäåëåíèÿ ñëåäóåò, ÷òî ïðè Fopt1 (n, m) = 0 ïðîãðàììó Πn ìîæíî îïòèìèçèðîâàòü, óäàëèâ èç íåå m-ûé îïåðàòîð ïðèñâàèâàíèÿ. Íàçîâåì çàäà÷ó âû÷èñëåíèÿ ôóíêöèè Fopt1 (n, m) ïðîáëåìîé ëèøíåãî ïðèñâàèâàíèÿ . 1, åñëè ñóùåñòâóåò âõîä a, íà êîòîðîì ïðè íåêîòîðîì ñðàáàòûâàíèè m-ãî ïî ñ÷åòó óñëîâíîãî îïåðàòîðà èç Fopt2 (n, m) = ïðîãðàììû Πn åãî óñëîâèå èñòèííî 0 â ïðîòèâíîì ñëó÷àå ßñíî, ÷òî ïðè Fopt2 (n, m) = 0 ïðîãðàììó Πn ìîæíî îïòèìèçèðîâàòü, çàìåíèâ åå m-ûé óñëîâíûé îïåðàòîð åãî âòîðîé àëüòåðíàòèâîé. Íàçîâåì çàäà÷ó âû÷èñëåíèÿ ôóíêöèè Fopt2 (n, m) ïðîáëåìîé ëèøíåãî óñëîâèÿ . Çàìåòèì, ÷òî ïðîáëåìà ñàìîïðèìåíèìîñòè è âñå ïðîáëåìû, ïåðå÷èñëåííûå â ïï. 1-4 âûøå, ñâÿçàíû ñ âû÷èñëåíèåì ôóíêöèé, ïðèíèìàþùèõ äâà çíà÷åíèÿ 0 è 1. Ýòè
39 ôóíêöèè ÿâëÿÿþòñÿ õàðàêòåðèñòè÷åñêèìè ôóíêöèÿìè ñîîòâåòñòâóþùèõ ìíîæåñòâ. Íàïðèìåð, Fh0 (n) ÿâëÿåòñÿ õàðàêòåðèñòè÷åñêîé ôóíêöèåé ìíîæåñòâà íîìåðîâ ïðîãðàìì, îñòàíàâëèâàþùèõñÿ íà âõîäå 0. Íàïîìíèì, ÷òî äëÿ ìíîæåñòâà A ⊆ Nk åãî õàðàêòåðèñòè÷åñêàÿ ôóíêöèÿ ckA îïðåäåëÿåòñÿ ñëåäóþùèì îáðàçîì:
ckA (x1 , . . . , xk )
=
1, 0
åñëè (x1 , . . . , xk ) ∈ A â ïðîòèâíîì ñëó÷àå
Íà ìíîæåñòâà ïåðåíîñèòñÿ ïîíÿòèÿ ðàçðåøèìîñòè è íåðàçðåøèìîñòè.
Îïðåäåëåíèå 6.1. Ìíîæåñòâî A ⊆ Nk íàçûâàåòñÿ ðàçðåøèìûì (èëè ðåêóðñèâíûì), åñëè åãî õàðàêòåðèñòè÷åñêàÿ ôóíêöèÿ ckA âû÷èñëèìà, ò.å. ÿâëÿåòñÿ îáùåðåêóðñèâíîé ôóíêöèåé, â ïðîòèâíîì ñëó÷àå, îíî (è ñâÿçàííàÿ ñ íèì ïðîáëåìà) íåðàçðåøèìî.
Èñïîëüçóÿ ýòî îïðåäåëåíèå, òåîðåìó 6.1 íà ñòð. 37 ìîæíî ïåðåôîðìóëèðîâàòü òàê: Ìíîæåñòâî íîìåðîâ ïðîãðàìì, îñòàíîâëèâàþùèõñÿ íà ñîáñòâåííîì íîìåðå, Ms = {n | ΦΠn ,y (n) < ∞} íåðàçðåøèìî. Îáû÷íî äîêàçàòåëüñòâà íåðàçðåøèìîñòè ïðîáëåì èñïîëüçóþò ìåòîä ñâåäåíèÿ. Íåôîðìàëüíî åãî èäåþ ìîæíî ñôîðìóëèðîâàòü ñëåäóþùèì îáðàçîì: Åñëè ðåøåíèå íåêîòîðîé íåðàçðåøèìîé ïðîáëåìû A ìîæíî ïîëó÷èòü, èñïîëüçóÿ ðåøåíèå ïðîáëåìû B , òî òîãäà ïðîáëåìà B òîæå íåðàçðåøèìà. Îïðåäåëèì îòíîøåíèå ñâîäèìîñòè áîëåå ôîðìàëüíî. Íàïîìíèì, ÷òî íóìåðàöèîííûå ôóíêöèè ïîçâîëÿþò âìåñòî íàáîðîâ (âåêòîðîâ, n-îê) öåëûõ ÷èñåë ðàññìàòðèâàòü èõ íîìåðà. Äëÿ ìíîæåñòâà B ⊆ Nr îáîçíà÷èì ÷åðåç cr (B) ìíîæåñòâî íîìåðîâ âõîäÿùèõ â B íàáîðîâ: cr (B) = {cr (a1 , . . . , ar ) | (a1 , . . . , ar ) ∈ B} (ïðè r = 1, ðàçóìååòñÿ, c1 (B) = B ).
Îïðåäåëåíèå 6.2. Ìíîæåñòâî (ïðîáëåìà) A ⊆ Nk ñâîäèòñÿ ê ìíîæåñòâó (ïðîáëåìå) B ⊆ Nr , åñëè ñóùåñòâóåò îáùåðåêóðñèâíàÿ ôóíêöèÿ f : Nk → Nr òàêàÿ, ÷òî (x1 , . . . , xk ) ∈ A ⇔ f (x1 , . . . , xk ) ∈ cr (B).  ýòîì ñëó÷àå áóäåì ïèñàòü A ≤m B ïîñðåäñòâîì f .
Ñîäåðæàòåëüíî, A ñâîäèòñÿ ê B ïîñðåäñòâîì f îçíà÷àåò, ÷òî äëÿ âûÿñíåíèÿ òîãî âõîäèò ëè x â A, ìîæíî ýôôåêòèâíî ïðåîáðàçîâàòü x â òàêèå âõîäíûå äàííûå y = f (x) ïðîáëåìû B , ÷òî ïðè y ∈ B èìååì x ∈ A, à åñëè y ∈ / B , òî è x ∈ / A. Êàê ìû óæå îòìå÷àëè, äîêàçàòåëüñòâî íåðàçðåøèìîñòè ìîæíî îñíîâûâàòü íà ñëåäóþùåì óòâåðæäåíèè.
Ëåììà 6.1. Åñëè A ñâîäèòñÿ ê B è ïðîáëåìà A íåðàçðåøèìà, òî è ïðîáëåìà B íåðàçðåøèìà.
40
6 Òåçèñ Òüþðèíãà-×åð÷à è àëãîðèòìè÷åñêè íåðàçðåøèìûå ïðîáëåìû
Äîêàçàòåëüñòâî. Ïóñòü A ≤m B ïîñðåäñòâîì f . Òîãäà èç îïðåäåëåíèÿ ñâîäèìîñòè ñëåäóåò, ÷òî äëÿ âñåõ x èìååò ìåñòî ðàâåíñòâî cA (x) = cB (f (x)). Ïîýòîìó, åñëè áû B áûëà ðàçðåøèìà, òî åå õàðàêòåðèñòè÷åñêàÿ ôóíêöèÿ cB áûëà áû îáùåðåêóðñèâíà è cA òàêæå áûëà áû îáùåðåêóðñèâíà. Íî ýòî ïðîòèâîðå÷èò íåðàçðåøèìîñòè ïðîáëåìû A.
Òåîðåìà 6.2. Âñå ïðîáëåìû, ïåðå÷èñëåííûå âûøå â ïóíêòàõ 1-4 ÿâëÿþòñÿ àëãîðèòìè÷åñêè íåðàçðåøèìûìè.
Äîêàçàòåëüñòâî. Íàì ïîòðåáóþòñÿ ñëåäóþùèå âñïîìîãàòåëüíûå ïðîãðàììû Πx:=n : x := 0; x := x + 1; . . . ; x := x + 1 ( ïðèñâàèâàèå x := x + 1 ïîâòîðÿåòñÿ n ðàç). Ïîíÿòíî, ÷òî äëÿ ëþáîãî íà÷àëüíîãî ñîñòîÿíèÿ σ ïîñëå âûïîëíåíèÿ Πx:=n èìååì Πx:=n (σ)(x) = n. 1) Äîêàæåì íåðàçðåøèìîñòü ïðîáëåìû îñòàíîâà: ïî ïðîèçâîëüíîé ñòðóêòóðèðîâàííîé ïðîãðàììå Π îïðåäåëèòü çàâåðøèòñÿ ëè âû÷èñëåíèå Π íà âõîäå 0. Ïóñòü Mh0 = {n | ΦΠn ,y (0) < ∞}. Äîêàæåì, ÷òî ìíîæåñòâî íîìåðîâ ñàìîïðèìåíèìûõ ïðîãðàìì Ms ñâîäèòñÿ ê Mh0 . Ïóñòü n íîìåð ïðîãðàììû Πn . ïðåîáðàçóåì åå â ïðîãðàììó Π0 : Πx:=n ; Πn ; y := 0. Òàêèì îáðàçîì, Π0 âíà÷àëå çàíîñèò â x íîìåð n ïðîãðàììû Πn , à çàòåì ïðèìåíÿåò Πn ê ýòîìó íîìåðó è, åñëè Πn íà n îñòàíàâëèâàåòñÿ, âûäàåò ðåçóëüòàò y = 0. Ïîýòîìó Π0 îñòàíàâëèâàåòñÿ íà ëþáîì àðãóìåíòå (â òîì ÷èñëå è íà 0) òîãäà è òîëüêî òîãäà, êîãäà n ∈ Ms . Ïðåîáðàçîâàíèå ïðîãðàììû Πn â ïðîãðàììó Π0 îñóùåñòâëÿåòñÿ ýôôåêòèâíî. Ïîýòîìó (íà îñíîâàíèè òåçèñà Òüþðèíãà-×åð÷à) ñóùåñòâóåò òàêàÿ î.ð.ô. f , êîòîðàÿ ïî n âû÷èñëÿåò íîìåð m ïðîãðàììû Π0 = Πm = Πf (n) . Ýòà ôóíêöèÿ è áóäåò ñâîäèòü Ms ê Mh0 , òàê êàê n ∈ Ms ⇔ f (n) ∈ Mh0 . Ñëåäîâàòåëüíî, ïî ëåììå 6.1 íà ñòð. 39 ïðîáëåìû îñòàíîâà Mh0 íåðàçðåøèìà. Î÷åâèäíî, ÷òî è áîëåå îáùàÿ ôîðìà ïðîáëåìû îñòàíîâà Mh = {(n, a) | ΦΠn ,y (a) < ∞} òàêæå íåðàçðåøèìà, ïîñêîëüêó ê íåé ñâîäèòñÿ Mh0 : n ∈ Mh0 ⇔ (n, 0) ∈ Mh . 2) Äëÿ ñâåäåíèÿ Ms ê ìíîæåñòâó Mt íîìåðîâ ïðîãðàìì, âû÷èñëÿþùèõ âñþäó îïðåäåëåííûå ôóíêöèè ìîæíî òàêæå èñïîëüçîâàòü ôóíêöèþ f èç ïóíêòà 1. Äåéñòâèòåëüíî, Πn îñòàíàâëèâàåòñÿ íà âõîäå n òîãäà è òîëüêî òîãäà, êîãäà Π0 = Πf (n) îñòàíàâëèâàåòñÿ íà âñåõ âõîäàõ, ò.å. n ∈ Ms ⇔ f (n) ∈ Mt . Ñëåäîâàòåëüíî, ïðîáëåìà òîòàëüíîñòè Mt íåðàçðåøèìà. 3) Ðàññìîòðèì òåïåðü ïðîáëåìó ýêâèâàëåíòíîñòè. Ïóñòü Meq = {(n, m) | äëÿ âñåõ x ΦΠn ,y (x) = ΦΠm ,y (x) }. Çàôèêñèðóåì ñëåäóþùóþ ïðîãðàììó P 0 : x := x; y := 0. Î÷åâèäíî, ÷òî îíà âû÷èñëÿåò ôóíêöèþ òîæäåñòâåííî ðàâíóþ íóëþ, ò.å. ΦP 0 ,y (x) = 0 äëÿ âñÿêîãî x. Ïóñòü åå íîìåð n(P 0 ) ðàâåí k0 . Äëÿ ïðîèçâîëüíîãî n ðàññìîòðèì ïàðó (f (n), k0 ). Èç îïðåäåëåíèÿ f ñëåäóåò, ÷òî Πn îñòàíàâëèâàåòñÿ íà âõîäå n òîãäà è òîëüêî òîãäà, êîãäà Π0 = Πf (n) îñòàíàâëèâàåòñÿ íà âñåõ âõîäàõ è âûäàåò ðåçóëüòàò 0: ΦΠf (n),y (x) = 0 äëÿ âñåõ x, ò.å. Πf (n) è Πk0 ýêâèâàëåíòíû. Òîãäà n ∈ Ms ⇔ (f (n), k0 ) ∈ Meq . Ïîëîæèì g(n) = c2 (f (n), k0 ). Òîãäà g ÿâëÿåòñÿ î.ð.ô. è n ∈ Ms ⇔ g(n) ∈ c2 (Meq ). Ñëåäîâàòåëüíî, Ms ñâîäèòñÿ ê Meq ïîñðåäñòâîì g è ïðîáëåìà Meq íåðàçðåøèìà.
41 4) Äëÿ äîêàçàòåëüñòâà íåðàçðåøèìîñòè ïðîáëåìû ëèøíåãî ïðèñâàèâàíèÿ: Mopt1 = {(n, m) | íà íåêîòîðîì âõîäå a â ïðîãðàììå Πn ñðàáàòûâàåò m-ûé ïî ñ÷åòó îïåðàòîð ïðèñâàèâàíèÿ} ñíîâà èñïîëüçóåì ôóíêöèþ f èç ïóíêòà 1. Íàïîìíèì, ÷òî Πf (n) : Πx:=n ; Πn ; y := 0. Ïî n è ñîîòâåòñòâóþùåé ïðîãðàììå Πn ìîæíî ëåãêî îïðåäåëèòü íîìåð m ïîñëåäíåãî ïðèñâàèâàíèÿ y := 0 â Πf (n) : m = (n + 1) + (÷èñëî ïðèñâàèâàíèé â Πn ) + 1. Ïóñòü g(n) ýòî î.ð.ô., âû÷èñëÿþùàÿ ïî n ýòîò íîìåð m. Òîãäà n ∈ Ms ⇔ (f (n), g(n)) ∈ Mopt1 . Ïîëîæèì h(n) = c2 (f (n), g(n)). Òîãäà h ÿâëÿåòñÿ î.ð.ô. è n ∈ Ms ⇔ h(n) ∈ c2 (Mopt1 ). Ñëåäîâàòåëüíî, Ms ñâîäèòñÿ ê Mopt1 ïîñðåäñòâîì h è ïðîáëåìà Mopt1 íåðàçðåøèìà. Ðàññìîòðèì òåïåðü ïðîáëåìó ëèøíåãî óñëîâèÿ: Mopt2 = {(n, m) | ñóùåñòâóåò âõîä a, íà êîòîðîì ïðè íåêîòîðîì ñðàáàòûâàíèè m-ãî ïî ñ÷åòó óñëîâíîãî îïåðàòîðà â ïðîãðàììå Πn åãî óñëîâèå èñòèííî}. Äëÿ äîêàçàòåëüñòâà åå íåðàçðåøèìîñòè îïðåäåëèì ïî n ïðîãðàììó Π00 : Π0 ; åñëè y = 0 òî y := y èíà÷å y := y + 1 êîíåö ( çäåñü Π0 ïðîãðàììà èç ï. 1). È â ýòîì ñëó÷àå ïðîãðàììà Π00 ñòðîèòñÿ ïî ïðîãðàììå Πn ýôôåêòèâíî. Ïóñòü åå íîìåð âû÷èñëÿåòñÿ î.ð.ô. f 0 , ò.å. Πf 0 (n) = Π00 è ïóñòü î.ð.ô. g 0 (n) îïðåäåëÿåò íîìåð ïîñëåäíåãî óñëîâíîãî îïåðàòîðà â ïðîãðàììå Πf 0 (n) . Òîãäà n ∈ Ms ⇔ â ïðîãðàììå Πf 0 (n) ïîñëåäíèé óñëîâíûé îïåðàòîð âûïîëíÿåòñÿ (íà ëþáîì âõîäå) è ïðè ýòîì y = 0, ò.å. åãî óñëîâèå èñòèííî, à ýòî îçíà÷àåò, ÷òî (f 0 (n), g 0 (n)) ∈ Mopt2 . Ïîëîæèâ h0 (n) = c2 (f 0 (n), g 0 (n)), ïîëó÷èì, ÷òî n ∈ Ms ⇔ h0 (n) ∈ c2 (Mopt2 ). Ñëåäîâàòåëüíî, Ms ñâîäèòñÿ ê Mopt2 ïîñðåäñòâîì h0 è ïðîáëåìà Mopt2 òàêæå íåðàçðåøèìà. Òåîðåìà äîêàçàíà. Êàêîé æå âûâîä ìîæíî ñäåëàòü èç òîãî, ÷òî íåêîòîðàÿ àëãîðèòìè÷åñêàÿ ïðîáëåìà îêàçàëàñü íåðàçðåøèìîé? Äëÿ ïðîãðàììèñòîâ èç òàêîãî óòâåðæäåíèÿ èçâëåêàþòñÿ äâå íîâîñòè: ïëîõàÿ è õîðîøàÿ . Ïëîõàÿ íîâîñòü ñîñòîèò â òîì, ÷òî íåâîçìîæíî ïîñòðîèòü àëãîðèòì (ïðîãðàììó) äëÿ àâòîìàòè÷åñêîãî ðåøåíèÿ òàêîé ïðîáëåìû. Íàïðèìåð, èç òåîðåìû 6.2 íà ñòð. 40 ñëåäóåò, ÷òî íåâîçìîæíî àâòîìàòè÷åñêè ïðîâåðèòü âõîäèò ëè íåêîòîðûé âõîä â îáëàñòü îïðåäåëåíèÿ âû÷èñëèìîé ôóíêöèè, íåëüçÿ îïðåäåëèòü êîððåêòíîñòü ïðîãðàììû, ò.å. òî, ÷òî îíà âû÷èñëÿåò òðåáóåìóþ ôóíêöèþ, íåò ñïîñîáà ïðîâåðÿòü ýêâèâàëåíòíîñòü ïðîãðàìì (íå òîëüêî ñòðóêòóðèðîâàííûõ, íî è íàïèñàííûõ íà Ïàñêàëå, Ñè, àññåìáëåðå, ßâå è äðóãèõ ÿçûêàõ ïðîãðàììèðîâàíèÿ), íå ñóùåñòâóåò àëãîðèòìîâ äëÿ îïòèìèçàöèé, ñâÿçàííûõ ñ óäàëåíèåì ëèøíèõ ïðèñâàèâàíèé è óñëîâèé è ò.ï. Íî íåðàçðåøèìîñòü ïðîáëåìû íå îçíà÷àåò, ÷òî îíà íå ìîæåò áûòü ðåøåíà äëÿ íåêîòîðûõ îòäåëüíûõ âõîäíûõ äàííûõ. Íàïðèìåð, â ïðåäûäóùèõ ðàçäåëàõ ìû ïîñòðîèëè äîñòàòî÷íî ìíîãî ïðîãðàìì è äîêàçàëè èõ êîððåêòíîñòü. Ïîýòîìó õîðîøàÿ íîâîñòü äëÿ ïðîãðàììèñòîâ è ìàòåìàòèêîâ ñîñòîèò â òîì, ÷òî èõ òðóä ïðè ðåøåíèè íåðàçðåøèìûõ ïðîáëåì â êàæäîì îòäåëüíîì ñëó÷àå ÿâëÿåòñÿ òâîð÷åñêèì íèêàêîé ïðîãðàììîé èõ íå çàìåíèòü. Ïîÿâëåíèå êàæäîé íîâîé ñîäåð-
42
6 Òåçèñ Òüþðèíãà-×åð÷à è àëãîðèòìè÷åñêè íåðàçðåøèìûå ïðîáëåìû
æàòåëüíî èíòåðåñíîé íåðàçðåøèìîé ïðîáëåìû òîëüêî ðàñøèðÿåò îáëàñòü èõ òâîð÷åñòâà, çàñòàâëÿåò èñêàòü âñå áîëåå è áîëåå øèðîêèå àëãîðèòìû, ïîçâîëÿþùèå ðåøàòü âñå áîëåå îáøèðíûå ïîäêëàññû îòíîñÿùèõñÿ ê ýòîé ïðîáëåìå èíäèâèäóàëüíûõ çàäà÷.
6.1 Çàäà÷è Çàäà÷à 6.1. Äîêàçàòü àëãîðèòìè÷åñêóþ íåðàçðåøèìîñòü ñëåäóþùèõ ïðîáëåì.
à) Ïî ïðîèçâîëüíîé ïðîãðàììå Π îïðåäåëèòü ÿâëÿåòñÿ ëè âû÷èñëÿåìàÿ åé ôóíêöèÿ ΦΠ,y (x) ïîñòîÿííîé êîíñòàíòîé. á) Ïî ïðîèçâîëüíîé ïðîãðàììå Π è ÷èñëàì a è b ïðîâåðèòü ðàâåíñòâî ΦΠ,y (a) = b. â) Ïî ïðîèçâîëüíîé ïðîãðàììå Π îïðåäåëèòü ÿâëÿåòñÿ ëè ìíîæåñòâî çíà÷åíèé âû÷èñëÿåìîé åþ ôóíêöèè ΦΠ,y (x) áåñêîíå÷íûì. ã) Ïî ïðîèçâîëüíîé ïàðå ïðîãðàìì Π è Π0 ïðîâåðèòü, ÷òî äëÿ âñåõ x èìååò ìåñòî íåðàâåíñòâî ΦΠ,y (x) > ΦΠ0 ,y (x).
Çàäà÷à 6.2. Äîêàæèòå, ÷òî
à) ïåðåñå÷åíèå äâóõ ðàçðåøèìûõ ìíîæåñòâ ÿâëÿåòñÿ ðàçðåøèìûì ìíîæåñòâîì. á) îáúåäèíåíèå äâóõ ðàçðåøèìûõ ìíîæåñòâ ÿâëÿåòñÿ ðàçðåøèìûì ìíîæåñòâîì.
Çàäà÷à 6.3. Äîêàæèòå, ÷òî äëÿ äâóõ ðàçðåøèìûõ ìíîæåñòâ A è B èõ ñóììà A + B = {x + y | x ∈ A, y ∈ B} òàêæå ÿâëÿåòñÿ ðàçðåøèìûì ìíîæåñòâîì.
Çàäà÷à 6.4. Ïóñòü A ðàçðåøèìîå ìíîæåñòâî, à g(x) è h(x) ÿâëÿþòñÿ î.ð.ô. Äîêàæèòå, ÷òî ôóíêöèÿ g(x), åñëè x ∈ A F (x) = h(x), â ïðîòèâíîì ñëó÷àå òàêæå ÿâëÿåòñÿ îáùåðåêóðñèâíîé.