Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_IVT.doc
Скачиваний:
14
Добавлен:
01.03.2025
Размер:
11.58 Mб
Скачать
  1. Алгоритмы и их свойства. Существование алгоритмически неразрешимых проблем. Машина Поста.

Алгоритм – точно определенная последовательность действий, обеспечивающая решение задач определенного класса для указанного класса исходных данных.

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

Исполнитель алгоритма – субъект или устройство, способные правильно воспринимать описание алгоритма и выполнять содержащиеся в нем действия.(человек, группа людей, робот, станок, компьютер, язык программирования и т.д).

Введение в рассмотрение понятия «исполнитель алгоритма» позволяет определить:

Алгоритм - понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение поставленной цели.

Система команд исполнителя – совокупность элементарных операций, понятных исполнителю

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

Второй целью – является определение элементарного шага алгоритма.

Третьей целью - выбор наиболее эффективного алгоритма из нескольких возможных с теоретической и практической точек зрения.

Свойства алгоритма: Дискретность (алгоритм исполняется по шагам: В начальный момент задается исходная ситуация. На каждом следующем шаге ситуация преобразуется на основе данных, полученных на предыдущем шаге. Следующий шаг начинается только после того, как закончился предыдущий)

Детерминированность (точность) (на каждом шаге исполнения алгоритма однозначно определено преобразование, которое должен совершить исполнитель).

Результативность (конечность) (после завершения каждого шага алгоритма все имеющиеся объекты однозначно определены. Если это по каким-то причинам невозможно, алгоритм должен сообщить, что решения задачи не существует). Понятность (в алгоритме могут использоваться только допустимые команды исполнителя, только те, которые входят в систему команд исполнителя).

Массовость (Алгоритм должен выполняться для множества допустимых начальных ситуаций (потенциально бесконечного множества)).

Методы разработки алгоритмов

-Метод частных целей. Задача сводится к набору простых (декомпозиция). «Необходимо свести трудную задачу к последовательности более простых задач. Любой человек очень часто использует этот метод решения стоящих перед ним задач, при этом даже не догадываясь об имеющемся для него (метода) названии. С другой стороны, в конкретной сложной задаче часто очень трудно указать способ ее разбиения на набор более простых задач. Здесь большое значение имеет опыт и искусство специалиста. Несмотря на общность метода и отсутствие «точного рецепта» его применения очень важно освоить этот метод, так как он лежит в основе решения многих задач и по своей сути составляет основу алгоритмизации и программирования. Именно с вопроса «Можно ли данную задачу разбить на последовательность (набор) более простых?» и нужно на­чинать разработку простого алгоритма.

Пример: Упорядочение массива перестановками (поиск максимального, поиск минимального, перестановка двух элементов массива), заменить старое значение элемента на новое.

Метод подъема: алгоритм начинается с принятия начального предположения или построения начального решения задачи. Затем начинается быстрое движение «вверх» по направлению к лучшим решениям. Когда алгоритм достигает точки, из которой больше невозможно двигаться «наверх», он останавливается.

Пример. Сортировка массива записей. (Ф,И,О, возраст, стаж работы).

Подъем: Индексация по каждому полю, Индексация массива полей

Пример2: в задачах поиска экстремумов (максимумов и минимумов) среди некоторой совокупности числовых данных. Начальное решение: пусть экстремальным значением является значение первого элемента из заданной совокупности данных. Лучшим решением по отношению к начальному является такой элемент, у которого значение больше ( в случае поиска максимума) или меньше (в случае поиска минимума) по отношению к начальному значению или к промежуточному “лучшему” решению. Критерием окончания алгоритма является просмотр всех элементов из заданной совокупности.

Существует большое количество задач, вызывающих трудности создания алгоритма их решения или требующих значительного упрощения процедур их решения или расширения области применения известных алгоритмов и др. Существование таких задач требует формализовать понятие алгоритма. При этом выделяют 2 проблемы:

-возможно более строгое определение алгоритма, его свойства;

-изучение теоретических моделей алгоритмов и исследование проблемы алгоритмической разрешимости.

Цели формализации: 1. решение проблемы алгоритмической разрешимости различных математических задач, т.е. получение ответа на вопрос, существует ли алгоритм решения указанного класса задач. 2. определение элементарного шага алгоритма. 3. выбор наиболее эффективного алгоритма из нескольких возможных с теоретической и практической точек зрения

Машина Поста.

Ма­ши­на По­ста со­сто­ит из лен­ты, ка­ре­т­ки и про­грам­мы.

Бесконечная лента, разделена на одинаковые клетки, каждая из которых может быть либо пустой, либо заполненной меткой «V»

Каретка может перемещаться вдоль ленты на одну клетку вправо или влево, наносить в клетку ленты метку, если этой метки там ранее не было, стирать метку, если она была, или проверять наличие в клетке метки.

Информация о заполненных метками клетках ленты характеризует состояние ленты, которое может меняться в процессе работы машины.

В каждый момент времени каретка («-») находится над одной из клеток ленты и, как говорят, обозревает ее. Информация о местоположения каретки вместе с состоянием ленты характеризует состояние машины Поста

Состояние машины Поста

Про­грам­ма.

Ра­бо­та ма­ши­ны По­ста со­сто­ит в том, что ка­ре­т­ка пе­ре­дви­га­ет­ся вдоль лен­ты и пе­ча­та­ет или сти­ра­ет мет­ки. Эта ра­бо­та про­ис­хо­дит по ин­стру­к­ции опре­де­лён­но­го ви­да, на­зы­ва­емой про­грам­мой ма­ши­ны По­ста, ко­то­рая со­сто­ит из ко­манд.

Команда машины Поста имеет следующую структуру:

n K m, где

n - порядковый номер команды,

K - действие, выполняемое кареткой,

m - номер следующей команды, подлежащей выполнению.

 Существует всего шесть команд машины Поста,

1) ко­ман­да дви­же­ния впра­во: n → m

(

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

2) ко­ман­да дви­же­ния вле­во: n ← m

(3) ко­ман­да пе­ча­та­ния мет­ки: n М m

Нельзя стирать метку там, где ее нет, такая команда счи­та­ет­ся не­допустимой.

(4) ко­ман­да сти­ра­ния мет­ки: n С m

m

Проверка наличия метки в клетке, над которой находится каретка. Если метки нет – управление передается команде m1, иначе m2

1

( 5) ко­ман­да пе­ре­да­чи управ­ле­ния: n

m2

(6) ко­ман­да оста­но­вки: n Стоп m

Программой для машины Поста будем называть непустой список команд, такой что:

  • на n-м месте команда с номером n;

  • номер каждой команды совпадает с номером какой-либо команды списка.

    С точки зрения свойств алгоритмов, изучаемых с помощью машины Поста, наибольший интерес представляют причины останова машины при выполнении программы:

  • останов по команде "стоп". Такой останов называется результативным и указывает на корректность алгоритма (программы);

  • останов при выполнении недопустимой команды. В этом случае останов называется безрезультативным;

  • машина не останавливается никогда. В этом и в предыдущем случае мы имеем дело с некорректным алгоритмом (программой).

Что­бы ма­ши­на на­ча­ла ра­бо­тать, не­об­хо­ди­мо за­дать:

(1) про­грам­му;

(2) на­ча­ль­ное со­сто­яние ма­ши­ны, т.е. ка­ким-то об­ра­зом рас­ста­вить мет­ки по сек­ци­ям лен­ты (в час­тно­сти, мож­но все сек­ции оста­вить пус­ты­ми) и по­ста­вить ка­ре­т­ку про­тив од­ной из сек­ций.

Пример 1. Установка метки. Пусть задано исходное состояние головки и требуется на пустой ленте написать две метки: одну в секцию под головкой, вторую справа от нее.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]