материала студенту следует прочитать, чтобы ответить правильно. По окончании тестирования пользователь получает информацию о количестве правильных ответов.
6. Контрольные работы. После успешного тестирования пользователь может приступить к выполнению контрольной работы. Каждый студент имеет личный код, на основании которого из специального банка контрольных вопросов формируется задание. Задания формируются случайным образом,
но при этом каждому личному коду всегда соответствует один и тот же набор заданий. Затем выполненные работы отправляются в центр проверки.
7. Автоматизированный экзамен. Модуль содержит банк вопросов, задаваемых при сдаче экзамена, но в сокращенном объеме. Работа с данным модулем должна помочь студентам дистанционной формы обучения подготовится к автоматизированному экзамену.
Литература
1. Ельцов А. А. Высшая математика II. Интегральное исчисление. Дифференциальные уравнения. -Томск: ТУСУР, 2002. - 231 с.
2. Ельцов А.А., Ельцова Т.А. Высшая математика II. Практикум по интегральному исчислению и дифференциальным уравнениям. - Томск: ТУСУР, 2004. - 266 с.
3. Мицель А. А., Романенко В.В. Автоматизированная система разработки электронных учебников // Открытое образование. - 2001. - № 5. - С. 22-27.
4. Романенко В. В. Развитие автоматизированного комплекса разработки компьютерных учебных пособий Е^САЭ //Автоматизированные системы обработки информации, управления и проектирования. - Т. 7. - Томск: ТУСУР, 2002. - С. 147-155.
5. Мицель А.А., Романенко В.В., Веретенников М.В., Щербаков А.И. Автоматизация разработки компьютерных учебных программ. - Томск: НТЛ, 2005. - 383 с.
6. Мицель А.А., Клыков В.В. Интерактивные компьютерные тренажеры по математическим дисциплинам // Открытое образование. - 2005. - № 2. - С.22-28.
7. Клыков В.В., Ельцов А.А., Шатлов А.Г. Интерактивные компьютерные тренажеры по интегральному исчислению и дифференциальным уравнениям // Известия ТПУ. - 2006. - № 2. - С. 255-260.
8. Ельцов А.А., Ельцова Г.А., Магазинников Л.И., Магазинникова А.Л. Итоги эксперимента «Компьютерные контрольные работы» // Материалы Всеросс. научн.-метод. конф. «Современное образование: ресурсы и технологии инновационного развития». - Томск: ТУСУР, 2005. - С. 212-213.
9. Кручинин В.В., Магазинников Л.И., Морозова Ю.В. Пакет генераторов самостоятельных работ по курсу «Высшая математика» // Материалы Всеросс. научн.-метод. конф. «Современное образование: ресурсы и технологии инновационного развития». - Томск: ТУСУР, 2005. - С. 128-129.
МАТЕМАТИЧЕСКАЯ ОЦЕНКА ЭФФЕКТИВНОСТИ АЛГОРИТМОВ В СИСТЕМЕ ДИСТАНЦИОННОГО ОБУЧЕНИЯ
А. П. Пятибратов, д.т.н., проф., Заслуженный деятель науки и техники РФ, академик, директор Научно-технического центра развития учебного процесса Тел.: (495) 442-72-77, Email: [email protected] И. И. Ткачев, асп. МЭСИ, Тел.: (496) 751-19-06, Email: [email protected] Московский государственный университет экономики, статистики и информатики
(МЭСИ) http://www.mesi.ru
Describes a mathematical model that allows the derivation of the time complexity of parallel algorithms used in complex distributed systems, such as distance learning and remote education systems. An appraisal of the model is given on a theoretically-significant example.
1. Введение
Системы дистанционного обучения являются ярким примером физически распределенных, многопользовательских и многозадачных программных систем. При построении систем дистанционного обучения важны вопросы надежности и эффективности используемого программного обеспечения.
Оценка сложности какого-либо параллельного (распределенного) алгоритма остается, в целом, нерешенной задачей и по сей день [1]. Наиболее критичной и интересной задачей является, в первую очередь, определение временной асимптотической сложности выполнения алгоритма [3], так как временная асимптотическая сложность влияет не только на время выполнения распределенного алгоритма, но и на количественные показатели привлекаемых ресурсов. (Распределенный алгоритм с большей временной сложностью требует более дорогостоящего оборудования для решения поставленных задач в сопоставимых временных рамках.) Парадоксально, но асимптотические характеристики процесса вычисления могут диаметрально меняться как в зависимости от факта, выполняется ли вычислительная задача на распределенном вычислителе или нет, так и от конкретного способа организации работы какого-либо параллельного алгоритма. Все эти проблемы и задачи в полной мере проявляют себя при разработке сложных систем дистанционного обучения.
Данная работа предлагает один из возможных способов математической (аналитической) оценки временной асимптотической сложности параллельного алгоритма.
В качестве примера в работе рассматривается задача упаковки рюкзака - задача, которая является классическим образцом ЫР-полной задачи. Наглядно иллюстрируется, как путем преобразования параллельного алгоритма можно получить полиномиальное асимптотическое время вычисления ЫР-полной задачи при условии, что число узлов
распределенной системы может расти экспоненциально.
Этот факт не только интересен с научной точки зрения. Он может приносить вполне определенную практическую и экономическую выгоду, позволяя формально (математически) оценить характеристики эффективности выполнения распределенных алгоритмов, экономический эффект (материальные затраты на построение распределенной системы) и влияние на «человеческий фактор» (среднее время ожидания пользователя при работе с системой, характеристики надежности и «удобства» распре -деленной системы).
2. Модель параллельного вычисления
Введем алфавит данных с размером п: а1рк = {а1,..., ап }.
Определим множество данных как множество возможных строк в алфавите: Б = {81&1...8т : 8/ е а1рк,V/ = 1,т,Ут = 0,1,...} .(1)
Пустую строку при т = 0 будем обозначать символом е.
Определим параллельное вычисление как множество взаимосвязанных функций / следующего вида:
{/г,1,у (4,/) = у}, \у £ А+1,}, Vt = ТУТ, V/, у = ТУР, (2)
АЦ, Ву е Б ,
где t - шаг времени; / - вычисляющий узел; у - принимающий узел; / - атомарное последовательное вычисление; А - входные данные на вычисляющем узле; В - результат вычисления. После вычисления каждой из / на определенном шаге времени t, результат вычисления В пересылается на некий узел у и объединяется со входом вычисления А следующего временного шага t+1; р -общее число параллельных вычисляющих узлов, Т - число шагов времени [2].
Поясним интуитивный смысл такого определения следующей иллюстрацией:
Прямоугольниками по горизонтали обозначены вычислительные узлы с номерами 1-4, по вертикали - ход времени. Каждая стрелка обозначает вычисление функции / в неком узле в момент t и пересылка результата на некий узел для последующего использования в качестве входных данных вычисления в момент будущего времени t+1.
□ □□
Рис. 1. Иллюстрация понятия параллельного вычисления
3. Сложность параллельного вычисления
Не теряя общности, определим меру сложности входных и выходных данных как
просто длину строки данных \| |, | |л,,г||.
Временной сложностью атомарного последовательного вычисления будем называть минимальное число последовательных простейших операций вычислительного узла, необходимых для вычисления /:
Будем считать, что каждая простейшая операция производится за одинаковый промежуток времени. (Допустим, что временная сложность зависит только от размера входных данных и типа атомарной операции.) [3,4] Заметим, что в данном случае
4 Лм1
(3)
т,
t Л \
(I Л I)
- ни что иное, как классическое
определение временной сложности последовательного алгоритма. (Например, через Машину Тьюринга. [5])
Временная сложность передачи результатов по сети: подразумевается, не теряя общности, что сложность передачи линейна, и временная сложность такой передачи ~
Введем следующую важную формулу, определяющую временную сложность вычисления параллельного алгоритма в целом:
т Г р '
I тах
,-1
I ((|Лм|) +|\||) V/ - 1..р| , (4) при этом
й%\ Су; £|%\| ф+]\|. (5)
/-1 /-1
Вкратце, эта формула является суммой сложностей каждого шага времени, где сложность шага времени есть максимальная сложность по всем вычисляющим узлам при фиксированном шаге времени, а сложность узла - сумма сложностей всех атомарных
последовательных операций узла плюс сложность передачи результатов по сети. 4. Задача упаковки рюкзака Задача упаковки рюкзака является одной из самых простых и понятных КР-полных задач, в то же время оставаясь достаточно характерной для иллюстрации всех «подводных камней», с которыми могут столкнуться разработчики при решении «сложных» задач. Задача упаковки рюкзака очень проста в восприятии, но, тем не менее, математически эквивалентна таким сложным задачам, как задача составления оптимального расписания или оптимального распределения нагрузки в системе многопользовательской интерактивной видеоконференции. Подобные задачи очень актуальны, в том числе и при построении современных систем дистанционного обучения.
Для иллюстрации положений статьи приведем два способа решения задачи упаковки рюкзака и соответствующие оценки временной сложности для каждого из способов. Итоговое сравнение результатов продемонстрирует математическую модель оценки временной сложности параллельного алгоритма, покажет, насколько важна априорная оценка временной сложности для правильного решения сложной задачи. Задача упаковки рюкзака: Дано множество предметов с номерами 1..Ж, где каждому предмету соответствует пара (, м>к), к - 1..N , sk - «вес» предмета, м>к - его «полезность».
Введем некое подмножество предметов как «рюкзак»: Я с 1..N .
Задача состоит в том, чтобы найти максимально «полезный» рюкзак, если его максимальный вес ограничен сверху заранее фиксированной константой К [5].
Иными словами, найти следующий Я': *(Я) -I ^ , 5(Я) -I ьг, (6)
геЯ геЯ
VЯ, ЗЯ': м^(Я') > w(Я), х(Я') < К .
Приведем первый вариант алгоритма, решающего эту задачу, в рамках вышеописанной алгоритмической модели. (Здесь и
далее р обозначает число вычислительных узлов в распределенной системе.)
Первый вариант решения задачи упаковки рюкзака:
Шаг времени ¡=1: вычисляем на узле ¿=1, пересыпаем результат на узпы^=1,...,р. Каждому узлу у передаем подмножество из множества веек возможных наборов предметов из рюкзака; распределяем такие подмножества так, чтобы все возможные комбинации предметов были переданы одному из узлов.
Шаг времени Р= 2: вычисляем на узлах ¡'=1,...,р, передаем узлу./=1. В каждом узле г' вычисляем максимальную «полезность» из всех комбинаций предметов, переданных на первом шаге; передаем такую максимапьно-кполезную» комбинацию узлу;'.
Шаг Бремени вычисляем на узле ¡'= 1. Выбираем лучшую (самую «полезную») из всех комбинаций, переданных на шаге Р=2; это и есть решение з адачи упаков ки рюкз ака.
Посчитаем сложность алгоритма:
М: Время вычисления ~ 1; размер передаваемых данных ~ Ш+2. (Необходимо передать только множество предметов и номера комбинаций начала и конца используемого подмножества для кащцого узла/)
г=2: Время вычисления ~ (З^1)//*; размер передаваемых данных ~ 1. (Необходимо передать номер наилучшей комбинации на каждом узле/)
¿=3: Время вычисления ~ р - выбор наилучшей комбинации.
Вычисляем сложность алгоритма по вышеприведенной формуле:
V
Т (1~],р) = р{Ш+5)-
-+2
\
(р + 2)
= О
г
Ыр + — р
/
(7)
При использовании «наивного» векторного алгоритма сложность всегда остается экспоненциальной.
R
Допустим, что p = 2 при некотором
положительном целом числе Я.
Тогда составим новый алгоритм следующим образом:
Шаги времени t = г, для г = R, R-\, ..., 1: вычисляем на всех узлах i т.ч. (М) mod Т = 0, пересылаем результат на узлы j = j+Тл. (См. рисунок 4 ниже.) Получаем подмножество комбинаций предметов рюкзака, далее разделяем его на два равных подмножества, пересьшаем подмножество соседнему узлу. Продолжаем, пока все узлы не получат подмножество комбинаций предметов.
Шаг времени t = 1: вычисляем на узлах г = 1 пересылаем результат на узлы j = i. Каждый узел i вычисляет и запоминает номер и «полезность» наилучшей комбинации из своего подмножества.
Шаги времени t = R+2+r, для г = 0, 1, ..., R-1: вычисляем на всех узлах i т.ч. (М) mod Т = 0, пересьшаем результат на узел j = (г-1) mod 2r+1 = 0. Каждый узел г получает номер и «полезность» двух комбинации предметов от соседних узлов, узел выбирает лучшую комбинацию из двух и пересылает ее номер и «полезность» узлу/ На самом последнем шаге 1 = 2^+1 единственный узел^ = 1 будет содержать решение задачи.
Сложность этого алгоритма:
Шаги времени t = R+l-r, Время вычисления ~ 2; размер передаваемых данный длял=Я, Я-1, ..., 1: 2N+2.
Шаг времени t = R+ 1:
Время вычисления данных ~ 1.
(2размер передаваемый
Шаги времени t — R+2+r, дляг = 0, 1, ..., R-1.
Время вычисления ~ 1; размер передаваемых данных ~ 1.
Суммарная сложность нового алгорит-
ма:
T * (N, p) = (2N + 6)R +
= (2N + 6)log2 p +
,N+1
+ 2 I + 3R--
N+1
(8)
+ 2 I + 3log2 p--
= O
2N
--+ N log2 p
p
Рассматривая полученное соотношение, мы видим важный результат: при
N * 2
р ^ 2 , Т (, р) ^ N ; при большом росте
числа вычисляющих узлов существенно сокращается общее время вычисления.
Результат не только чрезвычайно интересен с теоретической точки зрения, - он, к тому же, не всегда априори очевиден для разработчика параллельного алгоритма. Очевидно, что «наивная» первая версия алгоритма не приносит сколько-либо существенного выигрыша при решении сложных задач, в то время как более громоздкая (на первый взгляд) вторая версия позволяет достигнуть весьма существенного улучшения эффективности при резком увеличении числа вычисляющих узлов [6,7].
В качестве иллюстрации приведем следующие графики:
19+007
3.16е-006
3.16е-005 1е-005 3.1йе-*004 1е-004 3.16е*003 16*003 316 100 31.6
(2 УР * М'р
1 N. Vх \ Г"-....... "'ч \ :
у -V;.... .1 / г /" / ' / * / * * / ' ' ' / / У г
1 V Л -.. Л 1 \ \ ч "Ч 1 1 1 / 1 / » г ' } / / .* / » / ; / / / / / , / / / / / / / / / *■ / / / / 7. / / / 1 / / / : / / и
10000
1000
100
ю
15
20
25
30
ю
N
1е.0М .......
3.1664-007 ........
1О+007 .......
3.1бв1-0О6-----
1**006 — - -
3.1 бе.005 ........
1е.005 .........
3.15в*ОМ .........
1е+00а -
3.1бс+00Э-----
1е+00Э ........
316-----
100 ------
Э1.6 -------
10 ........
3.16------
(2^ + ЫЧовМ
[ 1 1 1 ' Ц \ \ \ 1, 1 1 / ■" 7 / / ! ' / / / / ' ! . / / .-'
\ Р 1 * 1 г * / / / / / /// / г / * / г * * / *' г /; ■* ■ / / * / 1 1 / ■
; \ \ ■ * } / / Г / ■ *■ / ' / / ■ / / / / / V / V / ( ( 7 ; ! /; / /; ///■ / / ■
10000
1000
100
10
13
20
25
30
10
и
Рис. 2. Графики временной сложности для вычислений по первому и второму алгоритму
График показывает, что сложность первого алгоритма всегда растет неограниченно; оптимальное число вычисляющих элементов зависит от размера задачи N. Более того, при неограниченном росте числа вычисляющих элементов время вычисления экспоненциально растет. В случае же второго алгоритма время вычисления при экспоненциальном росте числа вычисляющих элементов может только сокращаться, стремясь к полиномиальному.
5. Выводы
Заметим очевидный недостаток продемонстрированного подхода: при всей интуитивной очевидности результатов формальные выкладки чрезвычайно громоздки и
плохо усваиваемы. Приведем для иллюстрации неформальное графическое изображения хода вычисления алгоритмов для случая р=8:
Второе очевидное замечание состоит в том, что для вычисления временной сложности алгоритма нет никакой необходимости приводить громоздкие выкладки самого алгоритма - достаточно просто привести простые и интуитивно понятные значения длин входных и выходных данных с соотношениями сложностей элементарных последовательных операций [1,6]. Приведем также существенное допущение в методе оценки сложности параллельного алгоритма: считается, что сложность пере-
дачи данных между узлами строго детерминирована и линейна. В общем случае, при большом числе узлов, это может не соответствовать действительности. (Заметим также, что для обратного случая достаточно пра-
вильным образом откорректировать меру РМ,\ . Общая канва рассуждений при этом
остается неизменной.) [1]
ишишшшш
□□□□□□□
Рассыпка данных на каждый изр узлов.
Р=2:
Вычисление локального максимума в каждом узле и пересыпка результатов на первый уз ел.
Вычисление глобального максимума.
Рис. 3. Решение задачи упаковки рюкзака по первому алгоритму □□□□□□□
□Ьпппйп
□рпппрп
пппиппп □□□□□□□
Рассыпка данных на каждый шр узлов.
Вычисление локального максимума в каждом узле.
Вычисление глобального максимума.
Рис. 4. Решение задачи упаковки рюкзака по второму алгоритму
6. Апробация математической модели
Описанная математическая модель была апробирована на практике при построении системы электронной почты в одной из крупнейших российских Интернет-компаний. Система электронной почты была выбрана как показательный пример сложной многопользовательской распределенной системы, являющейся важным компонентом обеспечения инфраструктуры дистанционного обучения. Значительные масштабы и цели системы позволяют максимально полно применить на практике предлагаемую в работе модель, подтвердить ее корректность и оценить практическую пользу.
Ставилась цель построить новую версию распределенной системы доставки и чтения электронной почты. Система строилась на существующей инфраструктуре, где предполагалось, что построенная система будет существенно превышать существующие аналоги по показателям надежности и масштабируемости. Разрабатывались как сами программы и алгоритмы обработки электронной почты, так и подробности построения соответствующего вычислительного кластера, детали взаимодействия вычислительных узлов друг с другом.
Система работает в онлайн-режиме, предоставляя доступ к функциям чтения и отсылки электронных сообщений через стандартный веб-браузер из любой точки земного шара. Система состоит из вычислительного кластера, содержащего от десятка до сотни вычислительных узлов, в зависимости от предполагаемой нагрузки. В настоящее время система содержит около два-
дцати вычислительных узлов в кластере, обеспечивает одновременную параллельную работу до двухсот тысяч пользователей, принимает и обрабатывает до двух миллионов почтовых сообщений в сутки. Предполагается линейный рост этих показателей по мере введения в строй дополнительных узлов вычислительного кластера. На данный момент система физически находится в г. Москве, в вычислительном центре крупного российского Интернет-провайдера. При разработке технических спецификаций системы также предполагалось, что система в будущем может быть переведена в географически распределенный режим, в котором ради повышения времени отклика системы некоторые ее вычислительные узлы будут находиться в разных городах России.
Математическое моделирование распределенных алгоритмов системы позволило выявить проблемы производительности и надежности еще на этапе проектирования. Формальным, математическим образом были выявлены «узкие места» системы, что позволило оперативно внести изменения в процесс разработки распределенных алгоритмов, существенно сократить время разработки и тестирования.
Корректность предлагаемой модели была верифицирована путем проведения эмпирических тестов на тестовом кластере, состоящем из 5-10 вычислительных узлов; нагрузка на тестовую систему генерировалась автоматически, на основе существующей статистики использования аналогичных систем.
Литература
1. Ткачев И. И. Проблемы теории сложности вычислений для алгоритмов параллельных программ // Сб. науч. тр. МЭСИ. - Вып. 4. - М.: МЭСИ, 2005.
2. Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. - СПб.: БХВ-Петербург, 2002.
3. Сэвидж Д. Э. Сложность вычислений. - М.: Факториал, 1998.
4. Носов В. А. Основы теории алгоритмов и анализа их сложности // Лекционный курс, механико-математический факультет МГУ. - М.: Изд-во МГУ, 1992.
5. Новикова Н. М. Основы оптимизации. // лекционный курс, факультет ВМиК МГУ - М: Изд-во МГУ, 1999.
6. Сальников А. Н. Прототип системы автоматизированного создания параллельных программ «Parus» / А. Н. Сальников, А. Н. Сазонов, М. В. Карев // Высокопроизводительные параллельные вычисления на кластерных системах : Материалы междунар. научн.-практич. семинара / Под ред. проф. Р. Г. Стронгина. - Н. Новгород : Изд-во Нижегор. ун-та, 2002. - 217 с.
7. Антонов А. С. Параллельное программирование с использованием технологии MPI. - М.: Изд-во МГУ, 2004.
* *
*