ТЕОРИЯ АЛГОРИТМОВ И РЕКУРСИВНЫХ ФУНКЦИЙ




 

Мы начнем с интуитивно ясного понятия алгоритма.

Алгоритм есть метод решения некоторой задачи с входными данными. Этот метод может быть разложен на отдельные единичные шаги, исполне­ние которых и порядок их следования однозначно определены. Этот метод должен иметь возможность описания с помощью текста конечной длины. При этом «решение проблемы с одним входом» есть, в сущности, вычис­ление значения функции для заданного аргумента.

Для того чтобы математически овладеть понятием алгоритма, следует заменить его формализованным понятием, а именно его экспликатом, т.е. интерпретацией. Существуют различные интерпретации понятия алго­ритма, такие, как μ-рекурсивные функции, машины Тьюринга, грамматики типа 0, грамматики Ван-Вайнгаардена и др. При этом эти интерпретации служат также для описания алгоритмов, что означает: каждая конкретная μ-рекурсивная функция, каждая конкретная машина Тьюринга, каждая конкретная грамматика типа 0, каждая конкретная грамматика Ван-Вайн­гаардена описывает определенный алгоритм; она, таким образом, репре­зентирует алгоритм. Мы в дальнейшем не будем делать строгого различия между конкретным алгоритмом и его возможными описаниями (если это не приведет к неясности). Все эти интерпретации эквивалентны в том смысле, что каждый алгоритм, который может быть описан с помощью одной из этих интерпретаций, таким же образом может быть описан и с помощью любой другой из этих интерпретаций. Также и любой формально определенный язык программирования с определенными минимальными требованиями (как, например, присваивание и структура циклов) может рассматриваться как интерпретация понятия алгоритма. В это число попа­дают все имеющиеся языки программирования (машинный код, Ассемб­лер, Бейсик, Алгол 60, Алгол 68, Фортран, Паскаль, Модула-2, Лисп, …).

Мы рассмотрим сначала такие алгоритмы, отдельные шаги которых со­стоят в изменении слов над заданным алфавитом. Если достигается конец этого процесса изменения, то полученное слово есть результат алгоритма при некотором определенном входе. Если же при некотором определенном входе конец этого процесса изменения не достигается, то результат не оп­ределен.

Мы будем полагать теперь, что понятие алгоритма формально опреде­лено, а именно с помощью однойиз приведенных интерпретаций. (Для дальнейшего достаточно выбрать некоторый язык программирования и описать алгоритмы с помощью программ на этом языке.) Мы хотим далее с помощью понятия алгоритма получить другие понятия и рассмотреть ос­новы теории рекурсивных функций.

Пусть М – бесконечное множество, тогда М является эффективно ну­мерованным (счетным) с помощью биективной функции F: М ®¥ тогда и только тогда, когда для всех входных данных из ¥найдется алгоритм, с по­мощью которого для любого п Î¥ может быть эффективно вычислено значе­ние обратной к F функции в точке п, т.е. F -1(п) Î М. В случае, если М конеч­но, где ç М ç =п, то в этом определении ¥ следует заменить на {0,1,..., п -1}.

Таким образом, можно говорить об n -м элементе F -1(п) множества М. Если обозначить F -1(п)через xn, то последовательность

x 0, х 1,…, хn,…

является эффективной нумерацией множества М. Элемент х Î М имеет то­гда индекс F (х)Î ¥. Также говорят, что F кодирует М, F -1 декодирует М.

Пример 3.1. (1) Пусть S={a1,...,a k } алфавит. Лексикографический по­рядок над å*определяется следующим образом:

Пусть w 1, w 2 Îå*. Тогда w 1 £ w 2 Û

(i) | w 1| £ | w 2|, или

(ii) | w 1| = | w 2|, w 1 = v a i v 1, w 2 = v a j v 2, i < j, v, v 1, v 2 Î å*, или

(iii) w 1 = w 2

Порядок £ является полным и нётеровым и å* может быть эффективно занумеровано согласно лексикографическому порядку. Иногда также сле­дующий порядок называется лексикографическим:

w 1 £ ’ w 2 Û

(i) w 2 = w 1 v, v Îå*, или

(ii) w 1 = v a i v 1, w 2 = v a j v 2, i < j, v, v 1, v 2 Î å*.

Этот порядок£ полный, но не нётеров:

a2 > а1а2> a1a1a2 > …> a a2>

В лексике применяется этот лексикографический порядок.

(2) Пусть М = , Мп конечно, причем n|=kn, kn >0, Мi Мj= Æ для i ¹ j. Пусть Мn эффективно нумеровано посредством функции Fn: Мп ® {0,1,…, kn -1}, тогда последовательность

F (0),..., F (k 0 – 1), F (0),..., F (k 1 – 1),..., F (0),..., F (kn – 1),...

является эффективной нумерацией множества М.

(3) Множество D 1× D 2, где D 1 и D 2являются эффективно счетными, само является эффективно счетным. Пусть Di эффективно нумеруется посредст­вом Gi: Di ®¥, i= 1,2.

Определим для п ³ 0,

Мn = {(d 1, d 2)| G 1 (d 1)+ G 2(d 2) = n, d 1Î D 1, d 2Î D 2 }

и

Fn ((d 1, d 2)) = G 1 (d 1) = n – G 2(d 2), (d 1, d 2) Î Мn.

Тогда, согласно (2), последовательность

(G (0), G (0)), (G (0), G (1)), (G (1), G (0)),(G (0), G (2)),…

является эффективной нумерацией D 1× D 2. Oна называется диагональной нумерацией. ÿ

В дальнейшем, пусть Е и D – эффективно счетные множества. (Боль­шей частью Е = ×…× , D = å*). Тотальная функция F: Е ® D называ­ется вычислимой (а также рекурсивной), тогда и только тогда, когда существует один для всех аргументов из Е завершающийся алгоритм, с помощью которого для каждого аргумента x Î Е можно эффективно вычис­лить значение функции F (x) Î D. Частичная функция F: Е ® D называется частично вычислимой (а также частично рекурсивной) тогда и только то­гда, когда существует алгоритм, который обеспечивает следующее. Если F (x), x Î Е, определено, то алгоритм завершается при вводе х и возвращает F (x) Î D); если F (x), x Î Е, не определено, то при вводе х алгоритм не за­вершается за конечное время.

Тем самым понятия «алгоритм» и «частично вычислимая функция» со­ответствуют друг другу в следующем смысле: каждый алгоритм опреде­ляет частично вычислимую функцию, которая посредством него вычисля­ется.

Полагая в предыдущих определениях E =¥× ×¥ ,D= ¥, получают чи­словые вычислимые и соответственно частично вычислимые функции. В сущности, можно ограничиться числовыми функциями : ¥®¥. Именно пусть G: Е ® D вычислимая (соответственно частично вычислимая) функ­ция. Тогда существуют биективные функции F 1: Е ®¥ и F 2 : D ®¥, такие, что Е посредством F 1и D посредством F 2 эффективно счетные. Пусть : ¥®¥ функция, определяемая посредством:

(n) = F 2(G (F (n))), п Î¥.

Очевидно, является вычислимой (соответственно частично вычисли­мой) и выполняется: G (x) =F ( (F 1(x))), х Î Е. Действительно, из определе­ния следует: F ( (n)) = G (F (n)). Положим теперь х= F (n), тогда п = F 1(x) и F ( (F 1(x))) =G (x).

Множество М Í D называется рекурсивно перечислимым тогда и только тогда, когда существует вычислимая функция F: Е ® D, с подходящим об­разом выбранным множеством Е, такая, что область значений функции F совпадает с М, т.е., М ={ F (x) | х Î Е } или, короче, М = F (E). В дальнейшем пустое множество Æ также является рекурсивно перечислимым.

Название «перечислимое» множество отражает следующую сущность: Пусть z 0, z 1,…, zn, …– эффективная нумерация Е. Тогда M может быть пе­речислено посредством

F (z 0), F (z 1), …, F (zn), …

Множество М Í D называется рекурсивно разрешимым (или рекурсив­ным), если М и D – М рекурсивно перечислимы.

Так как оказывается, что введенные уже перечислимые и разрешимые формальные языки являются в точности рекурсивно перечислимыми и ре­курсивно разрешимыми формальными языками, то в дальнейшем мы бу­дем, если это не приведет к неясностям, слово «рекурсивный» опускать.

Пусть М Í D. Определим тогда характеристическую функцию c M: D ®{0,1} множества М (относительно D) посредством:

c M (x) = .

Тогда справедливо, что M Í D разрешимо тогда и только тогда, когда c M вычислима. Это может быть показано следующим образом:

Для М = Æ или М = D, М является разрешимым (Æ перечислимо по оп­ределению и D – перечислимо посредством тождественной функции, кото­рая, конечно, вычислима). Далее, в этих случаях выполняется, что характе­ристическая функция c M является вычислимой (так как она в случае М = Æ всегда принимает значение 0 и в случае М=D всегда значение 1).
Теперь рассмотрим случай М ¹Æи М ¹ D.

(i) Пусть c M – вычислимая. Пусть Î М и Î D–М произвольные, но фиксированные элементы. Мы определим две функции F 0, F 1: D ® D как

F 0(x) = ; F 1(x)=

Конечно, F 0 и F 1 являются вычислимыми и выполняется: F 0(D)= DМ и F 1(D)= М. Отсюда DМ и М перечислимы и М – разрешимо.

(ii) Пусть М – разрешимо. Тогда М и DМ – перечислимы. Поскольку М ¹ Æ и М ¹ D, то существуют две вычислимые функции F 0 и F 1, которые перечисляют множества DМ и М:

DM: у 0, у 1, …, уn,…,

M: x 0, x 1,…, xn,….

Мы хотим теперь для z Î D вычислить значение c M (z). Для этого при­меним следующий алгоритм: для каждого i = 0, 1,2... вычислим с помощью F 0 и F 1 элементы yi и хi. А так как z должен встретиться или в последова­тельности (уn), или в последовательности (xп), то существует такое т, что выполнимо z = ут или z = xm. В первом случае мы положим c M (z) = 0, а во втором случае положим c M (z)=1. Тем самым характеристическая функция c M – вычислимая.

Подобное выполняется и для перечислимых множеств. Пусть М Í D. Мы определим частичную характеристическую функцию : D ®{1} множе­ства М (относительно D) посредством

(x)=

Тогда справедливо, что М Í D перечислимо тогда и только тогда, когда частично вычислимая. Это может быть показано следующим образом:

(i) Пусть частично вычислимая. В случае, если (x) является не определенной для всех x Î D, тогда М = Æ и поэтому является перечис­лимым множеством.

Пусть теперь ()=1 для Î D. Тогда выполняется Î М. Определим функцию F: (¥ – {0})× D ® D посредством

F ((n,x)) =

Так как (¥ – {0})× D, согласно примеру 3.1(3), является эффективно счетным, то функция F – вычислимая. А вследствие М ={ F ((n,x)) | п ³1, x Î D }, М является перечислимым.

(ii) Пусть М – перечислимое. Для М = Æфункция нигде не опреде­лена и поэтому частично вычислимая. Для М ¹Æ существует вычислимая функция F: Е ® D, которая перечисляет М:

M: x 0, x 1, …, x n, …

Мы хотим теперь для элемента z Î D вычислить значение (z). Для этого сравним последовательно z с хi, i ³ 0. Если мы найдем т ³0, для кото­рого z = xт, то положим (z) = 1. В противном случае (z) не опреде­лена.

Из-за этих обстоятельств перечислимые множества называют также по­луразрешимыми множествами. Таким образом, справедливо, что множе­ство М Í D разрешимо тогда и только тогда, когда М и D–М полуразре­шимы.

Определим теперь важный экспликат понятия частично вычислимой функции, а именно m-рекурсивные функции. Эти функции отображают (å*)n, п ³ 0(п - кратное декартово произведение множеств å*) в å*. Сначала определим три вида простых базовых функций:

(i) Для любого а Îå отображение N a: å*® å*, N a (w) = wa, w Î å*, называ­ется функцией следования.

(ii) Для любого п ³ 0 отображение С n:(å*)n®å*, С n (w 1, w 2,..., w n)=e, wi Îå*, 1£ i £ n, называется п-местной нуль-функцией.

(iii) Для любого п ³ 1 и 1£ j £ п отображение :(å*)n ® å*, (w 1, w 2,..., w n)= wj, wi Îå*, 1£ i £ n называется п-местной проекцией.

Определим далее три функционала, которые позволяют получить но­вые функции из уже ранее определенных функций.

(i) Пусть п ³ 0, т ³ 1 и H: (å*) m ®å*, Gj: (å*) n ®å*, 1£ j £ m. Функция F:*) n ® å* образуется из Н путем подстановки функций G 1, G 2,…, Gm тогда и только тогда, когда для всех wi Îå*, 1£ i£ п, выполняется:

F (w 1, w 2,..., wn)= Н (G 1 (w 1,..., wn),..., Gm (w 1,..., wn)).

(ii) Пусть n ³ 1, G: (å*) n -1®å* и На:*) n +1® å*, a Îå. Функция F:(å*) n ®å* образуется из G и Ha, a Îå, посредством рекурсии тогда и только тогда, когда для всех wi Îå*,1£ i £ n, имеет место

F (e, w2,…,wn) = G (w2,…,wn),
F (w1a,…,wn) = Ha (F (w 1,…, wn), w 1,…, wn), a Îå.

(iii) Пусть n ³ 0 и G: (å*) n +1®å*. Функция F:*) n ®å*образуется из G пу­тем минимизации относительно a Îå тогда и только тогда, когда для всех wi Îå*, 1£ i £ п выполняется:

F (w 1, … ,wn) = ma [ G (w0,w 1 ,…,wn)].

При этом m а [ G (w 0 ,w 1, …, wn)] определена следующим образом: в слу­чае, если найдется некоторое т ³0, такое, что G (аl,w 1 ,..., wn), 0£ l £ m, опре­делена, причем G (аl,w 1 ,..., wn)¹e, 0£ l < m и G (аm,w1,...,wn)=e, то выполняется: m а [ G (w0,w 1 ,..., wn)] = am. В противном случае m а [ G (w0,w 1 ,..., wn)] не опре­делена.

С помощью базовых функций и функционалов определяют примитивно рекурсивные и m-рекурсивные функции. Семейство примитивно рекурсив­ных (соответственно m- рекурсивных) функций над å есть наименьшее се­мейство функций F:(å*)n®å*, n ³0, которое содержит N a, а Îå,C0, , n ³1, и замкнуто относительно подстановки и рекурсии (соответственно подста­новки, рекурсии и минимизации).

Ясно, что m-рекурсивная функция в общем случае является частично рекурсивной, тогда как примитивно рекурсивная функция всегда вполне m‑рекурсивна.

Из приведенных выше определений получают числовые функции из ¥n в ¥, полагая, что å одноэлементный алфавит, å={ а }, и идентифицируя am с числом т. В частности, числу 0 соответствует элемент e. Семейство чи­словых примитивно рекурсивных функций (соответственно числовых m- ре­курсивных функций) есть наименьшее семейство функций F: ¥n ®¥, n ³ 0, которое содержит N (=N a), С0, , n ³1 и замкнуто относительно подста­новки и рекурсии (соответственно подстановки, рекурсии и минимизации).

Для того чтобы получить компактное описание m-рекурсивных функ­ций над å, введем m- рекурсивные программы. Каждая m-рекурсивная про­грамма имеет один или несколько входов в зависимости от того, на какое количество аргументов из å* она рассчитана. Каждая п- местная m‑рекурсивная программа представляет п- местную m-рекурсивную функ­цию (служит для вычисления этой функции). Выберем (всюду, где это возможно) следующие обозначения: m-рекурсивная функция будет обозна­чаться большими буквами, m-рекурсивная программа, которая ее вычис­ляет, будет обозначаться теми же самыми малыми жирными буквами. Пусть å={a 1,..., a k}.

(i) Программа n – одноместная и представляет функцию следования N ,i £ k.

(ii) Программа c нуль-местная и представляет нуль-функцию С0.

(iii) Программа u может иметь любое число входов п ³ 1 и представляет .

(iv) Пусть m-рекурсивные функции Н: (å*)m ®å* иG j: (å*)n, l£ j £ n, n ³ 0, m ³ 1 представляются через т- местные (соответственно, п- местные) программы h и g j. Функция F, которая образуется путем подстановки G 1,..., Gm в Н, представляется п- местной программой h (g 1,..., g m).

(v) Пусть m-рекурсивные функции G:(å*)n-1 ®å* и Н :(å*)n+1 ®å*, 1£ i £ k, n ³ 1 представлены через (n – 1)-местные (соответственно (n +1)-мест­ные) программы g и h . Функция F, которая образуется путем рекур­сии из G и Н ,i £ k, представляется n- местной программой [ gh ,..., h ].

(vi) Пусть m-рекурсивная функция G: (å*)n+1®å*, n ³ 1 представлена (n +1)‑местной программой g. Функция F, которая образуется из G пу­тем минимизации относительно a i, 1£ i £ k, представляется n- местной программой § g ¨ .

Синтаксис языка m - рекурсивных программ (без учета разрядности), таким образом, задан следующими продукциями:

P ® n |…| n | c | u | P (L)| [ Pk +1] | § P ¨ |…| § P ¨ ,
L ®PL | P

m - рекурсивная программа, в которой не встречаются символы §, ¨, называ­ется примитивно рекурсивной программой. В случае числовых m‑рекур­сивных программ k = 1 и индексы при n и § ¨опускаются:

P ® n | c | u | P (L) | [ PP ] | § P ¨.

Пример 3.2. (1) Мы хотим функции , п ³ 2, 2£ j £ n представить с помо­щью программ. Пусть u j программа произвольной размерности большей или равной j,такая, что примененная к (w 1 ,...,wn), где n ³ j, воз­вращает слово wj (u 1 = u). Тогда [ u j u k ] есть программа размерности ³ j +1, такая, что примененная к (w1,..., wn), где n ³ j +1, возвращает слово wj +1. По­этому[ u j u k ] представляет следующую функцию F:

F (e, w 2, …, wn) = (w2,, wn),

F (w 1 a,w 2,…, wn) = (F (w 1 ,w2,…, wn), w 1 ,w 2 ,...,wn), a Îå.

Тем самым выполнено:

F (w 1 a, w 2,…, wn) =... =F (e, w 2,..., wn) = (w2,..., wn)= wj +1.

(2) Представим С n,п ³0с помощью п- местной программы c n. Функция С n представляется с помощью [ c n -1 u k ] (где c 0 = c). Тогда [ c n -1 u k ] представ­ляет следующую функцию F:

F (e, w 2,…, wn) = C n -1(w2, …, wn),

F (w 1 a,w 2,..., wn) = (F (w 1, w2,...,wn), w 1, w2,, wn), a Îå,

при этом выполняется:

F (w 1 a, w2,..., wn) =... = F (e, w2,..., wn) =C n- 1(w2,..., wn)=e.

(3) Представим одноместную постоянную функцию K v, v Îå*, гдеK v (w)= v, для всех w Îå*с помощью программы. Пусть k v – одноместная про­грамма, которая представляет K v. Тогда [сuk ] представляет функциюKe = С1 и n a(k v)представляет постоянную функцию K va, a Îå. Поэтому n a (k v) представляет следующую функцию F:

F (w) =N a (K v (w)) = N a (v) = va. 

Теперь мы хотим определить дальнейшие функционалы, позволяющие из примитивно рекурсивных (соответственно m-рекурсивных) функций снова получать того же рода функции.

Предложение 3.1. Пусть G:(å*) n ®å*, H:(å*) m ®å*, Ha*®å*, a Îå, – примитивно рекурсивные (соответственно m-рекурсивные) функции. Тогда следующие функции F тоже являются примитивно рекурсивными (соот­ветственно m-рекурсивными):

(i) F (w 1 ,…,wn) =G (wp (1) ,…,wp(n)), где p – перестановка из {1,…, n }.

(ii) F (w 1 ,…,wl- 1 ,wl+ 1 ,…,wn,v 1 ,..,vm) =G (w 1 ,…,wl- 1 ,H (v 1 ,..,vm) ,wl+ 1 ,..,wn).

(iii) F (w 1 ,…,wn,e)= G (w 1 ,…,wn),

F (w 1 ,…,wn,w 0 a) =Ha (F (w 1 ,…,wn,w 0)) ,a Îå.

Доказательство: Функции G, H, Ha могут быть представлены про­граммами g, h, h a, a Îå.

(i) F представяется программой g(u p(1),…, u p(n)). Поэтому справедливо:

F (w 1,…, wn)= G (U (w 1,…, wn),…,U (w 1,…, wn))= G (w p(1),…, w p(n)).

(ii) F представляется программой g (u 1u l -1 h (u nu n + m -1) u lu n -1).

(iii) программа [ gh (u)… h (u)](u n +1 u 1u n) представляет функцию F 1. Тогда справедливо:

F 1(w 1,…, wn, w 0)= F 2(w 0, w 1,…, wn),

где F2 представлятся программой [ gh (u)… h (u)], таким образом,

F2 (e, w 1 ,…,wn) = G (w 1 ,…,wn),

F2 (w0ai,w 1 ,…,wn)= ( F2 (w0,w 1 ,…,wn) ,w0,w 1 ,…,wn)) =

= (F2 (w0,w 1 ,…,wn)), 1£ i £ k.

Тем самым получим

 

F 1(w 1, …,wn, e) = G (w 1 ,…,wn),

F 1(w 1 ,…,wn,w0a) = (F (w 1 ,…,wn,w0)), 1£ i £ k

и F 1 совпадает с F. ð

Пример 3.3. (1) Мы хотим записать программу con2 для функции CON2*×å*®å* с CON2(w 1, w 2)= w 1 w 2 Справедливо:

 

CON2(w 1, e) = U (w),

CON2(w 1, w 2a) = Na(CON2(w 1, w 2)), a Îå.

 

Согласно предложению 3.1 (iii) CON2 является примитивно рекурсивной и con 2 = [ u n (u)n (u) ](u 2 u).

(2) Программа con n для n -местной функции CON n , n ³ 3, с CON n (w 1,…, wn)= w 1,…, wn имеет вид: con 2 (con n -1 (u 1u n -1) u n). ð

Пример 3.4. Мы хотим представить теперь некоторые числовые функ­ции программами. Все x,y лежат в¥.

(1) Функция следования.

Пусть Nt: ¥®¥, t ³1, – функция Nt(x)= x+t, таким образом, N1(x)=N(x) и Nt+1(x)=N(Nt(x)).

n 1 =n, n t +1 =n (n t), t ³1.

(2) Константа.

Пусть K n®¥ – n -местная постоянная функция, причем K (x 1,…, x n)= i.

а) Нульместная константа.

k = c, k = n i(c).

b) Одноместная константа. K =C0, K (x +1)=U (K (x), x).

k = [ c u ], k = (n i k ).

c) n-местная константа, n ³2. K (x 1,…, x n)=K ( (x 1,…, x n)).

k 0 =k (u), k i =n i (k 0).

(3) Сумма.

SUM(0, y) = y = U (y),

SUM(x +1, y)=SUM(x, y)+1=N(SUM(x, y))=N(U (SUM(x, y)), x, y).

sum= [ un (u)].

(4) Произведение.

PROD(0, y)=0= K (y),

PROD(x+1,y)=SUM(PROD(x,y),y) =

=SUM(U (PROD(x, y), x, y),U (PROD(x, y), x, y)).

prod =[ k sum (u u 3)] = [ [ cu ][ un (u)](u [ [ u u ] u ])].

(5) Потенцирование.

EXP(0, y) = 1 = K (y),

EXP(x+1,y) = PROD(EXP(x,y),y)=

=PROD(U (EXP(x, y), x, y),U (EXP(x, y), x, y).

exp =[ k prod (uu 3)]=[ n ([ cu ])[[ cu ][ un (u)](u [[ uu ] u ])](u [[ uu ] u ])]

(6) Функция предшествования.

V(0) = 0 = C0,

V(x +1) = x = U (V(x), x).

v = [ c u 2] = [ c [ u u ] ].

(7) Разность.

DIFF1(0, y) = y = U (y),

DIFF1(x +1, y) =V(DIFF1(x, y)) = V(U (DIFF1(x, y), x, y);

DIFF(x, y) = DIFF1(y, x) = DIFF1(U (x, y),U (x, y).

diff1= [ uv (u)] = [ u [ c [ uu ]](u)], diff = [ u [ c [ uu ] ](u)]([ uu ] u).

(8) Факториал.

FAK(0) = 1 = K ,

FAK(x +1) = PROD(FAK(x),N(x)) =

= PROD(U (FAK(x), x),N(U (FAK(x), x))).

fak =[ k prod (un (u 2))]=[ n (c)[[ cu ][ un (u)](u [[ uu ] u ])](un ([ uu ]))].

(9) Знак.

SGN(0) = 0 = C0,

SGN(x +1) = 1 =K (SGN(x), x).

sgn = [ c k ]=[ cn ([ cu ](u))].

Покажем теперь, что алфавит å ={ а 1,…, аk } может эффективно нумеро­ваться с помощью биективной примитивно рекурсивной функции С k. Здесь снова речь идет о лексикографическом порядке. Мы определяем С k*®¥ (¥ отожествляется с а ) через

С k (e) = 0, С k (а ,…, а ) = ij kn-j.

Функция С k отображает биективно å n на числа между k n -1+ kn -2+…+ k +1 и kn + kn -1+…+ k2 + k, n ³ 1. Вследствие того, что

ij kn-j = k ij k n -1- j + in,

справедливо:

C k (e) = 0 = C0,

C k (wai) = SUM(PROD(C k (w), k) i) = N i (P k (U (C k (w), <



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: