Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Spory.doc
Скачиваний:
5
Добавлен:
04.09.2019
Размер:
335.36 Кб
Скачать

1. Алгоритмы и программы

Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату

Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность

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

Факториал целого неотрицательного числа n (обозначается n!) определяется как

при n > 0 и n! = 1 при n = 0

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

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

Управляющее устройство работает согласно правилам перехода, которые представляют алгоритм, реализуемый данной машиной Тьюринга. Каждое правило перехода предписывает машине, в зависимости от текущего состояния и наблюдаемого в текущей клетке символа, записать в эту клетку новый символ, перейти в новое состояние и переместиться на одну клетку влево или вправо. Некоторые состояния машины Тьюринга могут быть помечены как терминальные, и переход в любое из них означает конец работы, остановку алгоритма.

domains  c=char  i=integer  s=i* database  a(c)  b(c)  d(s)  mp(i,c,c,i) predicates  t(c,s)  mz(i,s)  m(i,i,c)  app(s,s,s)  r(c)  z(c)  rab  rba  p(c) clauses  m(V,E,D):-r(X),retract(mp(V,X,D,E)),  asserta(mp(V,X,D,E)),!.  p(D):-D=' ',z(D),!.  p(D):-D='1',z(D),!.  p(D):-D='P',rba,!.  p(D):-D='L',rab,!.  p(D):-D='K',!.  t(V,L1):-retract(d(L0)),mz(M,L0),   m(M,E,V),p(V),app([E],L0,L1),   asserta(d(L1)).  mz(M,[M|_]).  app([],X,X):-!.  app([A|L1],L2,[A|L3]):-!,app(L1,L2,L3).  r(X):-retract(b(X)),asserta(b(X)),!.  z(X):-retract(b(_)),asserta(b(X)),!.  rab:-retract(a(X)),asserta(b(X)),!.  rba:-retract(b(X)),asserta(a(X)),!. goal  asserta(mp(1,'1',' ',1)),assertz(mp(1,'*','K',1)),  assertz(mp(1,' ','P',2)),assertz(mp(2,'1','P',2)),  assertz(mp(2,'*','P',3)),assertz(mp(3,'1',' ',3)),  assertz(mp(3,'*','L',8)),assertz(mp(3,' ','P',4)),  assertz(mp(4,'1','P',4)),assertz(mp(4,'*','P',5)),  assertz(mp(5,'1','P',5)),assertz(mp(5,' ','1',6)),  assertz(mp(6,'1','L',6)),assertz(mp(6,'*','L',6)),  assertz(mp(6,' ','1',7)),assertz(mp(7,'1','P',3)),  assertz(mp(8,'1','L',8)),assertz(mp(8,'*','L',8)),  assertz(mp(8,' ','1',9)),assertz(mp(9,'1','P',1)), asserta(b('1')),assertz(b('1')),  assertz(b('*')),assertz(b('1')),  assertz(b('1')),assertz(b('1')),  assertz(b('*')),assertz(b(' ')),  assertz(b(' ')),assertz(b(' ')),  assertz(b(' ')),assertz(b(' ')),  assertz(b(' ')),assertz(b(' ')),  L0=[1],asserta(d(L0)),  !,t(V,_),V='K',!, retract(a(W)),write(".",W),  retract(a(W1)),write(".",W1),write("x"),  retract(b(Q)),write(" ",Q),fail.

Нормальные алгоритмы являются вербальными, то есть предназначенными для применения к словам в различных алфавитах. Определение всякого нормального алгоритма состоит из двух частей: определения алфавита алгоритма (к словам в котором алгоритм будет применяться) и определения его схемы. Схемой нормального алгоритма называется конечный упорядоченный набор т. н. формул подстановки, каждая из которых может быть простой или заключительной. Простыми формулами подстановки называются слова вида , где L и D — два произвольных слова в алфавите алгоритма (называемые, соответственно, левой и правой частями формулы подстановки). Аналогично, заключительными формулами подстановки называются слова вида , где L и D — два произвольных слова в алфавите алгоритма. При этом предполагается, что вспомогательные буквы и не принадлежат алфавиту алгоритма (в противном случае на исполняемую ими роль разделителя левой и правой частей следует избрать другие две буквы).

Примером схемы нормального алгоритма в пятибуквенном алфавите | * abc может служить схема

Процесс применения нормального алгоритма к произвольному слову V в алфавите этого алгорифма представляет собой дискретную последовательность элементарных шагов, состоящих в следующем. Пусть V' — слово, полученное на предыдущем шаге работы алгорифма (или исходное слово V, если текущий шаг является первым). Если среди формул подстановки нет такой, левая часть которой входила бы в V', то работа алгоритма считается завершённой, и результатом этой работы считается слово V'. Иначе среди формул подстановки, левая часть которых входит в V', выбирается самая верхняя. Если эта формула подстановки имеет вид , то из всех возможных представлений слова V' в виде RLS выбирается такое, при котором R — самое короткое, после чего работа алгоритма считается завершённой с результатом RDS. Если же эта формула подстановки имеет вид , то из всех возможных представлений слова V' в виде RLS выбирается такое, при котором R — самое короткое, после чего слово RDS считается результатом текущего шага, подлежащим дальнейшей переработке на следующем шаге.

Различные определения алгоритма в явной или неявной форме содержат следующий ряд общих требований:

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

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

Понятность — алгоритм для исполнителя должен включать только те команды, которые ему (исполнителю) доступны, которые входят в его систему команд.

Завершаемость (конечность) — при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов. С другой стороны, вероятностный алгоритм может и никогда не выдать результат, но вероятность этого равна 0.

Массовость — универсальность. Алгоритм должен быть применим к разным наборам исходных данных.

Результативность — завершение алгоритма определёнными результатами.

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

Алгоритм не содержит ошибок, если он даёт правильные результаты для любых допустимых исходных данных

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

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