русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

I I I S


Дата добавления: 2015-08-06; просмотров: 620; Нарушение авторских прав


 

1 1 1

<3><3>1 1 1 1 1 1 1 1<2> 1

Рис. 8.1

 

Здесь записи <2> и <3>использованы для представления чисел 2 и 3 в унарной системе счисления.

 

Упражнение. Построить дерево, представляющее функцию умножения p(x1, x2) = x1 ´ x2.

 

Возьмем алфавит A= {I, S, O, P, C, M, 1, $}, состоящий из специального символа$ и символов, c помощью которых осуществлялась разметка вершин деревьев, представляющих частично-рекурсивные функции.

Символ$ будем называть разделителем.

Если D - дерево, представляющее определение некоторой частично - рекурсивной функции, то осуществим левосторонний обход D сверху вниз, выписывая слова в алфавите A, приписанные вершинам дерева в порядке их прохождения. При этом выписываемые слова разделяются символом $.

Полученное в результате слово D назовем кодом дерева D.

Например, дерево, представляющее функцию f(x1, x2) = x1+x2, которое приведено ранее, имеет код:

P$I$1$1$1$C$I$<3>$<3>$1$1$1$I$1$1$1$I$1$1$2$S$1.

Из правил построения деревьев, представляющих частично-рекурсивные функции, следует, что по произвольной вершине и ее левому поддереву однозначно определяется число потомков этой вершины.

Действительно, всякая внутренняя вершина дерева помечена одним из символов операций или функций. Если это символы O, S, P или M, то число потомков такой вершины заранее известно.

Если же внутренняя вершина дерева помечена символом C, то число потомков этой вершины определяется числом переменных функции, дерево представления которой имеет корнем самого левого потомка исходной вершины. Если же корень дерева помечен символом I, то число потомков этой вершины равно n + 2, где n – число, унарная запись которого размечает вершину левого потомка корня дерева.

Следовательно, степень всякой внутренней вершины, помеченной символом C,становится известна, как только полностью пройдено левое поддерево этой вершины и оказывается определенным число переменных функции, представляемой этим поддеревом.



Вершина дерева является висячей, если она помечена числом в унарной системе.

Поэтому, если задан код D некоторого дерева, то само дерево по своему коду может быть восстановлено с помощью подходящей процедуры.

Рассмотрим последовательность всех слов в алфавите A, выписанных в порядке возрастания их длин, а слов одинаковой длины в лексикографическом порядке.

Из этой последовательности выделим подпоследовательность слов:

D1, D2, . . . , Di, . . . , (1)

являющихся кодами деревьев.

Нетрудно заметить, что существует эффективная процедура, позволяющая по произвольному числу k найти слово Dk в этой последовательности.

Последовательности (1) соответствует последовательность (2), состоящая из частично-рекурсивных функций, представляемых деревьями, имеющими коды последовательности (1).

g1, g2, . . . , gi, . . . (2)

 

Обозначим как Dgi - дерево, представляющее функцию gi.

Существует эффективная процедура, которая по всякому числу n строит определение частично рекурсивной функции gn.

Следовательно, зная порядковый номер n частично рекурсивной функции gn в последовательности (2), можно эффективно найти рекурсивную схему определения этой функции. То есть по номеру функции в последовательности (2) может быть восстановлено описание метода вычисления значений этой функции.

Отметим простейшие свойства последовательности (2):

-всякая частично рекурсивная функция встречается в (2) бесконечное число раз;

- последовательность (2) содержит счетно-бесконечное множество различных функций;

- существуют числовые функции, не содержащиеся в (2).

 

По последовательности (2) определим последовательность (3), содержащую все одноместные частично-рекурсивные функции.

f1, f2, . . . , fi, . . . (3)

 

Здесь функция fi задается деревом, полученным из дерева Dgi, отождествлением всех переменных, т.е. функция fi получается из функции gi отождествлением переменных.

Введем обозначения F - для множества всех частично-рекурсивных функций и F1- для множества всех одноместных частично-рекурсивных функций.

Отображение n, которое всякому числу n ставит в соответствие функцию fn, назовем нумерацией множества F1.

При этом индекс n функции fn назовём n номером этой функции в нумерации n: N ® F1.

Отображение p: N ® F, которое всякому числу n ставит в соответствие функцию gn, назовем нумерацией множества F.

Заметим, что обе нумерации n и p являются вычислимыми, поскольку существуют эффективные процедуры, которые для каждого значения целого неотрицательного числа n строят рекурсивные определения соответствующих функций.

 



<== предыдущая лекция | следующая лекция ==>
ФУНКЦИЙ | АЛГОРИТМИЧЕСКАЯ РАЗРЕШИМОСТЬ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.015 сек.