Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Мишенин_Теория экономических ИС_Практикум

.pdf
Скачиваний:
94
Добавлен:
13.03.2015
Размер:
3.29 Mб
Скачать

Задание 3.2. Напишите программу последовательного поис­ ка в последовательном отсортированном массиве реквизитов единственного значения q. Используйте любой доступный вам язык программирования.

Задание 3.3. Напишите программу последовательного поис­ ка в последовательном неотсортированном массиве реквизитов всех значений q. Используйте любой доступный вам язык про­ граммирования.

Задание 3.4. Напишите программу последовательного поис­ ка в последовательном отсортированном массиве реквизитов всех значений q. Используйте любой доступный вам язык програм­ мирования.

Задание 3.5. Напишите программу бинарного поиска в после­ довательном отсортированном массиве реквизитов единственно­ го значения q. Используйте любой доступный вам язык програм­ мирования.

Задание 3.6. Напишите программу бинарного поиска в после­ довательном отсортированном массиве реквизитов всех значений q. Используйте любой доступный вам язык программирования.

Задание 3.7. Определите для последовательного поиска:

максимальное и среднее число сравнений при поиске в не­ упорядоченном массиве из М элементов единственного значе­ ния q\

среднее число сравнений при поиске в упорядоченном мас­ сиве из М элементов единственного значения q, когда искомого значения в массиве нет.

Задание 3.8. Определим оболочку поискового запроса как множество всех реквизитов, участвующих в формулировке зап­ роса. Сколько различных оболочек может быть у файла из Л^ реквизитов?

Задание 3.9. Реализует ли приведенная ниже программа алго­ ритм сортировки простым выбором?

140

PROGRAM

SimpleSelect;

 

 

 

 

 

 

const

N =

400;

 

 

 

 

 

 

 

 

var

J^I^K

 

: I n t e g e r ;

 

 

 

 

 

 

 

Max/Ind:

 

I n t e g e r ;

 

of

I n t e g e r ;

 

 

 

A

 

 

:

Array

[0..N]

 

 

BEGIN

 

t o

N do

 

 

 

 

 

 

 

For

I:=0

 

 

 

Write

(A[I]:4)

end;

 

begin

A[I]

:=

Random (N);

For J:=N

downto 1 do

 

 

 

 

 

 

 

begin

 

:=

A [ J ] ;

Ind

:=

J;

 

 

 

 

 

Max

 

 

 

 

 

For

I : = J

downto

0

do

 

 

 

 

 

 

 

If

 

A[I]>Max

Max := A [ I ] ;

Ind

:= I

end;

 

 

If

 

 

then

begin

 

 

 

I n d o J

 

 

 

 

 

 

 

 

 

 

 

then

begin

 

 

A[Ind]

:=

A [ J ] ;

 

 

 

 

 

 

К

:=

A [ I n d ] ;

 

 

 

 

 

 

A[J]

:=

К

 

 

 

 

 

 

end;

 

 

 

 

end

 

 

 

 

 

 

For

t o

N do Write

 

(A[I]:4)

 

 

 

I:=0

 

 

 

 

END.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание 3.10. Реализуйте сортировку для приведенного ниже файла по реквизиту «Фамилия» средствами табличного процес­ сора Excel. «Год» обозначает год поступления на работу. Экс­ портируйте отсортированные данные в таблицу Access.

1

Фамилия

Год

lAghion

 

! 1994

Полковский

1991

Amistrong

1974

Arrow

 

1981

Borkin

 

1978

Архангельская

1978

Borkin

 

1970

Howitt

 

1992

Sundgren

1992

Sundgren

1978

Wagner

1969

Wagner

1964

Беляев

 

1977

Буренкова

1980

Келехсаев

1987 1

141

Задание 3.11. Напишите программу слияния двух упорядочен­ ных файлов с неодинаковым количеством элементов. Используйте любой доступный вам язык программирования.

Задание 3.12. Напишите программу индексирования основно­ го файла по одному реквизиту. Используйте любой доступный вам язык программирования.

Задание 3.13. Индексируйте приведенный ниже файл по рек­ визиту В. Необходимые дополнительные параметры выберите са­ мостоятельно.

1 А

В

1 Физический адрес

 

020

10

5ТТо

 

030

15

5120

 

130

19

5220

 

070

25

5160

 

080

29

5170

 

150

34

5240

 

050

36

5140

 

090

45

5180

 

160

55

5250

 

100

59

5190

 

ПО

65

5200

 

140

72

5230

 

060

75

5150

 

010

80

5100

 

040

89

5130

1

120

98

5210

Задание 3.14. Реализуйте описанные выше операции индекси­ рования средствами СУБД Access не менее чем в трех вариантах, изменяя размер файла, размер участка индексирования и метод индексирования.

Задание 3.15. Рассчитайте среднее значение величины Y • Л для последовательного поиска, если количество релевантных за­ писей точно известно заранее.

Задание 3.16. Создайте средствами СУБД Access индексную структуру для поиска терминов по предметным областям, и пред­ метных областей - по терминам.

142

Задание 3.17. Рассмотрите файл из двух реквизитов А п В с первой записью (11,8) и последующими значениями А и В, полу­ чаемыми по формулам

A(i+l) = (7 • А(0 + 19) mod 13;

B{i+l) = (5 • В(/) + 11) mod 17,

состоящий из 25 записей. Создайте индексные файлы по реквизи­ там А и В и двум реквизитам совместно. Необходимые дополни­ тельные параметры выберите самостоятельно.

Задание 3.18. Дан основной массив. Каждая запись имеет по два ключевых признака из множества признаков А ={а, Ь, с, d, e,f, g, Л}. Признак имеет длину 4 байта, адрес записи - 8 байт. Опреде­ лить объем памяти под инвертированный массив.

Задание 3.19, Представьте схему инвертированного массива для следующего массива записей.

Адрес

Ключевые признаки

100

EBD

140

СЕА

200

DE

300

СЕ

3.2. Цепная организация данных

Методические указания

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

В списке вьщеляется собственная информация (записи с со­ держательными сведениями) и ассоциативная информация, т.е. все адреса связи.

143

Описание записей списка на языке программирования (напри­ мер, Паскаль) может быть проведено двумя способами.

1. Определение адресов связи как начальных адресов записей:

type ref='^node; node=record

key: integer; {ключевой реквизит записи} other: string[30]; {остальные реквизиты} next: ref {адрес связи}

end;

2. Определение адресов связи как номеров записей:

const М=12; type node=record

key: integer; {ключевой реквизит записи} other: string[30]; {остальные реквизиты} next: integer {адрес связи}

end;

var t:array[1..М] of node;

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

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

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

При формировании упорядоченного списка записей возмож­ ны два варианта:

вновь поступающие записи вставлять так, чтобы не нару­ шать упорядоченность по ключу;

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

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

144

в итоге время формирования упорядоченного списка пропор­ ционально Т-- М • logM.

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

Для поиска данных в однонаправленном списке используется единственный метод - последовательный поиск. Ключевой рек­ визит первой записи (ее адрес извлекается из указателя списка) сравнивается с искомым значением q, затем такое же сравнение выполняется для ключа второй записи, которая извлекается по адресу связи первой записи, и т.д. Время поиска, естественно, пропорционально Т^М.

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

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

const

М=9;

 

type

 

 

node=record

 

key:

i n t e g e r ;

{ключевой реквизит записи}

n e x t : i n t e g e r

{адрес связи}

end;

 

 

var t : a r r a y [ 1 . . М ] of node;

Первоначальное состояние каталога показано на рис. 3.2 а. Включение и исключение записей в цепном каталоге предпо­ лагает поиск местоположения включаемой (исключаемой) запи­ си и замену значений адресов связи для установления новой пос­ ледовательности записей основного списка и списка свободной

памяти.

Приведем алгоритм вставки записи с ключом FB цепной каталог.

145

1. Найти в каталоге запись с ключом непосредственно мень­ ше, чем F (предшествующая запись).

2.Поместить запись с ключом F в первую позицию свобод­ ной памяти.

3.Заменить УСП на адрес связи новой записи, этот адрес - на адрес связи предшествующей записи, а последний - на первона­ чальное значение УСП.

На рис. 3.2 а вставляется запись с ключом F=61. Алгоритм удаления записи с ключом Ж из каталога.

1. Найти в каталоге запись с ключом непосредственно мень­ ше, чем W (предшествующая запись).

2. Заменить УСП на адрес связи предшествующей записи, этот адрес - на адрес связи исключаемой записи, а последний - на пер­ воначальное значение УСП.

На рис. Ъ.2 б удаляется запись с ключом W=30.

 

KEY

NEXT US = 6

 

KEY

NEXT US = 6

1

50

5

USP = 3

1

50

5

USP = 7

 

 

2

20

8

 

2

20

8

 

3

 

7

 

3

61

9

 

4

40

1

 

4

40

1

 

5

60

9

 

5

60

3

 

6

10

2

 

6

10

2

 

7

30

0

 

7

30

0

 

8

4

1

8

4

1

9

70

0

9

70

0

До вставки записи

После вставки записи

 

KEY

NEXT

us = 6

 

KEY

NEXT

US = 6

1

50

5

USP = 3

1

50

5

USP = 8

 

 

2

20

8

 

2

20

4

 

3

 

7

 

3

 

7

 

4

40

1

 

4

40

1

 

5

60

9

 

5

60

9

 

6

10

2

 

6

10

2

 

7

30

0

 

7

30

0

 

8

4

1

8

3

1

9

70

0

9

70

0

До удаления записи

После удаления записи

Рис. 3.2. Корректировка данных в цепном каталоге

146

Оценка времени корректировки складывается из времени реализации поиска и времени на замену значений адресов свя­ зи. В последнем случае число пересылок адресов связи всегда одинаково ц не зависит от числа записей в цепном каталоге, поэтому затраты времени на поиск при корректировке явля­ ются доминирующими и время корректировки пропорциональ­ но Т-М.

Задания

Задание 3.20. Установите адреса связи и указатели для обра­ ботки записей по возрастанию значений ключа.

 

УС

0

 

УСП

0

Адрес записи

Значение ключа

Адрес связи

10375

11215

1297

13115

1535

16400

Задание 3.21. Установите адреса связи и указатели для обра­ ботки записей по возрастанию значений ключа.

 

УС

0

 

УСП

0

Адрес записи

Значение ключа

Адрес связи

1028

1145

1264

1315

1431

16 98

147

Задание 3.22. Установите адреса связи и указатели для обра­ ботки записей по возрастанию значений ключа.

 

УС

0

 

УСП

0

Адрес записи

Значение ключа

Адрес связи

10

 

 

1116

1237

1385

1419

1533

1691

Задание 3.23. Установите адреса связи и указатели для удале­ ния записи с ключом 45 из цепного каталога.

 

УС

11

 

УСП

10

Адрес записи

Значение ключа

Адрес связи

10

 

0

11

16

14

12

37

13

13

85

16

14

19

15

15

33

12

! 16

91

0

Задание 3.24. Установите адреса связи и указатели для обра­ ботки записей по возрастанию значений ключа.

 

УС

0

 

УСП

0

Адрес записи

Значение ключа

Адрес связи

1015

1120

1210

1318

1425

1536

148

Задание 3.25. Установите адреса связи и указатели для удале­ ния записи с ключом 45 из цепного каталога.

 

У С

13

1

Адрес записи

У С П

15

Значение ключа

Адрес связи

 

10

28

14

 

11

45

12

 

12

64

16

 

13

15

10

 

14

31

И

 

15

98

0

1

16

0

Задание 3.26. Установите адреса связи и указатели для встав­ ки записи с ключом 16 в цепной каталог.

 

У С

12

 

Адрес записи

УС П

16

 

Значение ключа

Адрес связи

 

10

15

13

 

11

20

14

 

12

10

10

 

13

18

И

 

14

25

15

 

15

36

0

1

16

 

0

Задание 3.27. Установите адреса связи и указатели для удале­ ния записи с ключом 35 из цепного каталога.

 

У С

15

Адрес записи

УС П

14

Значение ключа

Адрес связи

10

375

16

11

215

10

12

97

13

13

115

11

14

35

0

15

12

16

400

0

149