Опубликован: 26.09.2006 | Доступ: свободный | Студентов: 1282 / 41 | Оценка: 4.25 / 4.12 | Длительность: 17:09:00
ISBN: 978-5-9556-0066-6
Специальности: Программист, Математик
Лекция 12:

Абак, алгорифмы Маркова, равнодоступная адресная машина

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >

Абак

Абак наряду с машинами Тьюринга является одной из простейших универсальных моделей вычислений. Это числовая модель; элементами информации являются целые неотрицательные числа.

Память представляет собой потенциально бесконечный набор ячеек, каждая ячейка может содержать любое целое неотрицательное число. Считается, что ячейки пронумерованы числами 1, 2, \ldots.

Исполняющее устройство способно выполнять всего две операции (элементарные команды) над числами, это прибавление (increment) и вычитание (decrement) единицы из указанного в команде числа. Команды имеют вид {\rm inc}(x) и {\rm dec}(x), где x — номер ячейки. Поскольку в каждом конкретном алгоритме может быть использовано лишь конечное число ячеек и с номерами ячеек никаких операций не производится, мы будем обозначать их в примерах для наглядности отдельными буквами, возможно, с использованием индексов.

Программа (алгоритм) — это ориентированный граф, вершинам которого приписаны элементарные команды указанного выше вида. Из каждой вершины, помеченной командой вида {\rm inc}(x), выходит одна дуга в вершину со следующей командой. Из каждой вершины, помеченной командой вида {\rm dec}(x), выходят две дуги. Одна из них помечается знаком " + " и ведет в вершину, помеченную командой, которая должна выполняться следующей в случае, если перед ее выполнением в ячейке x находилось число, отличное от нуля. Вторая дуга помечается знаком " - " и ведет в вершину, помеченную командой, которая должна выполняться следующей в случае, если перед ее выполнением в ячейке x находилось число нуль. Одна из вершин графа помечается как входная, в нее ведет дуга "из ниоткуда", выходных вершин может быть несколько.

Несмотря на простоту этой модели вычислений, она "эквивалентна по силе" любой из изучавшихся универсальных моделей вычислений и относительно нее можно сформулировать тезис, аналогичный тезису Черча, который может выглядеть следующим образом. Любая интуитивно вычислимая функция может быть вычислена на абаке. При этом, конечно, надо условиться о том, где располагаются входные аргументы и куда следует поместить результат (значение вычисляемой функции).

Примеры программ. В рассмотренных ниже примерах операция {\rm inc}(x) обозначается для краткости через x^+, а операция {\rm dec}(x) — через x^-. Основные операции изображены кружками. Прямоугольниками изображены операции, для которых в предыдущих примерах построены алгоритмы. Знак " - " на соответствующих дугах опущен. Сформулируйте инварианты циклов во всех рассмотренных ниже примерах.

  1. Программа \fbox{x: = 0}

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


  2. Программа \fbox{y := x}

  3. Программа \fbox{x := x + y}

  4. Программа \fbox{z := x + y}

  5. Программа \fbox{x: = x \ast y}

  6. Программа \fbox{z := x\ast y}

  7. Программа \fbox{z := x^y}

< Лекция 11 || Лекция 12: 1234 || Лекция 13 >
Антон Сиротинкин
Антон Сиротинкин

на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно...
 

Светлана Ведяева
Светлана Ведяева
Россия, Саратов
Оксана Пагина
Оксана Пагина
Россия, Москва