
- •Введение
- •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. Коды некоторых стран
7.5.1.Алгоритм расчета наиболее ранних сроков наступления событий
Обозначим время, необходимое для выполнения операции (x,y) через t(x,y). Проанализируем сетевой график, чтобы определить, как быстро может быть завершен соответствующий ему проект. Для этого для каждого события x рассчитаем величину E(x) - наиболее ранний из возможных сроков наступления события x.
Рассмотрим фрагмент некоторого сетевого графика, представленный на рис.7.22. Пусть известны наиболее ранние сроки наступления 5,8 и 9 события, т.е. известно, что событие 5 в наилучшем случае (наиболее рано) произойдет через четыре единицы времени после начала работы над проектом, событие 8 - через 7 единиц времени, а событие 9 - через 6. Также известны времена выполнения операций (5,14), (8,14) и (9,14), которые равны 6,4 и 3 единицам времени соответственно. Требуется рассчитать наиболее ранний срок наступления события 14. Очевидно, что событие 14 не может произойти, пока не завершатся все операции (5,14), (8,14) и (9,14). Операция (5,14) в лучшем случае завершиться через E(5)+t(5,14)=4+6=10 единиц времени после начала работы над проектом. Аналогично операция (8,14) в лучшем случае завершиться через E(8)+t(8,14)=7+4=11, а операция (9,14) - через E(9)+t(9,14)=6+3=9 единиц времени после начала работы над проектом. Таким образом, все операции (5,14), (8,14),(9,14) завершаться через max(10,11,9)=11 единиц времени и наиболее ранний срок наступления события 14 также равен 11 единицам времени.
В общем случае наиболее ранний срок события j в сетевом графике G=(V,E) рассчитывается по формуле:
Алгоритм расчета наиболее ранних сроков наступления событий представлен на рис.7.23. Реализация алгоритма приведена в листинге 7.12.
Листинг 7.12
const naxN=100; {Максимальное число вершин (событий) сетевого графика}
maxValue=32768; {Используется вместо бесконечности}
type
tGraf=array[1..naxN,1..naxN] of integer; {Тип для хранения матрицы весов
сетевого графика (время выполнения
операции задается целым числом)}
tNum=array[1..naxN] of integer; {Тип для хранения номеров вершин сетевого графика
(событий) после их перенумерации
(после топологической сортировки сетевого графика)}
tEL=array[1..naxN] of integer; {Тип для хранения наиболее ранних и наиболее поздних
сроков наступления событий}
var
T:tGraf; {Матрица весов сетевого графика}
N:integer; {Число событий сетевого графика}
Num:tNum; {Номера событий после их перенумерации}
E:tEL; {Наиболее ранние сроки наступления событий}
L:tEL; {Наиболее поздние сроки наступления событий}
{ Функция EDuga возвращает true, если в графе, заданном матрицей весов A,
есть дуга (I,j). В противном случае функция возвращает false.}
function EDuga(A:tGraf; i,j:integer):boolean;
begin
if A[i,j]<maxValue then EDuga:=true
else EDuga:=false
end;
function TopSort(A:tGaf; N:integer; var Num:tNum):boolean;
Текст данной функции см. в листинге 7.11
{ Функция RaschetE выполняет расчет наиболее ранних сроков наступления событий
сетевого графика заданного матрицей весов T размера N на N.
Возвращает true, если расчет выполнен и false, в противном случае (сетевой график задан
неверно, содержит контур).
Если расчет наиболее ранних сроков наступления событий выполнен, то данные сроки
сохраняются в выходном массиве E.
E[i] - наиболее ранний срок наступления i-го события.}
function RaschetE(T:tGraf; N:integer; var Num:tNum; var E:tEl):boolean;
var i,j:integer;
begin
if not TopSort(T,N,Num) then RaschetE:=false {Топологическая сортировка вершин сетевого
графика (перенумерация событий) не выполнена,
следовательно, график содержит контур и расчет
наиболее ранних сроков наступления событий
не может быть выполнен.}
else
begin
E[Num[1]]:=0;
for j:=2 to N do
begin
E[Num[j]]:=0;
for i:=1 to N do
if E[Num[i]]+T[Num[i],Num[j]]>E[Num[j]] then
E[Num[j]]=E[Num[i]]+T[Num[i],Num[j]]
end;
RaschetE:=true
end
end;