Научная статья на тему 'Автоматизированная обучающая система «Анализ вычислительной сложности алгоритмов» (исследования организации 1-ой части проекта)'

Автоматизированная обучающая система «Анализ вычислительной сложности алгоритмов» (исследования организации 1-ой части проекта) Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
177
14
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АВТОМАТИЗИРОВАННОЕ ОБУЧЕНИЕ / АНАЛИЗ СЛОЖНОСТИ АЛГОРИТМОВ / ОЦЕНКА ВЫЧИСЛИТЕЛЬНОЙ СЛОЖНОСТИ АЛГОРИТМОВ / ТАБЛИЦА СИМВОЛЬНОЙ ПРОКРУТКИ АЛГОРИТМА / НОРМАЛЬНАЯ СИСТЕМА СИМВОЛЬНЫХ ПРЕОБРАЗОВАНИЙ / AUTOMATED LEARNING / ALGORITHM COMPLEXITY ANALYSIS / ESTIMATING ALGORITHM COMPUTATIONAL COMPLEXITY / ALGORITHM SYMBOL SCROLL TABLE / NORMAL SYMBOL TRANSFORMATIONS SYSTEM

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Рублев Вадим Сергеевич, Юсуфов Мурад Теймурович

В [1-2] было исследовано математическое обеспечение для построения автоматизированной обучающей системы (АОС) «Анализ сложности алгоритмов». В настоящей работе исследуются вопросы организации АОС, связанные с характеристиками процесса обучения и обучением разработке таблицы символьной прокрутки алгоритма (первая часть проекта, дающая основные неравенства для оценки вычислительной сложности алгоритма). Основное внимание при этом уделяется алгоритмам контроля корректности символьных преобразований выражений, которые вводятся учащимся в таблице прокрутки.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEVELOPMENT OF THE FIRST PART OF THE AUTOMATED SYSTEM FOR TEACHING COMPUTATIONAL COMPLEXITY OF ALGORITHMS COURSE

Previous articles [1-2] focus on researching the software for developing the automated teaching system (ATS) “Algorithm complexity analysis”. This article addresses issues concerning overall learning process features and learning how to produce symbol scroll tables. The main focus of this article is symbol transformation correctness algorithms.

Текст научной работы на тему «Автоматизированная обучающая система «Анализ вычислительной сложности алгоритмов» (исследования организации 1-ой части проекта)»

| E-learning, информационные технологии в образовании

УДК 510.52:372.851

Рублев В.С., Юсуфов М.Т.

Ярославский! государственный! университет им. П.Г. Демидова, г. Ярославль, Россия

АВТОМАТИЗИРОВАННАЯ ОБУЧАЮЩАЯ СИСТЕМА «АНАЛИЗ ВЫЧИСЛИТЕЛЬНОЙ СЛОЖНОСТИ АЛГОРИТМОВ» (ИССЛЕДОВАНИЯ ОРГАНИЗАЦИИ 1-ОЙ ЧАСТИ

ПРОЕКТА)

Аннотация

В [1-2] было исследовано математическое обеспечение для построения автоматизированной обучающей системы (АОС) «Анализ сложности алгоритмов». В настоящей работе исследуются вопросы организации АОС, связанные с характеристиками процесса обучения и обучением разработке таблицы символьной прокрутки алгоритма (первая часть проекта, дающая основные неравенства для оценки вычислительной сложности алгоритма). Основное внимание при этом уделяется алгоритмам контроля корректности символьных преобразований выражений, которые вводятся учащимся в таблице прокрутки.

Ключевые слова

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

Rublev V.S. , Yusufov M.T.

P.G. Demidov Yaroslavl State University, Yaroslavl, Russia

DEVELOPMENT OF THE FIRST PART OF THE AUTOMATED SYSTEM FOR TEACHING COMPUTATIONAL COMPLEXITY OF ALGORITHMS COURSE

Abstract

Previous articles [1-2] focus on researching the software for developing the automated teaching system (ATS) "Algorithm complexity analysis". This article addresses issues concerning overall learning process features and learning how to produce symbol scroll tables. The main focus of this article is symbol transformation correctness algorithms.

Keywords

Automated learning; algorithm complexity analysis; estimating algorithm computational complexity; algorithm symbol scroll table; normal symbol transformations system.

1. Введение

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

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

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

2. Процесс обучения и его настраиваемые характеристики

С каждой секцией обучения связан контроль усвоения материала секции, который организован для подготовительных секции в виде тестов и упражнении (тестов с открытыми ответами) и в виде итоговых задач. Только после изучения материала ;-ои секции учащиеся может перейти к тестам. Начальное количество starti тестов (упражнении, задач), которые учащиеся должен успешно выполнить, является настраиваемым параметром и может настраиваться индивидуально для каждой секции.

Под тестом предполагается вопрос с несколькими вариантами ответа (пунктами), из которых необходимо выбрать все правильные. Следует понимать, что правильность пункта зависит от формулировки вопроса. Например, для вопроса «Укажите верные высказывания» пункт «2+2=4» будет правильным, а для вопроса «Укажите неверные высказывания» такои же пункт будет неправильным. Только при выборе всех правильных ответов тест считается успешно выполненным. Ответы теста каждьш раз выбираются случайным образом из некоторого предопределенного списка ответов теста. При этом правильными ответами могут быть некоторые, все или ни одного. В последнем случае требуется не выбрать ни одного ответа и ответить на вопрос. Если в вопросе требуется полнота и точность ответа, то правильный ответ должен отвечать этому условию, а любои неточный или неполный ответ не является правильным. На рис. 1 демонстрируется часть текста секции.

Определение характеристик сложности алгоритма

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

НАЗАД ВПЕРЕД

Рис. 1. Пример текста секции При успешном выполнении теста количество оставшихся для выполнения тестов уменьшается на 1, и, когда оно становится равным 0, секция считается проиденнои, а учащемуся предоставляется материал следующей секции. При неуспешном выполнении теста сообщается об этом одним из предложении системы: «Не все правильные ответы даны», «Среди ответов есть неправильные», «Не все ответы правильные и есть неправильные». После этого предоставляется вновь материал секции с выделением фрагмента (фрагментов), на который сделана ошибка (ошибки) для повторного исправления и в

некоторых случаях подсказки. Далее учащемуся дается еще одна попытка. Если учащиеся допустил ошибку, но исправил ее при повторном тестировании, то этот тест заменяется новым тестом, и, таким образом, количество тестов, которые он должен пройти успешно, остается прежним. Если же повторное исправление оказалось неудачным, то помимо замены теста новым добавляется еще 1 тест. Таким образом, количество тестов, необходимых для успешного усвоения материала секции, может расти. Если при этом это количество достигнет некоторого предельного значения limi (еще один настраиваемый параметр), то сеанс работы системы с этим учащимся прекращается. При следующем сеансе работы этого учащегося с системой используемыи параметр предельного значения увеличивается на значение addi (также настраиваемый параметр), но при его достижении учащиеся вызывается к преподавателю для сдачи устного зачета по материалу секции.

Если количество оставшихся тестов numbj учащегося ] больше начального количества starti, то при каждом успешном выполнении подряд двух тестов количество оставшихся тестов уменьшается еще на 1.

Ниже на рис. 2-5 приведены примеры начальной секции определении сложности алгоритма и тестов к начальной секции определении сложности алгоритма с различными наборами ответов и реакцией системы на них.

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

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

преобразовании. Затем для каждого элементарного преобразования в

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

поправить ошибку. Если ошибок не было, то задача засчитывается, но количество задач для

считается успешно выполненной и количество выполнения не изменяется. Если ошибок было

задач для выполнения уменьшается на 1. Если несколько, то задача заменяется и добавляется

была допущена только одна ошибка, то задача еще одна задача для выполнения.

Answer has incorrect and not all correct

Определение характеристик сложности алгоритма

Current streak: -3;

left in this theme: 8

Отметьте все неверные высказывания.

О Минимальная вычислительная сложность алгоритма есть функция минимального числа шагов выполнения алгоритма в зависимости от параметров алгоритма.

О Вычислительная сложность алгоритма есть число шагов выполнения алгоритма.

О Вычислительная сложность алгоритма есть функция от основных параметров алгоритма, показывающая зависимость максимального

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

0 Минимальная вычислительная сложность алгоритма определяется минимальным числом параметров алгоритма, от которых зависит

число шагов выполнения алгоритма.

1 | Параметры алгоритма определяются наибольшим числом

характеристик данных, от которых зависит число шагов выполнения

Рис. 2. Реакция системы на ответ не со всеми правильными и некоторыми неправильными пунктами

Определение характеристик сложности алгоритма

Current streak: -5; Questions left in this theme: 14

Отметьте все точные и полные определения

□ Вычислительная сложность алгоритма определяется числом операторов программы.

□ Вычислительная сложность алгоритма определяется объемом входных данных алгоритма.

О Минимальная вычислительная сложность алгоритма есть функция минимального числа шагов выполнения алгоритма в зависимости от параметров алгоритма.

5 Сложность алгоритма по памяти определяется максимальным объемом памяти, используемым при выполнении алгоритма, в

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

Вычислительная сложность алгоритма есть оценка быстроты роста числа шагов выполнения алгоритма при росте ее параметров.

Рис. 3. Реакция системы на ответ с некоторыми неправильными пунктами

Current streak: 1; Questions left in this theme: 16

Отметьте все точные и полные определения

О Параметры алгоритма определяются теми характеристиками данных, от которых в основном зависит число шагов выполнения алгоритма.

О Максимальная вычислительная сложность алгоритма определяется максимальным числом шагов алгоритма.

0 Максимальная вычислительная сложность алгоритма есть функция максимального числа шагов выполнения алгоритма, зависящая от параметров данных алгоритма.

1 I Объем данных алгоритма определяется объемом всех данных

алгоритма при его выполнении.

О Минимальная вычислительная сложность алгоритма есть функция минимального числа шагов выполнения алгоритма в зависимости от

I I Параметры алгоритма определяются наибольшим числом

характеристик данных, от которых зависит число шагов выполнения

Рис. 4. Реакция системы на правильный ответ

Answer does not have all correct

Определение характеристик сложности алгоритма

Current streak: -2; Questions left in this theme; 6

Отметьте все неверные высказывания.

(~1 Вычислительная сложность алгоритма есть оценка быстроты роста числа шагов выполнении алгоритма при росте ее параметров.

Г~| Вычислительная сложность алгоритма есть функция от основных параметров алгоритма, показывающая зависимость максимального числа шагов выполнения алгоритма от этих параметров.

Ц Минимальная вычислительная сложность алгоритма есть функция минимального числа шагов выполнения алгоритма в зависимости от

□ Максимальная вычислительная сложность алгоритма есть функция максимального числа шагов выполнения алгоритма, зависящая от параметров данных алгоритма.

С Минимальная вычислительная сложность алгоритма определяется минимальным числом параметров алгоритма, от которых зависит число шагов выполнения алгоритма.

О Вычислительная сложность алгоритма определяется объемом входных данных алгоритма.

Рис. 5. Реакция системы на ответ не со всеми правильными пунктами

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

Пример упражнения к секции по символьным преобразованиям приведен ниже на рис. 6.

3. Разбиение материала на группы секций и первая группа

Весь материал, подлежащий обучению, и контрольные тесты, упражнения, задачи разобьем на секции так, что каждая секция будет представлять совокупность материала (текста для

обучения) и контроля (обучения этому материалу).

Базовые символьные преобразования

4*(-f(n)/3-n+3*f(n)/4J =

Введите результат

4*Н(п)й+ЗЧ(п)/4-п)

Обмен местами двух аддитивных членов ОТКАТ

ПРОВЕРИТЬ

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

Во вторую группу мы включим секции,

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

Первую группу определим как следующую последовательность секции:

1. Определения характеристик сложности алгоритма (вычислительная сложность и сложность по объему данных) и характеристик данных алгоритма (объем данных, параметры данных).;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

2. Определение оценок вычислительной сложности алгоритма (определения асимптотических оценок сверху и снизу для вычислительной сложности, двусторонние оценки скорости роста функции вычислительной сложности, ряд функции для оценивания скорости роста функции вычислительной сложности);

3. Анализ взаимного расположения циклов и оценивание вычислительной сложности алгоритма через вычислительные сложности циклов (невложенные независимые циклы, невложенные зависимые циклы, вложенные независимые циклы, вложенные зависимые циклы, слабая зависимость вложенных циклов).

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

В процессе разработки таблицы символьной прокрутки алгоритма возникает необходимость в преобразовании символьных алгебраических выражении. Правильность этих преобразовании должна контролироваться системой. Но при этом возникает непростая задача в установлении эквивалентности двух выражении: исходного и преобразованного. Для того чтобы сделать этот

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

Любое допустимое выражение в системе состоит из символов данных, символов алгебраических операции сложения (+), вычитания (-), умножения (*), деления (/) и возведения в степень (л), а также скобок, определяющих порядок выполнения операции при помощи общепринятых правил приоритета операции и скобок. Слагаемые сумм выражения, перед которыми нет знака (интерпретируется как знак +), есть знак +, или есть знак -, будем называть аддитивными членами сумм, а операнды операции умножения и деления будем называть мультипликативными членами.

Правильность записи выражении

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

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

4*(-Цп)/3-п+3*Цп)/4).

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

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

нормальное преобразование обмен местами двух аддитивных членов и выделена строка

4*(-Цд|/3-п+3*^п)/4), то первыи аргумент -п, второи аргумент +3*^п)/4 , и выполнение преобразования приведет к выражению

4*(-^п)/3+3*ад/4-п).

В другом примере применяется нормальное преобразование обмен местами

мультипликативных членов и выделена строка аргументов

4*(-^п)/3+3*ад/4-п),

где первыи аргумент *^п), а второи - /4, и применение преобразование приведет к выражению:

4*(-^п)/3+3/4*ад-п).

В первом аддитивном члене в скобках знаменатель 3 так не перенести. Поэтому воспользуемся нормальным преобразованием умножения слева на 1. Это преобразование имеет 1 аргумент, выделенный в примере:

4*(-^п)/3+3/4*ад-п).

При выполнении этого преобразования получится выражение:

4*(-1*Цп|/3+3/4*Цп)-п).

Тогда при применении нормального преобразования обмен местами

мультипликативных членов с выделенной строкой аргументов получится выражение:

4*(-1/3*Цп)+3/4*Цп)-п).

При применении нормального преобразования приведение подобных членов с выделенной строкой аргументов с выделенной строкой аргументов получится выражение:

4*((-1/3+3/4)*Цп)-п).

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

4*((5/12)*^п)-п).

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

4*(5/12) *^п) - 4*п, и после еще одного нормального преобразования раскрытие скобок с выделенной строкой аргументов с выделенной строкой аргументов получится выражение:

4*5/12*^п)-4*п, которое после нормального преобразования умножение дробей с выделенной строкой аргументов с выделенной строкой аргументов даст окончательное выражение:

5/3*f(n)-4*n.

Нормальной формой выражения называется выражение, отвечающее следующим условиям: 1) в выражении отсутствуют скобки (кроме, возможно, функциональных скобок);

2) выражение представляет собои сумму (возможно, из одного слагаемого);

3) числовой коэффициент каждого аддитивного члена, если он есть, стоит первым;

4) все остальные (кроме коэффициента) мультипликативные члены аддитивного слагаемого упорядочены лексикографическим способом;

5) все аддитивные члены также идут в лексикографическом порядке, если не считать их числового коэффициента;

6) нет двух аддитивных членов, которые были бы одинаковы, если не считать коэффициенты.

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

Приведем список нормальных преобразовании.

1. Обмен местами двух аддитивных членов (а1+а2 -> а2+а1; а1-а2 -> -а2+а1; -а1+а2

->а2-а1; -а1-а2 -> -а2-а1)

2. Обмен местами двух мультипликативных членов

(а1*а2 -> а2*а1; *а1*а2 -> *а2*а1; /а1/а2-> /а2/а1; /а1*а2 -> *а2/а1; *а1/а2 -> /а2*а1)

3. Раскрытие скобок правой суммы у множителя (а0*(а1±..+ак) -> а0*а1±..+а0*ак)

4. Вынесение за скобки общего множителя слева (а0*а1±..+а0*ак -> а0*(а1±..+ак))

5. Раскрытие скобок левои суммы у множителя ( (а1±..+ак)*а0 -> а1* а0±..+ак* а0)

6. Вынесение за скобки общего множителя справа (а1*а0±...±ак*а0 -> (а1±..+ак)*а0)

7. Раскрытие скобок произведения у делителя (а0/(а1*...*ак) -> а0/а1/./ак)

8. Группирование делителей (а0/а1/.../ак -> а0/ (а1*...*ак))

9. Раскрытие скобок произведения у делимого ((а1*...*ак)/а0 -> а1/а0*...*ак/а0)

10. Группирование делимого (а1*/а0...*ак/а0 -> (а1*...*ак)/а0)

11. Умножение двух степеней с одинаковым основанием (аЛр1*аЛр2 -> ал(р1+р2) )

12. Разложение степени на произведение двух степеней с тем же основанием при задании показателя однои из степеней (аЛ(р) -> алр1*ал(р-р1))

13. Умножение мультипликативного члена слева на 1 ([±]а -> [±]1*а)

14. Удаление в мультипликативном члене множителя 1 ([±]1*а -> [±]а)

15. Деление двух степеней с одинаковым основанием (аЛр1/аЛр2 -> ал(р1-р2) )

16. Разложение степени на деление двух степеней с тем же основанием при задании показателя однои из степеней (аЛ(р) -> аЛр1/аЛ(р1-р))

17. Сложение рациональных дробей

(результирующая дробь сокращается) (m1/n1+m2/n2 -> m/n; m1+m2/n2 -> m/n; m1/n1+m2 -> m/n)

18. Разложение рациональной дроби на сумму двух рациональных дробеи при заданнои однои из них

(m/n-> m1/n1+m2/n2)

19. Умножение рациональных дробеи (результирующая дробь сокращается) (m1/n1*m2/n2 -> m/n)

20. Разложение рациональной дроби на произведение двух рациональных дробеи при задании однои из них (m/n -> m1/n1*m2/n2)

21. Деление рациональных дробеи (результирующая дробь сокращается) (m1/n1/(m2/n2) -> m/n)

22. Разложение рациональной дроби на деление двух рациональных дробеи при задании однои из них

(m/n -> m1/n1/(m2/n2))

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

(например, для функции логарифм: logabc = c*logab; alogab = b; logab = 1/logba; logcb = logab*logca)

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

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

преобразований.

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

соответствующих выражении к нормальной

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

последовательность Р-1в нормальных

преобразовании, которая нормальное выражение, полученное из В, возвращает в В. Поэтому конкатенация списков нормальных

преобразовании Ра + Р1в = Рав преобразует выражение А в выражение В, что и требовалось доказать.

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

• Определения выражения и его нормальных преобразовании.

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

• Преобразование выражении.

Контроль усвоения материала секции 4 проводится при помощи тестов, а в секции 5 идет при помощи упражнении. Каждая из 11 первых подсекции секции 4 связана с освоением двух нормальных преобразовании: прямого и обратного. В подсекции 12 при помощи упражнении осваиваются предопределенные функции преобразовании (нормальное

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

5. Таблица прокрутки и секции третьей группы

Разработка таблицы прокрутки начинается с анализа текста процедуры программы, который задает алгоритм. При этом заводится таблица «Анализ алгоритма», в которую заносятся:

1) параметры процедуры, которые являются параметрами данных (например, п);

2) параметры тела процедуры и их инициализация до выполнения циклов программы (например, к=п, т=0);

3) количество циклов программы (например, 2);

и далее для каждого цикла:

4) параметр цикла (например, /);

5) параметр номера выполнения цикла, если он не совпадает с параметром цикла или параметр цикла не задан (например, /1);

6) параметр номера последнего выполнения цикла (например, р1);

7) условие выполнения цикла (например, /<п);

8) функция итерации параметра цикла

(например, i+1 или i1/2);

9) изменение других параметров процедуры в теле цикла, если это имеет место (например, m(p1+1)=(m(p1)+k)/2);

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

и далее, если циклов несколько, взаимодействие циклов:

10) вложенность циклов (например, цикл 2 вложен в цикл 1 или циклы не вложены);

11) зависимость циклов (например, цикл 2 зависим от цикла 1 по такому-то параметру или циклы независимы).

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

После составления таблицы «Анализ алгоритма» следует перейти к разработке таблицы символьной прокрутки алгоритма. Сначала заводятся столбцы таблицы:

1. Если количество циклов более одного, то следует завести столбец с номером цикла

2. Помимо столбцов с именами параметров циклов следует завести столбцы с параметрами номера выполнения цикла, если они не совпадают с именами параметров цикла;

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

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

Теперь можно перейти к пошаговому выполнению алгоритма процедуры и одновременному заполнению таблицы

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

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

преинкрементная или предекрементная операции). При проверке условия выполнения цикла берется именно это значение;

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

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

На рис. 7 изображена часть упражнения на составление таблицы символьной прокрутки для следующего алгоритма:

void f2 (unsigned long n) { float x = n, z = n; while (x > 2) { x = sqrt(x); z = z * z;

}

while (z /= 2 > 1);

}

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

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

2. Анализ алгоритма процедуры.

3. Разработка таблицы символьной прокрутки алгоритма процедуры.

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

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

Описанныи подход обучения анализу сложности алгоритмов позволил разработать

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

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

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

Nu ¡1 12 X z условие цикла

P1 пЛ(1/2)Л(р1-1) > 2 поел. вып.

Пл(1/2)"р1 пл2"р1

pi +1 Пл(1/2)лр1 > 2 выход

2 1 Пл2"р1 / 2 Пл2лр1 / 2 > 1

2 пл2лр1 /2 /2 = г|*2лр1 / 2Л2

Рис. 7. Заполнение таблицы символьной прокрутки

Литература

1. Рублев В.С., Юсуфов М.Т. Автоматизированная система для обучения анализу вычислительной! сложности алгоритмов / В.С. Рублев, М.Т. Юсуфов // Современные информационные технологии и ИТ-образование. - 2016. - Т.12 (№ 1). - С.135-145.

2. Rublev V.S., Yusufov M.T. Automated system for teaching computational complexity of algorithms course / / Selected Papers of the First International Scientific Conference Convergent Cognitive. - Moscow, Russia, November 25-26, 2016. URL: http://ceur-ws.org/Vol-1763/ (ISSN 1613-0073 VOL-1763 urn.nbn.de: 0074-1763-4 indexed Scopus).

References

1. Rublev V.S., Jusufov M.T. Avtomatizirovannaja sistema dlja obuchenija analizu vychislitel'noj slozhnosti algoritmov / V.S. Rublev, M.T. Jusufov // Sovremennye informacionnye tehnologii i IT-obrazovanie. - 2016. - T.12 (№ 1). - S.135-145.

2. Rublev V.S., Yusufov M.T. Automated system for teaching computational complexity of algorithms course // Selected Papers of the First International Scientific Conference Convergent Cognitive. - Moscow, Russia, November 25-26, 2016. URL: http://ceur-ws.org/Vol-1763/ (ISSN 1613-0073 VOL-1763 urn.nbn.de: 0074-1763-4 indexed Scopus).

Поступила: 15.06.2017

Об авторах:

Рублев Вадим Сергеевич, кандидат физико-математических наук, профессор кафедры теоретической информатики, Ярославский государственный университет им. П.Г. Демидова, roublev@mail.ru

Юсуфов Мурад Теймурович, аспирант кафедры теоретической информатики, Ярославский государственный университет им. П.Г. Демидова, flood4life@gmail.com .

Note on the authors:

Rublev Vadim S., Candidate of Physical and Mathematical Sciences, Professor of the Department of Theoretical Informatics, P.G. Demidov Yaroslavl State University, roublev@mail.ru:

Yusufov Murad T., Post-graduate student of the Department of Theoretical Informatics, P.G. Demidov Yaroslavl State University, flood4life@gmail.com.

i Надоели баннеры? Вы всегда можете отключить рекламу.