Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
7.5. ПРИМЕР АВТОМАТИЧЕСКОГО НАПИСАНИЯ ПРОГРАММЫПри соответствующей формализации описанный выше процесс извлечения ответа можно применять для автоматического построения простых программ для вычислительной машины. При существующем уровне развития таких методов приемы автоматического доказательства теорем пригодны для написания лишь простейших программ. Мы проиллюстрируем этот подход на примере. Общая же проблема автоматического синтеза программы пока еще выходит за рамки возможностей всех имеющихся в настоящее время подходов. Предположим, что мы хотим написать программу, в которой в качестве входной переменной берется х, а на выходе получается значение у, удовлетворяющее какому-то соотношению Для того чтобы писать интересные программы, мы должны располагать элементарными функциями, допускающими условные ветвления и либо итерации, либо рекурсии. Такие языки программирования, как Допустим, что мы хотим составить программу, сортирующую входной список чисел. Выходом должен быть другой .список, содержащий те же самые числа, расположенные в порядке их убывания. Мы будем строить программу из элементарных функций
Как следствие этих определений мы получаем, что
Нетрудно видеть целесообразность использования этих функций как компонент более сложных операций над списками, таких, как программа сортировки, которую мы хотим построить. Еще една элементарная функция, merge выбранная нами, существенно более сложна по сравнению с первыми тремя. У функции merge (сливаться, соединяться) два аргумента: первый является элементом, а второй — отсортированным списком. Значением Теперь сформулируем «аксиомы», формализующие наши определения и нужное нам отношение вход — выход Прежде всего мы определим отношение сортировки
Интуитивный смысл отношения
На самом деле определения 2—5 несколько слабее того интуитивного определения, которое мы дали выше, но они достаточны для построения доказательства Множество предложений, соответствующих приведенным выше правильно построенным формулам 1—5, таково:
Нашей стратегией будет попытка доказать
Рис. 7.10. Дерево опровержения для Доказывая таким способом, мы существенно помогаем написанию программы, «встраивая» проверку условного ветвления для В случае списков длины
Таким образом, здесь мы имеем до некоторой степени тривиальный результат: «Если длина списка х равна 0, то Рис. 7.11. (см. скан) Дерево опровержения для Сформулируем теперь предположение индукции: «Для каждого непустого списка х значение
Разумеется, мы сейчас предполагаем, что Для доказательства
Опять-таки, чтобы избежать трудностей, связанных с предикатами равенства, введем это соотношение в виде предложения
(Заметим, что это предложение становится тавтологией после подстановки Отрицанием предположения служит
Здесь а — сколемова функция, появляющаяся, когда в предположении содержатся переменные, относящиеся к квантору всеобщности. Граф опровержения изображен на рис. 7.11. Исключая функцию а и преобразуя граф опровержения обычным способом, получаем ответное утверждение
Объединяя условное ветвление, которое мы заранее обеспечили, и элементы, созданные доказателем теорем, имеем в итоге рекурсивную программу
|
1 |
Оглавление
|