
- •Введение
- •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.1.1.Поиск элемента в неупорядоченном массиве
Работа алгоритма поиска элемента в неупорядоченном массиве заключается в том, что элементы массива, начиная с первого, последовательно сравнивается с искомым элементом. Сравнение элементов продолжается до тех пор, пока не будут просмотрены все элементы или очередной элемент массива не равен искомому. Такой поиск называется линейным поиском.
Один из вариантов реализации процедуры поиска элемента в неупорядоченном массиве был рассмотрен в разд.2.4.4 (см. рис.2.13 и листинг 2.4, функция LOCATE). Реализация алгоритма поиска содержат проверку на окончание массива и проверку на равенство текущего элемента массива с искомым. Обе проверки осуществляется для каждого очередного элемента массива. Поэтому в том случае, когда искомого элемента в массиве нет, будет произведено 2n проверок, где n число элементов массива. Однако число проверок можно уменьшить, если в конец массива включить (n+1)-й элемент, равный искомому. Тогда проверка на окончание массива становится лишней. Остается лишь проверка на совпадение очередного элемента с искомым. Если этот элемент находится внутри массива, то поиск заканчивается удачно и элемент считается найденным. Если же этот элемент оказался (n+1)-ым, то искомого элемента в массиве нет. Подобный прием позволяет упростить условия выхода из цикла и используется в программировании довольно часто. Применив этот прием, получим модифицированный алгоритм оператора LOCATE. Данный алгоритм представлен блок-схемой на рис. 7.1. Реализация функции LOCATE представлена в листинге 7.1.
Листинг 7.1
function LOCATE(x:elementtype; L:LIST):position;
var
q:position;
begin
L.elements[L.last+1]:=x;
q:=1;
while L.elements[q]<>x do q:=q+1;
return(q) {Если элемент x не найден, то возвращается позиция L.last+1}
end; {LOCATE}
7.1.2.Поиск элемента в упорядоченном массиве.
Поиск элемента в упорядоченном массиве может быть осуществлен с помощью алгоритма бинарного поиска. Принцип, лежащий в основе алгоритма бинарного поиска (и некоторых других алгоритмов), состоит в том, что иногда удаётся последовательно уменьшать объём задачи до такой степени, что её решение, в конце концов, становится тривиальным. Главный шаг при бинарном поиске – взять элемент из середины массива и, если он не равен искомому, то в зависимости от его значения исключить из рассмотрения ту или другую половину массива. Повторное выполнение этого шага быстро сокращает размер области поиска.
Алгоритм бинарного поиска для массива, упорядоченного по возрастанию.
1.Определить середину массива.
2.Если элемент, находящийся в середине массива, совпадает с искомым, то поиск завершен.
3.Если элемент, находящийся в середине массива, больше искомого, применить бинарный поиск к первой половине массива.
4.Если элемент, находящийся в середине массива, меньше искомого, бинарный поиск необходимо применить ко второй половине массива.
5. Пункт 1-4 повторять, пока размер области поиска не уменьшается до нуля. Если это произойдет – ключа в массиве нет.
Алгоритм бинарного поиска для массива, упорядоченного по убыванию, реализуйте самостоятельно.
Рассмотренный алгоритм бинарного поиска представлен блок-схемой на рис.7.2. Реализация алгоритма представлена в листинге 7.2.
Листинг 7.2
function BinFind(x:elementtype; n:position; buf:arraytype):position;
{ Функция BinFind осуществляет бинарный поиск элемента x в массиве buf длины n.
Возвращает номер элемента x в массиве buf, если элемент найден,
и 0, в противном случае.}
var i,j,k:position;
begin
i:=1; j:=n;
while i<=j do
begin
k:=(i+j) div 2;
if buf[k]=x then return(k);
if buf[k]<x then i:=k+1
else j:=k-1;
end;
return (0)
end;
Нетрудно заметить, что в худшем случае (искомого элемента в массиве нет) алгоритм бинарного поиска сделает не более O(log2N) шагов. Это объясняется тем, что на каждом шаге поиска вдвое уменьшается область поиска. До того, как она станет равной одному элементу, произойдет не более O(log2N) таких уменьшений.