- •1.Перечислите и поясните основные этапы полного построения алгоритмов.
- •6. Программная реализация алгоритма.
- •4.Сформулируйте основные определения абстрактного алфавита (алфавит, слово алфавита, расширение алфавита, алфавитный оператор).
- •7.Дайте определение алгоритма, его особенности.
- •13.Свойства и виды алгоритмов и соотношение между ними.
- •14.Интерпретации и модели.
- •15.Семантическая и формальная непротиворечивость.
- •1) «Условие – действие», т.Е. Если построенные объекты удовлетворяют некоторым условиям, то для построений нового объекта нужно выполнить такое-то действие;
- •Первая теорема о неполноте
- •22. Интуитивное понятие алгоритма. Требования к алгоритмам.
- •23. Формализация понятия алгоритма и универсальные алгоритмические модели.
- •24.Машина Тьюринга - основные определения. Понятие вычислимости на машине Тьюринга.
- •25.Операции над машинами Тьюринга. Универсальная машина Тьюринга.
- •26.Понятие алгоритмической неразрешимости. Теорема Райса.
- •27.Проблема остановки - формулировка теоремы и ее доказательство.
- •28.Понятие рекурсии. Примитивно-рекурсивные функции. Примеры.
- •29.Неограниченный оператор минимизации. Примеры. Определение частично-рекурсивной функции.
- •30.Разрешимые и перечислимые множества и предикаты.
- •31.Конечные автоматы. Основные определения. Способы задания автоматов.
- •32.Алгоритмические возможности: что могут и что не могут вычислять автоматы. Примеры.
- •33.Эквивалентность автоматов. Алгоритм минимизации автоматов.
- •34.Автоматы и логические схемы. Программная реализация автоматов.
- •35.Интуитивное определение понятия «алгоритм». Свойства алгоритма.
- •37. Приметивно рекурсивные функции
- •Глава 4. Алгоритмы
- •40 Частично рекурсивные функции
- •41 Рекурсивные функции
- •Проблемы, касающиеся абстрактных машин
- •Другие проблемы
- •Проблемы, алгоритмическая неразрешимость которых не доказана
- •42 Формулировка и доказательство критерия Поста
- •Описание
- •Примеры Пример 1
- •Пример 2
- •Ветвление (условный оператор)
- •Повторение (цикл)
- •Устройство машины Тьюринга
- •Проблемы, касающиеся абстрактных машин
- •Другие проблемы
- •Проблемы, алгоритмическая неразрешимость которых не доказана
- •48) Машина Поста
- •Принцип работы
- •Устройство машины Тьюринга
- •Описание машины Тьюринга
- •Полнота по Тьюрингу
- •Варианты машины Тьюринга
- •Машина Тьюринга, работающая на полубесконечной ленте
34.Автоматы и логические схемы. Программная реализация автоматов.
ЛОГИЧЕСКИЕ СХЕ́МЫ АВТОМА́ТОВ – технич. устройства (или части технич. устройств), в к-рых зависимость между входными и выходными сигналами выражается логич. функцией. Л. с. а. делятся на два основных класса – Л. с. а. без памяти (однотактные или комбинационные схемы), в к-рых выходной сигнал в настоящий момент времени зависит только от входных сигналов в этот же момент, и Л. с. а. с памятью (многотактные или последовательностные схемы), в которых выходной сигнал зависит еще и от входных сигналов в предыдущие моменты времени. Структурные свойства Л. с. а. изучает абстрактная теория автоматов. Осн. задачами теории автоматов являются вопросы анализа и синтеза Л. с. а., т.е. выяснение того, какое преобразование информации реализует заданная Л. с. а. (анализ) и построения Л. с. а., реализующей заданное преобразование (синтез); минимизация числа элементов в Л. с. а., синтез надежных схем из элементов, обладающих нек-рой вероятностью отказа в работе, и др. При разработке этих вопросов широко используются средства логики, причем не только логики высказываний, но и нек-рые разделы логики предикатов, многозначные логики и т.п. Т.о., с одной стороны, Л. с. а. моделируют логич. операции, а с другой стороны, при исследовании Л. с. а. используется аппарат современной формальной (математической) логики.
Результаты, получаемые при изучении Л. с. а., имеют важное значение для кибернетики, в частности для описания процессов обработки информации человеком в его содержательном мышлении.
Существуют различные подходы к программной реализации управляющих автоматов. Однако технология программной реализации, обеспечивающая упрощение взаимодействия заказчика, разработчика и программиста, требует обобщения имеющихся результатов, чему и посвящена настоящая работа.
Предлагаемый подход обеспечивает в значительной мере формализацию построения и проверки правильности программ, их однотипность, наглядность, структурованность, наблюдаемость и управляемость.
Технология предполагает пять стадий разработки автоматных программ, каждая из которых состоит из ряда этапов: системное проектирование (1-7); проектирование формальной спецификации автомата или системы взаимосвязанных автоматов (8-13); логическое проектирование автоматов (14-20); программирование (21,22); проверка правильности программ (23-27), применимая для задач небольшой размерности. Перечислим этапы разработки:
Системное проектирование;
Проектирование формальной спецификации автомата или композиции автоматов;
Логическое проектирование автоматов;
Программирование;
Проверка правильности программ, применимая для задач небольшой размерности.
Разработанная (при участии автора) программная оболочка позволяет выбрать требуемое число входов и выходов, а также используемое число графов переходов. С помощью клавиатуры на экран компьютера могут быть введены значения входных переменных. При этом программой на экран выводятся вычисленные значения выходных переменных и значения всех функциональных элементов задержки.
Новизна предлагаемого подхода состоит в том, что на экран также выводятся значения переменных состояний каждого графа переходов, что делает построенную программу наблюдаемой.
Изоморфизм графа переходов и конструкции switch обеспечивает управляемость (изменяемость) программной реализации.
В качестве примера для сравнения различных спецификаций и моделей в рамках предлагаемой технологии разработано 40 программ на языке СИ, реализующих алгоритм управления двумя клапанами с памятью с помощью двух кнопок без памяти.
Изложенный подход может быть использован также и для программной реализации вычислительных алгоритмов при замене объектов управления на операционные блоки, осуществляющие собственно вычисления, что позволяет разделить управляющую и операционную части программы.