Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Применение новых технологий в образовании.doc
Скачиваний:
75
Добавлен:
17.05.2013
Размер:
2.25 Mб
Скачать

Применение обобщенных суффиксных деревьев для анализа программного кода при обучении программированию Андрианов и.А. (igand@mail.Ru)

Вологодский государственный технический университет

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

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

• игровой момент способен вызвать интерес к предмету у многих студентов и повысить эффективность занятий

• студенты с первых шагов привыкают к аккуратному программированию, тщательному тестированию своих программ

• возможна работа с системой не только в отведённое время и дистанционная работа

• преподаватель частично освобождается от работы по проверке решений и ведению учёта, повышается качество того и другого

• освободившееся время преподаватель может использовать для индивидуальной работы с учащимися

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

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

• включение функций, упрощающих для начинающих программистов поиск ошибок в их программах

• организация банка задач по соответствующим курсам (самая трудоёмкая работа)

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

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

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

Пусть S — множество документов (объектных файлов). Задача a: найти документы, имеющие с заданным документом p не менее m общих подстрок длины k или более. Задача b (обобщение a): дано множество P. Найти все пары документов <s,p>, s  S, p  P. имеющие не менее m общих подстрок длины k или более.

Для эффективного решения данных задач возможно использовать индекс на базе обобщенного суффиксного дерева над множеством S. Для решения задачи a нужно выполнить обход вершин дерева (явных и неявных), лежащих на расстоянии k от корня. Для каждой такой вершины проходим по листьям её поддерева и увеличиваем счётчики документов, на которые они ссылаются. После этого выбираем те документы, счётчик которых больше или равен m. Задача b решается схожим образом, только нам, возможно, потребуется выполнить более одного обхода дерева в зависимости от количества получающихся пар документов во время работы алгоритма и доступной оперативной памяти.

Нами была выполнена реализация индексного метода доступа на основе обобщенных суффиксных деревьев для СУБД PostgreSQL. Изначально индекс разрабатывался для ускорения поиска по регулярным выражениям, однако, путём подключения к нему новых стратегий поиска стало возможным решение описанных задач. Для хранения данных использовалось разбиение дерева на независимые части (по началам суффиксов), каждая из которых занимает в среднем не более нескольких дисковых страниц.

Литература

  1. Гасфилд Д. / Дэн Гасфилд. Строки, деревья и последовательности в алгоритмах: Информатика и вычислительная биология / Пер. с англ. И.В.Романовского. — СПб.: Невский диалект; БХВ-Петербург; 2003. – 654 с.

CONSTRUCTION OF A DIDACTIC TECHNOLOGICAL COMPLEX ON DISCIPLINE «STRUCTURES AND ALGORITHMS OF DATA PROCESSING» ON THE BASIS OF AN INFORMATIONAL METABOLISM MODEL OF PEDAGOGICAL PROCESS

Bobkov V. (bobkov-vv@ntiustu.ru)

An Institute of technology (branch) of the state educational establishment of the higher vocational training "The Ural State Technical University - UPI", city Nizhny Tagil