
- •Введение
- •1.Понятие экономической информационной системы (эис)
- •1.1. Понятие системы
- •1.2. Понятие эис. Назначение эис
- •1.3.Классификация эис
- •1.4. Основные принципы и методы построения эис
- •1.4.1. Принципы построения и функционирования эис.
- •1.4.2.Структурный и объектно-ориентированный подходы к проектированию.
- •1.4.3.Понятие жц эис.
- •2.Теоретические основы работы с информацией
- •2.1. Понятие информации
- •2.2. Измерение количества информации
- •Задания на дом
- •2.3.Кодирование информации
- •2.3.1.Оптимальное основание кода
- •2.3.2.Запись натурального числа в двоичной системе
- •2.3.3.Код Грэя
- •2.3.4.Оптимальное кодирование
- •2.3.5.Помехозащищенное кодирование
- •2.4.Методы организации данных в памяти эвм
- •2.4.1.Типы данных, структуры данных и абстрактные типы данных
- •2.4.2.Время выполнения программ
- •2.4.3.Списки
- •2.4.4.Реализация списков
- •Реализация списков посредством массивов
- •Реализация списков с помощью указателей
- •Реализация списков с помощью курсоров
- •2.4.5.Стеки
- •2.4.6.Реализация стеков
- •2.4.7.Очереди
- •2.4.8.Реализация очередей
- •2.4.9.Графы и деревья
- •2.4.10.Некоторые сд для хранения графов и деревьев
- •3.Особенности работы с экономической информацией
- •3.1.Классификация и кодирование экономической информации.
- •3.2.Единая система классификации и кодирования
- •3.3.Штриховое кодирование
- •Алгоритм расчета контрольного разряда ean
- •4.Модели данных
- •4.1.Атрибуты, составные единицы информации, показатели, документы
- •4.2.Операции над сеи
- •4.3.Реляционная модель данных
- •4.3.1. Отношения, как основа реляционной модели данных
- •4.3.2. Операции над отношениями
- •Операции объединения, пересечения и разности отношений
- •Операция декартова произведения отношений
- •Отношение «список программистов» и результат выполнения проекции
- •Операция натурального соединения отношений
- •4.3.3. Нормализация отношений
- •4.3.4. Функциональные зависимости
- •4.3.5. Нормальные формы
- •Результат первого шага приведения к 2нф отношения преподаватель_предмет (отношение преподаватель в 2нф)
- •Результат первого и второго шагов приведения к 2нф отношения преподаватель_предмет (все отношения в 2нф)
- •4.3.8. Пример проектирования реляционной бд
- •5.Модели знаний
- •5.1. Классификация знаний
- •5.2. Продукционная модель представления знаний
- •5.3.Представление знаний в виде семантической сети
- •5.4. Фреймовая модель представления знаний
- •5.5. Логическая (предикатная) модель представления знаний
- •6.Моделирование предметных областей в экономике
- •6.1.Понятие модели предметной области
- •6.2.Структурная модель предметной области
- •6.2.1.Функциональная методология idef0
- •6.2.2. Функциональная методика потоков данных
- •6.3.Объектная модель предметной области
- •6.4. Сравнение методик моделирования предметной области
- •7.Алгоритмы, наиболее часто использующиеся при обработке информации в эис
- •7.1.Алгоритмы поиска
- •7.1.1.Поиск элемента в неупорядоченном массиве
- •7.1.2.Поиск элемента в упорядоченном массиве.
- •7.1.3.Фонетический поиск
- •7.2.Алгоритмы сортировки
- •7.2.1.Сортировка методом пузырька.
- •7.2.2.Сортировка вставками
- •7.2.3.Сортировка выбором
- •7.2.4.Пирамидальная сортировка
- •7.2.5.Быстрая сортировка.
- •7.2.6.Сортировка слиянием
- •7.3.Поиск на графах
- •7.3.1.Поиск в глубину
- •7.3.2.Поиск в ширину
- •7.4.Топологическая сортировка графа
- •7.5.Сетевое планирование
- •7.5.1.Алгоритм расчета наиболее ранних сроков наступления событий
- •7.5.2.Алгоритм расчета наиболее поздних сроков наступления событий
- •7.5.3.Алгоритм расчета резервов времени.
- •Литература Рекомендуемая основная литература
- •Рекомендуемая дополнительная литература
- •Приложение 1.Форматы штрих-кодов
- •Приложение 2. Коды некоторых стран
2.4.8.Реализация очередей
При реализации очередей, как и при реализации стеков, используется реализация списков.
Если реализация списков осуществлена на массивах, то реализация оператора удаления первого элемента очереди DEQUEUE(Q)=DELETE(FIRST(Q),Q) не эффективна т.к. требует перемещения всех элементов очереди.
Аналогичная ситуация возникала при реализации стека на списке созданного на массиве. В случае стека перемещения всех элементов удалось избежать путем идентификации вершины стека последней позицией списка. Поступим аналогично и при реализации очереди. В результате удаление первого элемента очереди будет осуществляться за одно действие DEQUEUE(Q)=DELETE(LAST(Q),Q). Однако вставка элемента в конец очереди будет осуществляться путем перемещения всех элементов очереди - ENQUEUE(x,Q)=INSERT(x,FIRST(Q),Q).
Таким образом, простым изменением идентификации первого элемента нельзя добиться выполнение обоих операторов ENQUEUE(x,Q) и DEQUEUE(Q) за одно действие. Поэтому при реализации очереди на массивах используют так называемые циклические массивы. В циклическом массиве считается, что за последним элементом следует первый элемент.
Реализация очереди с помощью циклического массива представлена в листинге 2.7.
Листинг 2.7
const
maxlen=100; {Максимальное число элементов в очереди}
type
position=integer;
elementtype=integer; {Тип элементов очереди}
QUEUE= record
elements:array[1..maxlen] of elementtype;
front:position; {Курсор начала очереди}
rear:position; {Курсор конца очереди}
size:position {Число элементов в очереди}
end;
procedure NULLQUEUE(var Q:QUEUE);
{NULLQUEUE очищает очередь Q}
begin
Q.size:=0; Q.front:=1; Q.rear:=maxlen;
end; {NULLQUEUE}
function EMPTYQUEUE(Q:QUEUE):boolean;
{EMPTYQUEUE возвращает true, если очередь Q пуста и false в противном случае}
begin
return(Q.size=0)
end; {EMPTYQUEUE}
function Full(Q:QUEUE):boolean;
{Full возвращает true, если, отведенная под очередь Q память, исчерпана
и false в противном случае}
begin
return(Q.size=maxlen);
end; {Full}
function FRONT(Q:QUEUE):elementtype;
{FRONT возвращает первый элемент очереди Q}
begin
if EMPTYQUEUE(Q) then error(‘Очередь пустая’)
else return(Q.elements[Q.front])
end; {FRONT}
procedure ENQUEUE(x:elementtype; var Q:QUEUE);
{ENQUEUE вставляет элемент x в конец очереди Q}
begin
if Full(Q) then error(‘Очередь полная’)
else
begin
Q.rear:=(Q.rear mod maxlen)+1;
Q.elements[Q.rear]:=x;
Q.size:=Q.size+1;
end
end; {ENQUEUE}
procedure DEQUEUE(var Q:QUEUE);
{DEQUEUE удаляет первый элемент очереди Q};
begin
if EMPTYQUEUE(Q) then error(‘Очередь пустая’)
else
begin
Q.front:=(Q.front mod maxlen)+1;
Q.size:=Q.size-1;
end;
end; {DEQUEUE}
2.4.9.Графы и деревья
Понятия теории графов широко используются при формализации различных задач. Термин "граф" ввел Д.Кенег в 1936 г.
Пусть V - непустое множество, V{2} - множество всех его двухэлементных подмножеств. Пара (V,E), где ЕV{2}, называется графом или неориентированным графом.
Элементы множества V называют вершинами графа, а элементы множества E – ребрами графа.
Ориентированным графом (орграфом), называется пара (V,E), где EVV= {(v1,v2)|v1V,v2V}.
То есть в ориентированном графе важен порядок вершин составляющих ребро. В ориентированных графах вместо термина «ребро» используют термин «дуга». 1
Далее, если речь идет о графе G=(V,E) множество вершин будем обозначать VG, а множество ребер (дуг) - EG.
Граф G можно представить в виде некоторой геометрической структуры, состоящей из двух множеств: множества точек (вершин) VG и отрезков (ребер) ЕG, которые соединяют некоторые пары точек из VG. Если указаны начало и конец ребра, то отрезок заменяют направленным отрезком.
Две вершины u и v называются смежными, если множество {u,v} является ребром (дугой), и не смежными в противном случае. Также, в этом случае говорят, что u и v являются концевыми вершинами ребра e={u,v}. Для дуги e=(u,v) концевую вершину u называют началом, a v - концом дуги.
Ребра (дуги) называются смежными, если они имеют общую концевую вершину.
Вершина v и ребро (дуга) е называются инцидентными, если v концевая вершина е, и не инцидентными в противном случае.
Ребро e={v,v} или дуга e=(v,v) называется петлей.
Ребра e1={u,v},e2={u,v},...,еk={u,v} называются кратными.
Дуги e1=(u,v),e2=(u,v),...,еk=(u,v) называются параллельными.
Цепью называется любая последовательность попарно различных ребер (дуг), такая, что соседние ребра (дуги) в ней смежны. В орграфе если в цепи учтена ориентация дуг, то она называется путем.
Если не требовать, чтобы ребра (дуги) в упомянутой последовательности были различны, то получим понятие маршрута (ориентированного маршрута).
Циклом называется цепь, у которой начальная и конечная вершины совпадают.
Контуром называется путь, у которого начальная и конечная вершины совпадают.
Граф называется связным, если для каждой пары вершин найдется соединяющий их маршрут.
Граф, который не содержит циклов, называется ациклическим.
Связный неориентированный ациклический граф называется деревом, множество деревьев называется лесом.
Граф Н называется подграфом (или частью) графа G, если VHVG, ЕНEG. Если Н - подграф графа G, то говорят, что Н содержится в G.
Покрывающим (или остовным) деревом графа G называется дерево, являющееся подграфом графа G и содержащее все его вершины.
Если каждому ребру (дуге) графа поставлено в соответствие одно или несколько чисел, то такой граф называется взвешенным.