Конспект установочных лекций по комплексному курсу Информатика, Теория информации

         

Альфа»бета»поиск


В связи с игрой двух лиц мы встречаем следующую постановку задачи. В этой игре два игрока поочередно делают ходы из некоторого множества допустимых ходов, зафиксированного правилами игры. Если один из игроков сможет достичь определенной позиции (не сможет избежать определенной позиции), то он выигрывает (проигрывает) - ничьей не; бывает. Ищется ответ на вопрос: если задана позиция, то всегда ли выигрывает какой-либо игрок при оптимальном ведении игры?

Начнем с формализации проблемы. Пусть (x и р- игроки. Пусть у е {а, р} - один из игроков. Будем использовать следующие типы и функции для моделирования игры:

(1)        Рosition - тип позиции в игре, player - тип игрока, содержащий только элементы а и р.

(2)        Пусть для заданной позиции р и игрока s конечное множество Z(s, р) есть множество позиций, которые достижимы за один ход игроком s из позиции р.

(3)        Пусть t есть предикат на множестве игроков и позиций. Истинность t(s, р) определяет, является ли позиция р терминальной для игрока s, точнее: достигнут ли конец игры, когда в позиции р право хода имеет игрок s.

(4)        Пусть g - предикат на множестве игроков и позиций. Значение истинности g(s, р) устанавливает, является ли терминальная позиция р выигрышной для игрока s.

(5)        Для игрока s обозначим его партнера по игре через gegner (s). Всегда имеет место gegner (а) = ^ и gegner (?) = а.

Игра может быть описана с помощью приведенного ниже вычислительного предписания sicher. Вызов sicher(s, р) дает значение true точно тогда, когда имеется наверняка выигрышная стратегия для игрока s, если в позиции р ход принадлежит ему. Эта стратегия существует точно в том случае, если он или находится в конечной выигрышной для него позиции, или, если еще возможны дальнейшие ходы, существует по меньшей мере один ход, ведущий к позиции, которая для партнера небезопасна. Эти размышления лежат в основе следующего вычислительного предписания.

fct sicher = (player

s, position р) bool:

       if  t(s, p)   then g(s, p)


                        else $ q Î Z(s, р): Øsicher(gegner(s), q)

       fi

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

Обратим внимание, что вызов этой функции может «завершиться» только в том случае, если в графе позиций не существует циклов. Это, например, обеспечивается, если при каждом ходе число предметов игры убывает или ходы могут иметь место только в определенном направлении; в противном случае может встретиться бесконечное течение игры. При некоторых играх, например в шахматы, такое бесконечное течение игры исключается ее правилами - результат признается ничейным при многократном повторении позиции. В нашем Примере мы предполагаем, что отношение следующей позиции не содержит циклов.

Рис.10.1 передает дерево вызовов вычислительного предписания sicher для игрока а. Оно соответствует возможным ходам в игре. При этом в дереве оказываются по мере надобности попеременно ситуации для а и для р. Мы говорим об а-ситуации, если ход принадлежит а. Дерево позиций можно «раскрасить» путем деления его вершин на «надежные» и «ненадежные» позиции. Поскольку раскраска для листьев дерева вызовов предопределена функцией g, мы можем все дерево «раскрасить» по следующему правилу, которое соответствует принципу работы предписания sicher:

·

Позиция для а-ситуации окрашивается как надежная, если для р-ситуации существует следующая позиция, которая надежна для а и тем самым ненадежна для р; в противном случае эта позиция окрашивается как ненадежная.

·         Позиция для p-ситуации оценивается как надежная для а, если все непосредственно следующие позиции (которые будут использоваться уже в ос-ситуациях) являются надежными для а и тем самым ненaдежными для р.



Обратим внимание, что для нетерминальной позиции р справедливо высказывание

sicher(s, р) Û $ q Î Z(s, р): Øsicher(gegner(s), q). Через отрицание мы получаем:

·         Øsicher(s, р)



·          Û {вставка}

·         Ø$ q Î Z(s, р): -sicher(gegner(s), q)

·         Û { правило для отрицания квантора всеобщности}

·         " q Î

Z(s, р): sicher(gegner(s), q).

Итак, позиция является ненадежной, если все достижимые последующие являются надежными для партнера. Из предписания sicher путем замены квантора оператором цикла (for-оператора) тотчас можно получить рекурсивную программу, которая устанавливает, какие позиции являются надежными для игрока. Мы говорим о методе «сверху вниз», поскольку дерево вычислений проходится сверху, начиная с исходной позиции.

                                                                      a-ход

                                                                      b-ход

                                                                      a
-ход

                                                                      b-ход

Позиция выигрыша   Позиция проигрыша для a

Рис. 10.1.

Схематичное представление дерева вызовов

Эта программа, однако, очень неэффективна (полный перебор), если многие различные последовательности ходов ведут к одинаковой позиции. Тогда эта позиция фигурирует во многих местах дерева и она снова и снова исследуется на предмет ее надежности.

Здесь более эффективен метод «снизу вверх». При этом методе мы сначала раскрашиваем терминальные вершины на надежные и ненадежные. Затем последовательно по приведенным выше правилам раскрашиваются все вершины, для которых все их вершины-наследники уже раскрашены; это происходит по тем же правилам, что и в методе «сверху вниз».

Из предписания sicher получается также и оптимальная стратегия игры (так как она существует в рассматриваемом типе игры).


Метод может быть применен также и для шахматной игры. Впрочем, там число комбинаций столь велико, что этот алгоритм не может быть выполнен ни на одной машине мира.

Если речь идет не о да/нет-вопросе выигрыша, а о максимизации величины выигрыша, то обобщение задачи путем введения функции выигрыша ge приводит к следующей минимаксной задаче с точки зрения игрока а:

fct opt == (player s, position p) int:

       if t(s, p)    then ge(s, p)

                 else max {-opt(gegner(p), q): q Î Z(s, p)}

fi

(Заметим, что

max{opt((gegner(p), q): q Î Z(s, p))} равно -mm{opt((gegner(p), q): q Î Z(s, p))}. - Ред,)

Пусть ge(s, p) есть выигрыш игрока s, если игра заканчивается в позиции р. Обратим внимание, что если х есть выигрыш одного из игроков, то «выигрыш» его партнера есть -х. При большом числе возможных комбинаций при игре этот алгоритм требует больших затрат ион неэффективен. Снова во многих случаях его эффективность можно повысить применением метода «снизу вверх».

Имеется, однако, еще один способ достичь повышения эффективности (а-p-отсечение). Он заключается в том, что если для ожидаемого выигрыша игрока sb позиции в нашем распоряжении имеется просто вычисляемая оценка maxopt(s, p) для верхней границы этого выигрыша, то можно обрезать (исключать из процесса их анализа) некоторые части дерева вызовов.

На рис.10.2 те части дерева, которые можно исключить из анализа (т. е. «обрезать»), выделены пунктирными ребрами.

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

opt(s, р) £ maxopt(s, р).                                              

      

       a                                                                    4                                                                                                                                                                                            

   b                        -4                    1                                     -1                           -3                                                      



   a            5                  4      6     -1      7                  3         1        5           6      4        3

   b     -5    0      1    -2      -4             2        -7                           -5        7        -1       -4

   a                                               -2        5

                           Рис.10.2  Пример для дерева вызовов с miniт структурой 

Для упрощения алглмитрического представления введём значения -? и ?. Пусть еint – тип целых чисел, расширенный этими двумя искусственными элементами. Примем соглашение о том, что

         max Æ = -¥,            min Æ = +¥

Теперь будем работать со следующим вычеслительным предписанием opt, реализующим a-b-отсечение:

fcp setopt = (player s, set position m, eint gr, eint min) eint:

       if maxopt(s, p) £ gr then gr

                                       else   -setopt(gegner(s), Z(s, p), -min, -gr);

           if a £ then gr

                     elif gr < a < min then setopt(s, m\{p},gr, a)

                                                else –setopt(s, m\{p},gr, min)

           fi

       fi

 

Дадим некоторые пояснения к этому предписанию.

1.      При каждом вызове setopt мы ищем min на слое при вычисленной на предыдущем слое границе gr этого значения.

2.      Значения gr и min всегда удовлетворяют порядку gr < min

3.      Начальное обращение к setopt производится с gr = -¥ и min = +¥

Обрезание какой-либо ветви или продолжение её обработки на некотором слое производится по следующему правилу:

·         a £ gr Þ gr                                                 (обрезание ветви)

·         gr < a < min Þ setopt(s, m\{p},gr, a)        (уточняется значение min)

·         min £ a Þ setopt(s, m\{p},gr, min)           (сохраняется значение min)



Имеет место

setopt(s, {р}, -¥, +¥) == opt(s, p).

С помощью этого инициирующего вызова мы получаем желаемый результат для игрока s в начальной позиции р.

Если вместо cint

возьмем тип bool

и заменим начальное значение gr == -¥ на gr == false, а начальное значение min = ¥ на значение true, то для решения проблемы выигрышной позиции в булевской постановке получим классический бэктрекинг с а-р-отсечением.

С помощью оценок maxopt(s, р) можно отсекать определенные ветви вычислений. В случае сложных игр эти оценки можно заменить более или менее грубыми приближениями. Мы получим «эвристики», -при применении которых результаты не будут уже корректными, а только приближенными.

На эффективность алгоритма влияет и порядок последовательных просмотров вариантов. Если можно сначала просмотреть многообещающие в смысле максимизации или минимизации ветви, то [gr, min]-интервал быстро сужается и излишние ветви раньше распознаются и обрезаются.


AVL-деревья


Отсортированное двоичное дерево есть двоичное дерево типа tree m, в котором все вершины в левом поддереве не больше, а в правом поддереве не меньше корня и все поддеревья также отсортированы. Тогда обход дерева в порядке следования вершин (левое поддерево, корень, правое поддерево) дает упорядоченную последовательность. Логическая функция проверяющая отсортированность двоичного дерева, имеет вид:

fct sortiert= (tree m t) bool:

if isempty(t) then true

else sortiert(left(t))Ù

sortiert(right(t))Ù

allnodes(left(t), (m x) bool: x£root(t))Ù

allnodes(right(t), (m x) bool: root(t)£x)

fi

При этом вызов allnodes(t, p) предписания allnodes проверяет, все ли вершины в дереве t выполняют предикат p.

fct allnodes= (tree m t, fct(m) bool p) bool:

if isempty(t) then true

else allnodes(left(t), p)Ù

allnodes(right(t), p)Ù

p(root(t))

fi

AVL-дерево

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

fct isbal=(tree m t) bool:

if isempty(t) then true

else isbal(left(t)Ùisbal(right(t))Ù

·

1£hi(left(t))-hi(right(t))£1

fi

AVL-деревья являются компромиссом между полными и произвольными деревьями. AVL-дерево b высоты hi(b) содержит по меньшей мере 2(hi(b)/3)-2 вершин. Это можно показать индукцией по высоте деревьев. В AVL-деревьях число вершин растет также экспоненциально с высотой дерева.



B-деревья


Другой концепцией для специальных деревьев с интересными свойствами для эффективного управления большими множествами данных являются B-деревья.

Хотя для невырожденных двоичных деревьев их высота растет логарифмически с ростом числа вершин, все же реализация с помощью указателей приводит к заметным дополнительным затратам памяти для целей управления. Компромиссом здесь являются так называемые B-деревья. B-дерево либо пусто, либо содержит по меньшей мере n и самое большее 2n непосредственных поддеревьев. B-дерево над типом m, на котором пусть задан линейный порядок, является тогда элементом приведенного ниже объявления типа btree:

sort btree=emptyôcbt(btree first, seq cell rest)

sort cell=mc(m d, btree bt).

При этом для B-деревьев с порядком n предполагается, что все их последовательности поддеревьев содержат от n до 2n элементов. Элементы данных линейно упорядочены в последовательных вершинах. Таким образом, B-дерево есть упорядоченное дерево со степенью ветвимости между n и 2n.

Добавление элемента в B-дерево делается очень просто. Если для вершины последовательности не находится места (поскольку длина последовательности равна 2n), то эту последовательность можно разбить на две последовательности (длины n) и тем самым снова получить B-дерево.

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



Базы данных и информационные системы


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

Аспекты баз данных в рамках задачи управления информацией охватывают описание имеющихся данных, управление ими как частью вычислительно системы и доступ к ним. Информационная система содержит информацию, необходимую для управления и контроля задачами пользователя. При разработке какой-либо базы данных для определенного применения необходимо построить модель данных, в которой представлены все виды информации, которые будут храниться в базе данных. Но модель данных, независимо от задачи описания базы данных, также должна быт применима для всех релевантных данных для определенного применения.

Моделирование отношений сущность/связь.

Модель данных можно задать с помощью спецификации вычислительной структуры. В народнохозяйственных применениях информатики встречаются большие множества однотипных данных. Примерами являются данные о наличии клиентов, товаров или сотрудников предприятия. Такие данные тоже можно охватить через вычислительные структуры. Однако для таких больших множеств данных удобнее применять специальные способы описания. Общим методом описания для информационных систем и баз данных, и в частности для моделирования данных с большим их числом, является так называемая сущность/связь-модель (англ. Entity/Relationship Model), или, короче, E/R-модель. При этом наличные данные представляются множествами элементов данных, а связи между основными элементами представляются через отношения.

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


Типичным образом модели данных и базы данных содержат определенные основные единицы информации, называемые сущностями.

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

Диаграммы сущность/связь

На практике для описания E/R-моделей данных часто используют графическое изображение, поскольку оно более наглядно и понятно. Это особенно важно именно при моделировании данных, где должно быть особенно полное понимание между информатиками и экспертами по применению. Это также имеет место и для применений баз данных.

Для графического представления E/R-моделей и баз данных используются E/R-диаграммы (англ. Entity/Relationship Diagram). Рис.11.1 дает пример такой диаграммы. В E/R-диаграмме множества сущностей изображаются прямоугольниками, а связи - ромбами. Часто добавляются дополнительные данные, которые описывают, например, между сколькими сущностями может иметь место определенное отношение, - здесь говорится о количественных указаниях.

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

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

Многие E/R-диаграммы позволяют характеризовать такие свойства отношений взаимосвязи, как:

·         во всех допустимых состояниях сущностей элементы присутствуют в кортежах отношения в количестве, лежащем в некотором заданном интервале;

·         отношение является однозначным справа, однозначным слева, взаимно однозначным (n:1-, 1:n- и 1:1-взаимосвязи).





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

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

Пример (атрибуты между взаимосвязями). Взаимосвязь "есть_руково-дитель_проекта" могла бы иметь атрибут "с: дата" и "предшественник:

сотрудник".

Во многих приложениях встречаются специальные взаимосвязи, как, например, "есть_тот-то"-взаимосвязь, которая допускает классификацию сущностей. Если, например, существуют сущности "руководитель отдела" и "сотрудник", то между ними может иметь место взаимосвязь "есть_тот-то". Эта взаимосвязь разрешает перенесение атрибутов. Если какой-то руководитель отдела является сотрудником предприятия, то все атрибуты сотрудника наследуются и руководителем отдела (переносятся на него). Определенные конструкции "представления знаний", такие, как "фреймы" и формы "объектно-ориентированного" моделирования, используют подобного рода концепции наследования, иерархии и образования классов в качестве базы для спецификаций. В конце данной главы мы вер­немся к этим вопросам под термином объектной ориентации.

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

К применению систем баз данных

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

·         концептуальный аспект (логическая модель вовлекаемых баз данных);

·         физический аспект (внутреннее представление баз данных в памяти и относящиеся к этому процедуры доступа);



·         внешний аспект ( возможность доступа для пользователя и, соответственно, для пользовательских программ).

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

Система управления базой данных

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

·        обеспечение условий целостности,

·        координация параллельно протекающих выполнении запросов пользователей,

·        защита данных от неправомерного доступа и их сохранность от разрушения.

Запросы к базам данных и их изменение

Заданием E/R-модели характеризуется и множество возможных состояний базы данных. В каждый момент своей жизни база данных обладает некоторым состоянием. С помощью определенных операций можно осуществить опрос состояния базы и, соответственно, изменить это состояние.

Как правило, запросы к базе данных и изменения се состояния выражаются не в аспекте значений отдельных атрибутов, а через мощные операции над сущностями и связями. Типичный запрос к базе данных заключался бы в поиске: "найди фамилии и адреса всех сотрудников отделов х, у, z по специальностям а, Ь, с".

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

Аналогичным образом могут быть сделаны и изменения состояний и баз данных. Эти изменения могут состоять из следующих действий:

·         внести новые сущности, воплощения и новые элементы связей,

·         удалить определенные данные,



·         изменить определенные компоненты.

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

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

·         проекция (вычеркивание определенных компонент кортежей в отношении),

·         соединение (произведение отношений, причем делается соединение кортежей, совпадающих в общих атрибутах),

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

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

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


Бэктрекинг-недетерминированность в языках программирования


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

Если e1 и е2 есть (детерминированные или недетерминированные) выражения одинакового типа, то запись  E1 ? E2 образует (недетерминированное) выражение. Для его вычисления мы делаем недетерминированный (случайный) выбор одного из входящих в него выражений и его значение принимаем в качестве значения исходного выражения. Обратим внимание, что тем самым недетерминированное выражение в качестве результата его вычисления может иметь значение из множества возможных значений.



Динамическое программирование


Если нам удастся умело выбрать индуктивный принцип, по которому порождается подлежащее минимизации множество, то при некоторых обстоятельствах можно понизить сложность метода.

Пример (задача коммивояжера). Следующее предписание при вызове perm(e, v) порождает (в случайном порядке) все перестановки множества v:

fct perm == (seq node s, set node m) set seq node:

if m == Æ  then {s}

else node x = some node q: q Î m;

È     perm(insert(s, x, i), m\{x}) fi о ^ i <.

lcngth(s)

где предписание insert, которое добавляет в последовательность s элемент k после i-й позиции, определяется следующим образом:

fct insert == (seq node

s, node k, nat i: i £ length(s)) seq node:

        if i == О     then <k> о s

                                 else <first(s)> о insert(rest(s), k, i—l) fi

Задачу коммивояжера можно рассматривать как задачу минимизации на множестве всех перестановок. Пусть задано отображение d:

fct d =( node

i, node j ) nat:      ''расстояние между вершинами i и j”.

Это отображение индуцирует предписание для вычисления длин путей:

fct sd = ( seq node s ) nat:

 if    s = є         then О

elif rest(s) = є  then О

                                else d(first(s), first(rest(s)))+sd(rest(s))

         fi

Мы хотим минимизировать выражение sd(s)+d(first(s), last(s))

на множестве всех перестановок s, где s Î perm(є, v) и ÷vê= n. Мощность исследуемого множества есть О(n!), что определяет также и сложность алгоритма. При наивном способе действий придется просмотреть (n-1)! перестановок, так как одну из вершин можно зафиксировать. Естественно, в практических применениях ищется не только длина минимального пути обхода, но и сам путь. Ниже мы дадим вычислительное предписание для вычисления длины минимального пути; предписание для нахождения самого пути может быть сформулировано совершенно аналогично.

Для решения задачи коммивояжера будем вычислять функцию mintour по следующему предписанию. Пусть х() Î v- заданная начальная вершина. Вызов mintour(m, i) дает длину минимального из путей через все вершины множества m, которые начинаются в вершине х() и заканчиваются в вершине i:

fct mintour = (set node

m, node

i: i e m) nat:

            min {sd(<xo> о s): s

Î perm(s, m) Ù last(s) = i}



Другие МР-полные проблемы


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

1.      Клика. Пусть задан неориентированный граф множеством V вершин, симметричным отношением R Í V x V для ребер и задано число k Î N. Ищется ответ на вопрос: существует ли подмножество С Î V, такое, что ôcô = k и С х С Í R?

2.      Целочисленное программирование. Пусть даны матрица А Î Z^nxn и целочисленный вектор v Î Z^n. Ищется вектор с Î {0, 1}” с Ас > v (поэлементно).

3.      Перекрывающееся множество вершин. Пусть заданы неориентированный граф множеством вершин V и R Í V x V c R== R^T, а также число k Î N. Ищется множество вершин U Í V с ÷Uç == k, такое, что имеет место:

v, w Î V: (v, w) Î R Þ Ø(v Î U Û w Î U).

Формулируя словами, ищется часть множества вершин U, такая, что каждое ребро имеет вершину в U и вершину вне U.

4.      Направленный круг Гамильтона. Дан ориентированный граф с множеством вершин V и R Í V x V. Ищется замкнутая трасса (обход), в которой каждая вершина встречается ровно один раз. Эта проблема является NP-полной также и для неориентированного графа.

5.      Задача коммивояжера. Задано множество вершин V == {1, ..., n}, функция расстояний

dist:V^2 ® N

и число k Î N. При этом пусть для функции расстояния dist справедливо неравенство треугольника

" i, j, 1: dist(i, 1)+dist(1, j) ³ dist(i, j).

 Ищется перестановка (Xi, ..., Хn) вершин в V (путь поездки) с п-1

S dist(Xi, Xi+i)+dist(Xn, x1) ³ k. I=1

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

·         найти решение проблемы Р.

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

Типичным методом доказательства NP-полноты постановки задачи Х является ее сведение за полиномиальное время к какой-либо задаче, для которой NP-полнота доказана.



Если для всех слов W c n= /W/ и всех i ( ? i ? k) имеет место bi(w) ? S(n),


то машина М называется S(п)-ленточно-ограниченной.

Мы говорим также, что машина М имеет (ограниченную) ленточную сложность S(n).

Пример (ленточная сложность).



Фактографические информационнные системы


Системы обработки данных.

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

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

По мере совершенствования вычислительных средств, увеличения объемов памяти ЭВМ более удобным стал термин базы данных (БД). Это направление сохраняет определенную самостоятельность и в настоящее время и занимается в основном разработкой и освоением средств технической и программной реализации обработки данных с помощью ЭВМ. По мере усложнения задач, решаемых с использованием вычислительной техники для сохранения этого направления появились термины базы знаний, базы целей,

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

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

Основными функциями

СОД являются сбор

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


Под обеспечением

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

и др. виды обеспечения.

Информационное обеспечение (ИО) СОД составляют методы средства преобразования внешнего представления данных в машинное, описания хранимой и обрабатываемой информации и последующего преобразования данных из машинного представлены во внешнее. Это внутримашинное

обеспечение.

Техническое обеспечение (ТО) представляет собой комплекс те нических средств, применяемых для функционирования систем обработки данных.

Программное обеспечение (ПО) - это совокупность програм системы обработки данных и документов, необходимых для эксплуатации этих программ.

Лингвистическое обеспечение (ЛО) составляет совокупность те} минов и языковых средств, используемых в СОД (ЛО иногда включают в ПО), а организационное обеспечение - совокупность мер приятий, регламентирующих функционирование СОД (методики, должностные инструкции и др.).

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

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

·

оценку надежности источников информации;

·         оценку достоверности информации, которой обладает источник:



·         определение объемов и формы представления информации у источника;

·         выяснение условий и особенностей предоставления информации источником;

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

Выбор источников информации и методов ее сбора во многом определяется результатами анализа внешней информационной среды. Критериями выбора источника служат:

·         надежность и доступность источника;

·         необходимость и достоверность предоставляемой информации;

·         стоимость информационных услуг;

·         совместимость формы существующего у источника представления информации с требованиями информационной системы по- требителя.

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

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



Среди методов сбора нерегламентированной информации можно выделить:

·         непрерывный мониторинг процессов и явлений;

·         статистическое обследование информационных объектов;

·         приобретение информации по подписке;

·         электронный поиск в информационных сетях;

·         разведка.

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

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

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


При автоматизированном способе регистрация осуществляется на машинном носителе (например, винчестере ЭВМ) путем диалога оператора и компьютера. Автоматическая

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

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

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

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

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



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

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

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

·         показатели роста, прироста, колебаний и других тенденций изменения во времени различных экономических факторов, выявляемых в результате анализа временных рядов:

·         индексы потребительских и оптовых цен (в форме Ласпейреса, Пааше или Фишера), промышленного производства, состояния рынка ценных бумаг (индекс Доу-Джонса) и другие индексы, составляющие суть индексного анализа;

·         прогнозные оценки экономических показателей в условиях неопределенности и риска, получаемые с использованием байесовского подхода;

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

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


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

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

 

Основные виды обеспечения фактографических информационных систем.

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

Общесистемное {базовое) ПО предназначено для организации процесса обработки информации в СОД и включает в себя операционную систему (ОС), сервисные программы, системы программирования (комплексные средства разработки программ на языках высокого уровня) и программы технического обслуживания.

Прикладное ПО предназначено для решения конкретных задач СОД. В него входят программные средства общего назначения и специальные программные средства для данной СОД. К средствам общего назначения относятся системы управления базами данных (СУБД), табличные процессоры, текстовые и графические редакторы и др. Специальные

программные средства могут быть как разработаны для конкретной системы обработки данных, так и приобретены готовыми на отечественном рынке. При этом необходимое ПО может быть приобретено как “целиком” (если оно удовлетворяет всем необходимым требованиям), так и “собрано” из фрагментов готовых продуктов (возможно, с использованием услуг специалистов, называемых системными интеграторами).

Основные составляющие программного обеспечения современных и перспективных систем обработки данных:



·         операционные системы (ОС);

·         системы управления базами данных (СУБД);

·         средства разработки приложений* (системы программирования):

·         инструментальные средства технологии сквозного проектирования (CASE-технологии).

Операционные системы. Поскольку наибольшее распространение в нашей стране получили IBM-совместимые персональные компьютеры, основными операционными системами в настоящий момент являются ОС семейства Windows. Это многозадачные многопоточные 32-разрядные операционные системы с графическими интерфейсами и расширенными сетевыми возможностями. В настоящее время используются Windows 95, ее версия OSR2, Windows 98 а также Windows NT.

Для Windows 95 (98)

характерны следующие новые решения, 32-разрядная архитектура ОС обеспечивает более высокую производительность системы, снимает многие ограничения на память системных ресурсов. Механизм управления памятью обеспечивает работу 32-разрядных приложений в защищенном адресном пространстве с автоматической очисткой памяти после завершения работы каждого приложения. Вытесняющая многозадачность позволяет усовершенствовать механизм управления ресурсами: приложение, нуждающееся в ресурсах, может приостановить свою работу до получения ресурса или перейти к выполнению других операций, не останавливая работу других программ. При этом многопоточное

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

Освоение ОС упростилось благодаря однотипности выполнения всех основных операций и наглядности выполняемых действий.

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


Объектам на основании их свойств предоставляются системные ресурсы.

В Windows 98 интерфейс полностью ориентирован на работу в сети Интернет, а во встроенном пакете Microsoft Office 97 текстовый редактор Word позволяет просматривать и создавать HTML-файлы (файлы на языке разметки гипертекста).

Windows NT

- это сетевая ОС, выпускаемая в двух модификациях: Windows NT Server и Windows NT workstation. Windows NT Server предназначена для управления сетевыми ресурсами, содержит средства для работы в глобальных сетях. Windows NT workstation предназначена для работы на локальных компьютерах и рабочих станциях. Обладает повышенной степенью защиты данных от несанкционированного доступа и высокой производительностью при анализе больших объемов данных.

Системы управления базами данных. Система управления базами данных (СУБД), по определению, это комплекс программ и языковых средств, предназначенных для создания, ведения и использования баз данных. До 1995 года значительная часть ПО ИС разрабатывалась с использованием таких СУБД реляционного типа, как Clipper (вер. 5.0 и ниже) и FoxPro (вер. 2.5 и ниже). Для операционных систем Windows в наибольшей степени отвечающими требованиям СОД являются СУБД Visual FoxPro (версия 3.0 и выше) и СУБД MS Access из встроенного в Windows 95 пакета Microsoft Office 95 (или Microsoft Office 97). Эти СУБД являются мощными и удобными средствами для разработки приложений баз данных с архитектурой клиент-сервер.

Новые решения. Осуществлен переход к базе данных, в которой содержатся все включенные в нее таблицы, их индексы, постоянные связи между таблицами, хранимые процедуры, правила проверки значений полей и действия, выполняемые при добавлении новой записи, удалении и обновлении записи, называемые триггерами. Введены новые средства для обработки данных с помощью SQL (Structured Query Language - Структурированного Языка Запросов). Введена поддержка значений NULL (в дополнение к FALSE и TRUE) Дяя полей базы данных, предоставлены средства переноса баз Данных на SQL-сервер и поддержки работы с удаленными источниками данных.



Одновременно с наличием возможности процедурного пошагового программирования введены средства объектио-ориентированного программирования.

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

Основными понятиями объектно-ориентированного программирования являются класс, объект, свойство {атрибут), метод, событие.

Любой элемент управления или объект является в Visual FoxPro экземпляром класса. Например, элемент управления, создающий группу командных кнопок в экранной форме, принадлежит классу с именем CommandGroup, а объект “панель инструментов” - классу Toolbar. Класс содержит информацию о внешнем виде и поведении объекта, иными словами, описывает свойства (атрибуты) и методы обработки событий. Событие же представляет собой действия пользователя или операционной системы Windows, которые распознает объект. Таким образом управление объектом осуществляется посредством обрабатываемых им событий. При создании нового объекта он наследует характеристики своего класса. Наследование позволяет определять также новые классы (производные, или дочерние) на основе существующих (родительских) классов и добавлять собственные свойства дочерних классов. В связи с этим средствами Visual FoxPro можно с существенно меньшими затратами, чем в более ранних версиях, создавать сложные программные системы.

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


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

На новом уровне организована поддержка ОLЕ-технологии (Object Linking and Embedding - Связывания и Встраивания Объектов), добавлена возможность встраивания OLE-объектов в экранные формы и сохранения их в полях базы данных.

Реализована возможность технологии перемещения и сброса объектов (drag-and-drop), возможность перемещения таблиц и полей данных в экранные формы непосредственно из диспетчера проекта или из окна базы данных, использование контекстного меню.

Обласпш применения. MS Access целесообразно использовать в качестве системы управления конкретной базой данных, эта система отличается чрезвычайно высоким уровнем “законченного пользовательского сервиса”. В Visual FoxPro гораздо шире возможности здания специализированных систем управления, эта система в осовном и предназначена для разработки индивидуальных и коллективных средств управления реляционными базами данных. Это - мощная инструментальная оболочка.

Современные средства разработки приложений. До 1994 г. все средства, позволявшие создавать приложения под Windows, требовали от программиста глубокого знания архитектуры и принципов работы этой операционной системы. При этом не существовало систем, которые позволяли бы достаточно просто работать с базами данных, обеспечивая должный уровень интерфейса. В 1994 г. появилась созданная фирмой Borland принципиально новая система - среда визуальной разработки приложений Delphi, основанная на использовании несколько расширенной версии языка Borland Pascal, получившей название Object Pascal. Эта система работала под операционной системой Windows 3.1 (и, соответственно, создавала 16-битные приложения). К 1996 г. появилась версия Delphi 2, а в 1997 г. - версия Delphi 3, работающие уже под Windows 95/NT и создающие 32-битные приложения. В 1997 г.


появилась и еще одна система фирмы Borland - C++Builder, использующая язык ANSI C++ с некоторыми расширениями (кроме того, в этой системе есть и встроенный компилятор языка Object Pascal), также работающая под Windows 95/NT. Наконец, в 1998 году увидела свет система C++Builder 3, и на данный момент системы Delphi 3 и C++Builder 3 являются лучшими системами разработки приложений под Windows. Эти системы имеют интегрированную среду разработки (IDE),  т.е. включают в  себя редакторы кода, редакторы визуальных компонентов, компиляторы (в C++Builder их даже два -C++ и Object Pascal), отладчики, средства помощи и т.п. В обеих системах используются объектно-ориентированные языки программирования высокого уровня и встроенные в них возможности Работы с базами данных, не уступающие по своей мощи возможностям СУБД типа Clipper или FoxPro. Существует также возможность использования языка SQL (и, следовательно, возможность создания баз данных с удаленным доступом).

Новые концепции. Основной концепцией в этих системах является концепция объектно-ориентированного программирования. Одним из ключевых понятий при этом является понятие компонентов, т.е. готовых шаблонов для всех стандартных элементов приложений Windows (стандартных диалогов, окон, кнопок, списков и др.), поставляемых с системами; на их основе можно создавать свои собственные компоненты. Компоненты предоставляют программисту уже готовый интерфейс с WindowsAPI, в них введено понято события, которое программист обрабатывает вместо перехвата сообщений WindowsAPI (например, для обработки нажатия пользователем кнопки программисту надо написать примерно следующее: “при нажатии сделать то-то и то-то”, а не перехватывать посланные откуда-то куда-то неудобоваримые сообщения Windows). При этом прямая работа с WindowsAPI отнюдь не запрещена. Напротив, для этого программисту предоставляется более удобные методы, чем, скажем, в системе Visual C++ с MFC.

Еще одним новым понятием является понятие свойства. Можно сказать, что свойства в этих системах выступают в качестве простs[ переменных, но при этом во время проектирования приложения значения большинства из них отображены на экране и их можно менять (сразу же наблюдая результат изменения), а во время исполнения их можно рассматривать как функции - при этом система сама заботится об их выполнении вне зависимости от реального представления данных, с которыми они работают (то есть если в программе вы обращаетесь, например, к “заголовку окна”, вас абсолютно не заботит, где и как хранится окно и как в нем отыскать заголовок).



С обеими системами поставляется библиотека визуальных компонентов (VCL), в которой содержатся шаблоны всех стан дартных визуальных элементов Windows (а также многих специ альных), так что программисту остается лишь незначительж изменять их по своему вкусу. Сам программист может создавав подобные шаблоны - и система не будет делать никаких различий между “родными” компонентами и добавленными (надо сказать что эта возможность широко используется - множество фирм на Западе занимаются созданием компонентов, так что при наличии времени и доступа в Internet можно собрать практически любую не слишком сложную программу из уже готовых «заготовок»). Кроме того, естественно, при помощи систем можно создавать (и регистрировать) свои собственные DLL и статические библиотеки,

Важной особенностью систем является возможность использования объектов OLE (или DDE) - то есть можно, например, редактировать в своем приложении документ Word средствами самого Word. Хотя Delphi и C++Builder и не создавались как системы для работы с Internet и Web-дизайна, в них есть некоторые возможности и для этого.

Совместимость. Системы Delphi и C++Builder практически полностью совместимы в одну сторону - благодаря наличию в C++Duilder встроенного компилятора Object Pascal приложения, созданные в Delphi, можно компилировать в C++Builder; так же можно использовать даже отдельные модули Delphi, причем вперемешку с модулями, написанными на C++ (некоторые проблемы с совместимостью все-таки существуют, но они несущественны). В Delphi нет компилятора C++, однако можно очень много создавать в C++Builder для последующего использования в Delphi - например, компоненты, DLL, (и, естественно, наоборот). Переносу различных блоков между системами способствует то, что в обоих применяются абсолютно одни и те же концепции и подходы.

Новые приемы программироммия. Системы Delphi и C++Builder представляют собой визуальные средства разработки приложений. Это значит, что при создании приложения программист сразу же видит свое приложение именно в том виде, в котором его увидит и будущий пользователь.


При этом программист может применять принципиально новые методы создания программ. Так добавление компонентов в приложение осуществляется методом drag-and-drop, то есть при помощи мыши выбираются нужные компоненты, а потом перетаскиваются в окно будущего приложения (окно также является компонентом, называемым в системах “формой”, и его можно тоже выбирать по своему вкусу). Далее опять же при помощи мыши компоненты растягиваются до нужных размеров, перекладываются на форме - и при этом все изменения автоматически фиксируются в коде программы, так что программу можно запускать в любой момент! Кроме того, большая часть свойств компонентов отображается при проектировании на экране в удобном страничном диалоге (называется он Object Inspector), и все изменения на форме можно видеть в нем сразу же, а изменения, вносимые непосредственно в него, сразу же отображаются на форме проектируемого приложения (в этом и состоит принцип двойственное ввода данных). Благодаря подобному подходу можно создать полноценный интерфейс даже для большого приложения, не написав ни единой строчки кода. При этом грамотно выбрав композиты и надлежащим образом связав их (щелкая мышью в клетках Object Inspector), можно создать даже приложение, работающее с несколькими связанными таблицами баз данных, которое будет нужным образом фильтровать и отсортировывать данные из них.

Еще одной уникальной особенностью систем является возмоность изменять саму среду разработки по своему вкусу. При этом можно не просто менять различные настройки, но и создавать свои редакторы, добавлять свои пункты меню и даже создавать свои собственные Мастера (Wizard).

 Программное обеспечение для разработки ИС. Для решения задач разработки, сопровождения и модернизации информационных систем создаются технологии сквозного проектирования (ТСП). Эти технологии представляют собой набор компонент - программных продуктов и методов разработки, основные из которых и являются предметом нашего рассмотрения.

Интегрированный CASE-инструментарий. Предназначен для коллективной разработки, охватывающей все этапы жизненного цикла системы (от подготовки технического задания до генерации программного кода, внедрения и эксплуатации приложений).



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

• база данных проектируемой системы, включающая все необходимые физические объекты (таблицы, триггеры, хранимые процедуры), построенная с учетом проектируемой политики поддержания целостности данных;

• исходный код приложений информационной системы - программы, реализующие пользовательский интерфейс и логику приложений.

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

Настраиваемые кодогенераторы. Позволяют с учетом возможностей CASE-инструментов получать исходный программный код приложений, доступных для последующего редактирования.

Средства реинжиниринга и репроектирования. Дают возможность не только “прочитать” структуру имеющейся базы данных но и установить значения по умолчанию для управляющих параметров кодогенерации. С помощью удобного графического интерфейса среде MS Windows можно управлять процессом кодогенерации и получать новые версии приложений.

Среда разработки приложений. Представлена в первую очередь продуктами для информационных систем, построенных в архитектуре’клиент-сервер” с использованием языков программирования 4-го поколения,

СУБД и операционные системы. В основном используются серверы реляционных баз данных (SQL-серверы) и ОС UNIX, в качестве СУБД могут использоваться серверы Informix.


ОС UNIX является основой реализации любого сложного проекта, поскольку органично сочетает все необходимые сервисы и предоставляет платформу для функционирования и интеграции современных программных продуктов. Для решения локальных задач обработки информащии наряду с UNIX возможно применение и MS Windows NT,

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

В истории развития АИС первоначально был период, когда после разделения обеспечивающей части на составляющие отдельно рюрабатывалось организационное (ОргО), информационное (ИО), техническое (ТО) и программное обеспечение (ПО). В результате тякой независимой организации разработки структур этих видов обеспечения возникла проблема их совместимости. Поэтому в последующем был принят принцип единства ОргО, ТО, ИО и ПО.

Тематика и формы индивидуальной работы студентов с преподавателем

Разработка, обсуждение с преподавателем и размещение в базе знаний своего АРМ кратких сведений, глоссария, составленных по материалам и по тематике  настоящих установочных лекций. Обработка их в гипертекте и разработка таким образом на своем АРМ основы подсистемы дополнительного информационного обеспечения ИС в образовании, которую предстоит создавать в последующем учебном процессе и дипломном проектировании.

Темы самостоятельных заданий:

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





Приложение 01.

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННЫЙ НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ ИНСТИТУТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ТЕЛЕКОММУНИКАЦИЙ «ИНФОРМИКА»

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

МОСКОВСКИЙ ГОРОДСКОЙ ДВОРЕЦ ТВОРЧЕСТВА ДЕТЕЙ И ЮНОШЕСТВА


Формализмы для спецификаций


Cуществует много различных стилей и формализмов для описания требований, данных и алгоритмов которые находят примеyение при проектировании, разработке и aнализе программных систем. Различные формализмы по-разному удовлетворяют общим требованиям к нотации, таким, как:

·

простота чтения и понимания,

·         легкость овладения,

·         мощность (границы возможностей нотации),

·         выполнимость,

·         эффективность выполнения.

Какие веса придать этим критериям, сильно зависит от специфики приложений. В данной главе дадим краткое введение в некоторые основные методы описания и программирования.

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

Абстракция в спецификации

В программировании оказывается полезным различать абстрактные вычислительные структуры

(называемые также абстрактными типами данных) и структуры данных.

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

Абстрактные структуры данных представляют вид доступа для типа s или для семейства типов. При этом устанавливается, какие основные операции имеются в распоряжении для элементов данных этого типа. Для этого в сигнатуре задаются доступные для использования функции и их функциональности. Относительно символов функций делается различие между

·         селекторами для доступа к составным частям элемента данных,

·         функциями опроса для установления определенных свойств данных

·         (дискриминаторы),

·         функциями-конструкторами для построения элементов данных.


В дальнейшем будет использоваться простой частный случай, когда задается вычислительная структура для описания структуры доступа только для одного типа s. Конечно, эти вычислительные структуры опираются на другие типы, которые предполагаются заданными. Функции-конструкторы в качестве типа результата принципиально имеют тип s. Если аргументы функции-конструктора также имеют тип s, то описываемый тип будем называть рекурсивным. При рекурсивных типах также и определенные функции-селекторы имеют тип результата s.

Если в связи с типом s говорится о структуре данных, то тем самым имеется в виду внутреннее строение элементов данных типа s. Это определяет, каким образом структурируются элементы данных внутри себя и как конкретно они реализуются в памяти ЭВМ.

Различение аспектов реализации (англ. Glass Box View) и доступа (англ. Black Box View) является существенным для разработки программы. Аспект доступа определяет интерфейс (разрез) для типа или вычислительной структуры. Этого разреза достаточно для корректного использования типа и имеющихся для него операций. Для оценки эффективности нужны только данные о сложности по времени и по памяти используемых операций.

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

·         пользователь не обязан знать порой сложные, трудно просматриваемые детали реализации вычислительной структуры, ему достаточно знать лишь ее абстрактный аспект доступа. Этот аспект служит для документирования;

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


Основой для взаимопонимания служит аспект доступа;

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

Центральным для этого метода разделения аспектов доступа и реализации является понятие точки разреза, или интерфейса (англ. interface). Последовательное разделение этих аспектов является показателем хорошего стиля разработки программного оборудования, особенно при создании сложных программных систем. Этот принцип используется не только применительно к структурам данных - он может быть перенесен и на другие программные единицы, такие, как процедуры, модули и классы.

Для методов информатики особенно типично, что взгляды на типы как абстрактные структуры данных и как структуры данных разбиваются на слои. Здесь говорится  об уровнях абстракции Так, над абстрактной вычислительной структурой Р, которая описывает платформу реализации, с помощью определенных функций можно построить аспект структуры данных для другой вычислительной структуры А. Здесь говорится о реализации одной из вычислительных структур .А над вычислительной структурой Р.

Спецификация абстрактных, вычислительных структур

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

·         моделирование с помощью заданных структур (способ, ориентированный на модели), например через множества, отношения, абстрактные машины;

·         характеризация свойств через логику предикатов или через законы равенств ("алгебраическая спецификация").

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

(1) задания сигнатуры,

(2) задания законов, характеризующих отображения.



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

Спецификация функций

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

Чтобы специфицировать функцию f, сначала задается ее функциональность. Например, пишется

Fct f= (s1,…..,sn) Sn+1.

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

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

Пример (спецификации функций). На вычислительной структуре BOX можно специфицировать, например, следующие функции.

(1) Увеличение на единицу всех элементов конечного множества:

дополнительно к функциональности

fct incr_all = (set nat) set nat,

задаются следующие два равенства:

incr_all(put(b, x)) = put(succ(b), incr_all(x)), incr_all(emptybox) = emptybox.

(2) Функция выбора для множества: дополнительно к функциональности

fct any = (set data s: not(isempty(s))) data задается следующее равенство:

iselem(put(b, x), any(put(b, x))) = true.

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

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

Спецификация операторов

Оператор представляет собой функцию (или - в недетерминированном случае - отношение) между состояниями. Состояния можно понимать как специальный объект некоторого типа.


Представляются состояния как отображения множества программных переменных в VAR на значения из DATA. Тем самым для множества состояний STATE справедливо.

STATE = defVAR -> DATA.

Соответственно этому предикаты на состояниях можно представить в виде отображений вида

PRED: STATE -> В.

Эти предикаты могут использоваться в качестве утверждений для спецификации операторов. Оператор соответствует отображению

STATE -> STATE.

Метод утверждений позволяет специфицировать программу путем задания предикатов. Оператор специфицируется двумя предикатами, называемыми предусловием Q и постусловием R. При этом имеет место R, Q Î PRED. Оператор

f: STATE -> STATE

удовлетворяет этой спецификации, если справедливо следующее высказывание:

" s ÎSTATE: Q(s) => R(f(s)).

Таким образом, оператор специфицируется парой предикатов (Q, R). Утверждение Q может пониматься как предположение об исходном состоянии, а R специфицирует утверждение о выходном состоянии в случае выполнения предположения. Поэтому говорится также s спецификациях предположение/утверждение (англ. rely/guarantee или также assumption/commitment).


Гипотетические машины


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

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

·         конечные автоматы и

·         магазинные машины.

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

Машины Тьюринга

Машина Тьюринга (короче, Т-машина) была предложена английским математиком Аланом Тьюрингом в 1936 г. как простая гипотетическая модель вычислительного устройства. Т-машина состоит из ленты для хранения знаков, головки для чтения/записи и устройства управления с конечным множеством управляющих состояний’•

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

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

·        

конечное множество Т входных знаков (считается, что # Î Т), которые могут быть записаны на ленту;

·         конечное множество S состояний;

·         (конечную) функцию переходов и, соответственно, отношений:

·         r: S х (ТÈ {#})=. a(S х (Т È{#}) х (<,>,¯ )

·         начальное состояние s0 Î

S.

Знак < означает сдвиг головки на одну позицию влево, >- сдвиг на одну позицию вправо, а знак ¯ означает, что головка сохраняет свою позицию. Для заданного состояния S1 и прочитанного головкой знака t1

тройка

(s2, t2, z) e r(s1, t1)

обозначает возможный шаг вычислений. Этот шаг приводит к новому состоянию s2, новому содержимому t2 ячейки, находящейся под головкой, и сдвигу z головки по ленте. Если для ТМ справедливо

Для любых t Î TÈ{#}, s e S: r(s,t)£ 1

то ТМ называется детерминированной.

Пример (машина Тьюринга). Ищется машина Тьюринга ТМ = (Т, S, r, s0) с

Т = {О, L},

S = {,s0,s1,s2,si}

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

...# а1... аn, #...           ai Î {L, 0}

и головка к началу работы стоит над ячейкой, содержащей а„, то машина останавливается с содержимым ленты ...# L #..., если число знаков L в {a1, ..., аn} нечетно, и с содержимым ленты ...# О #... в противном случае; головка по окончании работы должна находиться над ячейкой, в которой находится знак-результат.

Эта Т-машина детерминированна, поскольку всегда существует единственное следующее состояние.

Функция переходов Т-машины может быть задана конечным автоматом, в котором ребро, ведущее от состояния s к состоянию s, существует и помечено через (Î, а,m), если ; (s , а,m) Î r(s,q).



Пример ( функция переходов ТМ как конечный автомат).

Вычисления Т-машины могут быть описаны через последовательность конфигураций. Конфигурация

Т-машины состоит из четверки

(s, l, а,k) Î S х (ТÈ{#})* х (ТÈ{#}) х (ТÈ {#})*,

где s - текущее состояние,

l- слово левее головки,

а - знак под головкой,

k- слово правее головки.

Предполагается, что в остальные ячейки ленты записан знак #. Таким образом, конфигурации

 (s, 1, а,k), (s, <#> .1, а,k)   и

(s, I, a, k .<#>)

эквивалентны.

Для конфигураций (s, 1, а,k) и (s, 1, а, k) Т-машины пишут

(s, 1, а,k) -> (s, 1, а,k), если

(s , х, z) е r(s, а)

Без ограничения общности здесь считается, что слова k и 1 не пустые. Этого  можно достичь путем добавления знака #. Вычисление

Т-машины есть конечная или бесконечная последовательность конфигураций Кi, для 0<i<n      или i е N:

Ко®K1® К2®¼

Конфигурация Кn называется терминальной,

если не существует такой конфигурации К, что имеет место

Кn ® К.

Конфигурация (s, 1, а, ,k) Т-машины терминальна точно тогда, когда . справедливо

r (s, а) =Æ.

Вычисление называется полным,

если оно конечно и его последняя конфигурация Кn терминальна или же оно является бесконечным.

Т-машины соответствуют алгоритмам и также могут быть представлены программами. Детерминированная Т-машина соответствует программе вида:

      S1:   if... fi

      Si:    if    aktuell(ti)    then put(ki1); move(zi1);

goto si1

elif aktuell(tn)    then рut(гin ); move(zin ); goto sin,

fi

              … 

Sm: … 

причем Sj, Sjj e S, tij, kij e T, zij e {«, », }.

Пусть булевское выражение aktuell(x) дает значение true только в том случае, когда под головкой находится знак х. Процедуры put и move соответствуют операциям над абстрактной структурой данных «Тьюринг-лента».

На концепцию ТМ может опереться понятие вычислимости. Частичная функция

f: T* à T*

называется тьюринг-вычислимой,

если существует такая машина Тьюринга ТМ, что для всех слов t е T* справедливы следующие высказывания:



(1)        Конечное, полное вычисление (s0, t, #, £) à…à(Se,Г, #, £)

существует точно тогда, когда функция f определена для t и справедливо

f(t) = k,    где k Î Т*.

(2)        Бесконечное вычисление

(s0, t, #, e) à...

существует точно тогда, когда функция f для аргумента t не определена.

Тьюринг-вычислимость может быть перенесена на частичные функции

f: N” à N

путем выбора конкретного представления чисел.

Ниже приводится ряд простых функций, которые являются Т-вычислимыми:

(1)        Константы. Отображения с: N” ->

N, для которых существует b Î N с c(x1, ..., xn) = b для всех x1, ..., xn Î N.

(2)        Функция следующего числа

succ: N àN,   где succ(n) = n+l.

(3)        Всюду определенная функция предыдущего числа

      pre: N ->    N, где

pre(n)=[ 0,         если n = 0; n-1  иначе].

(4)        Частично определенная функция предыдущего числа pred: N à N где pred(n)=[n—1, если n>0; не определено   иначе].

Это примеры для очень простых функций, которые являются Т-вычислимыми.

Более сложные примеры можно получить путем построения Т-машин из заданных. Например, можно построить последовательную композицию Т-машин: пусть TM1 и TM2 - машины Тьюринга с одинаковыми множествами входных знаков Т, с начальными состояниями соответственно s1 и s2,

и пусть множества их состояний S1 и S2 дизъюнктивны. Построить новую Т-машину ТМ0 с множеством входных знаков Т, начальным состоянием s1, множеством состояний s0=S1ÈS2 и функцией переходов r0,специфированрой следующим образом:

r0(s,t)=[r1(s,t),sÎS1Ùr1(s,t)¹Æ;{(s2,t,¯)},sÎS1Ùr1(s,t)=Æ;r2(s,t),sÎS2]

Последовательная композиция двух Т-машин соответствует вычислению, при котором сначала работает машина TM1 с исходным заданным словом, а когда она завершает свою работу, запускается машина ТМ2, которая использует слово на ленте, порожденное машиной TM1. Так построенная Т-машина вычисляет композицию функций, которые вычисляются Т-машинами.



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

g: N” à N,

hi: N” à N, 1<i<n, являются частичными функциями. Тогда функция

      f: Nnà N;

описанная ниже, определена через композицию

функций h1, ..., hn и g. Примененяется функция f для всех аргументов (x1, ..., хm) следующим образом;

      f(x1,...,xm)=g(h1(x1,...,xm),...,hn(x1,…,xm)),

      если для всех i, 1 £ i £ m,

применение функции hi(x1, ...,xm) определено и также                определено применение функции g к аргументам

(h1(x1, ..., xm), ..., hn(x1, ...,xm)). Функция f для аргументов (x1,...,хm)  не определена, если

·         хотя бы для одного i, 1 £  i £ m, значение функции hi(xi, ..., xm) не определено или

·         для всех i, 1£ i £ m, применение функции hi(x1, ..., хm) определено, но применениефункции g к аргументам

(h1(x1, ..., xm), ..., hn(x1, ..., xm)) не определено.

Тогда для функции f  пишется выражение g.[h1,..., hnJ.

Фнкция f является тотальной (т. е. всюду определенной), если все функции h1, ..., hn и g тотальны (всюду определены).

С помощью обобщения только что описанного вида композиции ТМ получается следующая теорема.

Теорема (обобщенная композиция ТМ). Если

g: NnàN

hi: N’”à N,      где 1£ i£ n,

есть Т-вычислимые частичные функции, то функция

f: N’”à N,

определенная через композицию функций h1,..., hn и g:

f=g.[h1,..., hn],

также является Т-вычислимой функцией.

Эта теорема показывает, что множество Т-вычислимых функций замкнуто по отношению композиций функций. Композиция Т-вычислимых функций дает Т-вычислимую функцию.

Имеются и другие варианты машин Тьюринга, например:

·         машины с лентой, бесконечной только с одной стороны (и конечной лентой с другой стороны);

·         Т-машины со многими лентами.



Однако все они приводят к тому же самому понятию Т-вычислимой функции.

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

Регистровые машины

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

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

(0) е есть программа (пустая программа);

(1)        succj есть программа (1£i£n);

(2)        predi есть программа (1£i£n);

(3)        если mi и M2 - программы, то M1; М2 также есть программа;

(4)        если М - программа, то while(M) также есть программа (1 £ i £n).

Множество программ для n-R-машины обозначим через n-PROG.

Конфигурация n-R-машины состоит из пары

- (s, р) е N” х n-PROG.

На множестве конфигураций специфицируется отношение переходов состояний —> следующими правилами:

(s, slicci) à ((s1, ..., si-i, si+l, si+i, ..., sn), e),

(s, predj,) -> ((s1, ..., sj-i, b, sj+1, ..., sn), e),

где

k=0, если si = 0, sj=0

si-l,sj-1 инач

Для конфигурации (s,e) следующая конфигурация не определена, поскольку E есть пустая программа.

Вычисление n-R-машины с исходной конкретизацией памяти s для программы р есть конечная или бесконечная последовательность конфигураций с c0 = (s, р) и для

i Î

N:

сi -> Ci+i.

Конфигурация с называется терминальной,

если не существует такой: конфигурации с

что сàc

Для терминальной конфигурации с =( s, р) всегда р = e

Вычисление называется полным,

если последовательность ко^фигура-1 ций бесконечна или же она конечна и последняя конфигурация сk терминальна. Тогда n-R-машина с программой р вычисляет выход (результат) s для входа s.

Наряду с n-R-машинами рассматриваются также R-машины с неограниченным числом регистров, а также R-машины с командами перехода. Регистровые машины соответствуют простой форме while-программ, состоящих из операторов присваивания, условных операторов, последовательной композиции операторов и while-циклов.


Гриди-алгоритмы


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

Пример (алгоритм Дейкстры для вычисления кратчайшего пути в графе с нагруженными ребрами). Пусть дано множество вершин

V={l,...,n} и расстояния между ними d:VxV®Nu{¥}.

Предположим, что d есть всюду определенная функция.  Если не существует ребра от вершины Х к вершине У, то это выражается через:

d(x,y) = ¥

Для вычисления длины кратчайшего пути служит следующее предписание (тип enat содержит натуральные числа и ¥)

fct dijkstra = (set node m, node x, node y) enat

   if m = 0

   then d(x, y)

   else node w == some node z: z Î m Ù " node b: b Î m Þ d(x, z) £ d(x,b); min(diJkstra(m\{w}, x, y), d(x, w)+dijkstra(m\{w},w,y )      

Используется следующий инициализирующий вызов: dijkstra(V, x, у).

Корректность этого предписания можно показать следующим образом : для любого множества S с V вызов

dijkstra (S, х, у)

дает длинукратчаишего пути от х к у - с внутренними вершинами только из множества S. Это утверждение доказывается индукцией по n=|S|

Для n = О утверждение очевидно. Пусть утвержедние справедливо для п; для любого множества S с |s|= n+1 пусть w есть вершина из S с наименьшим удалением от х: V be S: d(x, w) £ d(x, b). Пусть x® pi...® pk® y есть путь кратчайшей длины от х к у с внутренними вершинами pi Î S для всех i, 1 £

i £ k. Или справедливо w  Ï {pi, ..., pk}, или справедливо pi = we I <, i ^ k. Но тогда должно быть i = 1, так как в противном случае путь х ® pi ®... ® pk ® У был бы короче. Итак, справедливо: кратчайший путь не содержит вершины w, или он содержит w в качестве первой внутренней вершины.
Так что мы получаем длину кратчайшего пути как минимум из длин кратчайшего пути, который не содержит w, и кратчайшего пути, который содержит w в качестве первой внутренней вершины.

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

Работа с задачами большой сложности требует глубокого анализа постановки задачи. Путем упрощения постановки задачи, например через ограничения на область значений параметров, в некоторых случаях можно сделать применимыми менее сложные алгоритмы. Важно также, сколь многочисленны на самом деле входные данные для рассматриваемой задачи. При небольшой размерности могут непосредственно решаться (англ. brute force) даже NP-полные проблемы.


Heapsort через деревья выбора


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

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

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

Методы сортировки insertsort и  selectsort имеют среднюю временную сложность O(n2). При этом требуется n шагов вставки и выбора, а на i-м шаге затраты на вставку равны i, а на выбор n-i. В обоих случаях получается следующая формула для затрат:

n        n-1

å i=å(n-1)=n*(n-1)/2=O(n2).

i=1        i=0

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

Как правило быстрая сортировка (quicksort) наиболее удобна для внутренней сортировки больших последовательностей со случайным упорядочением элементов. Для внешней сортировки предпочтительнее метод слияния.

Пути в графах

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



I:R®A


Через (A,R,I) обозначается информационная система. Таким образом, информационная система соответствует понятию отображения из математики. R называют также системой представления, а A – семантической моделью.

 

ДАННЫЕ ~ data ? информация, представленная в формализованном виде, пригодном для автоматической обработки при возможном участии человека.

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

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

Данные являются исходным материалом, «пищей» прикладных процессов, осуществляющих обработку данных. Часто в интересах государства либо коммерческих предприятий, организаций, фирм возникает необходимость защиты данных от искажения, противозаконного использования. Все это составляет проблему безопасности данных.


 

БАЗА ДАННЫХ ~ database ? совокупность взаимосвязанных данных, организованная по определенным правилам.

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

Базы данных имеют различные размеры ? от небольших, портативных баз данных, находящихся в персональных компьютерах, до крупных, расположенных в суперкомпьютерах. Создание больших баз данных требует использования особенно мощных компьютеров, чрезвычайно емкой памяти и сложной информационной инфраструктуры. Каждая из отдельно рассматриваемых баз одновременно может обслуживать тысячи пользователей. Все большее распространение получают распределенные базы данных.

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

Они характерны тем, что в них размещаются, хранятся и выдаются тексты, звуки, неподвижные и движущиеся изображения.

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

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



 

БАЗА ЗНАНИЙ ~ knowledge base ? организованная совокупность знаний, относящихся к какой-нибудь предметной области.

Знанием является проверенный практикой результат познания действительности. Иначе говоря, знание ? это накопленные человечеством истины, факты, принципы и прочие объекты познания. Поэтому в отличие от базы данных в базе знаний располагаются познаваемые сведения, содержащиеся в документах, книгах, статьях, отчетах.

В базе знаний в соответствии с принятой в ней методологией классификации располагаются объекты познания, образующие совокупность знаний. В любом объекте представляется набор элементов знаний. Элементы знаний благодаря концептуальным связям объединяются, образуя базу знаний. Такие связи бывают четырех видов: общность, партитивность, противопоставление и функциональная взаимозависимость. Общность — это связь двух элементов по содержанию их характеристик. Принцип партитивности подразумевает соотношение целого и его частей. Противопоставление встречается в элементах, которые имеют положительные и отрицательные характеристики. Функциональная взаимозависимость отражает взаимосвязь элементов.

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

Каждая база знаний включает в себя набор сведений, правил и механизм логического вывода.

 

БАНК ДАННЫХ ~ databank ? комплекс информационных, технических, программных, языковых и организационных средств, обеспечивающих сбор, хранение, поиск и обработку данных.

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


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

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

Лица, работающие в банке данных, делятся на три группы ? сотрудники банка, администратор банка и пользователи. Задача сотрудников — сбор и запись в базу всей первичной информации, определяемой тематикой этой базы. Сотрудники должны также удалять устаревшую информацию. Наряду с этим обновление информации может быть разрешено и некоторым пользователям. Сотрудники банка и некоторые пользователи составляют программы, позволяющие из первичной информации получать необходимые вторичные сведения, составлять отчеты. Администратор обеспечивает руководство банком. Он решает вопросы, связанные с бесперебойной и надежной работой, хранением информации и безопасностью данных. В нужных случаях администратор осуществляет копирование содержимого баз и организует хранение копий. Пользователи банка взаимодействуют с необходимыми им банками.

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

В различных странах создано большое число банков данных. Одним из крупнейших в мире является расположенный в США банк LEXIS-NEXIS, который в 1994 г. предоставлял около 200 млн. документов из более 4000 источников.

 

БЕЗОПАСНОСТЬ ДАННЫХ ~ data security ? концепция защиты данных от случайного, либо умышленного изменения, уничтожения, разглашения, а также несанкционированного использования.



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

позволяет не только закрывать данные от посторонних лиц. Оно также решает задачу целостности данных — их сохранения при наличии помех и искажения.

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

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

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

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


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

Для обеспечения юридической базы безопасности данных в ряде стран приняты соответствующие законы.

 

КОМПЬЮТЕРНАЯ РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ~ computer-aided software engineering ? технология автоматизированной разработки программного обеспечения включает комплекс средств, предназначенных для разработки программ, создания общей базы данных, использования единого метода взаимодействия с этой базой. Причем этот подход учитывает разнообразие операционных систем, применяемых в системах, включаемых в одну информационную сеть. Кроме того, CASE определяет единую основу для сетевых технологий, используемых разными разработчиками. CASE также предоставляет методологию и средства тестирования создаваемых программ.

Благодаря использованию CASE снижается стоимость разработок, и уменьшаются сроки их проведения. До последнего времени технология CASE разрабатывалась различными организациями. Национальный институт стандартов и технологии (NIST) США предлагает свой стандартный подход в создании CASE. Все в большей степени расширяется рынок прикладных программ, обеспечивающих CASE. К ним, например, относятся быстрая разработка программ (RAD), среда программирования AppWare, технология OpenDoc.

 

ОБУЧАЮЩАЯ СИСТЕМА ~ training system ? система, предназначенная для обучения пользователей.

Обучающая система основывается на использовании искусственного интеллекта и базы знаний. В ней широко применяются технологии гиперсреды и гипертекста. Это позволяет выделять объекты знаний и ассоциативно связывать их друг с другом. Система осуществляет «навигацию» пользователя по базе знаний, переходя от одного объекта к другому.

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

Система осуществляет проверку знаний учащегося, ведет регистрацию этапов процесса. Обучение сопровождается неподвижными изображениями, видеосюжетами и фрагментами звука, в том числе речи. Процесс обучения нередко называется программируемым обучением.

 


I&supl


По теореме Савича справедливо

NPSPACE(n^) Í DSPACE(n2^).

Это дает следующее высказывание об отношении между pspace и NPSPACE-

Теорема (равенство pspace и NPSPACE)’

Известна справедливость высказывания NSPACE(log n) Í p Í NP Í pspace Открытым остается вопрос о равенстве Р и NP: верно ли, что Р == NP ?

Этот вопрос - одна из больших, пока еще не решенных проблем теории сложности: до сих пор не удалось доказать ни Р = NP, ни Р ¹ NP.

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



Имеет место (для xÎ m): выражение


min {mintour(m, x)4-d(x, x0)}

xÎm

вычисляет длину минимального замкнутого пути через множество вершин m и {хо} и тем самым решает задачу коммивояжера. .Это выражение равносильно (так как х() е

v) выражению

mintour(v, x0). Мы вычисляем mintour по предписанию

fct mintour = (set node m, node

i: i Î m) nat:

 if ÷mç == I      then d(xo, i)

                        else min {mintour(m\{i}, k)+d(k, i): k Î m\{i}} fi

Сложность алгоритма получается из его структуры вызовов (пусть úmê = п+1), это дерево вызовов приведено на рис. 10.3.

                                                                     Уровень   Степень разветвления  Число вершин

                                                                          1                           n                                n

                                                                          2                         n-1                           n*(n-1)

                                                                          ¯                           ¯                                ¯

                                                                          n                           1                                n!

Рис.10.3.. Дерево вызовов с п уровнями для множества с п + 1 элементами

Это дерево имеет высоту n и на каждом слое вершин в уровне t имеет П 1 £ i £ n-i+l

вершин. На уровне n оно имеет n! вершин. Впрочем, на каждом уровне встречается лишь

   n *t

   t



Индуктивное толкование рекурсивных объявлений функций


Рекурсивные объявления встречаются во многих областях информатики. Уже описание формальных языков с помощью объявлений нетерминальных вспомогательных обозначений в виде БНФ-выражений представляет пример рекурсии. Заметим, что рекурсия встречается не только в ЯП при рекурсивных объявлениях вычислительных предписаний, но также и в других областях. Один из примеров рекурсии образуют системы БНФ-определений для нетерминалов, которые снова встречаются в правой части определения.



Информацинные ресурсы и виды информационных систем Информащюнные ресурсы общества и предприятия


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

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

* Тирожируемость и многократность использования, что является одним из условий неубывающей потенциальной эффективности информации и приводит к относительной независимости информации от её создателей.

* Неаддитивность, некоммутативность и неассоциативность информации.

* Кумулятивность информации.

* Зависимость фактиеской реализуемости и эффективности от степени использования информации.

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

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

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

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


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

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

(в памяти ЭВМ) и внемашинное.

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

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

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

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

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



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

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

·         Разделение на документальную и фактографическую информацию носит более принципиальный характер, когда речь идет о научно-технической информации (монографиях, статьях, отчетах. патентах, законодательных актах и т. п.). Такая информация формируется человеком всегда в виде текстов, т. е. в форме документальной информации, а тексты (даже относительно структурированные) имеют ряд принципиальных особенностей (синонимия, омонимия, парадоксы), которые затрудняют извлечение из них фактографической информации, необходимой для решения проектных или управленческих задач.

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

·         При работе с информацией (особенно с документальной) важное значение приобретает проблема определения потребителя, исследования и удовлетворения его потребностей. Для решения этой проблемы в теории научно-информационного поиска были предложены различные виды информационного обслуживания: регламентное обслуживание по стандартным запросам (СЗ), избирательное распределение информации (ИРИ), дифференцированное обслуживание руководителей (ДОР), ретроспективный поиск (РП) по произвольным запросам.

На основе теоретических представлений и методов анализа систем предложен подход к определению потребностей, базирующийся на анализе структуры целей и функций деятельности потребителей информации, который может быть применен при разработке современных систем ИРИ и ДОР.


В последнее время появился и еще один важный вид информации - программные продукты

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

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

Классификации фактографических информационных систем типа АСУ и АИС.

·         По назначению системы различают такие типы АСУ и АИС: автоматизированные системы управления технологическими процессами (АСУТП), системы организационного или административного управления



(АСОУ), автоматизированные системы научных исследований (АСНИ), системы автоматизированного проектирования(САПР).

·         По степени использования ТС  человеком для принятия управленческих решений АСУ и АИС делят на информационные и управляющие.

Классификации автоматизированных систем научно-технической информации(АСНТИ). Для систем научно-технической информации разрабатываются различные классификации по:

·         уровням АСНТИ;

·         видам документальных ИС;

·         видам ИПЯ;

·         видам структур ИПС;

·         систем индексирования;

·         режимам иинформационного обслуживания;

·         видам критериев поиска;

·         тематическому профилю комплектования;

·         формам носителей информации;

·         уровням интеграции лексики.

 


Информационные технологии


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

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

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

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

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

·         Деятельность в психологии понимается как динамическая система взаимодействий субъекта с миром, в процессе которых происходит возникновение и воплощение в объекте психологического образа и реализация опосредованных им отношений субъекта в предметной действительности. Основными характеристиками деятельности являются предметность и субъективность, которые могут быть перенесены в понятие компьютерной деятельности. Уже на предварительной стадии рассмотрения данной проблемы можно отметить важное отличительное свойство компьютерной семантической системы-её свободу от прошлого, личностной детерминированности человеческого поведения, его исключительности.

 



Искусный просмотр больших древовидных структур


Рассмотрим теперь специальную постановку задачи. Пусть дано множество М в качестве листьев дерева и функция

f: М ® О,

где О - множество с линейным порядком. Требуется найти элемент х из М, для которого f(x) минимальна. Точнее говоря, ищется элемент х Î М, для которого справедливо

f(x) - min {f(y): у Î М}.

Обратим внимание, что упомянутые выше NP-полные проблемы могут быть приведены к этой форме. Эффективный поиск в пространстве поиска состоит, в частности, в комбинации порождения множества и исследования его элементов при исключении запоминания всего множества. Если множество порождается рекурсивно, то принцип порождения определяет на дереве вызовов древовидное упорядочение элементов рассматриваемого множества. Схематически такую проблему можно представить приведенным ниже алгоритмом. Алгоритм baum рекурсивно порождает множество, в котором должен производиться поиск решения, а алгоритм suchemin берет это множество в качестве входа и ищет в нем элемент, для которого функция f принимает наименьшее значение. При этом пусть заданы: предикат vollstandig, который проверяет, является ли исследуемый элемент х нужным элементом просматриваемого множества; функции gi, которые представляют альтернативы для построения элементов множества, и функция k, обозначающая степень разветвления. Эти функции соответствуют принятию решения о выборе в недетерминированном дереве вычислений Т-машины

  fct baum = (m x) set m:

         if vollstandig(x)        then

{x}

                                else    È    baum(gi(x)) fi

                                     1 £ i £ k(x)

  fct suchemin = (set m s) m:

         if ÷sç = 1           then    some m x: xÎs

else m

x = some m z: zÎs

       m y = suchemin(s\{x});

       if  f(x)£f(y)         then

x

                                  else   y

       fi

fi

Многие проблемы могут быть представлены по этой схеме. Сюда же относится и проблема выполнимости.

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

fct baum = ( seq bool х ) set seq bool:

       if length(x) ³ n    then   {x}

                                   else    baum(<trie> о x) È baum(<false> о x)

fi

fct suchemin = ( set seq bool s ) scq bool:

 if ÷sç = I                           then   some seq bool x: x Î s

                                          else   scq bool x = some seq bool z: z Î s;

                                               scq bool у == suchemin(s\{x});

                                               if a(x) Ü a(y)      then x

                                                                       else у

 fi

По вызову baum(e) порождаются все возможные различные последовательности длины п логических значений. По вызову suchemin из множества всех этих последовательностей выбирается та минимальная по времени построения последовательность, для которой a(x) дает значение «истина»; если не существует ни одной такой последовательности, то в качестве результата выдается просто самая первая из построенных последовательностей. Таким образом, через (suchemin(baum(e)) решается проблема выполнимости для булевского выражения.

Рекурсивная структура функции baum дает возможность улучшить эффективность алгоритма, если применить:

·         умелое отсечение трасс, которые не обещают успеха (см. далее а/р-отсечение, бэктрекинг);

·         умелый выбор порядка просмотра (см.


ниже greedy).

Если мы умело выберем порядок просмотра, то «рано» найдем минимальное решение и затем своевременно отбросим неминимальные трассы. Для этого важно, в частности, охватывать совместно («сплавлять») порождение множества и поиск минимума.

Пример (оптимизация поиска в проблеме выполнимости). Более оптимальным является вычислительное предписание

fct suche = (seq bool x) scq bool:

 if length(x) = n then x

                           else   seq bool s == <trne> о x;

                                     if fail(a, s) then  suche(<false> о x)

                                                       else   seq bool

у = suche(s);

                                                                     if a(y)  then у

                                                                                 else suche(<false> о x)

                                                                     fi

                                         fi

     fi

При этом мы предполагаем, что - если fail(a, x) дает значение true (т. е. a(x) == false),

для всех последовательностей z справедливо высказывание

length(z о x) == n Þ a(z о x) == false.

Алгоритм suche всегда выдает логическую последовательность, причем если а выполнимо, то выдается последовательность, для которой а справедливо.

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


Источники, адреса, развивающее информационное обеспечение (сервер ЦНИТ МГДТДиЮ-МИРЭА)


1.       Бауэр Ф., Гооз Г. Информатика. Вводный курс: в 2х ч. Ч.1. Пер. с нем. – М.: Мир, 1990. – 336с.

2.       Бауэр Ф., Гооз Г. Информатика. Вводный курс: в 2х ч. Ч.2. Пер. с нем. – М.: Мир, 1990. – 742с.

3.       Брой М.

Информатика. Основополагающее введение: В 4-х ч. Ч. 1./Пер. с нем. – М.: Диалог-МИФИ, 1996 – 300 с.

4.       Брой М.

Информатика. Вычислительные структуры и машинно-ориентированное программирование: В 4-х ч. Ч. 2./Пер. с нем. – М.: Диалог-МИФИ, 1998 – 224 с.

5.       Брой М.

Информатика. Структуры систем и системное программирование: В 4-х ч. Ч. 3./Пер. с нем. – М.: Диалог-МИФИ, 1996 – 224 с.

6.       Брой М.

Информатика. Теоретическая информатика, алгоритмы и структуры данных, логическое программирование, объектная ориентация: в 4-х ч. Ч. 4./Пер. с нем. – М.: Диалог-МИФИ, 1998 – 238с.

7.       Бухбергер Б. и др. Компьютерная алгебра: символьные и алгебраические вычисления: пер. с англ. \Под ред. Б.Бухбергера, Дж.Коллинза, Р.Лооса. – М.: Мир, 1986. – 392с., ил.

8.       Волкова В.Н., Денисов А.А. Основы теории систем и системного анализа: Учебник для студентов вузов, обучающихся по спец. «Системный анализ и управление». – Изд. 2-е, - СПб.: Изд. СПбГТУ, 1999. – 512с., табл. – 36. ил. – 128, библ. – 288.

9.       Газета « Информатика » (еженедельное приложение к газете «Первое сентября») - №4 (245) январь 2000 года.

10.    Губин С.Ю., Матчин В.Т., Мордвинов В.А. Введение в Интернет\Под ред. Н.Н.Евтихиева. Учебное пособие (вып. 1):\МГДТДиЮ, МИРЭА - М., 1997, 75с.

11.    Гусева А.И. Учимся информатике: задачи и методы их решения.- М.: «Диалог-МИФИ», 1999.-320с.

12.    Дейтел Г. Введение в операционные системы: в 2 х т.
Т.1 пер.с англ.-М.: Мир, 1987.-359с.

13.    Дейтел Г. Введение в операционные системы: в 2 х т. Т.2 пер.с англ.-М.: Мир, 1987.-398с.

14.    Ефремова О.В., Моисеева М.В., Шафрин Ю.А. Практикум по компьютерной технологии. Упражнения, примеры и задачи. ABF. - М.: 1997, 560с.

15.    ж. «Педагогическая информатика», №3, 1997. М., 90с.

16.    Заварыкин В.М. и др. Основы информатики и вычислительной техники: Учеб. пособие для студентов пед. ин-тов по физ.-мат. спец.\В.М. Заварыкин, В.Г.Житомирский, М.П.Лапчик.-М.: Просвещение, 1989. – 207с.: ил. ISBN 5-09-000598-2.

17.    Закорюкин В.Б. Теория и технологии информационных процессов. Информационные процессы в автоматизированных системах. Учебное пособие\МИРЭА. – М., 1998. – 104с.

18.    Заличев Н.Н.

Энтропия информации и сущность жизни. – М.: Радиоэлектроника, 1995. – 192с.

19.    Информатика и вычислительная техника: Учеб. пособие для студентов вузов инж.-пед. спец.\В.В.Вьюхин и др.; под ред. В.Н.Ларионова. – М.: Высш. шк., 1992. – 287с.

20.    Информатика: Учебн. пособие для пед. спец. высш. учеб. заведений\ А.Р.Есаян, В.И. Ефимов, Л.П. Лапицкая и др.-М.: Просвещение, 1991.-288с.:ил.-ISBN 5-09-002699-8.

21.    Информационные материалы на сервере кафедры ТИССУ МИРЭА и отдела Технического творчества МГДТДиЮ, в том числе учебные планы по специальностям 220200 и 071900 и примеры производственных и студенческих проектов.

22.    Информационные системы: Учебное пособие для студентов вузов по специальности 071900 – «Информационные системы в экономике»/под ред. В.Н. Волковой, Б.И. Кузина.-СПб.:Изд-во СПбГТУ, 1998, 213с.

23.    Информационные технологии в образовании. V Международная конференция-выставка. Материалы конференции.\Сост. Каймин В.А., Смольникова И.А. , Международная академия информатизации, Минобразования РФ и др., М.: 1996, 98с.

24.    Кнут Д.



Искусство программирования для ЭВМ, в 3х т. Т.3., пер. с англ., Изд. Мир, М.: 1978, 846с.

25.    Козачков Л.С. Прикладная логика информатики \ АН УССР. Ин-т кибернетики. – Киев: Наук. думка, 1990. – 256с. – ISBN 5-12-001195-0.

26.    Кулагин В.П., Матчин В.Т., Мордвинов В.А., Сазонов Б.А. Информатика – основообразующая дисциплина специальности 071900 «Информационные системы (в образовании)» с.39-41. в сб. «Научно-методический семинар «Информационные системы в наукоемких технологиях образования:\МГДТДиЮ, МИРЭА – М., 2000, 67с.»».

27.    Липаев В.В.

Докумнтирование и управление конфигурацией программных средств. Методы и стандарты. Серия «Информатизация России на пороге ХХI века». – М.: СИНТЕГ, 1998, 220с.

28.    Липаев В.В.

Документирование и управление конфигураций программных средств. Методы и стандарты. Проектирование ИС. Серия «Информатизация Росси на пороге XXI века». - М.: МИНТЕГ, 1998, 220с.

29.    Липаев В.В.

Системное проектирование сложных программных средств для информационных систем. Серия «Информатизация России на пороге ХХI века». – М.: СИНТЕГ, 1999, 224с.

30.    Лихачева Г.Н. Информационные технологии в экономике: Учебно-практическое пособие\Московский государственный университет экономики, статистики и информатики. - М.: МЭСИ, 1998. - 112с.

31.    Мартин Д.

Организация баз данных. – М.: Мир, 1980 – 600 с.

32.    Методические указания по выполнению лабораторных работ по дисциплине  «Информатика». Составители: В.П.Кулагин, В.Т.Матчин, МИРЭА, каф. ТИССУ, М.: 1999, электронная версия на сервере каф. ТИССУ с сопровождением на твердом носителе.

33.    Модели и системы представления знаний. Межвуз. сб. науч. тр./МИРЭА. – М., 1990. – 109 с.

34.    Мордвинов В.А. Информсреда новых информационных технологий \ Под ред. Н.В. Петропольского: Уч.пособие: МГДТДиЮ\МИРЭА. - М.: 1996, 75с.

35.    Мордвинов В.А.



Конспект установочных лекций по дисциплине «Введение в специальность 071900 «Информационные системы (в образовании)» («Информсреда в образовании»). Учеб. пособие для студентов первого курса МИРЭА по специальности 071900, учащихся 11 класса лицея «Воробьевы горы» (факультатив) и студентов и школьников в системе дополнительного образования, а также слушателей стажерской площадки МГДТДиЮ.\ Под общей редакцией ректора МИРЭА проф. А.С.Сигова \ Учебное пособие: МГДТДиЮ, МИРЭА – М., 2000, 47с.

36.    Мордвинов В.А. Конспект установочных лекций по дисциплине  «Информационно-социальные технологии в образовании» («Информсреда в образовании»). Учебное пособие для студентов МИРЭА по специальностям 071900 и 220200, а также слушателей стажерской площадки МГДТДиЮ и ФПК ЦНИТ МГДТДиЮ-МИРЭА-ГНИИ ИТТ «Информика» \ Под общ. ред. Н.И.Клятовой \ Учебное пособие: МГДТДиЮ, МИРЭА - М., 1999., 70с.

37.    Мордвинов В.А., Матчин В.Т. ВВЕДЕНИЕ В PDA-МОБИЛЬНЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ НА БАЗЕ ОС WINDOWS СЕ 2,0. Учебное пособие. (Часть первая: Технические и программные средства PDA-технологий.) МГДТДиЮ, МИРЭА и др.-М.,1998, с.70.

38.    Мордвинов В.А. Телекоммуникации. Информсреда НИТ.\Под ред. Н.В.Петропольского. Учебное пособие (вып. 2):\МГДТДиЮ, МИРЭА - М., 1966, 21с.

39.    Национальный доклад России на Втором всемирном конгрессе ЮНЕСКО «Образование и информатика», Минобразования РФ, 1997, М.

40.    Пайк М.

Интернет в подлиннике: Пер. с англ. – СПб.: BHV, 1996. – 640с., ил.

41.    Першиков В.И., Савинков В.М. Толковый словарь по информатике (более 1000 терминов). «Финансы и статистика», М.: 1991. – 538с.

42.    Поспелов Д.А.

Энциклопедия по информатике. М.: Просвещение, 1994, 106с..

43.    Романов А.А.

Компьютерная семантика. М.: МОЦ «Школа Китайгородской», 1995, 343 с.

44.    Сазонов Б.А. Концептуальные основы разработки новых информационных технологий формирования содержания подготовки по информатике.


М.: НИИВО, 1994г. – 80с. – (Новые информационные технологии в образовании: Обзор. информ.\НИИВО; Вып. 6).

45.    Советов Б.Я., Яковлев С.А. Моделирование систем. Практикум: Учеб. пособие для вузов по спец. «Автоматизир. системы обработки информ. и упр.». – М.: Высш. шк., 1999. – 224с.: ил.

46.    Состояние и развитие высшего и среднего профессионального образования.\Под научн. ред. А.Я.Савельева.  М.: Изд-во МФТИ, 1998. - 352с.

47.    Сэлтон Г. Автоматическая обработка, хранение и поиск информации. Нью-Йорк, 1968, Пер. с англ., под ред. А.И.Китова. М., «Сов. радио», 1973, 560с.

48.    Шафрин Ю.А.

Практикум по компьютерной технологии./Изд. Второе, дополн. и перераб. – М.: АБФ, 1997 – 560 с.: ил.

49.    Шемакин Ю.И.

Введение в информатику. М.:Финансы и статистика, 1985 – 200 с.

50.    Шемакин Ю.И. Начала компьютерной лингвистики. М.: МГОУ АО «Росвузнауч», 1992 – 113 с.

51.    Шемакин Ю.И.

“Теоретичекая Информатика”/учебное пособие\под  общей редакцией проф. акад. К.И.Курбакова. М.: Изд-во Рос. экон. акад., 1998, 80с.

52.    Якубайтис Э.А. Информационные сети и системы. Справочная книга. – М.: Финансы и статистика, 1996 – 368 с.: ил.

53.    Якубайтис Э.А. Информационные сети и системы. Проектирование. Справочная книга. Доп. издание, переработанное - М.: Финансы и статистика, 1999. - 368с.: ил.

54.    Burks A. W., Goldstine H. H. ,Neumann J. Prelivinary  Discussion  of  Logical Desing Of   Eltctronic   Computing   Instrument  //Prinston №4 . 46

Составители конспекта лекций:

Матчин Василий Тимофеевич, ассистент кафедры ТИССУ МИРЭА, методист сектора НИТ МГДТДиЮ.

Мордвинов Владимир Александрович, к.т.н., профессор, зав. кафедрой ТИССУ МИРЭА, директор центра НИТ МГДТДиЮ-МИРЭА.

Научные консультанты:

Кулагин Владимир Петрович, д.т.н., профессор, нач.отдела ГНИИ ИТТ «Информика».

Сазонов Борис Алексеевич, к.т.н., доцент, зам.


директора НИИВО.

Руководитель экспериментальной учебно-технологической площадки:

Минаков Владимир Ильич, засл.тренер РФ, зав.отделом Технического творчества МГДТДиЮ.

Общая редакция (редактор):

Сигов Александр Сергеевич, д.ф.-м.н., профессор, ректор МИРЭА.

Оглавление:

Модуль 01.Введение. Системный подход к подготовке по информатике технологов НИТ и ДО для учреждений образования........................................................................................................................................................................... 2

Модуль 02. Вводим основные понятия курса: информатика, информация, индустрия информатики, данные, база данных, база и банк знаний,…......................................................................................................................................................... 2

Принципы Фон Неймана................................................................................................................................................. 2

Модуль 03. Структура и закономерности протекания информационных процессов.............................. 2

Модуль 04. Общая характеристика последовательных и параллельных процессов сбора, передачи, обработки и накопления информации. Основы сред, структур и систем коллективов вычислителей...................... 2

Модуль 05. Описания систем через множество процессов................................................................................... 2

Сети Петри........................................................................................................................................................................... 2

Модуль 06. Языки программирования для описания взаимодействующих систем................................. 2

06.1. О языках программирования в курсе “Информатика”.................................................................................. 2

06.2. Аппликативные языки программирования. Типизированные языки........................................................ 2



Рекурсивные объявления функций................................................................................................................................ 2

Модуль 07. Кодирование и теория информации..................................................................................................... 2

07.1. Постановка вопроса............................................................................................................................................... 2

07.2. Коды и кодирование............................................................................................................................................... 2

07.3.Оптимальность кодов и разрешающая информация...................................................................................... 2

07.4. Надежность передачи сообщений...................................................................................................................... 2

Модуль 08. Операционные системы и системное программирование (в курсе “Информатика”)...... 2

08.1. Основные аспекты операционных систем........................................................................................................ 2

08.2. Относящиеся к пользователю аспекты ОС....................................................................................................... 2

08.3. Распределение ресурсов ВС................................................................................................................................. 2

08.4. Методы реализации системного программирования................................................................................... 2

08.5. Структуры ОС.......................................................................................................................................................... 2

Модуль 09. Вычислимость в информатике. Гипотетические машины.......................................................... 2

09.1.Постановка вопроса................................................................................................................................................ 2



09.2. Гипотетические машины....................................................................................................................................... 2

09.3.Рекурсивные функции.............................................................................................................................................. 2

09.4.Эквивалентность понятий вычислимости......................................................................................................... 2

Состояние   Левое слово   Знак   Правое слово......................................................................................................... 2

09.5.Разрешимость............................................................................................................................................................ 2

Модуль 10. Теория сложности в курсе “Информатика”....................................................................................... 2

10.1. Мера сложности...................................................................................................................................................... 2

10.2. NP-полнота................................................................................................................................................................ 2

10.3. Эффективные алгоритмы для NP-полных проблем....................................................................................... 2

Модуль 11. Методы описаний и программирования............................................................................................ 2

11.1. Формализмы для спецификаций.......................................................................................................................... 2

11.2. Базы данных и информационные системы...................................................................................................... 2

11.3. Логическое программирование........................................................................................................................... 2



11.4. Объектно-ориентированное программирование............................................................................................ 2

Модуль 12. Эффективные алгоритмы и структуры данных. Метод хэширования.................................... 2

12.1. Избранные алгоритмы........................................................................................................................................... 2

12.2. Деревья....................................................................................................................................................................... 2

12.3. Эффективное представление множеств............................................................................................................. 2

Модуль 13. Информационные системы, ресурсы и виды информационных систем (Обобщение)..... 2

13.1. Семантическая модель реальности и идеальности....................................................................................... 2

13.2 Информационные технологии.............................................................................................................................. 2

13.3. Предметная область............................................................................................................................................... 2

13.4. Представление данных.......................................................................................................................................... 2

13.5. Представление знаний........................................................................................................................................... 2

13.6. Информацинные ресурсы и виды информационных систем. Информащюнные ресурсы общества и предприятия             2

13.7. Фактографические информационнные системы............................................................................................. 2

КОМПЛЕКСНАЯ РАБОЧАЯ ПРОГРАММА.................................................................................................................. 2

Источники, адреса, развивающее информационное обеспечение  (сервер ЦНИТ МГДТДиЮ-МИРЭА)     2


Языковые средства для параллельных ходов работы


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

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

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

Пример (образование параллельных процессов). Пусть р - описание программы (или обозначение для такого описания), а х - идентификатор некоторого процесса (новый экземпляр выполнения программы). Оператор start р name х порождает процесс, соответствующий заданному описанию р. Процесс использует индивидуальное имя х, данное булевское выражению terminate х значения true называет на то, что процесс, обозначенный через х, уже закончен. Пока процесс протекает, булевское выражение дает значение false. С помощью terminate х процесс, обозначенный через х (и все индуцированные им процессы), заканчивается. Чтобы ввести обозначения (переменные) для самостоятельно выполняющихся программных единиц, используется объявление process х.

Тем самым объявляется переменная х, при содействии которой позднее может быть указана ссылка на ход выполнения программы с помощью start... name х.

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


process х;

     ргос р =: ... ;          {объявление процедуры}

     start р name х ;            {начать параллельно протекающий процесс}

     if terminated х            then      {cбop, если процесс не заканчивается}

else terminate х

Пример (поиск в дереве). Пусть заданы тип

node вершин и тип tree

двоичных деревьев с помощью объявления

sort tree = empty j cons(tree left, node

root, tree right).

Пусть задано двоичное дерево t, в котором надо проверить, встречается ли определенная вершина i. В программе будем использовать процедуру suche с заголовком процедуры proc suche = (tree t, node i, var bool z), которая результирующей переменной z присваивает значение true, если в двоичном дереве t имеется вершина, помеченная через i, и значение false в противном случае. Последовательная программа, которая решает поставленную задачу, выглядит следующим образом:

proc suche = (tree t, node i, var bool z):

if  isempty(t)

then    if root(t) == i     then z := true

else var bool zl, zr; suche(left(t), i, zl); suche(right(t), i, zr); z :== zl v zr

else z := false

Вызов процедуры suche(t, i, z) создает каскад параллельно выполняемых вызовов процедуры suche, по одному на каждую вершину. После того как выполнение всех вызовов будет завершено, переменная z содержит искомый результат.


Эффективное представление множеств


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

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

Если рассматриваются маленькие множества и необходимы операции пересечения и объединения, то можно порекомендовать представление множеств в виде битовых векторов. При этом подмножества основного множества представляются векторами битов, длина которых соответствует мощности основного множества. Если какой-либо элемент принадлежит множеству, то в соответствующий бит заносится значение true, в противном случае—значение false. Такое представление плохо подходит для очень большого основного множества, поскольку теряется много памяти, особенно в том случае, когда должны представляться подмножества с относительно малой мощностью. В этом случае предлагается рассматриваемое ниже представление, а именно методика хэширования.

Вычислительная структура множеств с доступом по ключу

В приложениях часто бывают нужны структуры данных, которые содержат большое количество данных и доступ к которым осуществляется с помощью ключей. Пусть дано множество ключей с помощью типа

sort key.

fct key=(data) key.

Выше приведенная функция осуществляет доступ к порциям данных типа data, содержащих в себе компоненту типа key.

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

fct emptystore=store,

fct get=(store, key) data,

fct insert=(store, data) store,

fct delete=(store,key) store.

Способ действия этих функций можно представить следующими равенствами:

k = key(d) Þ get(insert(s, d), k) = d

k ¹ key(d) Þ get(insert(s, d), k) = get(s, k),

delete(emptystore, k) = emptystore,

k = key(d) Þ delete(insert(s, d), k) = delete(s, k),

k ¹ key(d) Þ delete(insert(s, d), k) = insert(delete(s, k), d).

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

 

Метод хэширования

Метод хэширования

позволяет хранить множество элементов в линейном массиве длиной z. Для этого нужна функция расстановки («рассыпания»):

h: keyà[0:z-1],

которая каждый элемент типа key отображает на индекс в множестве [0:z-1]. Эта функция устанавливает, под каким индексом будет храниться данный элемент в массиве. Используем h(m) в качестве индекса (также называемого ключом) для запоминания элемента данных в массиве

sort store = [0:z-1] array data a.

Как правило, число элементов типа key значительно больше, чем z. Тогда функция h наверняка неинъективна. Возможно хранение элемента b с ключом m в массиве a под индексом h(m). Получаются следующие реализации функций:

fct emptystore = store: emptyarray,

fct get = (store

a, key k) data: a[h(k)]

fct insert = (store a, data d) store: update(a, h(key(d)), d),

fct delete = (store a, key k) store: update(a, h(k), empty).

Здесь предполагается, что empty обозначает элемент типа data, который играет роль держателя места. Функции работают корректно, пока для всех встречающихся ключей значения функции расстановки различны. Возникает проблема, когда нужно запоминать два различных элемента с ключами m1 и m2, и при этом оказывается h(m1)=h(m2).


В этом случае говорят о коллизии.

Для использования метода хэширования надо справиться со следующими проблемами:

·         определения величины массива и тем самым числа z значений индексов,

·         выбор функции расстановки h,

·         определение способа разрешения коллизий.

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

Размер массива должен быть выбран таким, чтобы массив был занят не более чем на 90%.

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

Если сами ключи также заданы в виде натуральных чисел, например из интервала от 0 до s-1, где число s значительно больше числа z, то в качестве функции расстановки можно просто взять

h(i) = i mod z. 

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


Следует также обратить внимание, что вычисление этой функции не должно быть слишком трудоемким.

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

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

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

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

Если при вычислении значения индекса для заданного ключа выясняется, что по этому индексу уже занесен элемент данных с другим ключом, то по определенному правилу вычисляется следующий индекс, по которому и заносится элемент данных.


Если по этому индексу был уже занесен элемент данных, то вычисляется следующий индекс и т.д.—до тех пор, пока не будет найдено свободное место в массиве.

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

Различают линейное и

квадратичное зондирование. При линейном зондировании позиции хэш-массива просматриваются с постоянным шагом, а при квадратичном, исходя из значения h(i),—значения индекса

h(i)+1 mod z, h(i)+4 mod z, h(i)+9 mod

z,…,h(i)+j2 mod z.

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

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

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


Если же в определенных приложениях должны использоваться все элементы данных, например, обработка типа сортировки или такие операции над множествами, как объединение и пересечение, то этот метод менее удобен. Чтобы и в этих случаях можно было эффективно работать с хэш-массивами, необходима трудоемкая предварительная сортировка.

Анализ статистики показывает, что метод хэширования чрезвычайно эффективен, если нет слишком большого заполнения хэш-массива. Даже его заполнение на 90% при достаточно удачно выбранном способе зондирования для занесения или выбора нужного элемента в среднем требует 2,56 шага зондирования. Это значение существенно зависит от степени загрузки массива. Поэтому размер хэш-массива следует выбирать таким, чтобы в процессе работы он заполнялся не более чем на 90%.

Отсюда вытекают и недостатки метода хэширования. Если размер массива выбрать слишком большим по отношению к числу фактически хранимых в нем элементов, то значительная часть выделенной памяти будет просто пропадать. Если же размер массива окажется слишком малым, то будет возникать слишком много коллизий, для их устранения придется просматривать длинные списки элементов и по затратам времени метод окажется неэффективным. Недостаток прежде всего состоит в том, что размер хэш-массива должен быть выбран и зафиксирован предварительно и этот размер не может быть динамически подогнан к числу фактически заносимых элементов.

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

Существует много различных вариантов метода хэширования. Рафинированные способы хэширования получаются при так называемом “grid file”, когда в хэш-памяти размещается информация с двумерными и многомерными китчами с помощью функций хэширования.Для этого плоскость или пространство делят не растры точками, которые хранятся в таблице, и отсюда определяют функцию хэширования.


Эффективные алгоритмы для NP-полных проблем


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

NP-полные проблемы всегда можно понимать как проблемы поиска. Недетерминированной Т-машине мы можем предписать конечное дерево с ограниченной числом v степенью разветвления и с ограниченной полиномом р(п) его высотой. Детерминированный алгоритм должен по-существу обойти (просмотреть) это дерево, содержащее 0(vP(^) вершин. Часто NP-полные проблемы представляют собой задачу оптимизации типа «найти кратчайший путь», «найти оптимальный ход» и т. п.

Для эффективной обработки - в рамках экспоненциальной сложности - для NP-полных проблем можно выбирать, в частности, следующие методы.

(1)        Branch and Bound (искусный бэктрекинг).

Поиск в пространстве решений организуется целенаправленно:

·

в первую очередь проходятся легко вычисляемые ветви;

·         своевременно распознанные как неинтересные ветви обрезаются и не проходятся полностью.

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

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

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

(4)        Вероятностные алгоритмы. Эти алгоритмы сознательно используют случайные величины, порождаемые генератором случайных чисел. При этом имеется два варианта:

(1) алгоритмы, которые дают корректный результат только с определенной вероятностью (которая при соответствующих затратах может быть выдержана сколь угодно близкой к единице);

(2) алгоритмы, которые завершаются в заданные границы времени только с определенной вероятностью.

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

(6)        Эвристические методы. Как раз в случае NP-полных задач мы часто находим эвристические методы, которые удивительно хорошо работают, хотя неясно почему, и относительно этого нет каких-либо точных высказываний.

Для соответствующей работы с NP-трудными проблемами от программиста требуется особое искусство.


Эквивалентность понятий вычислимости


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

Эквивалентность m-вычислимости  и тьюринг-вычислимости

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

Важным методом решения вопроса вычислимости,  является гёделизация, которая восходит к немецкому логику Курту Гёделю (1933 г.).

Для конечного множества знаков А отображение

f: А* -> N

назовем гёделизацией

множества А, если справедливы следующие высказывания:

1.      f инъективно;

2.      f вычислимо (существует алгоритм, который для всех слов w Î А* вычисляет число f(w));

3.      существует алгоритм, который для всех чисел n принадлежит N определяет, справедливо ли равенство n = f(w) для слова w Î А*;

4.      существует алгоритм, который для любого числа n Î f (А*) вычисляет

5.      слово w Î А*, для которого справедливо n = f(w).

Таким образом, гёделизация есть трансформация представления для слов из А* в натуральные числа такого рода, что все понятия вычислимости являются переносимыми.

Теорема. Каждая m-рекурсивная функция является тьюринг-вычислимой.

Идея доказательства. Для каждой из базисных m-рекурсивных функций  можно задать соответствующую Т-машину. Композицию рекурсивных функций можно реализовать через композицию Т-машин. Примитивные рекурсии и m-рекурсии также могут быть смоделированы с помощью Т-машин. Этим способом каждую

m-рекурсивную функцию можно перевести в Тьюринг-программу.

Теорема. Каждая (целочисленная) тьюринг-вычислимая функция является

m-вычислимой.

Идея доказательства. Обозначим через К множество конфигураций Т-машины. Применим инъективную («вычислимую») функцию


rep: К ® N,

которая головку чтения/записи, ленту и состояния машины, т. е. конфигурации, представляет целыми числами («геделизирует»). Отношение следования на конфигурациях оказывается примитивно-рекурсивным. Существует примитивно-рекурсивная функция

g: N -> N,

такая, что для всех конфигураций k0, k1 машины Тьюринга справедливо

ko à k1 àg(rep(ko)) = rep(k1).

С помощью различения случаев, которое также может быть выражено в примитивной рекурсии,  можно специфицировать примитивно-рекурсивную функцию h с двумя параметрами n и m таким образом, что h(n, m) Точно тогда дает значение нуль, когда Т-машина, начиная работу с конфигурации, представленной параметром n, после m шагов останавливается. Эта примитивно-рекурсивная функция

h: N2à N

специфицируется следующим образом (предполагается, что g° (n) — n):

h(n,m)=[ 0, если g”(n) соответствует терминальной конфигурации,

h(n, m) = 1 иначе.]

Нужно ввести еще одну примитивно-рекурсивную функцию it с двумя параметрами n и m, такую, что it(n, m) доставляет представление конфигурации Т-машины, которая возникает через m шагов вычислений из начальной конфигурации, представленной параметром n. Функция

it:N2àN

специфицируется через

it(n, 0) = n,‘

it(n,m+l)=g(it(n),m).

Она, очевидно, также примитивно-рекурсивна.

Функция tm: N à N, специфицированная равенством tm(n) = it(n, m(h)(n)),

соответствует функции, которую вычисляет Т-машина, и является частичнорекурсивной.

Аналогичным образом можно доказать эквивалентность и других понятий вычислимости. В частности, эквивалентны также понятия RM-вычислимости и µ-вычислимости.

Эквивалентность RM- и тьюринг-вычислимости

Модели машин Тьюринга и регистровых машин весьма близки друг к другу, так что кажется достаточно очевидным, что RM- и Т-вычисли-мости эквивалентны.

Так как m-рекурсивность и Т-вычислимость являются эквивалентными понятиями, то из эквивалентности RM-вычислимости и Т-вычислимости следует также эквивалентность RM-вычислимости и m-рекурсивности.



Теорема: Для каждой программы Р для k—R—машины можно задать Т-машину М с алфавитом ленты {¾, ½}, которая моделирует данную R-машину.

Доказательство. Структурная индукция по структуре программы Р:

Р =e         М читает входное слово, не изменяя его;

Р = sucCi      М продвигается до i-го входного значения, добавляет один штрих ½ и возвращается в исходную позицию;

Р = predj М продвигается до i-го входного значения, вычитает один штрих и возвращается в исходную позицию;

Р = P1;P2 последовательная композиция Т-машин для P1 и Р2;

Р = whilei(Po) М продвигается до i-го входного значения; если там стоит штриховое представление для числа 0, следует остановка; в противном случае М возвращается к началу, запускает программу Р0 для М0, причем все состояния останова М0 заменяются на начальное состояние М.

Можно говорить также о моделировании Т-машины на k-R-машине, кодируя ленту в регистрах.

Теорема. Для каждой детерминированной машины Тьюринга TM, которая вычисляет функцию f: Ni -> Nj  в обычном кодировании через {¾, ½}, существует k-регистровая машина (причем число регистров k зависит от машины Тьюринга TM), моделирующая машину TM.

Идея доказательства. Можно выбрать примерно следующую кодировку конфигурации Т-машины TM через состояния регистров R-машины М:


Элементы чисто аппликативных языков программирования


Особый класс языков программирования (ЯП) образуют так называемые аппликативные,

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

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

Существует два дополняющих семантических взгляда на ЯП. По первому из них ЯП можно понимать, как возможность формулировать над заданной вычислительной структурой алгоритмического базиса новые выражения и функции. Это дает возможность программисту работать чисто функционально. Впрочем, элементы ЯП выбирают так, что имеются в распоряжении алгоритмы (например, путем замены термов), которые предпринимают вычисление значений выражений, формулируемых в языке. На ЭВМ выполнение аппликативной программы осуществляется, как правило, не с помощью СПТ, а путем выполнения на ЭВМ специальной программы, называемой интерпретатором.

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

Пример (функция факториала). Математически факториал может быть специфицирован следующим образом: факториал есть отображение !: N>N в постфиксной записи (точка показывает позицию аргумента.). Имеют место равенства:

О! = 1,

(n+1)! = (n+1) * (n!).


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

           1,                  если n=0,

n! =

           n*((n-1)!),    если n>0.

В языке программирования (ЯП) Паскаль это записывается аналогичным образом (с fac(n)=n!):

function fac (n: integer): integer;

begin if n = 0   then fac := 1

else fac := n * fac(n - 1)

еnd;

В ЯП Модула-2 это соглашение о функции читается следующим образом:

PROCEDURE fac (n: CARDINAL): CARDINAL;

BEGIN IF n=0 THEN RETURN 1

ELSE RETURN n * fac(n - 1)

END

END fac

Из этого примера видно, как может быть введена функция, связанная с символом функции fac. При этом предполагается ряд заданных "примитивных" символов функции и операций. В примере факториала таковыми являются сравнение = (точнее, сравнение на нуль = 0), умножение * и вычитание -. Особое место занимает разветвление (различие случаев) if-then-else-fi. Оно рассматривается не как (нестрогая) функция, а как элемент аппликативного языка.

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

Так, в вышеприведенном примере терм вида

mult (1, ... , mult (n – 1, n) ...)

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

fac (n)

представляет (непримитивное) выражение.


Коды и кодирование


В дальнейшем  будет предполагаться конечное множество А знаков, которое называется также запасом знаков.

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

Особенно элементарным запасом знаков является множество В:

В={L.,0}.

Элемент множества В называется двоичным знаком или битом

(Bit – от  Binary Digit).

      

Множество конечных последовательностей знаков над запасом знаков А называется также множеством слов над А. При множестве В* = {L О}* говориться о двоичных словах. Элементы множества

называются также п-битовыми словами или двоичными словами длины п. Множество n-битовых слов часто само снова используется в качестве запаса знаков.

Отображения между запасами знаков А и В, и в частности между словами над запасами знаков, называются кодами

или кодировкой..

Специальные случаи кодировки предусматривают представление не для всех слов из А*. Такие кодировки соответствуют частичным

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

В общем случае  предполагается, что кодировка является инъективным отображением: различные знаки и слова в этом случае отображаются на разные кодовые слова. Тем самым каждая кодировка

обратима на ее прообраз. Обратное отображение

для отображения кодировки с называется декодировкой или дешифровкой. Тогда справедливо следующее: d(c(a))=a.

Коды постоянной длины

При двоичных кодировках, которые каждый кодируемый знак отображают на двоичное слово одинаковой длины,  говориться о кодах постоянной длины. Таким кодировкам соответствуют отображения вида

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


Пусть а, b - двоичные слова одинаковой длины; число позиций, в которых различаются слова а и b, назовем расстоянием Хэмминга. Таким образом, расстоянию

Хэмминга математически соответствует отображение

       Расстояние отображения кодировки

для длины кодов n определяется через минимальное расстояние Хэмминга между двумя различными кодами:

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

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

Пример (4-битовый код Грэя для десятичных цифр). Четырехбитовый код Грэя для десятичных цифр соответствует кодировке

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

Большие расстояния Хэмминга могут быть достигнуты, например, увеличением длины кодовых слов для дополнительных знаков.

Коды переменной длины

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

Пример (коды переменной длины).

(1) Код Морзе в двоичном кодировании

Код Морзе строится из трех знаков, которые соответствуют «короткой». «длинной» передаче (точки и тире) и пробелу («паузе»). Двоичная кодировка

с : { ., -, «пауза»} -^ { OL, OLLL, 000} определяется следующим образом:

с(.) = OL, с(-)  = OLLL. с(«пауза») = 000.

(2) Код для телефонных систем

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



Цифра        Код

1                             LO

2                             LLO

3                             LLLO

4                             LLLLO

5                             LLLLLO

6                             LLLLLLO

7                             LLLLLLLO

8                             LLLLLLLLO

9                             LLLLLLLLLO

                                 0              LLLLLLLLLLO

Таблица 7.1. Код для телефонных cucmem

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



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

Последовательное и параллельное кодирование последовательностей знаков

Если необходимо кодировать как отдельные знаки из А, так и слова над А и закодированную информацию передавать по проводам, то - исходя из кодирования отдельных знаков из А - могут использоваться две принципиально различные возможности.

(1)   

Последовательная кодировка слов. Для заданной кодировки

отдельных знаков рассмотрим ее расширение на слова над А. Это значит, что рассматривается кодировка с* над А*, индуцированная кодировкой с.

Таким образом, при последовательной кодировке слов  кодируются слова w над А путем конкатенации кодов отдельных знаков слова w.

(2) Параллельная кодировка cлoв. Для заданной кодировки с с постоянной длиной кодов рассматривается индуцированное отображение с'.

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


КОМПЛЕКСНАЯ РАБОЧАЯ ПРОГРАММА


дисциплин "Информатика" и «Теория информации» - комплексной дисциплины «Информатика, теория информации, информациология» (далее сокращенно «Информатика»).

Специальности: 220200 - "Автоматизированные системы обработки информации и управления" (специализация «в образовании») и 071900 - «Информационные системы (в образовании)».

                                             (Шифр  по ГОСу)

Составлена на основании Государственных требований к минимуму содержания и уровню подготовки инженера по специальности 220200 и 071900.

                                                                                   (Шифр  по ГОСу)

Программа разработана и реализуется на Экспериментальной технологической площадке ГНИИ ИТТ «Информика» - МИРЭА-МГДТДиЮ в учебном процессе МИРЭА по кафедре ТИССУ и в системе дополнительного образования секторов НИТ и ИВТ МГДТДиЮ в целях развивающего обучения.

Кафедра: Технических и информационных средств систем управления (ТИССУ) МИРЭА.

Секторы: Новых информационных технологий (НИТ) и Информатики и вычислительной техники (ИВТ) отдела Технического творчества МГДТДиЮ.

1.     ЦЕЛИ И ЗАДАЧИ ИЗУЧЕНИЯ ДИСЦИПЛИНЫ, ЕЕ МЕСТО В УЧЕБНОМ ПРОЦЕССЕ

1.1. Цель изучения дисциплины.

Получение:

·         представления о математическом моделировании; об информации, методах ее получения, хранения, обработки и передачи;

·         знания о базовых понятиях информатики и  вычислительной  техники; о предмете и основных методах информатики; о закономерностях протекания информационных  процессов в системах управления; о принципах работы технических и программных средств; о информационных пределах избыточности при построении систем передачи информации;

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


·         опыта использования, применения возможностей  вычислительной  техники  и программного обеспечения; методов проектирования в области информатики; методов программирования; оптимальных кодов для каналов  без  шума,  а также избыточных кодов для каналов с шумом;

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

1.2. Задачи изучения дисциплины:

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

Задача решается благодаря тому, что основное внимание уделено понятию информации и различным формам ее представления, ориентированном на машинную обработку. Подробно рассматривается понятие алгоритма, свойства и классификация алгоритмов, способы их формального описания и исполнения. Даются общие сведения о языках программирования, их реализации и методах программирования, а также машинно-ориентированные языковые элементы. Большое внимание уделено типичным для многих языков структурам данных, объявлениям функций, процедур и типов данных, при этом особое внимание уделяется рекурсивным объявлениям. При изложении материала систематически делается акцент на его теоретические аспекты. Рассматриваются вопросы теории кодирования. Приведены различные виды кодов, их оптимальность, надежность передачи. Теоретической основой современных ЭВМ является булева алгебра, т.к. они строятся на базе двоичных элементов. Показывается, как на базе простейших элементов можно строить более сложные решения. Рассматриваются распределенные вычислительные системы и параллельная обработка данных. Вводится фундаментальное для таких систем понятие процесса, дается его математическое определение, способы описания процессов и систем взаимодействующих процессов, вопросов коммуникации и синхронизации, средства языков программирования для описания параллельных взаимодействующих процессов.


Рассматриваются операционные системы – их назначение, функции и реализация, особенности ОС для различных режимов работы ЭВМ и их использования, приводятся примеры реализации ОС для различных режимов работы ЭВМ и их использования, приводятся примеры реализации ОС для модельной машины. Приводится реализация языков программирования с помощью интерпретаторов и компиляторов. Подробно рассматриваются основные фазы их работы – лексический и синтаксический анализ. Обозначаются теория формальных языков (основные понятия отношений и графов), формальные языки и их классификации по Хомскому, различные способы задания грамматик и их соотношения, понятия вычислимости и сложности вычислений. Рассматривается ряд классических алгоритмов (сортировка данных, нахождение путей в графах) с оценкой их сложности, а также избранные структуры данных, ориентированные на хранение больших множеств данных, и эффективные методы работы с ними (в частности, специальные древовидные структуры и хэш-таблицы). Изучаются формализмы спецификаций, базы данных и информационные системы, а также – дополнительно к рассмотренным стилям программирования – логическое и объектно-ориентированное программирование. Даются заключительные замечания к информатике, как науке (информациологии), касающиеся ее современного состояния и перспектив развития, а также обсуждаются некоторые специфичные аспекты информатики (правовые, социальные, экономические, философские и др.), связанные с построением информационного общества и развитием информационно-социальных технологий.

1.3. Перечень дисциплин и разделов, знание которых требуется для изучения данной дисциплины:

Введение в специальность

Высшая математика (алгебра, дискретный анализ, математическая логика и формальные системы, математический анализ, дифференциальные уравнения)

2.       СОДЕРЖАНИЕ ДИСЦИПЛИНЫ

2.1. Наименование тем, их содержание.

Часть первая

2.1.1. Введение в курс: понятие информации, основные определения.



2.1.2. Виды информации (классификация).

2.1.3. Булева алгебра, булевские термы.

2.1.4. Исчисление предикатов.

2.1.5. Теория графов.

2.1.6. Теория сложности.

2.1.7. Рекурсивные функции.

Часть вторая

2.1.8. Алгоритмы.

2.1.9. Вычислительные структуры.

2.1.10. Кодирование и теория информации.

2.1.11. Процессы.

2.1.12. Грамматики.

2.1.13. Контекстно-свободные языки и магазинные автоматы.

2.1.14. Гипотетические машины: Машины Тьюринга. Регистровые машины.

Часть третья

2.1.15. Методика программирования.

2.1.16. Параллельные векторные архитектуры.

2.1.17. Языки программирования и программирование: Синтаксис. Описание формального языка с помощью БНФ.

2.1.18. Аппликативные языки программирования: Элементы аппликативных языков программирования.

2.1.19. Аппликативные языки программирования: Техника аппликативного программирования.

2.1.20. Аппликативные языки программирования: Техника доказательства для рекурсивных программ.

2.1.21. Объявление типов. Массивы. Конечные множества как вычислительные структуры. Рекурсивные объявления типов. Списки.

2.1.22. Структура вычислительных машин. Машинно-ориентированные программные структуры.

2.1.23. Процессы, коммуникация и координация в распределенных системах.

2.1.24. Операционные системы и системное программирование.

2.1.25.  Интерпретация и компиляция программ.

2.1.26. Эффективные алгоритмы и структуры данных: Избранные алгоритмы. Деревья. Эффективное представления множеств.

2.1.27. Методы описаний в программировании: Формализмы для спецификаций. Логическое программирование.

2.1.28. Методы описаний в программировании: Объектно-ориентированное программирование.

2.1.29. Методы описаний в программировании: Базы данных и информационные системы. Моделирование отношений сущность/связь.

2.1.30. Методы описаний в программировании: Базы данных и информационные системы. Характеризация связей.

2.1.31. Методы описаний в программировании: Базы данных и информационные системы. Система управления базой данных.



2.1.32. Методы описаний в программировании: Базы данных и информационные системы. Запросы к базам данных и их изменение.

2.1.33. Методы описаний в программировании: Базы данных и информационные системы. Применение систем баз данных.

2.1.34. Заключительные замечания по курсу: Применения информатики в инженерных областях и в образовании. Информатика и наука.

2.2.  ЛАБОРАТОРНЫЕ РАБОТЫ (рекомендуемый перечень).

Введение в лабораторный практикум (Инструктаж). Настройка ОС Windows 95/98/NT на АРМ.

Командные файлы. Конфигурационные файлы.

Обработка текстовых термов на примере текстового процессора Microsoft Word 95/97.

Форматирование табличной информации.

Работа с графическими объектами и операции над ними в Microsoft Word.

Организация доступа к информации через удаленный терминал.

Сбор (поиск) информации в WWW.

Введение в язык гипертекстовой разметки HTML.

Моделирование жизненного цикла программного обеспечения информационных систем.

Оформление результатов, подготовка к зачету по лабораторному практикуму.

Использование и создание шаблонов.

Базы данных в среде Microsoft Excel 95/97.

Реляционная СУБД Microsoft Access 95/97.

Организация работы с данными в Microsoft Access 95/97.

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

Оформление результатов, подготовка к зачету по лабораторному практикуму.

2.3. ПРАКТИЧЕСКИЕ ЗАНЯТИЯ (программа формируется индивидуально).

2.4. ТЕМАТИКА КУРСОВЫХ - ТВОРЧЕСКИХ РАБОТ

Решение задач детерминистических текстовых замен.

Разработка синтаксических диаграмм описания формальных языков.

Построение рекурсивных объявлений функций.

Разработка описания, ориентированных на присваивание языковых элементов.

Разработка диаграммы управления потоком.

Использование вычислительных структур последовательностей.

Разработка кодового дерева при параллельной и последовательной передаче.

Построение и описание П-схемы с заданными параметрами.

Разработка и описание раздаточного автомата с помощью сети Петри.



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

Решение задач на недетерминированных полиноминально-ограниченных по времени T-машинах (с трассированным направленным обходом Гамильтона).

Построение последовательного структурированного процесса с помощью трасс.

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

Решение задач недетерминированного порождения перестановки с использованием бэктрекинг-недетерминированности в языках программирования.

Сортирование и упорядочивание деревьев, представление деревьев массивами, построение AVL и B-деревьев.

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

2.5. ТЕМАТИКА И ФОРМЫ ИНДИВИДУАЛЬНОЙ РАБОТЫ УЧАЩИХСЯ С ПРЕПОДАВАТЕЛЯМИ

Формы индивидуальной работы с учащимися: собеседование, обсуждение, выдача заданий на ИР, реферирование, поиск и обработка информации на сервере кафедры и в сети Интернет и т.п.

Предметная область и круг рассматриваемых вопросов (примеры):

·         Списки.

·         Простые списки.

·         Рекурсивно объявленные списковые типы.

·         Реализация последовательностей в виде списков и кольцевые списки.

·         Контекстные условия.

·         Семантика.

·         Синтаксические диаграммы.

·         БНФ-нотация.

·         Формальное описание алгоритма через замену текстов и т.д.

2.6. ТЕМЫ  САМОСТОЯТЕЛЬНЫХ  ЗАДАНИЙ:

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



Часть первая:

1.       Произвести вычисления с булевскими термами.

2.       Построить структурный граф.

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

Часть вторая:

1.       Построить алгоритм текстовых замен.

2.       Построить кодовое дерево.

3.       Описать функцию Аккермана через структурную рекурсию.

Часть третья:

1.       Выполнить сортировку через выбор (в императивной форме).

2.       Осуществить моделирование отношений сущность/связь для заданного объекта.

3.       Представить десятичную систему счисления в БНФ-описании.

Приложение 02

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ И ДИСКУССИЙ (ТЕЛЕКОНФЕРЕНЦИЙ)

по комплексной дисциплине «Информатика-теория информации-информациология»:

1.       Понятие о теории информации.

2.       Простейшие свойства информации, кодирование, префиксные коды.

3.       Законы булевской алгебры и булевских термов.

4.       Пути в графах и образование замыканий.

5.       Теорема Кнастера-Тарски. (приведите доказательство теоремы)

6.       Мера сложности. Временна’я сложность.

7.       Дерево. Его характеристики.

8.       Свойства булевых функций.

9.       Теорема по Савичу. (приведите доказательство теоремы)

10.    Информация и ее представление.

11.    Предикат. Представление предикатов.

12.    Гриди-алгоритмы.



13.    Понятие графа. Способы задания графов.

14.    Ленточная сложность.

15.    Сигнатуры. Диаграмма сигнатуры.

16.    Алгоритм Форда.

17.    Синтаксические диаграммы.

18.    Взаимная рекурсия.

19.    Форма Бэкуса-Наура

20.    Планарность. Теорема Понтрягина-Куратовского.

21.    Формальные языки.

22.    Корневые деревья. Независимые циклы.

23.    Декартово произведение множеств.

24.    База и ядро графа.

25.    Булевы функции, стрелка Пирса, и «штрих Шеффера».

26.    Алгоритмы подстановки термов.

27.    Неравенство Крафта, код Левенштейна.

28.    Теорема Шеннона I, оптимальное кодирование.

29.    Код Хаффмана.

30.    Энтропия и стоимость кодирования марковских источников.

31.    Теорема Шеннона II.

32.    Теорема Гильберта-Мура, блочное кодирование.

33.    Неблочное кодирование.

34.    Код Ходака.

35.    Арифметический код Рассанена.

36.    Универсальное кодирование.

37.    Кодирование Штарькова-Бабкина, оценка его избыточности.

38.    Кодирование Зива-Лелепеля, оценка избыточности.

39.    Метод универсального кодирования Рябко-Элайеса.

40.    Обратная теорема кодирования и теорема Шеннона для дискретного канала без памяти.

41.    Код Хемлинга, граница Хемлинга, коды. Граница Варламова-Гильберта, закон Цимфа.

42.    Теорема о свойстве конгруэнции семантической эквивалентности для подстановок.

43.    Алгоритмы Маркова.

44.    Функциональные понятия теории множеств. Аксиоматика теории множеств.

45.    Связный список. Представление и работа с ним.

46.    Формула упрощения булевых функций.



47.    Эйлеров цикл. Полуэйлерность. Критерий эйлерности.

48.    Неформальные описания алгоритмов.

49.    Построение алгоритмических моделей с использованием интерпретатора машины Поста.

50.    Принцип работы машины Тьюринга.

51.    Код Грэя.

52.    Метод рекурсивного спуска.

53.    Коды переменной длины.

54.    Грамматика Хомского.

55.    Последовательное и параллельное кодирование последовательностей знаков.

56.    Магазинные автоматы.

57.    Нормальная форма Грейбах.

58.    Оптимальность кодов и разрешающая информация.

59.    Теорема кодирования Шеннона.

60.    Магазинные автоматы и контекстно-свободные языки.

61.    Надежность передачи сообщений.

62.    Форма Бэкуса-Наура.

63.    Надежность кодов.

64.    LR(k)-языки.

65.    LL(k)-грамматики.

66.    Формальное описание алгоритма через замену текстов.

67.    Алгоритмы Маркова.

68.    Контекстно-зависимые грамматики.

69.    Отображения, индуцируемые алгоритмами текстовых замен.

70.    Гипотетические машины.

71.    Семейства функций и множеств как вычислительные структуры.

72.    Грамматики.

73.    Сигнатуры.

74.    Иерархия языков по Хомскому.

75.    Основные термы.

76.    Структурные графы и структурные деревья.

77.    Термы с идентификаторами.

78.    Тупики и бесконечные трассы вывода.

79.    Параллельные векторные архитектуры.

80.    Моделирование отношений сущность\связь.

81.    Информатика и науки.

82.    Применение систем баз данных.

83.    Процессы, коммуникация и координация в распределенных системах.



84.    Характеризация связей.

85.    Процессы, коммуникация и координация в распределенных системах.

86.    Функции операционной системы.

87.    Структуры действий как процессы.

88.    Диаграммы сущность\связь.

89.    Сети Петри.

90.    Система управления базой данных.

91.    Предикаты над процессами.

92.    Запросы к базам данных и их изменение.

93.    Коммуникация через обмен сообщениями.

94.    Объектно-ориентированное программирование.

95.    Деревья. Эффективное представление множеств.

96.    Применение систем баз данных.

97.    Описание формального языка с помощью БНФ.

98.    Запросы к базам данных и их изменение.

99.    Элементы аппликативных языков программирования.

100.Логическое программирование.

101.Техника аппликативного программирования.

102.Интерпретация и компиляция программ.

103.Рекурсивные объявления типов. Списки.

104.Операционные системы и системное программирование.

105.Интерпретация языков программирования.

106. Простая операционная система для пакетного режима.

107.Компиляция языков программирования. Компилятор

108.Структурирование операционной системы.

 

Приложение 03.

 

ПРИМЕРЫ ЛАБОРАТОРНЫХ ИССЛЕДОВАНИЙ

по комплексной дисциплине «Информатика-теория информации-информациология»

ЛАБОРАТОРНАЯ РАБОТА №1

Внедрение изображений, работа с графическими объектами и операции над ними в Microsoft Word

1. Методические указания

Работа с рисунками в Microsoft Word

В среде Microsoft Word существует возможность вставки рисунков и отсканированных фотографий из других программ и файлов. Для вставки рисунка из другой программы выберите команду Рисунок в меню Вставка, а затем — команду Из файла. При выделении рисунка на экране появляется панель инструментов Настройка изображения, которую можно использовать для обрезки изображения, добавления границ, а также регулировки яркости и контрастности.


Для вставки отсканированной фотографии выберите команду Рисунок в меню Вставка, а затем — команду Со сканера. На экране появится рисунок в окне программы Microsoft Photo Editor, предназначенной для редактирования рисунков.

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

Для создания фигурного текста нужно выбрать кнопку Добавить объект WordArt на панели рисования.

Word распознает большинство наиболее распростра-ненных графических форматов. Так как все программы Office используют одни и те же графические фильтры, фильтр, установленный при установке другой программы Office — например PowerPoint или Microsoft Excel, — будет доступен при работе в Word. Для получения дополнительных сведений о графических форматах см. Приложение 1.

Word вставляет рисунки в документ как объекты. Поэтому освоение работы с объектами является важным в процессе работы с документом.

Вставка рисунка

В Microsoft Word предусмотрена возможность вставки картинки или рисунка из Clip Gallery, а также точечного рисунка или отсканированной фотографии из других программ. Точечный рисунок - рисунок, состоящий из множества точек, составляющих фигуры и линии. Точечные рисунки создаются в графических редакторах типа Microsoft Paint или путем сканирования изображений. Точечные рисунки не могут быть преобразованы в наборы графических объектов, однако допускают обрезку, масштабирование и изменение цвета (с помощью панели Настройка изображения).



После вставки картинки ее можно преобразовать в набор графических объектов, а затем отредактировать, используя кнопки на панели инструментов Рисование, например, изменить заливку или цвет линий, перегруппировать элементы или объединить несколько рисунков. При выделении рисунка на экране появляется панель инструментов Настройка изображения, которую можно использовать для обрезки изображения, добавления границ, а также регулировки яркости и контрастности.

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

Операции над точечными рисунками

Word позволяет осуществлять над рисунками ряд операций:

·         преобразование рисунка в Рисунок Microsoft Word или Документ Microsoft Word;

·         вставку текста непосредственно в рисунок;

·         изменение размера и масштаба рисунка;

·         добавление/обрезка дополнительного просвета слева, справа, снизу и сверху;

·         преобразование цвета рисунка: исходный, черно-белый, оттенки серого, подложка;

·         изменение яркости и контрастности рисунка;

·         размещение рисунка в документе относительно текста;

·         осуществление заливки объектного пространства рисунка каким-либо цветом;

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



2. Цель работы

Исследование возможностей среды Microsoft Word при работе с различными графическими объектами, в том числе с растровыми изображениями.

3. Задание

1.       Вставить в документ Microsoft Word рисунок.

2.       Осуществить операции над рисунком.

3.       Сохранить результаты в файле Фамилия студента.doc.

4. Указания по подготовке к выполнению задания

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

·         материала рекомендованной литературы, страниц web или источников на электронных носителях;

·         понимание цели лабораторной работы;

·         знание правлил техники безопасности.

5. Основные вопросы теории, которые необходимо проработать

Изучить типы графических форматов, возможности по сохранению и преобразованию графических файлов в основных графических редакторах: Microsoft Paint, Microsoft Photo Editor, Microsoft Imaging for Windows, приемы работы с графическими файлами в Microsoft Word.

6. Вопросы для самопроверки

1.       Какие типы графических форматов поддерживает Microsoft Word?

2.       Как добиться сохранения изображения в формате CCITT 4 (Group 4), тип файла – черно-белый (monochrome 1 bit)?

3.       Что такое CCITT?

4.       Какими свойствами обладает тип объекта Рисунок Microsoft Word?

5.       Каким образом можно поместить название рисунка «Рисунок 1» в объект Документ Microsoft Word?

6.       Для чего используются флажки Связать с файлом и Хранить в документе в окне Добавить рисунок? Как они связаны между собой?



7. Описание лабораторного комплекса

Лабораторный комплекс реализован на АРМ кафедры ТИССУ МИРЭА или секторов ИВТ, НИТ в МГДТДиЮ и включает в себя:

·         персональный компьютер в сетевом классе под управлением ОС Windows 95/98;

·         графический редактор Microsoft Paint, входящий в состав ОС Windows 95/98;

·         пакет Microsoft Office 97 с установленными приложениями и компонентами:

ü        Microsoft Word;

ü        Microsoft Photo Editor;

ü       Microsoft Equation 3.0;

ü       графическими фильтрами, в том числе Tagged Image File Format (Tiffim32.flt).

8. Порядок выполнения работы. Обработка результатов

Подготовка места сохранения результатов лабораторной работы

1.       Перейдите на сервере в каталог Учащиеся (студенты, школьники).

2.       Создайте директорию с именем Фамилия учащегося.

Подготовка рисунка

1.       Заранее приготовить рисунок над которым будут производиться операции. Для упрощения работы нужно выбрать черно-белый рисунок в формате TIFF CCITT Group 4 (CCITT4), тип файла? черно-белый (monochrome 1 bit), т.к. при работе с ним требуется меньше всего ресурсов компьютера. В случае если такого нет, то выполнить указанные ниже операции.

2.       Найти рисунок для обработки.

3.       Отсканировать изображение в котором находится рисунок.

4.       Сохранить отсканированное изображение в формате TIFF CCITT Group 4 (CCITT 4) (monochrome 1 bit), тип файла? черно-белый.

5.       С помощью Microsoft Photo Editor вырезать рисунок (фрагмент рисунка), размером не более 300x300 точек.



6.       Сохранить получившийся рисунок в формате TIFF CCITT Group 4 (CCITT 4), тип файла? черно-белый (monochrome 1 bit) в файле под именем Фамилия учащегося.

7.       В случае если есть рисунок в электронном формате нужно привести его к такому же формату ? TIFF CCITT Group 4 (CCITT 4) (monochrome 1 bit), тип файла ? черно-белый. Для этого откройте рисунок в редакторе Paint и сохраните в формате BMP, тип файла – черно-белый (monochrome 1 bit). Далее нужно повторить п.п. 5-6.

Импорт рисунка в документ Word и операции над ним

1.       Запустите Microsft Word. Откройте документ Word, содержащий только одну страницы текста и занимал не более 2/3 листа.

2.       Укажите место вставки рисунка.

3.       В меню Вставка

выберите команду Рисунок, а затем — команду Из файла.

4.       Выберите файл, в котором содержится нужный рисунок.

5.       Снимите флажок Поверх текста. Нажмите кнопку Добавить.

6.       Выберите рисунок указателем мыши. Нажмите на панели кнопку По центру.

7.       Щелкине два раза на рисунке. Рисунок откроется для редактирования. В открывшемся окне выберите рисунок. Нажмите правую кнопку мыши и выберите пункт Формат рисунка. В открывшемся окне выберите вкладку Положение

и снимите флажок Поверх текста. Выбирете OK.

8.       Снова выберите рисунок. Подведите указатель мыши к нижнему правому углу рисунка, захватите его и начинайте его уменьшение по диагонали справа налево с учетом того чтобы внизу можно было добавить название рисунка.

9.       Включите показ непечатаемых символов на панели Word.

10.    Установите в позицию абзаца (отображается символ ¶) указатель мыши.

11.    Нажмите один раз клавишу Enter.



12.    Введите фразу шрифтом размером 12pt «Рисунок 1. Демонстрация возможностей Word по работе с рисунками. ». Здесь кавычки используются для указания какой текст нужно вводить.

13.    Нажмите еще раз клавишу Enter. Введите фразу шрифтом размером 10pt «Рисунок вставил Фамилия студента.»

14.    Нажмите на панели кнопку Закрыть рисунок.

15.    При необходимости переместите рисунок в удобное место и отцентрируйте его.

16.    Выберите рисунок указателем мыши. Нажмите правую кнопку мыши и выберите пункт Границы и заливка. В открывшемся окне на вкладке Границы укажите тип границы Тень, цвет - любой, ширину линии – 3пт, тип линии – любой. В поле Применить к выберите рисунку. Нажмите OK.

17.    Установите панель Рисование. Выберите Овал и разместите по центру рисунка. Выберите нарисованный овал. Нажмите правую кнопку мыши. Выберите Добавить текст. Выберите Объект в меню Вставка. Выберите на вкладке Создание в списке Тип объекта Microsoft Equation 3.0. Нажмите OK. Введите математическую формулу: интеграл от a до b, подинтегральное выражение 3 в степени x по dx. Формулу нужно вводить с помощью математических знаков. Установите границу и заливку для объекта Microsoft Equation 3.0 (для формулы) и для овала как это было сделано в п. 16.

18.    Выберите рисунок. Выберите Шрифт в меню Формат. Выберите вкладку Анимация. В списке Вид выберите Мерцание. Нажмите OK.

19.    Щелкниет мышью на текст. Выберите Границы и заливка в меню Формат. Выберите вкладку Страница. Установите аналогичные параметры с пунктом 15. В поле Применить к

установите значение Ко всему документу.

20.    Выберите Параметры страницы в меню Файл. Выберите вкладку Макет. В поле Вертикальное выравнивание установите значение По центру. Нажмите OK.

21.    Сохраните получившийся в результате обработки файл в каталоге созданном в подразделе Подготовка места сохранения результатов лабораторной работы.



9. Требования к содержанию и оформлению протокола отчета

1.       Протокол оформляется в электронной форме, сохраняется в отдельном файле с именем Фамилия учащегося_отчет и предъявляется преподавателю.

2.       Протокол содержит титульный лист единого образца:

3.       В протоколе отражаются результаты достигнутые в подразделах раздела 8., а также:

·         содержание задания;

·         описание лабораторного комплекса;

·         основные сведения об импорте рисунков в документ Word и операций с ними;

·         описание конечного результата работы;

·         выводы.

10. Пояснения: типы графических файлов, поддерживаемые Word:

·         AutoCAD Format 2-D (.dxf)

·         Computer Graphics Metafile (.cgm)

·         CorelDRAW (.cdr)

·         Encapsulated PostScript (.eps)

·         Enhanced Metafile (.emf)

·         Graphics Interchange Format (.gif)

·         JPEG File Interchange Format (.jpg)

·         Kodak Photo CD (.pcd)

·         Macintosh PICT (.pct)

·         Micrografx Designer/Draw (.drw)

·         PC Paintbrush (.pcx)

·         Portable Network Graphics (.png)

·         Tagged Image File Format (.tif)

·         Targa (.tga)



·         Точечные рисунки Windows (.bmp, .rle, .dib)

·         Метафайлы Windows (.wmf)

·         WordPerfect Graphics (.wpg)

ЛАБОРАТОРНАЯ РАБОТА №2

Построение алгоритмических моделей с использованием интерпретатора машины Поста

1. Методические указания

Работа с машиной Поста

Познакомьтесь с содержанием файла mp32.hlp, расположенном на сервере по следующему пути: \\virgin\students\Матчин\Лабы\mp32.hlp. Если этот файл не удается запустить с сервера, скопируйте на локальный компьютер и повторите операцию.

2. Цель работы

Знакомство с простейшими алгоритмическими машинами. Исследование алгоритмических моделей и построение простейших алгоритмов для машины Поста.

3. Задание

4.       Составить алгоритм и написать программу в терминах машины Поста, используя интерпретатор машины Поста:

·         сложения двух чисел (конкретные значения чисел и количество пропущенных клеток между числами необходимо получить у преподавателя).

·         вычитание двух чисел (конкретные значения чисел и количество пропущенных клеток между числами необходимо получить у преподавателя).

·         игра в пинг-понг (метки отражаются от двух меток). Количество отражающихся меток нужно получить у преподавателя.

5.       Отладить работу программ.

6.       В итоге получится три программы, которые необходимо сохранить в файлах Фамилия студентаN.pst.

Где N – порядковый номер программы.

7.       Написать отчет о проделанной работе.

4. Указания по подготовке к выполнению задания

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



·         материала рекомендованной литературы, страниц web или источников на электронных носителях;

·         понимание цели и задач лабораторной работы, а также методики исследований;

·         знание правлил техники безопасности.

5. Основные вопросы теории, которые необходимо проработать

Изучить принцип работы машины Поста, освоить интерпретатор машины Поста, освоить команды машины Поста.

6. Вопросы для самопроверки

7.       Что такое алгоритм?

8.       Что такое машина Поста?

9.       Какие команды существуют у машины Поста?

10.    Как осуществить запуск, останов и пошаговое выполнение программы в интерпретаторе машины Поста?

7. Описание лабораторного комплекса

Лабораторный комплекс реализован на АРМ кафедры ТИССУ МИРЭА или секторов ИВТ, НИТ в МГДТДиЮ и включает в себя:

·         персональный компьютер в сетевом классе под управлением ОС Windows 95/98;

·         интерпертатор машины Поста, выполненный в качестве исполняемого модуля (mp32.exe);

·         файл помощи, выполненный в виде стандартного файла помощи Windows (mp32.hlp);

·         пакет Microsoft Office 97 с установленными приложениями и компонентами.

8. Порядок выполнения работы. Обработка результатов

Подготовка места сохранения результатов лабораторной работы

3.       Нажмите кнопку Пуск\Выполнить, в поле наберите \\virgin и нажмите Enter.

4.       В открывшемся окне перейдите в каталог Матчин. Создайте в этом каталоге папку под именем Фамилия_студента. В этом каталоге сохраняйте результаты лабораторной работы.



Создание алгоритма и написание программы для машины Поста

1.       Запустите интерпретатор машины Поста, расположенный в каталоге \\virgin\students\Матчин\ Лабы\mp32.exe. Если не удается запустить этот файл с сервера, тогда скопируйте файлы mp32.exe и mp32.hlp на локальный компьютер и снова повторите операцию запуска.

2.       Откройте помощь, нажав Справка в меню Помощь.

3.       Далее изучите помощь и следуйте приведенным в помощи инструкциям.

9. Требования к содержанию и оформлению протокола отчета

4.       Протокол оформляется в электронной форме, сохраняется в отдельном файле с именем Фамилия студента_отчет и предъявляется преподавателю.

5.       Протокол содержит титульный лист (см. приложение 1):

6.       В протоколе отражаются результаты, достигнутые в процессе выполнеия работы:

·         содержание задания;

·         описание лабораторного комплекса;

·         основные сведения о работе машины Поста;

·         описание конечного результата работы;

·         выводы.

10. Пояснения: работа машины Поста.

Машина Поста состоит из ленты и каретки (называемой также считывающей и записывающей головкой). Лента бесконечна и разделена на секции одинакового размера. Порядок, в котором расположены секции ленты, подобен порядку, в котором расположены все целые числа. Поэтому естественно ввести на ленте "целочисленную систему координат", занумеровав секции числами ..., -3 , -2 , -1 , 0 , 1 , 2 , 3,...

В каждой секции ленты может быть либо ничего не записано (такая секция называется пустой), либо стоять метка "V" (тогда секция называется отмеченной).



Информация о том, какие секции пустые, а какие отмеченные, образует состояние ленты. Иными словами, состояние ленты - это распределение меток по ее секциям. На точном математическом языке состояние ленты - это функция, которая каждому числу (номеру секции) ставит в соответствие либо метку, либо "пусто". Состояние ленты, в процессе работы, может меняться.

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

Таким образом, состояние машины Поста слагается из состояния ленты и указания номера той секции, которую обозревает каретка.

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

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

Чтобы машина Поста работала, надо задать некоторую программу и некоторое состояние машины.

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

Вообще каждая команда выполняется за один шаг, а переход от выполнения одной команды к выполнению другой происходит по следующему правилу: пусть  на  k-ом шаге выполнялась команда с номером i, тогда,

·               если эта команда имеет единственную отсылку j, то на (k + 1)-ом шаге выполняется команда с номером j;



·               если эта команда имеет две отсылки j1 и j2, то на (k + 1)-ом шаге выполняется одна из двух команд -- с номером j1 или с номером j2;

·               если же выполняющаяся на k-ом шаге команда вовсе не имеет отсылки,  то на           (k +1) - ом шаге и на всех последующих шагах не выполняется никакая команда – машина останавливается.

Если теперь, задав программу и какое-либо начальное состояние, пустить машину в

ход, то осуществится один из следующих трех вариантов:

 1) В ходе выполнения программы машина дойдет до выполнения

невыполнимой команды; выполнение программы прекращается, машина

останавливается - происходит безрезультатная остановка.

2) В ходе выполнения программы машина дойдет до выполнения команды

остановки; программа в этом случае считается выполненной,

машина останавливается - происходит результативная остановка.

3) В ходе выполнения программы машина не дойдет до выполнения ни одной

из команд, указанных в первых двух вариантах;

выполнение программы при этом никогда не прекращается, машина никогда

не останавливается - процесс работы машины происходит бесконечно.

Приложение 04.

РЕКОМЕНДУЕМЫЙ ПЕРЕЧЕНЬ ТЕМ И ВОПРОСОВ ПО КУРСУ ИНФОРМАТИКИ МИНИМАЛЬНОГО БАЗОВОГО УРОВНЯ (ШКОЛЬНОЙ, ВНЕШКОЛЬНОЙ) ПОДГОТОВКИ ДЛЯ ПЛОДОТВОРНОГО УЧАСТИЯ В УЧЕБНО-ТВОРЧЕСКИХ РАБОТАХ ПО ПРОГРАММАМ НАСТОЯЩЕГО УЧЕБНО-МЕТОДИЧЕСКОГО КОМПЛЕКСА МИРЭА-МГДТДиЮ-ГНИИ ИТТ «ИНФОРМИКА»

ПО КОМПЛЕКСНОЙ ДИСЦИПЛИНЕ: «ИНФОРМАТИКА-ТЕОРИЯ ИНФОРМАЦИИ-ИНФОРМАЦИОЛОГИЯ».

1. Информация и персональные ЭВМ.

1.1. Информация и компьютеры. Понятие информации. Примеры информационных процессов. Состав персональных ЭВМ. Операционные системы.

1.2. Редактирование текстов на ЭВМ. Виды информации. Объем и количество информации. Основные возможности редакторов текстов на ЭВМ.

1.3. Графические виды информации. Свойства информации. Графические представления. Основные возможности графических редакторов.

1.4. Выполнение расчетов на ЭВМ. Результаты и методы решения задач.


Основные возможности электронных таблиц.

2. Элементы информационных технологий.

2.1. Базы данных на ЭВМ. Табличные базы данных. Сортировка данных. Основные возможности табличных баз данных.

2.2. Элементы математической логики. Высказывания. Логические связки "и", "или", "не". Элементарные логические законы (отрицания).

2.3. Элементы исчисления предикатов. Понятие предиката. Факты, вопросы и правила в исчислении предикатов. Описания баз данных.

2.4. Базы знаний на ЭВМ. Понятие баз знаний. Определение понятий в базах знаний. Примеры баз знаний.

3. Алгоритмы и начала программирования.

3.1. Понятие и свойства алгоритмов. Понятие алгоритма. Свойства алгоритмов. Примеры алгоритмов.

3.2. Основные возможности языка Бейсик /Паскаль/. Понятие программы. Арифметические операторы. Операторы ввода-вывода. Графические операторы.

3.3. Ветвления в алгоритмах и программах. Выбор действий в алгоритмах. Оператор goto. Организация ветвлений в программах.

3.4. Циклы в алгоритмах и программах. Цикл со счетчиком. Цикл с предусловием. Организация циклов в программах.

3.5. Вспомогательные алгоритмы и подпрограммы. Переменные и параметры. Вспомогательные алгоритмы. Организация подпрограмм.

3.6. Алгоритмы и программы обработки данных. Понятие массива. Понятие файла. Обращения к массивам и файлам.

4. Технология решения задач на ЭВМ.

4.1. Этапы решения задач на ЭВМ. Постановка и методы решения задач. Виды ошибок в алгоритмах и программах.

4.2. Анализ правильности программ. Понятие правильности алгоритмов и программ. Анализ правильности простейших алгоритмов.

4.3. Анализ правильности циклов. Индукция и дедукция. Примеры и контрпримеры. Опровержения и доказательств правильности.

4.4. Математическое моделирование. Виды математических моделей и представлений. Примеры математического моделирования.

4.5. Вычислительный эксперимент. Понятие вычислительного эксперимента. Организация экспериментов на ЭВМ.

5. Основы вычислительной техники.

5.1. Логические элементы ЭВМ.


Логические элементы "И", "ИЛИ", "НЕ". Функции логических схем.

5.2. Архитектура ЭВМ. Процессоры. Оперативная и внешняя память. Внешние устройства. Двоичное исчисление.

5.3. Системы программирования. Интерпретаторы, трансляторы и компиляторы. Технология разработок программ.

5.4. История вычислительной техники. Четыре поколения ЭВМ: элементная база, архитектура и системы программирования. Пятое поколение ЭВМ. Мультимедиатехнологии. Компьютерная графика. Аудиовидеосистемы (MP 3 и др.).

5.5. Телекоммуникации и электронная почта. Вычислительные сети. Телекоммуникации. Электронная почта. Телеконференции. Виртуальные пространства (понятия). Терминалы удаленного доступа и их создание.

5.6. Интернет\Интранет-технологии. WEB-страницы и WEB-дизайн. Поиск информации в сети Интернет. Понятие об информсреде образования, науки, культуры. Понятие об открытых информационных системах, технологии «клиент-сервер».

5.7. Базы и банки данных и знаний, управление ими (СУБД). Поисковые системы. Серверы, их назначение и обслуживание. Корпоративные сети и системы. Понятие об информационных системах и их назначении. Дидактические, обучающие системы, системы ДО, экспертные и интеллектуальные системы.

            Приложение 05.

ПРИМЕР ВЫПОЛНЕНИЯ КУРСОВОЙ ТВОРЧЕСКОЙ РАБОТЫ ПО ИНФОРМАТИКЕ,

СООТВЕТСТВУЮЩЕЙ МИНИМАЛЬНОМУ БАЗОВОМУ УРОВНЮ

(по материалам школьного лицея «Воробьевы горы», 1999\2000 уч. год, М. МГДТДиЮ)

(примеры размещены на сервере МГДТДиЮ)

Приложение 06.

 

Технологии учебно-творческого процесса и подходы к формированию

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

(методические рекомендации по конструированию курса)

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



                Отсюда становится состоятельной система набираемых, свободно конструируемых авторских и экспериментальных образовательных программ по курсу, опирающихся на его базовую обязательную компоненту, продиктованную действующими образовательными стандартами на обслуживаемые курсом специальности: в данном случае специальности 071900 «Информационные системы (в образовании)».

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

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

                Парадигмой такого подхода является формирование полноценной углубленной, хорошо структурированной и объясняемой теоретической части программы, посвященной изучению фундаментальных основ, теории и методов разработки средств информатизации и информационных технологий.  Изучение же самих средств и технологий призвано закрепить теоретические знания и вооружить изучающего информатику современными инструментальными средствами обучения и творчества. В случае разработки программ базовой подготовки по информатике надо также учесть все особенности специальности, которую обслуживают информатика и НИТ. Таким образом в углубленном развивающем изучении информатики как науки присутствуют одновременно и дополняют друг друга грани теоретической, естественнонаучной и инструментально-технологической подготовки.



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

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

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

Для фундаментального подхода (по Б.А. Сазонову, НИИВО) более свойственна последовательная схема, предусматривающая распределение содержания подготовки между последовательно изучаемыми циклами и модулями дисциплины: общенаучных (естественные основы), общепрофессиональных с некоторым уклоном в обслуживаемую специальность (теория и методы), специальных с комплексным уклоном в обслуживаемую специальность (теория, методы, средства, технологии). Неизбежная в этом случае временная разорванность всех перечисленных выше звеньев последовательности может отчасти компенсироваться использованием циклического технологического подхода к синтезу учебно-творческого процесса. Наиболее действенной мерой реализации такой парадигмы является построение учебного процесса «от простого к сложному». Эффективность реализации зависит также от чувства меры в вопросах переноса в программу обучения по информатике всего объема естественнонаучной и общетеоретической подготовки с одной стороны и узкоспециальных разделов специализаций с другой стороны. Таким образом развивающий комплексный курс «Информатика – теория информации - информациология» в наиболее эффективном случае имеет блочно-модульную основу построения комбинаторно-последовательной схемы.



Следовательно, каждый цикл, блок или модуль по информатике может рассматриваться как относительно самостоятельный модуль или блок учебной программы, находящийся в ее едином информационном поле и поддерживаемый на единой технологической, инструментальной, методологической основе и единым универсальным, но управляемым информационным ресурсом. В технологическом отношении это достигается в результате создания и использования специализированных информационных систем (ИС) в оборазовании на основе применения Интернет\Интранет/Экстранет-технологий в открытом информационном пространстве и допорлняющих его корпоративных сетевых решениях.

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

В общем виде задача формирования учебной программы комплексного курса «Информатика-теория информации- информациология» по Б.А. Сазонову формализуется следующим образом:

ИСХОДНЫЕ ДАННЫЕ:

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

·         сформулированные требования к программам;

·         временные и ресурсные ограничения.



ЗАДАЧИ:

·         составить фрагменты калификационных характеристик специальности, отражаемые в курсе информатики;

·         сформировать учебную программу, удовлетворяющую заданным учебным целям, временным и ресурсным ограничениям;

·         сформулировать требования к изначальному минимуму знаний и навыков, требования к достигаемым пороговым знаниям и навыкам обучаемых и к их рубежным, итоговым выпускным и творческим работам;

·         разработать варианты календарных планов и программы при заданных временных ограничениях;

·         рассчитать потребность в ресурсном обеспечении учебно-творческого процесса;

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

МЕХАНИЗМЫ РЕШЕНИЯ ЗАДАЧ:

1.       составление фрагментов квалификационных характеристик, соответствующих заданным учебным целям;

2.       отбор и редактирование учебных модулей для включения в программу;

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

4.       преобразование и оптимизация структуры программы, алдаптация ее конкретным условиям выполнения;

5.       рейтинговая оценка актуальности и педагогической значимости программы;

6.       формирование требований к ресурсному обеспечению и при необходимости корректировка программы под имеющиеся ресурсные ограничения;

7.       формирование текста учебной программы, текстов установочных и проблеммных лекционных материалов, иного информационно-методического обеспечения;



8.       формирование комплекса учебно- методических материалов для обучения по сформированной программе;

9.       формирование комплекса средств информационной компьютерно-сетевой поддержки обучения и контроля, желательно на уровне специально создаваемых и используемых на протяжении всего жизненного цикла информационных, дидактических систем, систем ДО;

10.    формирование, поэтапное расширение и ипользование электронных архивов, библиотек, банков знаний и баз данных, виртуальных структур поддержки учебно-творческого процесса (виртуальных школьно-студенческих КБ и творческих лабораторий, мастерских, учебно-творческих объединений);

11.    формирование интерфейса учебных программ (в составе ИС), в том числе интерфейса преподавателя, разработчиков учебной программы, интерфейса обучаемого, системного интерфейса учреждения (подразделения) образования в сетевых интерпретациях, в том числе формирование САТЙТА в Интернет;

12.    мониторинг, анализ и корректировки программы в процессе ее внедрения и получения результатов использования (в обратных связях).


Константы и идентификаторы


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

Сначала обсуждается вопрос конкретного синтаксического представ­ления для идентификаторов. Большей частью в ЯП для представления идентификаторов берутся слова над некоторым алфавитом (например, малые латинские буквы и цифры), которые для отличия от чисел должны начинаться по меньшей мере одной буквой. Синтаксическая единица <id> обозначает множество слов, которые допускаются в качестве идентификаторов.

<id>::=<буква>{<символ>}*

<буква>::=а| b| с|...| z

<символ>::=<буква>|0| 1|... |9

В простых аппликативных ЯП идентификаторы служат в качестве элементов носителей или n-местных функций (с любым n

 N) над носителями. Обозначим через Н (о чем договорились выше) множество элементов данных и функций. Пусть теперь D - множество идентификаторов для синтаксической единицы <id>. Чтобы выражениям со свободными идентификаторами можно было поставить в соответствие значения, опять применяются конкретизации (англ. environment):

ENV=def{

:ID
H}.

Интерпретация I есть отображение:

I: <выражение>

 (ENV
 Н).

Для идентификатора х мы определяем:

I

 [х]=
(х).

Одна специальная конкретизация представляет то отображение, которое всем идентификаторам ставит в соответствие элемент

. Она обозначается через
. Имеет место

: ID
Н

с

(x) =
 для всех х из ID.

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

В дальнейшем для рассматриваемых ЯП будем предполагать заданными вычислительные структуры BOOL, NAT, SEQ. Тем самым предусмотренные в соответствующих сигнатурах типы и символы функций - частично в инфиксной форме - могут использоваться в программах. В качестве типов, тем самым, пока будем рассматривать только типы, входящие в эти вычислительные структуры. Пусть синтаксическая единица <тип> используется в качестве обозначений типа (т.е. в качестве идентификаторов типа). Для улучшения читаемости программы обозначения типа выделяются жирным шрифтом.



Ленточная сложность


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

Рассмотрим Т-машину М с одной входной лентой, на которую нельзя записывать какую-либо новую информацию и которая содержит маркер конца, и с k односторонне-бесконечными лентами. Пусть при обработке принимаемого слова w длины n (обработка которого завершается «Остановкой машины) машина М использует bi(w) ячеек памяти на ее i-й  ленте (1? i ?k).



Логическое программирование


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

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

Решение задач в логическом программировании

Логическая программа состоит из формул вида (пусть С и В, - логические выражения, в простейшем случае true и false, а также предикаты на константах), называемых "условиями Хорна" (англ. "Нот - Klausein"):

BÜB1ÙB2Ù….ÙBn.

Выражения Вi называются предпосылками или подцелями (англ. subgools), а С называется заключением. Множество подцелей может также быть пустым или состоять только из

true; тогда формулу мы называем фактом,

а другие условия - правилами.

При формулировании Hom-Klauseln-программ будут использовать следующие соглашения. Идентификаторы будут записывать большими буквами, а обозначения функций (включая нуль-местные функции для представления констант) - малыми.

Выполнение логических программ

В данном разделе будут .обсуждаться общие правила выполнения запросов логическими программами.
Пусть задано правило

С <= B1 Ù ... Ù Bk,                              (R)

являющееся частью логической программы. Пусть надо доказать (или опровергнуть) условие

fake <= S1Ù ... Ù

Sn.                         (G)

Правило (R) применимо к условию (G), если существует подстановка с

C[t1/X1, ..., tm/Хm] = Sj[t1/X1, ..., tm/Хm].

Другими словами, общая справедливость (G) опровержима (ведет к противоречию), если условие

                       ~             ~      ~           ~     ~               ~  

false <= S1Ù ... Ù Sj-1ÙB1Ù…ÙBkÙSj+1Ù… ÙSn           (G )

 опровержимо с

~

Si = Si[t1/X1, ..., tm/Хm],

~

Bi=Bi[t1/X1, ...tm/Xm].

Эту редукцию подцели к модифицированной редукции с помощью применения правила назовем резолюцией.

           ~

Если (G ) опровержимо, то опровержимо также и (G), однако обратное, вообще говоря, неверно.

Унификация

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

Унификация является операцией на множестве термов. Результатом унификации является подстановка, которая для каждого терма заданного множества в качестве результата выдает один и тот же терм. Такая подстановка называется унификатором. Но, не для каждого множества существует такого рода унификатор - в этом случае множество называется не унифицируемым.


Мера сложности


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

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



Методы реализации системного программирования


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

·         надежность,

·         комфортность пользовательского интерфейса,

·         время ответа,

·         владение ситуацией при запросах,

·         легкость модификаций,

·         устойчивость (робастность)

К типичным задачам системного программирования относятся разработка ОС и реализация системных программ, не принадлежащих ОС. Сюда относятся программное обеспечение для коммуникаций, необходимых при построении сетей ЭВМ.

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

Концепция прерываний

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

·         программа использовала выделенное ей процессорное время;

·         программа требует использования устройств или файлов, которых в данный момент нет в ее распоряжении;

·         устройство ввода/вывода сигнализирует процессору, что оно заверши-то выполнение выданного ему заказа;

·         оператор ЭВМ (или пользователь) принял решение приостановить выполнение программы;


·         встретилась ошибка.

Если прерывание выполнения пользовательской программы вызвано каким-либо внешним событием, что мы говорим о вмешательстве (внешнее прерывание); в противном случае - о тревоге (внутреннее прерывание). В случае вмешательства фактическое выполнение программы прерывается, так как имеет место внешнее событие, на которое необходимо отреагировать, например сигнал от устройства ввода/вывода или команда оператора.

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

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

while true do

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

в случае возникновения прерывания - его обработка; вычисление абсолютных адресов операндов; контроль по защите памяти (в случае необходимости - тревога по защите памяти);

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

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


Конкретное представление состояния процесса должно быть запомнено.

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

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

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

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

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


следующий раздел);

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

Мы делаем различие между системными режимами с блокировкой и без блокировки прерываний. Поясним концепцию прерываний. Возврат из системного вызова осуществляется командой REI (без признака; без адреса; “return from interrupt” - возврат из прерывания). Пользовательская программа доступна системе через стек, называемый системным стеком. Команда СНМК (без признака; “change modus to kernel” - установить режим системы) запоминает в системном стеке минимум информации, необходимой для последующего продолжения программы. Запоминаются следующие три значения в указанном здесь порядке:

·         числовой признак (адрес) вызываемой системной службы;

·         текущее значение счетчика команд;

·         текущее значение регистра, в котором хранится слово состояния программы PSW (от англ. Programm State Word. - Пер.).

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

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

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

·         указатель стека в режиме системы,



·         указатель стека в режиме пользователя,

·         содержимое регистров

·         слово состояния процессора PSW,

·         начальный адрес и длину ( число страниц) таблицы страниц области памяти для пользовательской программы,

·         начальный адрес и длину таблицы страниц для стека пользователя.

Синхронизация

В мультипрограммных и мультипроцессорных системах часто бывает необходима синхронизация хода выполнения определенных участков программы. Такая синхронизация может быть осуществлена с помощью семафоров. Однако аппаратура часто предоставляет лишь примитивные механизмы синхронизации, на которые и должна опираться реализация семафоров. Для синхронизации имеется в распоряжении следующая команда: JBSSI   (“jump on bit set and set interlocked”). Эта команда выполняется как неделимое целое, и поэтому ее выполнение не может быть прервано. Команда использует три операнда:

JBSSI а, Р, у.

С помощью этих операндов адресуется бит в массиве битов. При этом пусть Р, у - операнды-спецификации; a - относительный адрес (число бит) бита в байте, заданном адресом р. Выполнение команды JBSSI а, р, у влечет следующее изменение состояния:

·         занесение в счетчик команд значения, специфицированного с помощью у.

·         в этот бит заносится значение L.

Итак, эта команда в любом случае приводит к состоянию, в котором упомянутый бит имеет значение L. Если перед выполнением команды этот бит уже имел значение L, то в счетчик команд заносится соответствующее значение. Про такого рода команды говорят также как о “test and set^-командах (т. е. командах проверки и установки). Команда

JBCCI (“jump on bit cleard and clear interlocked)

действует аналогично команде JBSSI с той разницей, что в счетчик команд заносится значение у, если упомянутый бит имеет значение О и этот бит в любом случае получает значение О.


С помощью этих двух команд могут быть реализованы семафоры.

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

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

Реализация семафоров через описанные команды является типичным примером для системного программирования, при котором сочетается использование команд и вызовов служб системы.

Сегментация

Общее количество ячеек памяти (адресов), на которые пользователь может ссылаться в процессе выполнения своей программы, называют адресным пространством пользователя. Часто адресное пространство ЭВМ делится на определенные сегменты, в которые объединяются (по содержанию или организационно связанные друг с другом) ячейки памяти. Сегменты могут идентифицироваться обозначениями. Каждый сегмент обладает начальным адресом, каковым является адрес первой ячейки, входящей в этот сегмент, и тогда на ячейки памяти в сегментах ссылаются с помощью относительной адресации, используя начальный адрес сегмента. Длины сегментов (т. е. число входящих в них ячеек памяти) могут быть различны и даже динамически изменяться. Обратим внимание, что в оперативной памяти сегменты физически не обязательно должны быть представлены связно, и не обязательно все сегменты должны одновременно быть в оперативной памяти. В общем случае для многих ОС справедливы следующие высказывания:

·         адресное пространство контекста процесса состоит из нескольких сегментов (число которых может изменяться);



·         для каждой части программы и каждой области данных выделяется один сегмент (включая данные для регулирования права доступа и свойств);

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

·         части программы в своих сегментах организуются как подпрограммы.

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

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

Сегментирование имеет следующие важные преимущества:

·         простоте структуру доступа к ячейкам для пользователя,

·         наглядную) организацию прав доступа.

Разумеется, сегментирование не обостряет проблему ограниченности емкости памяти.

Метод страничного обмена

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



Распространенная методика работы с памятью исходит из гораздо большей по емкости фиктивной, виртуальной оперативной памяти, чем фактически имеющаяся в распоряжении память. Эта виртуальная память делится на части одинакового размера (страницы, англ. pages), и в физической оперативной памяти держится только ограниченное число страниц. Если нужно обратиться для чтения или записи к странице, которой нет в оперативной памяти, то эта страница переносится из внешней памяти в оперативную. Для этого нужно предварительно какую-либо страницу из оперативной памяти перенести во внешнюю, чтобы освободить место в оперативной памяти. Здесь мы также говорим о виртуальной' памяти и специально о методе страничного обмена (англ. paging).

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

Важной составной частью метода страничного обмена является стратегия обмена страниц. Под этим понимается способ решения вопроса о том, когда и какая страница должна загружаться в оперативную память и, наоборот, переноситься во внешнюю память. Можно стараться держать в оперативной памяти почти все адресное пространство секции, или - другая крайность - только очень немного страниц из секции.


Если выбрать неудачную стратегию, то это может привести к «страничное флаттеру» - слишком частот обмену страницами. Тогда будет выполняться слишком много команд транспортирования. Темп обмена страницами будет столь высоким, что каналам и внешней памяти трудно будет работать согласованно и время выполнения программы будет слишком большим.

Метод страничного обмена для управления оперативной памятью имеет следующие преимущества:

·         Благодаря делению памяти на части можно достичь гибкого предоставления и расширения предоставленной пользователю памяти без перезапоминания в оперативной памяти.

·         Возникает большее (виртуальное) адресное пространство, чем имеющееся физически.

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

·         Общие отрезки памяти просто управляемы.

Метод страничного обмена служит для организации распределения такого ресурса, как оперативная память. Для организации адресного пространства отдельных секций служит сегментирование. Иногда используется комбинация сегментирования и страничного обмена, что показано на рис. 2.7.

Релокация программ

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


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

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

Одновременное использование подпрограмм

Определенные программные части (хранимые в определенных сегментах) в мультипрограммном режиме используются во многих секциях. Было бы неэффективно и расточительно, если бы каждая секция обладала своей копией соответствующих кодов. Поэтому такие отрезки кодов помещают в специальные области памяти для совместного использования. Чтобы подпрограмма могла использоваться одновременно несколькими программами, требуется принять перечисленные ниже меры предосторожности. Эти меры могут быть поддержаны аппаратурой, например путем введения специального регистра (см. трансляционный регистр в [SEEGMULLER 761) или путем соблюдения соответствующей дисциплины программирования. Фрагмент программы, который в отношении адресных пространств гарантирует его корректное выполнение без каких-либо мер для взаимных исключений, называется реентерабельным (инвариантным к входу, с повторной входимостью, англ. reentrant). Технически это означает, что специфичные для программы адреса и данные управляются только через специальные организационные адреса, которые должны удовлетворять определенным условиям. Таким образом, при составлении реентерабельных программ необходимо обращать внимание на следующие требования:

·         внутри сегмента, который содержит реентерабельную подпрограмму, нельзя что-либо запоминать;



·         все ячейки памяти, содержимое которых изменяется при выполнении подпрограммы, управляются через передающий регистр и находятся в области памяти, предоставляемой вызывающей программой;

·         защита памяти ограничена;

·         загрузка передающего регистра является привилегированной командой;

·         управление параметрами и вспомогательными ячейками должно производиться по определенным правилам

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

Управление устройствами ввода/вывода

Выделение устройств осуществляется ОС по запросам пользовательских программ на ввод/вывод. Данные с устройства ввода передаются в оперативную память с помощью канала, работающего по заказам ОС; вывод осуществляется аналогично, но в обратном направлении.

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

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

·         через прерывание: каналы прерывают выполнение пользовательской программы, чтобы полнить от процессора новый заказ для себя (англ.interrupt);

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

Различные возникающие в работе системы ситуации при мультипрограммном режиме снова могут быть описаны как изменение состояний системы.


Модуль Общая характеристика последовательных


Процессы сбора, передачи, обработки и накопления информации представляют сущность, предметную область учебной дисциплины “Информатика”. Теоретические основы этих процессов, закладывающие фундамент дисциплины относятся к важнейшему ее разделу: ИНФОРМАЦИОЛОГИИ. Информациология – это область фундаментальной науки, естествознания о средах, структурах и компьютерно-телекоммуникационных системах, отражающих естественные и искусственные, созданные и регулируемые человеком, информационные процессы, системы, структуры и среды во Вселенной. Как показано в трудах ведущих Российских ученых Международной Академии Информатизации (академиков Евреинова Э.В., Евтихиева Н.Н., Иванникова А.Д., Лохина В.М., Нечаева Н.Н., Сигова А.С., Юзвишина И.И., Якубайтиса Э.А. и других) в основе этих процессов распределенная обработка информации.

Фундаментальное научное направление распределенной обработки информации рассматривается как генеральная основа построения локальных, территориальных и глобально-спутниковых компьютерных, биокомпьютерных и информационно-сотовых систем и сетей предприятий, учебных заведений, учреждений, городов, стран и всего мира в целом, всех отдельно взятых граждан – членов мирового сообщества. Это направление науки и техники служит фундаментальной основой построения массовых информационно-вычислительных средств и систем. Оно включает многие классы вычислительных средств: распределенные вычислительные системы, сосредоточенные вычислительные системы, однородные вычислительные структуры, однородные вычислительные среды и т.п.

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

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


Благодаря конечности и простоте построения элементов, их унификации, регулярности соединений закладывается возможность создания на их основе вычислительной среды с последующей настройкой этой вычислительной среды на структурную реализацию любой вычислительной машины или системы машин, максимально приспособленных к особенностям решаемых информационно-вычислительных задач. Между этими двумя классами вычислительных средств заключены разнообразные вычислительные системы и структуры, реализующие вычисления на основе модели вычислителей. Академик Эдуард Владимирович Евреинов в своих трудах (“Информациология сред, структур и биокомпьютерных систем”и других), в частности, указывает, что это направление стало единственным, способным снять принципиальные ограничения по обеспечению непрерывного роста производительности и надежности при резком снижении стлоимости, характерные для вычислительных средств с последовательным выполнением операций, в основе которых лежит модель Фон Неймана, иллюстрирующая работу одного вычислителя, занятого решением той или иной задачи. Проблема интеллектуализации вычислительных средств в контексте их самовоспроизведения как автоматов была поставлена и в известной мере решена Фон Нейманом в 1957 году и получила развитие в работах зарубежных и отечественных ученых, в том числе в работах академиков Э.В.Евреинова, В.В.Нечаева и других, что привело к построению теории однородных вычислительных систем структур и сред с рапределенной обработкой информации.

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



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

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

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

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

В основе построения систем, структур и сред лежит модель коллектива вычислителей, явяляющаяся обобщением общепринятой модели вычислителя. Эта модель предполагает элементарную форму представления информации с помощью двухэлементного множества и слов над ним. Примером такого двухэлементного множества является множество булевских значений B = {O, L}.


Представление информации через последовательности булевских значений является господствующим принципом в используемых в настоящее время вычислителях. Переработка в них таким образом представленной информации может быть описана с помощью функций, которые оперируют булевскими значениями, их кортежами (двоичными словами) или последовательностями двоичных слов. Булевские функции (будут рассмотрены подробнее ниже) дают основу для описания процессов обработки информации. Сложные операции над двоичными словами могут быть технически представлены через переключательные узлы и схемы, которые могут быть подходящим образом скомбинированы из простых “кирпичиков”, которые соответствуют элементарным булевским функциям, то есть возникает ситуация, когда представление информации отождествляется с математическими структурами теории множеств, отображается на этих структурах. Электрические переключатели вычислителей реализуют узлы и схемы, технически воплощающие выполнение булевских функций. Устройства для переработки сигналов соответстуют в определенной мере абстракции – булевским функциям. Техническое построение цифровых переключателей может быть передано через переключательные схемы и узлы.

Синтаксическое представление для булевых функций дают булевские термы со свободными идентификаторами. Иными словами, мы имеем дело с термовым представлением, корреспондирующем со схемами и узлами, а тем самым и с реализацией булевских функций с помощью схем и узлов. В вузовском курсе “Информатика” этому вопросу посвящена далее отдельная большая тема.

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

Рассмотрим эти три аксиомы.

 

Аксиома параллельности выполнения произвольного числа операций.



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

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

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

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

            Аксиома параллельности модели коллектива вычислителей

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

 

Аксиома переменной логической структуры.

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



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

            Аксиома конструктивной однородности элементов и связей модели.

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

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

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

Теорема 1. В вычислительной среде при отсутствии ограничений на число элементов во всей структуре и ее частях моделируется машина Тьюринга. (Доказательство проводится путем построения машины Тьюринга в среде).

Теорема 2. В вычислительной среде и ее частях при отсутствии ограничений на число элементов в ней и ее частях моделируется любой автомат Неймана-Черча.



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

Теорема 4. В двухмерной вычислительной среде при отсутствии ограничения на число элементов микроструктурно моделируется k-мерная вычислительная среда, где k – конечное число. (Доказательство проводится методом построения k-мерного элемента вычислительной среды в двумерной вычислительной среде).

Из приведенных теорем следует, что вычислительная среда имеет качественное отличие от автоматов Неймана-Черча.

Свойства элементов вычислительной среды – отсутствие запаздывания при передаче информации и возможность изменения коммутации и между полюсами элементов – позволяют микроструктурно моделировать в вычислительной среде алгоритм Колмогорова-Успенского и растущий автомат. Как известно, при выполнении алгоритма Колмогорова-Успенского активная часть U(S) состояния S, представляющая собой комплекс комплекса S, состоящий из вершин и отрезков, принадлежащих цепям длины j равно или меньше N, содержащим начальную вершину (N – произвольное, но для данного алгоритма фиксированное число). Отсюда видно, что при реализации алгоритма Колмогорова-Успенского необходима мгновенная передача информации через большое число элементов.

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

Теорема 5. В вычислительной среде микроструктурно моделируется алгоритм Колмогорова-Успенского.

Теорема 6. В вычислительной среде микроструктурно моделируется растущий автомат. (Доказательство этих двух теорем может быть получено построением соответствующих структур в вычислительной среде).



Перечисленные выше принципы отражают основные положения созданной академиком Э.В.Евреиновым теории распределенной обработки информации, в основе которых фундаментальные принципы природы – параллельное выполнение большого числа операций, автопеременная структура, однородность и неодгородность элементов, их отношений и связей. На основе этих принципов создано фундаментальное направление распределеной обработки информации, в котором определены следующие основополагающие аспекты сложных систем, процессов и задач: целостность, сложность, параллельность, переменность, иерархичность, распределенность, энергетичность, структурная активность информации, связанность простых задач и процессов, несвязанные, слабосвязанные и сильносвязанные задачи и процессы. Теория распределенной обработки информации является фундаментальной для построения локальных, территориальных и глобально-спутниковых компьютерных и биокомпьютерных систем и сетей предприятий, учреждений, городов, стран и всего мира в целом. Эти фундаментальные принципы легли в основу таких основополагающих научных направлений информатики как искусственный интеллект, бионейрокомпьютерные системы и сети информатизации мирового сообщества; на их базе создаются и уже появились высокопроизводительные вычислительные машины и системы с параллельным выполнением операций.  Более того, широчайшим образом распространенные на сегодня средства последовательной обработки информации есть частный случай рассматриваемых здесь сложных сред, структур и систем.

Этими основополагающими и им подобными проблемами моделирования сложных вычислительных систем завтрашнего дня, научно обоснованными подходами к порстроению таких моделей занимается основополагающая наука информатики – ИНФОРМАЦИОЛОГИЯ.

 


Модуль Описания систем через множество процессов


Процесс описывает возможное функционирование распределенной системы. Распределенные системы обладают многими ходами работы. Абстрактное описание динамического поведения распределенной системы может быть дано путем задания множеств процессов. Существует ряд формализмов для описания систем и ходов работ. Тремя представителями таких формализмов являются:

·         сети Петри, графический метод описания;

·         агенты, формальный язык описания;

·         формулы логики предикатов для описания хода работы.

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



Модуль Структура и закономерности протекания информационных процессов


Процесс

описывает возможное функционирование распределенной системы. Следовательно, информационный процесс описывает возможное функционирование распределенной информационной системы. Информационные системы - область науки и техники, которая включает совокупность средств, способов и методов человеческой деятельности, направленных на создание и применение систем сбора, хранения, передачи и обработки информации. Процесс в общем случае состоит из множества событий, которые соответствуют выполнению действий и возникают в определенном причинном следственном порядке. Процесс служит для математического моделирования любого дискретного действия распределенной системы и складывается из отдельных действий между которыми существуют причинно-следственные отношения. При каждом воплощении действия говорят о событии. Действие распределенной системы состоит из множества событий, причем каждому событию предписано действие. Различным событиям могут быть предписаны одни и те же действия. Это приводит к следующей математической модели (структуре) для процесса.

Пусть задано множество (универсум) E событий (англ. events), множество A действий (англ. actions). Тройка p=(E0, £0, a) называется структурой действия или также процессом, если справедливы следующие высказывания:

E0ÍE,

£0

есть частичный порядок над E0,

a: E0 ® A.

E0 называется множеством событий, £0 есть отношение причина-следствие, и a - обозначение действия процесса p. Отображение a каждому событию предписывает действие. В это определение структуры действия включается также пустой процесс – он представляется структурой действия, которая содержит пустое множество событий.

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

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

Каждому последовательному процессу можно однозначно сопоставить поток действий – трассу (spur, англ. trace) процесса. Трассы являются более простыми моделями для последовательного хода работы системы, чем структуры действий.

Для моделирования распределенных систем, как правило, используются не процессы с их явным представлением параллельности (англ. true concurency – истинный параллелизм), а технически более простые для применения множества потоков действий. В этом случае говорят об искусственной линеаризации (англ. interleaving).

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

·         сети Петри, графический метод описания;

·         агенты, формальный язык описания;

·         формулы логики предикатов для описания хода работы.

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

Сеть Петри (сеть условий/событий) – направленный граф, состоящий из узлов двух типов – вентилей (переходы, барьеры) и ячеек (места, площадки). Ребра по мере надобности ведут от вентилей к ячейкам или от ячеек к вентилям Ячейки загружаются логическими значениями или натуральными числами. Содержимое ячеек определяет состояние сети. В каком-либо заданном состоянии определенные вентили (множество вентилей) готовы к передаче (они могут «открываться» - путем открытия такого множества вентилей изменяя загрузку сети, т.е.


содержимое ее ячеек).

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

Система

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

Для описания процессов применяются следующие термины:

·         распределение

означает пространственное расположение (или разделение) отдельных компонент процесса;

·         параллелизм

относится к временным отношениям между действиями компонентов процесса, которые могут протекать одновременно (параллельно);

·         интерактивность, реакция, коммуникация, координация, синхронизация

касаются причинно-следственных отношений между пространственно разделенными и выполняемыми наряду друг с другом действиями (с помощью них осуществляется обмен сообщениями и сигналами);

·         недетерминированность

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

Процесс

в общем случае состоит из множества событий, которые соответствуют выполнению действий

и возникают в определенном причинно-следственном (временном) порядке.

 


Модуль Введение Системный подход


Настоящий конспект установочных лекций по информатике в основном предназначен для студентов первого-второго курсов МИРЭА, поступивших на специальность 071900 «Информационные системы (в образовании)», но может быть использован в качестве факультатива в профориентационных и развивающих базовый уровень целях в одиннадцатых классах школьного лицея «Воробьевы горы», в системе дополнительного образования МГДТДиЮ и в учебной ознакомительной деятельности с работниками образовательных учреждений на стажерской педагогической площадке МГДТДиЮ (ФПК). Для этого кроме настоящих установочных лекций в учебно-творческом процессе открытого типа  МГДТДиЮ предусмотрены семинары, ежегодные научные конференции ЮНТО, ознакомительные практические (лабораторные) работы, впоследствии в июне-июле учебная практика - ежегодная программа МГДТДиЮ «Дидактика», а также самостоятельная индивидуальная учебно-творческая работа учащихся и слушателей - очная и в системе дистанционного обучения (ДО) с использованием современных Интернет\Интранет-технологий. Кроме того, курс поддерживается базой данных, сформированной на сервере Московского межвузовского центра НИТ МГДТДиЮ-МИРЭА-ГНИИ ИТТ «Информика» в МГДТДиЮ (www.mgdtd.ac.ru).

Совокупность этих мероприятий и возможностей позволяют обеспечить учащихся персонифицированными автоматизированными рабочими местами (АРМ) и содействует созданию и наполнению учащимися и слушателями своей личной базы данных, отвечающей предметной области, методическому и программному обеспечению, как настоящего курса, так и специальности 071900 в целом.

Сама обсуждаемая специализация “в образовании” специальности 071900 “Информационные системы (по областям применения)” является достаточно новой и одной из немногих, имеющих назначение готовить для системы непрерывного образования ИНЖЕНЕРОВ-ТЕХНОЛОГОВ, способных и призванных создавать, проектировать, сопровождать в эксплуатации и модернизировать современные сложные компьютерно-сетевые информационные средства и ресурсы в образовательных технологиях, а также осуществлять непосредственную учебную работу в таких предметных областях как информатика, информационные технологии и им подобных.


Актуальность и неизбежность специализированной подготовки таких специалистов была продиктована в последние годы стремительно возрастающими требованиями к профессионализму лиц, обслуживающих компьютерно-сетевые мощности учебных заведений и технологии работы с информацией в локальных, корпоративных, глобальных сетях. Вхождение в нашу профессиональную и повседневную жизнь Internet, лавинообразное разрастание мирового информационного пространства и мировых информационных ресурсов сделали эту потребность острой и необратимой. Более того, возникла и настоятельно ощущается необходимость создания и обеспечения четкой работы, специализированных профессиональных технологических подразделений в больших образовательных учреждениях (центров, лабораторий, постов), обслуживающих НИТ и ДО или хотя бы одного специалиста по НИТ и ДО в каждом малом образовательном учреждении. Такой специалист или группа специалистов, объединенная упомянутым выше специализированным подразделением НИТ и ДО, должны обеспечивать в технологическом отношении безупречную работу всего компьютерно-сетевого парка учреждения образования, создавать, правильно использовать и развивать библиотеку программного обеспечения, поддерживать работу серверов своего учреждения, администрировать сети и обеспечивать выход в глобальные, городские и корпоративные сети на современном уровне, регулируя вопросы и технологии доступа к информации, обмена и обработки информации, защиты информации, создания и развития собственных учрежденческих и личных для всех работников и учеников банков данных и знаний, а также поддерживать средства, технологии и методологию дистанционного обучения (ДО).

Подход к формированию специалиста-технолога НИТ и ДО должен быть системным, а полученные им знания и умения строиться на системном уровне с представлением об информационно-социальных технологиях и их реализацией на системной основе, то есть информационные технологии в образовании должны реализовываться, прежде всего, как ИНФОРМАЦИОННЫЕ СИСТЕМЫ В ОБРАЗОВАНИИ.


Следовательно, специалист в сфере НИТ и ДО должен, прежде всего, уметь моделировать, проектировать, внедрять и обеспечивать эксплуатацию этих средств в учреждении образования на протяжении всего их жизненного цикла.

Базисом всей проектной, эксплуатационной деятельности специалиста-технолога НИТ и ДО должны являться наукоемкие технологии в образовании, опирающиеся на интеграцию фундаментальных и прикладных наук в системе образования и, прежде всего, выработанных для нужд образовательной деятельности высшей школой. В рассматриваемой области профессиональных знаний наряду с универсальными общеобразовательными дисциплинами, такими, как высшая математика, физика, блок социально-политических, экономических и педагогических дисциплин, фундаментальное значение, основу специальности составляют курсы ИНФОРМАТИКИ, Теории информатики, Информационных технологий и Моделирования систем.

Информатика - фундамент профессиональных знаний специалиста в области НИТ и ДО. В контексте возвышения НИТ и ДО в образовании не менее, чем до уровня ИНФОРМАЦИОННЫХ СИСТЕМ В ОБРАЗОВАНИИ создание профессионального МЕТОДА специалиста заключается в формировании у него СИСТЕМНОГО ПОДХОДА к информатизации образовательных технологий, а, следовательно, приобретают фундаментальное значение дисциплины, связанные с изучением информатики, теории информационных процессов, информационных систем (ИС) в образовании, в том числе экспертных, дидактических, обучающих и интеллектуальных систем как соответствующей нуждам образования фазы развития ИС. Без такого подхода к проблеме всеобщей информатизации образования немыслимо создание и поддержание на конкурентоспособном уровне образовательных технологий XXI века.

В изданном конспекте лекций по дисциплине “Введение в специальность”, поставленной заведующим кафедрой ТИССУ членом-корреспондентом Международной Академии Информатизации профессором Владимиром Александровичем Мордвиновым показано, что конкретное наполнение повседневной профессиональной деятельности технолога по НИТ и ДО в учреждениях образования наряду с проектированием, внедрением и сопровождением ИС надо искать в сфере многих прикладных дисциплин общей профессиональной подготовки и специализации.


Для технолога НИТ и ДО этот спектр дисциплин, развиваясь на базе фундаментальных курсов, посвященных ИНФОРМАТИКЕ и МОДЕЛИРОВАНИЮ СИСТЕМ, образует три основных русла:

·

Компьютерно-телекоммуникационные, сетевые технологии и мировые информационные ресурсы. То есть кровь, сосуды и транспортировка этой крови в сосудах живого образовательного организма, называемого ИНФОРМАЦИОННЫМИ СИСТЕМАМИ В ОБРАЗОВАНИИ.

·         Базы и банки данных и знаний. То есть то, без чего создаваемые для образовательных технологий ИС оказываются лишенными содержания и управления им.

·         Моделирование, проектирование, сопровождение, поддержание полного  жизненного цикла ИС в образовании. То есть метод, методология, закон (международный стандарт), инженерная технология создания и поддержания заданной работоспособности сложных образовательных систем. Эта часть подготовки специалиста заключительная - вершина формирования специалиста в вузе. Она завершается государственным экзаменом по избранной специальности и дипломным проектированием, решающим задачу создания ИС в образовании.

Всем перечисленным выше требованиям и подходам к подготовке технологов ПО НИТ и ДО для образовательных учреждений в полной мере отвечает недавно появившаяся специальность 071900 «Информационные системы по областям применений»; в данном случае «в образовании». Настоящий курс создает у будущего специалиста по этой специальности необходимый фундамент знаний и умений в предметной области информациологии и практической информатики, позволяющий углублять и специализировать полученные знания в последующем обучении в вузе.

Государственные требования к минимуму содержания подготовки специалистов по указанному курсу регламентируются Государственным образовательным стандартом высшего профессионального образования по специальности 071900 «Информационные системы». Согласно этому стандарту в учебные планы МИРЭА по дисциплинам “Информатика” и “Теория информации” включены следующие темы и вопросы:



ЕН.02

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

225

ЕН.03

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

170

Этим вопросам, в основном, посвящен настоящий конспект лекций, охватывющий в установочном плане основные и наиболее трудные, наукоемкие и новые темы и вопросы курса “Информатика” применительно к специализации “Информационые системы (в образовании)”.


Модуль Вводим основные понятия


Для дальнейшего изложения нам необходимо пользоваться целым рядом понятий и определений, терминов. Некоторые из наиболее употребимых и значимых в курсе информатики уже встречались в предисловии редактора и во введении к конспекту установочных лекций по курсу. Раскроем ниже значения части их, опираясь на определения, данные академиком Э.А.Якубайтисом и другими известными специалистами. При этом заметим, что в дальнейшем изложении рекомендуем пользователям отыскивать раскрытие тех или иных терминов понятий и определений, встречающихся по тексту, в глоссарии и развивающих курс статьях гипертекстовой системы сопровождения на сервере кафедры ТИССУ или в методическом кейсе.

ИНФОРМАТИКА ~ informatics – научное направление, изучающее модели, методы, средства, способы сбора, хранения, защиты, обработки и передачи информации.

Термин «информатика» появился во Франции после того, как Французская академия приняла его вместо понятия «обработка информации». После этого он стал широко использоваться в Европе. Только в США для обозначения рассматриваемой области деятельности используется термин “computer science”.

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

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

Информатика является новой научной областью, опирающейся на традиционные науки. К ним в первую очередь относятся:

·         математика — логические структуры данных и математические модели представления информации;

·         теория информации — математическое описание методов передачи данных и обработки данных, а также классификация информации;


·         искусственный интеллект — способность устройства решать задачи, ассоциируемые с разумными действиями человека;

·         электроника, обеспечивающая техническую базу информатики;

·         семиотика — комплекс направлений, изучающих знаковые системы.

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

Наиболее промышленно развитые страны объединяют свои усилия в создании современной информатики. Цель этих работ— улучшение правительственной связи, поддержка разработки международных проектов, создание скоростных базовых сетей, объединение компьютера, телевизора и телефонного аппарата, создание новых методов хранения информации («оцифровка данных») и многое другое.

 

ИНФОРМАЦИЯ ~ information ? совокупность фактов, явлений, событий, представляющих интерес, подлежащих регистрации и обработке.

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

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


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

Информация, представленная в виде, удобном для обработки, называется данными. Важное значение имеет многомерное представление данных. Определенная структура информационного объекта, подвергаемого обработке, именуется форматом.

ИНФОРМАЦИЯ явяляется абстрактным содержанием какого-либо высказывания, описания, указания, сообщения или известия. Внешнюю форму изображения называют представлением (конкретная форма сообщения).

При постоянном обращении с определенными системами представления часто не осознается различие между представлением и информацией. Например, цифры 0, 1, 2, 3… являются, сторого говоря, только литерами (знаками). Абстрактное математическое число «нуль» есть информация, которую мы привыкли связывать с цифрой 0. Представление интерпретируется, чтобы получить информацию.

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

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

ВИДЫ ИНФОРМАЦИИ

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


На их основе создаются системы и сети. Большое значение в процессах обработки данных имеет логика.

Информация, представленная в виде, удобном для обработки, называется данными. Важное значение имеет многомерное представление данных. Определенная структура информационного объекта, подвергаемого обработке, именуется форматом.

Информация является объектом изучения информатики.

КОЛИЧЕСТВО ИНФОРМАЦИИ

Минимальной единицей количества информации является бит (Bit – от Binary Digit). В вычислительных системах информацию принято измерять в байтах. Байт – состоит ровно из 8 бит. Для обозначения больших объемов информации используют приставки: 1 килобайт = 1024 байта, 1 мегабайт = 1024 килобайта, 1 гигабайт = 1024 мегабайта.

Пример (количественная оценка информации). В настоящее время для современного накопителя на жестких магнитных дисках («винчестер») характерна емкость измеряемая в гигабайтах, для оперативной памяти (RAM – random access memory, известна еще как ОЗУ – оперативное запоминающее устройство) в мегабайтах, размер текстовых файлов, как правило, измеряется в килобайтах, длина машинных команд измеряется в байтах, при детальном рассмотрении устройства вычислительной машины, например, портов ввода вывода характерным «хранилищем информации» является бит.

ИНДУСТРИЯ ИНФОРМАТИКИ ~ informatics industry ? отрасль индустрии, обеспечивающая информационный сервис.

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

Число работников индустрий информатики быстро возрастает. Так, в сфере обработки информации США уже занята примерно половина трудоспособного населения. Индустрия информатики обеспечивает проведение научных исследований, проектно-конструкторской деятельности, образование, работу экономических и статистических учреждений и т.д. Важное значение индустрия информатики имеет в инфобизнесе. Более того, она необходима для сферы предпринимательства, торговли, управления производством, работы транспорта, функционирования банковских систем.


Во многих странах созданы крупные информационные фирмы.

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

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

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

 

ИНФОРМАЦИОННАЯ СИСТЕМА. Информация, находящаяся в какой-либо информационной системе, воспринимается как некоторая математическая структура. Переход от представления к элементам этой математической структуры называется интерпретацией. Установление отношений к реальному миру называется пониманием.

Различные системы представления информации по-разному эффективны. Если должна представляться сложная информация, то должна представляться подходящая система представления.

В информатике обычно рассматривается точное описание множества R представлений с интерпретацией I  в множестве A элементов (информаций). Интерпретация I данному представлению r (сообщению) ставит в соответствие некоторое  абстрактное информационное содержание I[r]. Таким образом, интерпретации соответствует отображение


Надежность передачи сообщений


Концепция избыточности может использоваться не только для уменьшения ошибочных передач при общении между людьми. Ее можно с успехом  применять и при техническом обмене сообщениями, чтобы предохранить закодированную информацию от помех и ошибок. Следующая ситуация является типичной для передачи сообщений. От источника передаются параллельно сообщения через пучок проводов к некоторому приемнику (адресату) (рис. 7.1.).

Источник        —       Приемник

                     Канал  

Рис. 7.1. Cxeмa передачи

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

и в дальнейшем ограничимся рассмотрением этого простого случая.

При так называемом двоичном канале

из-за ошибок передачи всегда возникают тоже двоичные знаки. Оба знака О и L имеют вероятности ошибок соответственно ро и pl.

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

когда Ро == pl. В случае симметричных помех с вероятностью р = ½ для каждого передаваемого знака вероятности ошибочной и корректной передач одинаковы. Принятый знак не оказывает никакого влияния на передаваемый знак.

При канале с потерей знаков

из-за ошибок передачи появляются испорченные знаки которые, впрочем, распознаваемы как искаженные знаки и которые могут быть представлены знаком искажения 1. Такого рода знак приходит, например, при передачах, которые нарушаются через шум. Таким образом, канал в качестве входа принимает слова над множеством знаков {L . 0} и выдает слова над множеством знаков {L, О, 1}.

Надежность кодов

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

(1)   вероятность полнить неверный знак была по возможности мала;

(2)   вероятность обнаружения ошибки была по возможности больше;

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

При двоичном кодировании в случае односторонних помех при m-из-n кодах каждая помеха ведет к слову, которое не является кодовым словом, и потому может быть обнаружена.

При симметричных помехах для обнаружения помех требуется увеличение расстояния Хэмминга. Мы получаем следующую, легко доказываемую лемму.

Лемма (обнаружение ошибок). Если код имеет расстояние Хэмминга h, то все ошибки, которые встречаются меньше чем в h битах, могут быть обнаружены.

При предположениях, сформулированных в этой лемме, справедливо, что все ошибки, появившиеся меньше чем в h/2 битах, могут быть успешно устранены, если для коррекции обнаруженной ошибки применяется кодовое слово с наименьшим расстоянием Хэмминга Hd. Получаются следующие простые следствия: если Hd = 2, то ошибочный бит может быть обнаружен; если Hd = 3, то могут быть обнаружены два ошибочных бита, а один ошибочный бит может быть успешно исправлен; корректировка передачи с двумя ошибочными битами ведет к неопределенному, а следовательно, некорректное результату.

Чтобы достичь исчерпывающей сохранности кодов, заданные коды часто снабжаются дополнительными битами: «битами четности» или «контрольными битами».

Пример (код Флексорайта). К каждому кодовому слову добавляется контрольный бит. Его значение берется таким, чтобы общее число L в коде было четным. Если в кодовом слове с контрольным битом испорчен только 1 бит, то контрольный бит для возникшего слова некорректен и тем самым ошибка обнаруживаема.

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

Надежность передачи

Рассмотрим двоичный канал для передачи двоичных слов, о которых (и их избыточности) мы ничего не знаем.


Пусть в канале имеют место симметричные помехи. Это означает, что имеется фиксированная вероятность ошибок, с которой выход в одном знаке отличается от входа. Допустим, далее, принимая во внимание скорость передачи (мощность канала), что источник должен передать определенное число So знаков, а канал может передать Si знаков в единицу времени. Тогда R == So/Si назовем темпом источника.

Если R < 1, то возможно - с помощью соответствующей кодировки входа для передачи - достичь еще дополнительной избыточности и тем самым устойчивости к ошибкам. Таким образом, передача сообщения следует схеме, приведенной на рис. 7.2:

Источник — Кодировка —Декодировка— Приемник

Рис.7.2.

Схема передачи сообщения

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

Пример (надежность через избыточность). Если, например, имеет место R == 1/3, то канал может передать втрое больше знаков, чем их вырабатывает источник. Каждый знак может быть троекратно закодирован перед передачей и в конце концов должен быть снова декодирован:

пересылаемое слово   LOLOO,

кодировка                   LLLOOOLLLOOOOOO.

Если, предположим, например, что вследствие шума биты с номерами ] 5, 6, 12 и 13 будут искажены (норма ошибок 1/3), то адресат получит последовательность знаков

LOLOLLLLLOOLLOO.

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

LLLOO.

Некорректно будет устранена только ошибка в передаче второго бита эта ошибка и останется в декодированном сообщении. Норма ошибок тогда задается так, что для малой вероятности ошибки р это значительно лучше, чем вероятность ошибки р при однократной передаче знака. Ошибка достигает адресата только в том случае, когда будут искажены 2 или 3 бита в кодировке одного знака.


Если темп источника больше ½, то стратегия неоднократной передачи непосредственно невозможна. Тогда  можно работать с дополнительными битами, например битами четности, которые, однако, должны выбираться очень тщательно. Следующая стратегия битов четности называется кодом Хэмминга: если имеет место R == n/(n+1), то возможен только один дополнительный бит для n-битового кода. Для передачи n-битового двоичного слова выбирается бит Xn+1 таким образом, что с W(L) == 1 и W(0) == 0 справедливо.

            Это значит, что каждое двоичное слово дополняется еще одним знаком так, чтобы число знаков L во всем кодовом слове было четным. Расстояние Хэмминга для (n+1, n)-кода Хэмминга, равно по меньшей мере двум. Для такого кода единичная

ошибка обнаруживаема, но не устранима.

Если, например, R = 4/7 и пересылаются слова детины 4, то можно cвободно выбирать 3 бита четности. Если должно передаваться слово

nо при (7, 4)-коде Хэмминга биты х4,x5,x6 могут быть выбраны в качестве битов четности.

При декодировании (в предположении, что имеется не более одной ошибки) можно поступать следующим образом. Адресат при пересылке двоичного слова х = <хо ... x6>

получает, возможно, испорченное слово y. Если у не является кодовым словом, т. е. у не удовлетворяет приведенным выше равенствам, то мы считаем, что имеет место ошибка передачи, и в качестве передаваемого слова выбираем то слово из кода Хэмминга, которое отличается от слова у только в одном бите. Если такого двоичного слова не существует, то исходное передаваемое слово однозначно не восстановимо.

Итак, наряду с вероятностью ошибки р для канала на передаваемый бит при темпе источника R < 1 при использовании избыточности мы получаем меньшую вероятность ошибки ре < р на подлежащий передаче знак. Если имеет место R > 1, то мы ожидаем ре > р

Если темп источника R больше единицы, то надо передать больше знаков, чем может справиться канал, и тогда не все биты источника могут быть переданы.


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

pe=p/R+(R-l)/(2R).

Лучшая мера корректно переданных битов поддается путем их упаковки в передаваемые блоки. Проиллюстрируем это на примере. Для R == 3 источник делит сообщение на блоки трехразрядных двоичных слов и пересылает значение большинства. Адресат утраивает каждый переданный бит. Тогда мы получаем в совокупности вероятность ошибки

ре=(2р+1)/4.

При вероятности ошибки р == 0 примерно ¾ знаков передаются корректно.

Описанная выше идея улучшения значения ре может быть применена и в других случаях, если для темпа источника справедливо R > 0. Всегда можно пытаться многие биты передаваемого слова уплотнить в I 6ит (или в меньшее число бит), передать это и добавить целиком к подлежащему передаче сообщению. Это приводит к вопросу: насколько при заданных темпе источника R и вероятности р ошибки в бите можно улучшить с помощью кодирования вероятность ошибки ре при передаче н подлежащий передаче бит? Принципиально можно сказать:

в случае R == 1 определенно ре = р является достижимым оптимумом, в случае R < 1 определенно ре < р, а в случае R > 1 определенно ре > р.

Точное высказывание относительно достижимой вероятности ошибки при заданных темпе источника и вероятности помехи может быть сделано следующим образом. Введем еще двоичную функцию энтропии Н2(p), определяемую формулой

Н2(Р) == р • lg(l/p) + (1 - р) lg (l/(1-p) В частности, справедливо Н2(0) = Н2(1) = 0.

Меру для достижимой надежности передачи дает мощность канала.

Мощность канала указывает, какая вероятность ошибки при заданных темпе источника и вероятности ошибки на бит может быть достигнута в лучшем  случае. Мощность С определяется как

С(p)=1-H2(p).

 

 


NP-полнота


Как уже упоминалось, до сих пор неизвестно, является ли класс задач NP\P пустым или нет. Впрочем, можно найти задачи, которые принадлежат к NP и к которым может быть эффективно (за полиномиальное время) сведена любая задача из NP. Такие задачи назовем NP-полными, а класс таких задач назовем NP-complete

(или, короче, NPC). Очевидно, для класса NPC справедливо высказывание

Р ¹ NP Þ NP-complete  Ç  Р = Æ.

Естественно, если существует задача Q в NP, которая не входит в Р, то NP-полные задачи не могут быть в Р, поскольку Q всегда за полиномиальное время может быть сведена к NP-полной задаче. Покажем теперь, что класс NPC не пуст, задав специальные  NP-полные задачи.



О языках программирования в курсе “Информатика”


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

Коммуникация через обмен сообщениями.

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

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

Каналы для обмена сообщениями типа m объявляются аналогично объявлению программных переменных:

channel m c

Среда передачи сообщений, которая служит для установления связи между отправителем и получателем, носит название канал.

В процедурном языке действия пересылки по каналу с выражаются с помощью оператора send E on c, где Е - любое выражение типа m; с - имя канала.

В дополнении к этому действие приема сообщения выражается оператором receive x on c, где х - идентификатор программной переменной.

Если к моменту выполнения действия приема еще отсутствует посланная информация, то процесс ожидает момента поступления сообщения.

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

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


channel m с;

var m x, var m z := x0, z0;

while b(x) do receive x on c;

consume (x)

od

while b(z) do produce_next(z);

send z on с

od

Здесь consume и poduce_next - заданные процедуры, a b - булевская функция. операторов.

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

(1)

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

(2)   рандеву («рукопожатие»): посылающий процесс ждет, пока принимающий процесс будет готов к приему сообщения. Обмен информацией имеет место в событии, после чего оба процесса продолжают свою работу. Обмен сообщениями соответствует общему событию.

В случае (1) говорят об асинхронной,

а в случае (2) - о синхронной передаче. Р

Для обсуждения различных концепций обмена сообщениями введем две синтаксические формы. В дальнейшем будем использовать операторы send Е on с и соответственно receive x on с для асинхронного обмена сообщениями с неявными буферами. Будем писать Е | с для синхронного действия посылки х ? с для синхронного действия приема при обмене сообщениями через рандеву.

При этом соглашении пример производитель/потребитель в нотации рандеву может быть записан следующим образом:

channel m c;

var m x, var m x:=х0, x0

while b(x) do x ? c;

consume (x)

od

while b(x) do produce next(x);

z ^ c

od

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

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

Если от параллельной программы Р, в которой обмен сообщениями осуществляется по принципу неявного буфера, переходим к программе Р', осуществляющей обмен по принципу рандеву, то получается следующее отношение между этими программами:

(1)   Каждый свободный от тупиков ход работы программы р' есть линеаризация хода работы р, причем действия посылки/приема сообщений могут толковаться как одно действие.

(2)   Определенные ходы работы р и их линеаризации исключаются как ходы работы р'.

(3)   Р' возможно, приведет к тупикам, которые исключены для Р.

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