Основные способы обработки большого количества текстовой информации
Рефераты >> Программирование и компьютеры >> Основные способы обработки большого количества текстовой информации

Введение

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

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

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

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

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

Задачи программируются на языке программирования, который изучается в курсе «Алгоритмические языки и программирование», и, тем самым, закрепляют навыки, полученные в этой дисциплине. Кроме этого, требование подготовки блок-схем средствами WinWord позволяет углубить знания, связанные, с одной стороны, с логическим проектированием алгоритма, а с другой – с правилами начертания блок-схем.

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

ЧАСТЬ 1. МЕТОДЫ АДРЕСАЦИИ

ВВЕДЕНИЕ

Основную проблему при адресации элементов списков можно сформулиро­вать следующим образом: как по первичному ключу определить местоположение элемента с данным ключом (задача поиска)? Существует несколько различных спосо­бов адресации. Они рассматриваются далее.

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

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

1. Теоретическая часть

1.1. Последовательное сканирование списка

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

1. 2. Блочный поиск

Если элементы упорядочены по ключу, то при сканировании списка не требуется чтение каждого элемента. Компьютер мог бы, напри­мер, просматривать каждый n-ный элемент в последовательности возрастания ключей. При нахождении элемента с ключом, большим, чем ключ, используемый при поиске, просматриваются последние n-1 элементов, которые были пропущены. Этот способ называется блочным поиском: элементы группируются в блоки, и каждый блок проверяется по одному разу до тех пор, пока ни будет найден нужный блок. Вычисление оптимального для блочного поиска раз­мера блока выполняется следующим образом: в списке, со­держащем N элементов, число просмотренных элементов минимально при длине блока, равной ÖN. При этом в среднем анализируется ÖN элементов.

1.3. Двоичный поиск

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

1.4. Индексно-последовательная организация

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

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

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

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

Если элементы списка упорядочены по ключу, индекс обычно со­держит не ссылки на каждый элемент, а ссылки на блоки элементов, внутри которых можно выполнить поиск или сканирование.

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

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


Страница: