1.3. Граф машина
Трудно найти язык описания алгоритмов, одновременно пригодный для обучения, с одной стороны, и достаточно мощный для реализации реальных приложений (включая научные) — с другой. В качестве базового языка описания алгоритмов предлагается использовать язык визуального программирования GRAPH [2].
В системе GRAPH произвольная программа интерпретируется некоторой вычислимой функцией:
,
где - множество входных данных программного модуля f, - множество выходных (вычисляемых) данных программного модуля f.
Определим граф состояний G как ориентированный помеченный граф, вершины которого - суть состояния, а дугами отмечаются переходы системы из состояния в состояние.
Каждая вершина графа помечается соответствующей локальной вычислимой функцией . Одна из вершин графа, соответствующая начальному состоянию, объявляется начальной вершиной и, таким образом, граф оказывается инициальным. Дуги графа проще всего интерпретировать как события. С позиций данной работы событие - это изменение состояния объекта O, которое влияет на развитие вычислительного процесса.
На каждом конкретном шаге работы алгоритма в случае возникновения коллизии, когда из одной вершины исходят несколько дуг, соответствующее событие определяет дальнейшей ход развития вычислительного процесса алгоритма. Активизация того или иного события так или иначе зависит от состояния объекта, которое в свою очередь определяется достигнутой конкретизацией структур данных D объекта O.
Для реализации событийного управления на графе состояний G введем множество предикативных функций P . Под предикатом будем понимать логическую функцию Pi(D), которая в зависимости от значений данных D принимает значение равное 0 или 1. Дугам графа G поставим в соответствие предикативные функции. Событие, реализующее переход на графе состояний G, инициируется, если модель объекта O на текущем шаге работы алгоритма находится в состоянии Si и соответствующий предикат (помечающий данный переход) истинен.
В общем случае предложенная концепция (без принятия дополнительных соглашений) допускает одновременное наступление нескольких событий, в том случае, когда несколько предикатов, помечающих дуги (исходящих из одной вершины), приняли значение истинности. Возникает вопрос: на какое из наступивших событий объект программирования должен отреагировать в первую очередь?
Традиционное решение этой проблемы связано с использованием механизма приоритетов. В связи с чем все дуги, исходящие из одной вершины, помечаются различными натуральными числами, определяющими их приоритеты. Отметим, что принятое уточнение обусловлено ресурсными ограничениями, свойственными однопроцессорной ЭВМ.
Определение 6. Определим универсальную алгоритмическую модель языка GRAPH четверкой <D, , P, G>, где
D - множество данных (ансамбль структур данных) некоторой предметной области O;
- множество вычислимых функций некоторой предметной области;
P - множество предикатов, действующих над структурами данных предметной области D;
G - граф состояний объекта O.
Граф в данном случае заменяет текстовую (вербальную) форму описания алгоритма программы, при этом:
1). Реализуется главная цель - представление алгоритма в визуальной (графосимволической) форме.
2). Происходит декомпозиционное расслоение основных компонент описания алгоритма программного продукта. Так структура алгоритма представляется графом G, элементы управления собраны во множестве предикатов P и, как правило, значимы не только для объекта O, но и для всей предметной области. Спецификация структур данных, а также установка межмодульного информационного интерфейса по данным “пространственно” отделена от описания структуры алгоритма и элементов управления.
Рис.3. Алгоритмическая модель языка GRAPH
Предложенная алгоритмическая модель <D, , P, G>, в конечном счете, описывает некоторую вычислимую функцию и в этом смысле может служить “исходным материалом” для построения алгоритмических моделей других программ. Последнее означает, что технология ГСП допускает построение иерархических алгоритмических моделей. Уровень вложенности граф-моделей в ГСП не ограничен.
- Конспект лекций по дисциплине “Дискретная математика”
- Санкт Петербург Содержание.
- Раздел I. Множества, функции, отношения. Лекция № 1. Множества и операции над ними.
- 1. Основные понятия теории множеств.
- 2. Операции над множествами и их свойства.
- 3. Векторы и прямые произведения.
- Лекция № 2. Соответствия и функции.
- Соответствия.
- Отображения и функции.
- Лекция № 3. Отношения и их свойства.
- Основные понятия и определения.
- Свойства отношений.
- Лекция № 4. Основные виды отношений.
- Отношения эквивалентности.
- Отношения порядка.
- Лекция № 4. Пересчёт.
- Раздел II. Введение в общую алгебру. Лекция № 6. Элементы общей алгебры.
- 1. Свойства бинарных алгебраических операций.
- 2. Алгебраические структуры.
- Гомоморфизм и изоморфизм.
- Лекция № 7. Различные виды алгебраических структур.
- Полугруппы.
- Группы.
- Поля и кольца.
- Раздел III. Введение в логику. Лекция № 8. Элементы математической логики.
- Булевы функции.
- Лекция № 9. Логические функции.
- Функции алгебры логики.
- Примеры логических функций.
- Суперпозиции и формулы.
- Лекция № 10. Булевы алгебры.
- Разложение функций по переменным. Совершенная дизъюнктивная нормальная форма.
- Булева алгебра функций.
- Эквивалентные преобразования.
- Лекция № 11. Булевы алгебры и теория множеств.
- Двойственность.
- Булева алгебра и теория множеств.
- Днф, интервалы и покрытия.
- Лекция № 12. Полнота и замкнутость.
- Функционально полные системы.
- Алгебра Жегалкина и линейные функции.
- Замкнутые классы. Монотонные функции.
- Теоремы о функциональной полноте.
- Лекция № 13. Язык логики предикатов.
- Предикаты.
- Кванторы.
- Истинные формулы и эквивалентные соотношения.
- Доказательства в логике предикатов.
- Лекция № 14. Комбинаторика.
- Правила суммы и произведения.
- Размещения.
- Перестановки.
- Сочетания. Бином Ньютона.
- Раздел IV. Теория графов. Лекция № 15. Графы: основные понятия и операции.
- Графы, их вершины, рёбра и дуги. Изображение графов.
- Матрица инцидентности и список рёбер. Матрица смежности графа.
- Идентификация графов, заданных своими представлениями.
- Лекция № 16. Маршруты, цепи и циклы.
- Основные определения.
- Связные компоненты графов.
- Расстояния. Диаметр, радиус и центр графа. Протяжённости.
- Эйлеровы графы.
- Лекция № 17. Некоторые классы графов и их частей.
- Деревья.
- Ориентированные графы.
- Графы с помеченными вершинами и рёбрами.
- Лекция № 18. Теория алгоритмов Понятие алгоритма
- 1.2.1. Основные требования к алгоритмам
- 1.2.2. Машина Тьюринга
- Универсальная машина Тьюринга
- 1.2.3. Тезис Тьюринга
- 1.3. Граф машина
- 1.3.1. Модель данных
- 1.3.2. Построение моделей алгоритмов в системе graph
- 2. Сложность алгоритмов
- 2.1.Временная и пространственная сложность алгоритма. Классы dtime и dspace
- 2.2. Классы сложности
- 2.2.1. Полиномиальность и эффективность
- 2.2.2. Алгоритмическая сводимость задач
- 3. Алгоритмы и их сложность
- 3.1. Представление абстрактных объектов (последовательностей)
- 3.1.1. Смежное представление последовательностей
- 3.1.2. Связанное представление последовательностей
- Список вопросов для подготовки к экзамену по дисциплине "дискретная математика"