Выпускная работа по «Основам информационных технологий»




Скачать 208.64 Kb.
Дата13.06.2016
Размер208.64 Kb.
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Выпускная работа по


«Основам информационных технологий»



Магистрант

кафедры дискретной математики

и алгоритмики

Ефимов Олег Валерьевич

Руководители:

доцент Сарванов Владимир Иванович,

ст. преп. Кожич Павел Павлович

Минск – 2008 г.

Список обозначений ко всей выпускной работе



P – класс полиномиально-разрешимых задач

NP – класс трудноразрешимых задач

SUN SPARC – архитектура компьютера компании SUN

C# – язык программирования на платформе .NET

Ruby – мультипарадигменный (объектно-ориентированный и функциональный) язык программирования

Java – язык программирования с собственной кросс-платформенной средой выполнения

C++ – язык программирования с возможностями реализации объектно ориентированных моделей

Оглавление

Список обозначений ко всей выпускной работе 2

Реферат на тему «Применение ИТ при оценке времени работы алгоритмов» 4

Введение 4

Глава 1. Обзор литературы 5

Глава 3. Оценка времени работы генетического алгоритма 7

Глава 4. Оценка времени работы алгоритма табуированного поиска 8

Глава 5. Результаты собственного исследования 9

Список литературы к реферату 10

Предметный указатель к реферату 12

Интернет ресурсы в предметной области исследования 13

Граф научных интересов 16

Презентация магистерской диссертации 16

Приложение А. Выдачи презентации 18




Реферат на тему «Применение ИТ при оценке времени работы алгоритмов»




Введение

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

Как известно, в теории сложностей существует проблема определения сложностного статуса задачи, а именно, определение класса, к которому она принадлежит. Два основных класса это P и NP. Если задача принадлежит классу P, значит, существует эффективный (полиномиальный) алгоритм её решения. Если же задача принадлежит классу NP, то в предположении, что , полиномиальный алгоритм построить не удаётся. Во втором случае строится либо переборный алгоритм (с отсечениями бесперспективных вариантов) для нахождения точного решения задачи, либо различного рода приближённые алгоритмы с гарантированной оценкой точности, либо эвристические алгоритмы.

Огромное множество задач, с которыми приходится иметь дело прикладной математике, не являются искусственно придуманными лишь для того, чтобы удовлетворить научный интерес исследователя, а приходят из различных производственно-экономических отраслей. Таким образом, производственно-экономический сектор является для прикладной математики основным потребителем результатов и одновременно основным поставщиком задач. Стоит ли упоминать, что время, за которое на производстве необходимо получать результаты, нередко сильно ограничено. Заказчики требуют решения задач за минимально возможное время, а если задача является трудноразрешимой (например, принадлежит классу NP), то можно пойти на компромисс: иногда получение решения достаточно быстро является важнее оптимальности полученного решения, т.е. субоптимальные решения, полученные приближёнными или эвристическими алгоритмами, могут оказаться вполне пригодными для практических нужд.

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

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

Немалое значение имеет также выбор компилятора языка программирования. Столь популярным в последнее время Ruby, Java и C# нередко достаточно сложно конкурировать по времени с тем же C++ в алгоритмах, требующих трудоёмких вычислений, хоть и отнюдь необязательно, что они будут производить эти вычисления дольше. Например, тому же C# требуется больше времени лишь при первой попытке вызова некоторого участка кода, потому что он тратит время на компиляцию этого участка на язык, понятный процессору, а далее запоминает скомпилированный код в памяти. Однако плюс в том, что в отличии от C++, компиляция происходит во время работы программы, а соответственно компилятор среды выполнения знает, на каком процессоре сейчас будет данный код выполнен, поэтому имеет возможность оптимизировать командные инструкции под данный процессор.

В настоящее время используются различные типы архитектур, такие как Intel, AMD, Sun SPARC и проч. Архитектуры разнятся типами используемых устройств компьютера, организацией памяти, связями основных логических узлов компьютера.


Глава 1. Обзор литературы

Большое внимание теории сложностей уделяется в ВУЗах России и Беларуси, Национальной Академии Наук Беларуси. Широкую известность получили курсы лекций Ю. Лифшица и В.Н. Крупского в МГУ. Они излагают подходы к оценке времени алгоритмов для поисковых систем, алгоритмов распознавания образов, квантовых вычислений, алгоритмов для теории игр и др. Авторы оперируют понятиями колмогоровской сложности, рассматривают вычислительные аспекты лингвистики.

За рубежом ярким примером литературы по теории сложностей является книга авторов Гэри М., Д. Джонсон "Вычислительные машины и труднорешаемые задачи", в которой рассматривается множество вопросов разрешимости задач из различных областей дискретной математики, приводится и доказывается большое количество свойств и теорем по данной тематике.

Авторы лекций МГУ также рекомендуют книгу G.Woeginger, "Open Problems Around Exact Algorithms", которая описывает открытые проблемы на современном этапе, возникающие вокруг точных алгоритмов.

Для получения базовых знаний по теме алгоритмов и теории сложностей полезной является книга Котова В. М. «Теория алгоритмов: Курс лекций: В 2 ч.», в которой приведены и оценены множество алгоритмов поиска, сортировки, алгоритмов на графах и прочие. Рассматривается множество интересных структур данных, которые получают непосредственное применение для оптимальной реализации алгоритмов в прикладных пакетах программ.

Глава 2. Оценка времени работы переборного алгоритма
Рассматривается задача построения оптимального расписания в системе обслуживания с блокировками методом ветвей и границ. Алгоритм был применён к 540 задачам. Для каждой из 27 протестированных размерностей были сгенерированы матрицы с временами обслуживания требований. Времена обслуживания были равномерно распределены между 1 и 99. Допустимый уровень субоптимальности был задан как 0,5%. Тесты были проведены на машине с конфигурацией Pentium IV 1.4GHz, 512 Mb RAM. Первоначальное решение было получено алгоритмом NEH.

Таблица 1





предложенный алгоритм

алгоритм RA



Размер

Кол-во
нере-

шён-


ных

Среднее
время
процессора
(сек)

Среднее
кол-во
вершин

Кол-во
нере-шён-

ных


Среднее
время
процессора
(сек)

Среднее
кол-во
вершин

n

m

1

10

2

0

0.00

74.60

0

0.00

1884.15

2

10

3

0

0.00

2354.20

0

0.01

6717.60

3

10

4

0

0.01

8009.05

0

0.03

10937.50

4

10

5

0

0.02

15006.30

0

0.11

37954.60

5

10

7

0

0.06

22061.45

0

0.10

24835.90

6

10

100

0

0.08

24152.10

0

0.26

48852.55

7

12

2

0

0.00

205.95

0

0.11

94292.45

8

12

3

0

0.09

68257.50

0

0.10

62157.25

9

12

4

0

0.38

237378.09

0

0.81

374809.50

10

12

5

0

0.85

405272.69

0

0.77

263241.25

11

12

7

0

2.00

668053.06

0

36161.00

496700.94

12

12

10

0

45474.00

1747112.75

0

15554.00

1275805.88

13

14

2

0

0.00

7155.40

0

0.43

258602.00

14

14

3

0

0.36

266459.81

0

29.40

8754992.00

15

14

4

0

26115.00

4195833.50

0

16650.00

3106239.50

16

14

5

0

19.60

8563077.00

0

27.36

6990951.00

17

14

7

0

19.38

6010332.50

0

129.14

29172214.00

18

14

10

0

57.75

12050290.00

0

136.20

22245622.00

19

16

2

0

0.00

418.40

0

33298.00

2550440.00

20

16

3

0

13302.00

4349962.50

0

104.13

51616312.00

21

16

4

1

315.62

144089152.00

0

188.04

67812464.00

22

18

2

0

45292.00

1069994.75

0

20.47

13071317.00

23

18

3

0

108.24

68076352.00

0

390.46

173675936.00

24

18

4

3

946.84

443388768.00

6

1332.63

450607040.00

25

20

2

0

0.01

3812.50

1

286.73

173655712.00

26

20

3

1

446.44

260417072.00

9

1873.51

460729600.00

27

20

4

9

2518.48

851694720.00

11

2608.53

772345216.00

Для того чтобы оценить новый метод ветвей и границ те же задачи были решены методом Ronconi и Armentano (RA, 2001). В таблице 1 показаны сравнительные результаты вычислений. Время работы алгоритма было ограничено 3600 секундами.

Можно заметить, что в большинстве случаев количество вершин, исследованных предложенным методом меньше количества исследованных методом RA. Более того, предложенный метод работает быстрее метода Ronconi и Armentano. И он достиг лучших результатов в 85,2% случаев.

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


Таблица 2

Метод

Среднее процессорное

время (сек)



Кол-во нерешённых задач

предложенный алгоритм

165.14

14

алгоритм RA

264.89

27

Для того чтобы подробнее исследовать вопрос производительности, было проведено тестирование на сравнительных тестах, предложенных для классической задачи построения расписания в системе обслуживания (без блокировок). В них алгоритм себя также неплохо зарекомендовал, учитывая ограничения по времени.


Глава 3. Оценка времени работы генетического алгоритма

В данной главе предлагается оценить время решения задачи построения оптимального расписания в системе обслуживания с блокировками генетическим алгоритмом. Генетический алгоритм является параметризированным, поэтому процесс оценки времени работы был проведён в два этапа. На первом этапе ставилась цель произвести пробные пробеги с относительно ограниченным количеством итераций для определения значений параметров алгоритма. Второй этап являлся результативным, объединившим все наиболее подходящие значения параметров. Были заданы времена обработки для задачи с 5 приборами и 49 требованиями. Проведено 100 итераций и получен период обслуживания 3555. Последовательностью, на которой это было достигнуто, явилась 6, 5, 29, 4, 2, 35, 20, 23, 44, 42, 14, 1, 10, 17, 41, 40, 37, 36, 38, 48, 45, 18, 33, 31, 7, 24, 15, 8, 30, 49, 9, 3, 21, 34, 43, 16, 12, 46, 26, 13, 19, 27, 32, 28, 39, 11, 22, 47, 25. Несколько других хороших последовательностей было получено попутно. Для сравнения, эвристика Abadi произвела в этом случае расписание с периодом обслуживания 3761.

Естественно задаться вопросом, произведёт ли сравнимые результаты простой рандомизированный поиск. Такой поиск с размером выборки в 22000 случайно сгенерированных последовательностей требований произвёл периоды обслуживания с мат. ожиданием 4000 и стандартным отклонением 80. Для наилучшей последовательности в этом случае период обслуживания был равен 3710.

Типичное время вычисления для 100 поколений с единым случайным стартом достигало порядка 50 минут на компьютере 486 (66 MHz), выполняющем программный код на интерпретируемом языке QBASIC (версии 5). Это требование является умеренным для методов эвристического поиска со сравнимой производительностью, если принять во внимание размер пространства решений, который равен 49! Из-за перестановочного характера расписаний. Тем не менее, эффективность использования оптимально параметризованного генетического алгоритма для получения хороших расписаний очевидна.

Для того чтобы сравнить эффективность генетического алгоритма с эвристикой Abadi, программный код алгоритма был переписан на языке C и были рассмотрены сравнительные задачи. Последовательные тесты были проведены на машине SUN SPARC station 20 model 50. Количество требований в тестах достигало 250, а количество приборов не превосходило 20. Оказалось, что генетическому алгоритму в среднем требовалось не более 15 поколений для достижения результата, полученного алгоритмом Abadi, и времени на это он затрачивал меньше, чем алгоритм Abadi (разность времён – порядка 1 секунды в среднем). После генерации 100 поколений результаты были значительно улучшены, но и времени требовалось больше. Однако в отдельных случаях решения, полученные генетическим алгоритмом даже после 100 итераций, не смогли показать лучшие результаты, чем полученные алгоритмом Abadi (3 случая из 80).

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


Глава 4. Оценка времени работы алгоритма табуированного поиска

Здесь пойдёт речь об оценке времени построения расписания алгоритмом табуированного поиска. Табуированным поиск называется так из-за того, что некоторые элементы пространства решений отсекаются как бесперспективные или с той целью, чтобы, натыкаясь на них снова, алгоритм не зацикливался, то есть такие элементы получают статус табу. Было рассмотрено два алгоритма TS (Tabu Search) и TS+M (Tabu Search + Multimoves), второй предполагается более перспективным, чем первый. Результаты их работы сравнивались с генетическим алгоритмом, рассмотренным в главе 2.

Все три алгоритма были закодированы на языке C++ и были запущены на компьютере с процессором Pentium IV 1000 MHz, использовались сравнительные тесты, которые предлагаются для классической задачи составления расписаний (без блокировок). Тесты содержат 120 особенно трудных задач 12 различных размеров, выбранных из огромного числа случайно сгенерированных задач. Выборка из 10 задач была предоставлена для каждой группы размеров n x m: 20 x 5, 20 x 10, 20 x 20, 50 x 5, 50 x 10, 50 x 20, 100 x 5, 100 x 10, 100 x 20, 200 x 10, 200 x 20, 500 x 20.

Алгоритмам TS и TS+M требуется первоначальная перестановка, которая может быть найдена любым методом. В данных тестах используется алгоритм NEH (к слову, предназначенный для классической задачи (без блокировок)) для построения первоначальной последовательности. Этот алгоритм считается одним из лучших для поставленной цели.

В проводимых тестах TS и TS+M прерываются по достижении количества итераций, равного Maxiter на каждой задаче. В TS+M для того чтобы определить сходимость по сравнению с генетическим алгоритмом и TS, устанавливаем Maxiter=100, 200, 500, 1000, 3000, 10000 и 30000 итераций.

Эффективность алгоритмов была проанализирована с обеих сторон: с точки зрения процессорного времени и качества решения.

Эвристика табуированного поиска TS+M имеет значительно лучшую производительность, чем генетический алгоритм. Для 100 итераций TS+M находил решения значительно более близкие к оптимальным, чем генетический алгоритм (за оптимальные брались решения, полученные алгоритмом RON). В особенности, TS+M превосходит генетический алгоритм в задачах большого размера. Кроме того, процессорное время для 100 итераций у алгоритма TS+M существенно меньше, чем у генетического. Естественно, что с увеличением количества итераций время работы TS+M значительно возрастало, но и точность решения повышалась. Например, для 20 приборов и 500 требований время работы составило 475,0 с. Для получения результата для каждых уникальных исходных данных генетический алгоритм выполнял 10 пробегов и брались усреднённые значения (в силу его недетерминированности). Таким образом, табуированный поиск показал превосходство над генетическим алгоритмом для данной задачи.

Глава 5. Результаты собственного исследования

Были произведены замеры времени работы алгоритмов на языке C#. Для этого в .NET есть специальное средство – класс System.Diagnostics.Stopwatch.

Классическая схема замера времени работы алгоритма на языке C# выглядит следующим образом:

System.Diagnostics.Stopwatch myStopwatch = new System.Diagnostics.Stopwatch();

myStopwatch.Start(); //запуск

....//выполнение действий

myStopwatch.Stop(); //остановить
Для хранения временных промежутков в .NET есть класс TimeSpan. Чтобы получить промежуток времени, который был затрачен на выполнение кода, необходимо воспользоваться свойством Elapsed класса Stopwatch.

Класс TimeSpan предоставляет набор свойств, таких как Hours, Minutes, Seconds, Milliseconds для установления точных интервалов времени работы.

«Подводным камнем» класса Stopwatch является необходимость вызова метода Reset() перед каждым новым замером времени для предоставления корректных результатов. Альтернативным подходом является вызов метода StartNew() вместо Start() для каждого следующего замера времени.

Время работы переборного алгоритма построения оптимального расписания замеряно на компьютере с процессором Intel Pentium IV 3.2 GHz HT, память 1 Gb DDR Single Channel.

Результаты представлены в таблице:

Таблица 3

Размер задачи

Время работы

n

n

5

13

73,088 сек

10

18

110,012 сек


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

Список литературы к реферату





  1. Reddi S.S., Ramamoorthy C.V. On the flowshop sequencing problem with no-wait in process. Operational Research Quarterly 1972;24:441-446.

  2. M.L. Espinouse, P.Formanowicz, B. Penz. Complexity results and approximation algorithms for the two machine no-wait flow-shop with limited machine availability. Journal of the Operational Research Society 2001;52:116-121.

  3. T.C. Edwin Cheng, Zhaohui Liu. -approximation for two-machine no-wait flowshop scheduling with availability constraints. Information Processing Letters 2003;88:161-165.

  4. Ronconi DP. A note on constructive heuristics for the flowshop problem with blocking. International Journal of Production Economics 2004;87:39-48.

  5. Grabowski J, Pempera J. Sequencing of jobs in some production system. European Journal of Operational Research 2000;125:535-50.

Предметный указатель к реферату





А

Алгоритм табуированного поиска 8

Архитектура ЭВМ 5

Г

Генетический алгоритм 7



П

Параметризация 7

Период обслуживания 6, 7

Р

Рандомизированный поиск 8



С

Сложностной статус 4

Т

Тесты 6

Интернет ресурсы в предметной области исследования





  1. http://ru.wikipedia.org/wiki/Теория_сложности_вычислений

    Теория сложностей в википедии. Вводная энциклопедическая статья по теории сложностей с примерами. Раскрывает понятия временной и пространственной сложности.

    Доступен 6 декабря 2008.


  2. http://www.csin.ru/courses#computability

    Лекции по теории вычислимости и теории сложности вычислений. Представлены архивы лекций СпБГУ и МГУ по эффективным алгоритмам, структурной теории сложностей, сложности комбинаторных алгоритмов.

    Доступен 6 декабря 2008.


  3. http://yury.name/modern/

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

    Доступен 6 декабря 2008.


  4. http://www.structur.h1.ru/ocenka.htm

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

    Доступен 6 декабря 2008.


  5. http://algolist.manual.ru/misc/o_n.php

    Оценки времени исполнения. Символ О(). Сайт посвящён алгоритмам и методам. Есть точное соответствие: алгоритм-статья. Поэтому легко получить исчерпывающую информацию.

    Доступен 6 декабря 2008.


  6. http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx

    Сайт MSDN, описание класса Stopwatch. Приведено подробное описание методов класса и примеры его использования. Даны ссылки на взаимосвязь с другими классами.

    Доступен 6 декабря 2008.


  7. http://www.codersource.net/csharp_measure_execution_time.aspx

    Измерение времени выполнения программы в C#. Дано описание методики измерения и показаны разнообразные операции над интервалами времени.

    Доступен 6 декабря 2008.


  8. http://blogs.msdn.com/ricom/archive/2006/07/18/system-diagnostics-stopwatch-always-remeber-to-use-reset.aspx

    Блог на MSDN. Описание нюансов класса Stopwatch. В прилагаемом обсуждении отмечены альтернативные варианты избегания «подводных камней» при работе с данным классом.

    Доступен 6 декабря 2008.


  9. http://ru.wikipedia.org/wiki/Класс_сложности

    О классах сложности в википедии. Вводится понятие класса сложности, описаны отношения между классами, приведена иерархия классов по времени и по памяти. Упоминается о проблеме равенства классов P и NP.

    Доступен 6 декабря 2008.


  10. http://www.embedded.com/showArticle.jhtml?articleID=194300225

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

    Доступен 6 декабря 2008.


Действующий личный сайт в WWW
http://efimovolv.narod.ru

Граф научных интересов


Магистранта Ефимова О.В. факультет прикладной математики и информатики

Специальность 01.01.09



Смежные специальности

  • 01.01.05 – теория вероятностей и математическая статистика

  1. Вероятностно-статистическое моделирование.

  2. Случайные процессы специального вида, включая процессы массового обслуживания.



  • 01.01.07 – вычислительная математика

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

  2. Численные методы и алгоритмы решения прикладных задач, возникающих при математическом моделировании естественнонаучных, научно-технических, социальных и других проблем.




Основная специальность


01.01.09 – дискретная математика и математическая кибернетика

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

  2. Теоpия и методы минимизации функций, общая теоpия экстpемальных задач, теория многокpитеpиальной и вектоpной оптимизации, теоpия и методы pешения задач математического пpогpаммиpования.







сопутствующие

  • 05.13.17 — теоретические основы информатики

  1. Исследование средствами вычислительной техники моделей информационных структур и информационных процессов, информационных потребностей индивидуальных и коллективных пользователей.

  2. Разработка теоретических основ технологий программной реализации информационных методов и моделей.







  • 08.00.13 — математические и инструментальные методы

  1. Теория и методология математического моделирования экономических процессов и систем.

  2. Методы принятия оптимальных решений.

  3. Оптимизация поддержки принятия решений, включая информационную инфраструктуру экономических систем.









Презентация магистерской диссертации



Выпускная работа (Ефимов).ppt

http://efimovolv.narod.ru/vypusk.ppt

Список литературы к выпускной работе


  1. Блаттнер П. Использование Microsoft Excel 2002. Специальное издание / Пер. с англ. – М.: Издательский дом «Вильямс», 2002.

  2. Виллет Э., Кроудер Д., Кроудер P. Microsoft Office 2000. Библия пользователя / Пер. с англ.: Учебное пособие.  – М.: Издательский дом «Вильямс», 2001.

  3. Говорухин В., Цибулин В. Компьютер в математическом исследовании: Учебный курс. – СПб.: Питер, 2001.

  4. Дронов В.А. JavaScript в wеb-дизайне. – СПб.: БХВ Петербург, 2002.

  5. Карлберг К. Бизнес-анализ с помощью Excel. – M.: Издательский дом “Вильямс”, 2000.

  6. Корнеев В.В. Гареев А.Ф., Васютин СВ., Райх В.В. Базы данных. Интеллектуальная обработка информации. –М.: Нолидж, 2001.

  7. Уокенбах Дж. Microsoft Excel 2000. Библия пользователя / Пер. с англ.  – М.: Издательский дом “Вильямс”, 2001.

  8. Праг К., Ирвин М. Access 2000. Библия пользователя / Пер. с англ. – М.: Издательский дом “Вильямс”, 2001.

  9. Хислоп Б., Энжелл Д. Microsoft Word 2000. Библия пользователя: Учебное пособие / Пер. с англ. – М.: Издательский дом “Вильямс”, 2001.

  10. Соколов А.В., Степанюк О.М. Защита от компьютерного терроризма. – СПб.: БХВ – Петербург, Арлит, 2002.

Приложения

Приложение А. Выдачи презентации




















































































База данных защищена авторским правом ©uverenniy.ru 2016
обратиться к администрации

    Главная страница