Интерактивные задачники по комбинаторике и целым числам

advertisement
Национальный фонд подготовки кадров (НФПК)
Проект «Информатизация системы образования» (ИСО)
Конкурс на разработку
информационных источников сложной структуры (ИИСС)
Методика работы с ИИСС
«Инструментальные средства поддержки исследовательской
деятельности»
Москва 2008
СОДЕРЖАНИЕ:
1. Методика работы с ИИСС
2. Создание сайта для обсуждения новых задач
по математике и для проведения
математических олимпиад
с. 3-13
с. 14-15
3. Оболочка задачника
с. 16-19
4. Конструктор комбинаторных коллекций
(описание редактора общего назначения)
5. Примеры использования конструктора
общего назначения
6. Инструкция по работе с конструктором
общего назначения «комбинаторика» (с
описанием тезауруса)
7. Инструкция по установке продукта
с. 20-26
с. 27-29
с. 30-35
с. 36
2
МЕТОДИКА РАБОТЫ С ИИСС
Введение
В данном руководстве мы соединим рассказ о применении ИИСС к организации
исследовательской и олимпиадной деятельности учащихся с описанием оболочек конструкторов
и описанием оболочки задачника.
Особенностью ИИСС является то, что пользователь может составить задачу из
определённого раздела курса математики, не зная ни ответа к ней, ни её решения. Затем он или
кто-либо другой может пытаться решить эту новую в полном смысле задачу, в то время как
система по описанию задачи будет верифицировать ответ решающего и сообщать, является ли он
правильным.
Основой механизма проверки является адекватное описание задачи, которое осуществляется
на основе тезауруса данной темы и представляется в XML формате (полное описание языка
представления задачи приведено в соответствующем разделе).
На основе этого описания программа перебирает все возможные объекты, удовлетворяющие
условию, вычисляет требуемые характеристики (например, в комбинаторике число комбинаций с
заданными свойствами).
Заметим, что этот механизм определяет ограничения классов задач, на которых работает
система - это задачи, которые могут быть сформулированы на конечном множестве объектов.
Также механизм проверки вызывает и некоторую временную задержку, которую может вызвать
большой перебор в построенной задаче.
Полученный системой ответ сравнивается с формульным ответом ученика, который
вводится с виртуальной клавиатуры. Клавиатура содержит необходимые операции для выражения
ответов на задачи по данной теме (например, в комбинаторике, к обычным арифметическим
операциям добавляются операции вычисления факториала, чисел размещений и сочетаний).
Тем самым, создаётся основа как для поддержки познавательной свободы ученика, так и для
организации новой познавательной деятельности, связанной с конструированием задач.
Существенным отличием системы как средства поддержки проверки решений предлагаемых
задач, является то, что ответов к задачам система не содержит, то есть, их не существует в ней в
принципе. В некотором смысле, описание задачи и является для системы формой представления
ответа (заметим, что в одной из версий системы есть возможность хранить задачи с ответами, с
тем, чтобы применять систему к поддержке традиционных видов заданий).
Другая особенность системы, определяющаяся её основным свойством, - возможность
поддерживать функционирование общего информационного пространства, где одни участники
3
могут размещать задачи, а другие их решать. Участники этих групп общения, естественно, могут
быть как авторами, так и «решателями». Параллельно обычными средствами поддержки
дистанционных форм общения может быть организовано обсуждение предлагающихся решений.
ИИСС включает базовый редактор, работа с которым требует знакомства с языком описания
задач (что для ребят, увлекающихся информатикой, не трудно и полезно, так как язык относится к
классу скриптовых языков, связанных с разметкой текста).
Для быстрого включения в процесс составления задач предусмотрены тематические
редакторы. Тематические редакторы позволяют создавать задачи простым заполнением форм за
счёт выбора и комбинирования имеющихся в них условий. Эти редакторы автоматически
транслируют заполненные формы в базовый язык описания задач. Для пользователя этот процесс
имеет только информативное значение: задача под указанным именем автоматически помещается
в стандартный задачник (в данной версии он называется «Простые и новые задачи»), с которым
работает система поддержки работы задачников.
Ступень образования – 10-11 классы.
Проект связан с созданием современных технологичных и эффективных средств
поддержки интеллектуальной деятельности учащихся, пригодных для дистанционного обучения с
использованием средств сети Интернет.
Новизна разрабатываемого продукта.
1) Предлагаемый продукт обеспечивает конструирование задач, в которых условия задач
адекватно определяют алгоритм проверки решения и позволяют проверять частичные решения
задач учеников по описанию условия задачи. Это открывает новые методические перспективы:
- в описанных предметных областях можно осуществлять учебную исследовательскую
деятельность, ставя задачи и пытаясь найти их решения;
- появляется возможность совместно-сетевого создания сборников олимпиадных задач;
учителя и ученики могут конструировать задачи сами;
-
разрабатываемые
инструменты
дают
новые
возможности
для
организации
дистанционных олимпиад различных уровней.
2) Предлагаемая система допускает использование параметрических задач, которые дают
возможность при каждом запросе генерировать новую задачу, обеспечивая учеников различными
вариантами задачи.
4
3) Предлагаемая система позволяет использовать и традиционный способ проверки
решения – по заданному ответу, при этом для параметрических классов задач автоматически
генерируются и проверяются все возможные ответы.
Цели обучения и предполагаемые результаты.
Цели:
1) Привлечь учеников к самостоятельной формулировке исследовательских задач в
предметной области «математика» (темы «Целые числа» и «Комбинаторика»).
2) Расширить спектр категорий учеников, участвующих, как в решении, так и в
составлении олимпиадных задач.
3) Обеспечить поддержку решения задач различного уровня сложности по темам «Целые
числа» и «Комбинаторика» в условиях дистанционного обучения.
4) Обеспечить проведение дистанционных олимпиад районного уровня по математике.
Предполагаемые результаты:
1) В сети Интернет будет сформировано сообщество пользователей сайта проекта,
использующих разработанные инструменты для составления исследовательских задач по темам
«Целые числа» и «Комбинаторика» и олимпиадных задач различной сложности по всем темам
курса математики.
2) Будет создана среда для поддержки дистанционных олимпиад по математике. На ее
основе будут проведены дистанционные олимпиады для учащихся 10-11 классов.
3) Будут созданы и апробированы задачники по целым числам и комбинаторике для
использования, как на локальных компьютерах, так и в сети.
4) Будут апробированы контрольные материалы для дистанционной проверки знаний по
темам «Целые числа» и «Комбинаторика».
В целом, авторский коллектив ставит своей целью развитие личностных качеств ученика:
любознательности, самостоятельности, упорства, серьезного отношения к решаемым проблемам,
умения анализировать свою деятельность и доказывать ее правомочность.
5
Результативность деятельности каждого ученика будет благотворно сказываться на его
отношении к учебе. У ученика появится возможность отделить результат своего труда от чисто
учебной деятельности, что должно создать сильную дополнительную мотивацию и привести к
пониманию изучаемого предмета в противовес формальному «натаскиванию» на типовых
задачах.
Описание основ разрабатываемого ИИСС
Предметную основу его составляют две темы курса математики 10 класса «Целые числа» и
«Комбинаторика». Особенность этих тем в том, что в этих темах «расстояние» между
формулировкой легких задач и трудных невелико, то есть, пользуясь одним и тем же языком
предметного описания можно построить как задачи, доступные ученикам основной школы, так и
задачи, до сих пор не имеющие решения в общем виде.
В рамках данного ИИСС реализуются следующие вопросы программы курса по
математике для 10-11 классов школы.
1. Числовые и буквенные выражения:
Делимость целых чисел. Деление с остатком. Сравнения. Решение задач с целочисленными
неизвестными.
2. Элементы комбинаторики, статистики и теории вероятностей:
Поочередный и одновременный выбор нескольких элементов из конечного множества.
Формулы числа перестановок, сочетаний, размещений. Решение комбинаторных задач. Формула
бинома Ньютона. Свойства биномиальных коэффициентов. Треугольник Паскаля.
ИИСС не привязан к конкретному учебнику и может быть использован при организации
обучения по любым существующим учебникам.
Разрабатываемый ИИСС позволяет ученикам выйти за пределы указанных тем, жестко
очерченных программой и продолжить учебную работу по данным разделам во внеклассной
деятельности.
Тематические редакторы.
Рассмотрим
проведения
соревнования
между
двумя
командами
учеников.
Будем
использовать одно из сложившихся названий таких конкурсов «матбой».
6
Если в традиционном «матбое» задачи предлагает учитель (оргкомитет), то здесь задачи
придумывают сами ученики. Задача создаётся с помощью конструктора и может быть сколь
угодно сложной, лишь бы составитель мог её решить (система сама проверяет решение, так что
проблемы в проверке у организаторов боя не будет).
Опишем процесс организации мероприятия.
Шаг 1. Конструирование задачи.
Вызов конструктора (выбирается из предложенных, в настоящее время конструкторы
запускаются вызовом одной из программ numbers.bat, words.bat, cards.bat).
В качестве примера рассмотрим конструктор numbers.bat, позволяющий конструировать
задачи по комбинаторике на множестве натуральных чисел или на множестве упорядоченных
числовых наборов.
После вызова конструктора на экране появляется форма, которую надо заполнить.
Начинать заполнение целесообразно с ввода имени задачи. При составлении большого
сборника задач целесообразно иметь в виду простую классификацию задач и использовать в
качестве названий «намёк» на содержание задачи.
7
В редакторе чисел/цифровых наборов выбирается число цифр, размер набора, указывается,
является ли набор позиционным представлением числа или нет (отсутствует ли ноль в первом
разряде). В данном примере выбраны все 10 цифр, размер положен 6, а набор рассматривается как
позиционная запись числа (шестизначное число).
Выбираются ограничения на характер набора. В данном примере выбран признак «цифры
набора идут в возрастающем порядке». Для того, чтобы условие перешло в описание задачи,
нажимается кнопка «Добавить». Все условия собираются вместе в правом нижнем окне
редактора.
8
Другая возможность устанавливать соотношения между цифрами (или суммами цифр)
набора. В данной версии отношениями являются три: равно, больше, меньше. Номера позиций,
между которыми устанавливаются отношения, «перетаскиваются» в левую или правую часть
отношения мышкой. В данном примере добавлено условие: сумма цифр в позициях 1 и 2 равна
цифре в позиции 6.
После нажатия на кнопку «Сгенерировать условие» в правом нижнем окне появляется
сгенерированный
тест
условия.
Текст
можно
отредактировать
литературно
вручную.
Рекомендуется запоминать задачу дважды: со стандартно сгенерированным текстом и с его
изменённой версией. Это нужно для того, чтобы жюри могло сравнить эти условия и подтвердить,
что при литературной обработке не произошло изменения содержания задачи.
После этого можно добавить картинку к задаче, показывающую один из примеров
подсчитываемых комбинаций. При нажатии на кнопку «добавить картинку» открывается файл с
элементарными изображениями цифр и пр.
9
Из элементарных картинок поочередным выбором формируется иллюстрация.
В заключение задача сохраняется в стандартный сборник нажатием на кнопку «Сохранить
задачу в стандартный задачник».
10
Шаг 2. Предъявление составленных задач жюри.
После того, как будет составлено договоренное число задач, команды предъявляют решения
задач. Для этого используется оболочка задачника, которую команды используют также для
проверки подготовленных задач, а затем при решении задач противника.
Открывается сборник «Простые и новые задачи», который используется для знакомства со
средой, а также для стандартного сохранения задач (задачи можно собирать и в отдельные
сборники, но в этой версии в рамках оболочки работа с каталогами не поддерживается, хотя это
легко можно сделать в текстовом редакторе).
После выбора задачника появляется оглавление задач, из которого выбираются нужные
задачи. Сначала команда предъявляет жюри условия задачи в двух вариантах: сгенерированным
автоматически и после его литературной обработки. Жюри оценивает равносильность условий.
11
Решение задачи происходит в обычном режиме (в тетради, без использования средств
среды).
Затем команда демонстрирует правильные ответы к задачам. При этом, команды могут
держат ответы в секрете (прикрывая окно ввода ответа). Жюри должно только убедиться в том.
Что за вводом ответа последует реакция «Ответ верен. Задача решена».
Заметим, что по договорённости проверка наличия собственных решений может
происходить и после передачи задач команде противника, в конце игры. В этом случае у команд
появляется одна возможная стратегия: дать противнику ещё не решённые задачи в надежде
решить их позже.
После проверки условий и наличия правильных ответов команды обмениваются задачами (в
данной версии для этого не предусмотрено автоматической процедуры, поэтому это можно
сделать просто обменявшись компьютерами либо переписав все файлы из каталога generated с
компьютера одной команды в аналогичный каталог другой.
Шаг 3. Решение задач противника.
Решение происходит в оболочке задачника, в которой команда проверяла свои решения и
демонстрировала их жюри.
Ответ вводится в поле ввода, после чего нажимается кнопка «Ответить».
Среда ведёт протокол решения, отмечая время совершения операции ввода, введённый ответ
и реакцию программы. Таким образом, при желании, жюри может учитывать не только
количество решённых задач, но и время решения.
12
Заметим, что форма ответа не существенна. Так в приведённом учебном примере ответом
является 1, однако если ответ будет задан в иной форме (см. следующий рисунок), программа
правильно его проанализирует.
По окончании договорённого времени команды предъявляют решения задач, либо
демонстрируя их на общем экране, либо выписывая на доске, либо предъявляя протоколы
решений. Жюри, если необходимо, анализирует время решения задач и объявляет результаты.
13
СОЗДАНИЕ САЙТА ДЛЯ ОБСУЖДЕНИЯ НОВЫХ ЗАДАЧ ПО
МАТЕМАТИКЕ И ДЛЯ ПРОВЕДЕНИЯ МАТЕМАТИЧЕСКИХ
ОЛИМПИАД
ИИСС представляет собой систему типа клиент-сервер, что позволяет использовать её как
для проведения дистанционных олимпиад, а также создания общего информационного
пространства для постановки и обсуждения новых математических задач из тех разделов
математики, которые поддерживает система. Таким образом, новые математические задачи
строятся в рамках школьной программы или её расширений (множество допустимых задач
определяется тезаурусом системы).
Для создания новых задач может быть использованы как тематические редакторы, так и
редактор общего назначения.
В
настоящей
версии
ИИСС
представлены,
кроме
одного
сдвоенного
редактора
(числа/упорядоченные наборы цифр) ещё два: редактор для конструирования комбинаторных
задач на множестве слов и редактор для задач на множестве игральных карт.
Все редакторы устроены по одному принципу, однако в силу того, что разные
интерпретации имеют разный контекст, множество генерируемых задач отличается не только по
формулировке, но и по содержанию (например, на множестве слов нельзя ввести сумму, а карты
обладают двумя признаками классификации – значения и масть – которых нет ни в буквенной, ни
в числовой интерпретациях).
Кроме того, комбинаторные задачи имеют в разных интерпретациях разные по наглядности
и привлекательности формулировки.
14
15
ОБОЛОЧКА ЗАДАЧНИКА
Доступ к предназначенным для обсуждения или проведения олимпиады задачам
осуществляется через программу поддержки задачников.
Оглавление задачников имеет форму XML файла.
Например, изображённый на рисунке каталог имеет в формате XML следующий вид.
<?xml version="1.0" encoding="windows-1251"?>
<tests>
<test title="Простые и новые задачи" file="tasks\generated.xml"/>
<test title="Задачи на принцип умножения" file="tasks\Multiplication.xml"/>
<test title="Задачи на принцип сложения" file="tasks\Addition.xml"/>
<test title="Задачи на сочетания" file="tasks\Binomial.xml"/>
<test title="Комбинированные и сложные задачи" file="tasks\Complex.xml"/>
<test title="Задачи на числах" file="tasks\Numbers(combinatorics).xml"/>
<test title="Задачи на картах" file="tasks\Cards(combinatorics).xml"/>
<test title="Задачи на словах" file="tasks\Words(combinatorics).xml"/>
</tests>
Таким образом, добавление нового каталога можно сделать в текстовом редакторе (в следующей
версии будет сделана поддержка каталогов в самой оболочке).
16
Аналогично устроены и каталоги отдельных задачников. Имена файлы задач генерируются
автоматически, а сами файла задач помещаются в стандартный каталог generated, а потом могут
быть перенесенгы в любые другие каталоги.
<?xml version="1.0" encoding="windows-1251"?>
<tasks taskDir="Complex" title="Комбинированные и сложные задачи">
<task title="Задача 5-1. Три бубны, остальные чёрные." file="1185436594031.xml"/>
<task title="Задача Ч-8-1. Первая - не больше." file="1185636802015.xml"/>
<task title="Задача Ч-8-2. Первая - не меньше." file="1185637224281.xml"/>
<task title="Задача 5-2. Нет пик, остальных поровну." file="1185484972671.xml"/>
<task title="Задача Б-6-1. После согласной гласная." file="1185612509656.xml"/>
<task title="Задача Б-6-2. Абракадабр." file="1185615839953.xml"/>
<task title="Задача 6-4. Две чёрных и два туза." file="1185478769390.xml"/>
<task title="-Задача Б-5-1. РОКОКО." file="1185618417281.xml"/>
<task title="Задача Ч-8-3. Первая = сумме остальных." file="1185641097343.xml"/>
<task title="Задача Ч-8-4. [1]+[2]= [3]+[4]." file="1185641911734.xml"/>
<task title="Задача Ч-8-5. Счастливые билеты." file="1185643223390.xml"/>
<task title="Задача Ч-8-6. По-питерски и по-московски." file="1185643778812.xml"/>
</tasks>
17
Задачи можно классифицировать по разным признакам, создавая новые каталоги.
О решении задач уже писалось выше: ответ в формульном виде (в строковой записи) вводится в
окно ввода, синтаксические ошибки анализируются. Если синтаксических ошибок нет, то
происходит вычисление ответа по введённому выражению и сравнение с ответом, полученным по
описанию задачи.
18
19
Конструктор комбинаторных коллекций (описание редактора
общего назначения)
В этом разделе будет представлено подробное описание среды ККК для конструирования
комбинаторных задач, в которой задача описывается на языке, допускающем автоматическую
проверку ответа.
В описании любой задачи, предполагающей автоматизированную проверку решения (даже в
тестах), можно выделить две основные части. Первая предназначена для представления задачи в
понятной человеку форме (например, словесное описание условия задачи), вторая представляет
формализованное описание, понятное машине, вычислительной среде или интерпретатору,
которые собственно и осуществляют проверку решения.
В представлении задачи для человека можно выделить еще один важный момент:
возможность параметризации условия, когда по одному такому описанию среда генерирует
разные «клоны» исходной задачи. Собственно эта часть мало зависит от способа формализации
решения для компьютера и может состоять из перечисления параметров и их значений. Ниже
приведен пример такого описания, использующегося как часть параметрически генерируемой
задачи в системе ККК. Описание данной части задачи состоит из описания параметров генерации
задачи и из словесного описания задачи с возможностью использовать в нем описанные
параметры.
<task title="Счастливые билеты"> //Начало блока описания задачи
<description-params>
//Блок описания параметров генерации
<param name="length"> //Описание параметра length
<value text="двух">4</value> //Описание одного из значений параметра
<value text="трех">6</value>
</param>
<param name="base"> //Описание параметра base
<value text="девяти">9</value>
<value text="семи">7</value>
</param>
</description-params>
<description> // Словесное описание задачи с использованием параметров
Трамвайный билет называется счастливым по-питерски,
если сумма первых ${length-text} цифр равна сумме последних
${length-text} цифр. Трамвайный билет называется счастливым
по-московски, если сумма его цифр, стоящих на четных местах,
равна сумме цифр, стоящих на нечетных местах.
Сколько существует билетов, счастливых и по-питерски и по-московски,
если для записи билета используются цифры от нуля до ${base-text}?
</description>
<Формальное описание/>
</task >
Листинг. 1. Возможное описание задачи в формате xml, предназначенное для человека
20
По данному описанию система генерирует четыре однотипных задачи с разными
параметрами в условии: два значения для возможной системы счисления
(base) и два для
возможной длины билета (length). Каждый раз, когда пользователь выбирает данную задачу,
система генерирует ее условие со случайным набором параметров (систему можно настроить и
таким образом чтобы для каждого пользователя генерировались свои параметры).
При описании задачи также важно обеспечить, чтобы сложность задач, генерируемых в
рамках данного описания, была одинаковой, в противном случае, пришлось бы связывать с
каждым набором параметров соответствующее количество балов, начисляемое за ее успешное
решение. В данной системе такой связи не осуществляется, а предполагается, что составитель сам
обеспечивает правильную параметризацию условия.
В системе ККК имеется несколько встроенных стратегий проверки – это может быть
сравнение с уже имеющимся в описании задачи ответом (этот вариант ближе к традиционному,
хотя и здесь спектр допустимых форматов ввода шире обычного), либо автоматическое
построение ответа по описанию задачи с последующим сравнением его с ответом пользователя.
Система также поддерживает и возможность добавления новых стратегий. Ниже подробно
обсуждаются способы описания задач, принятые в данной системе:
Прежде всего отметим, что даже в случае явного задания правильного ответа система не
проверяет ответ пользователя на основе строковой эквивалентности, а рассматривает его в
соответствующем формате (число, функция и пр.) и осуществляет проверку на основе сравнения
результатов вычислений. При наличии параметров система вычисляет значения выражений на
различных наборах параметров и сравнивает их.
Проверка решения для разных стратегий
В системе реализованы две стратегии проверки решения:

основанная на идее полного перебора;

основанная на сравнении с известным ответом.
Первая стратегия перебирает все элементы задаваемого множества и подсчитывает
количество элементов, удовлетворяющих некоторому соотношению, после чего сравнивает свой
ответ с ответом пользователя. Если задача задается в общем виде, то для нее генерируется
несколько подзадач с конкретными наборами параметров, и решение системы сравнивается с
решением пользователя вычисленное для данных параметров. Требуемое соотношение, как и
само множество, описывается с помощью примитивов системы (языка описания задач).
21
Вторая стратегия работает проще - сравнивает ответ пользователя с ответом, заданным
составителем, причем в случае постановки задачи в общем виде значения формулы-ответа
вычисляется для различных наборов параметров и для каждого из них сравнивается с ответом
пользователя, вычисленным на нужном наборе.
Точки расширения
Для добавления новых примитивов, расширяющих покрываемую системой область задач,
имеется две точки расширения: первая позволят добавлять поддержку новых множеств к системе,
вторая – новых функций. Для добавления нового примитива необходимо реализовать
соответствующий интерфейс – Set для множеств и Function для функций. Также предусмотрена
точка расширения для стратегий проверки решения – интерфейс Verifier.
В системе используется абстрагирование от того, какой природы является элемент
множества или параметр функции, в качестве данной абстракции выступает класс Element.
Все функции и множества оперируют с данной абстракцией. Такое абстрагирование
позволяет
сделать систему легко масштабируемой. Стратегия же проверки оперирует
абстракциями функций и множеств – интерфейсами Set и Function.
Поддерживаемые понятия и операции
В данной системе реализованы необходимые средства описания задач по комбинаторике для
поддержки автоматизированной проверки их решений, но эти средства позволяют описывать не
только задачи этой конкретной области. В первую очередь это набор базовых множеств:
 отрезок числовой прямой – натуральные числа от k до n, k  n;
 декартово произведение множеств;
 множество сочетаний;
 множество размещений.
Кроме этого, реализован набор необходимых функций, предикатов и операций над
элементами данных множеств:
 логические операции;
 арифметические операции;
 функции для работы с картежами элементов;
 и др.
22
Формальное описание задачи
Формат описания задачи для данной системы предполагает, помимо наличия описания
задачи, предназначенного для человека, также наличия формального описания, которое понимает
система проверки. Оно состоит из указания стратегии проверки и необходимых для данной
стратегии элементов, например, для переборной стратегии необходимо описать перебираемое
множество и критерий выбора элементов для подсчета, для стратегии сравнения с уже известным
ответом – описать ответ. Описание необходимых элементов стратегии осуществляется с помощью
примитивов системы – функций и множеств, причем одни и те же примитивы могут
использоваться в разных стратегиях.
Например, если мы хотим подсчитать все элементы множества размещений из n элементов
по k, у которых первый элемент картежа равен 2 (2  k  n), то описание множества будет
выглядеть так:
<set type="LayoutSet" length="${k}"> //множество размещений
<set type="NumericSet" first="1" last="${n}" />
//отрезок числовой прямой
</set>
а описание критерия подсчета так:
<function type="Equal">//проверяем на равенство два вложенных элемента
<function type="Projection" axis="1"> //возвращает первый элемент картежа
<current-set-element />
//текущий элемент множества – картеж из k элементов
</function>
<constElement>2</constElement> //значение с которым сравниваем
</function>
Листинг. 2. Пример описания множества размещений с фиксированным первым элементом
Понятно, что для такой простой задачи можно сразу написать ответ – (n-1)!/(n-k)! – и
воспользоваться другой стратегией проверки решения. Но это не всегда легко сделать, а описание
ответа посредством описания условия задачи гарантирует его правильность. Заметим, что
обучаемый будет вводить ответ в «формульном» виде. Для данного примера, это могут быть
ответы:
(n-1)!/(n-k)! или A(n-1; k-1) или C(n-1; k-1)*(k-1)! и т.д.
Как видно из примеров, при описании задачи каждый используемый примитив описывается
с помощью отдельного xml-элемента, у которого в атрибуте type указывается имя нужного
примитива, а в остальных атрибутах специализирующие параметры (например: атрибут axis у
23
примитива Projection в примере выше), для функций это xml-элемент с именем function, а для
множества – set.
Используемая стратегия задается в элементе verifier. В данном случае это переборная
стратегия:
<verifier type="SimpleVerifier">
Если задача задается в общем виде, то необходимо описать значения параметров, на которых будет
производиться проверка решения. Описание этих параметров имеет такой же вид, как и описание
параметров генерации условия. Для примера выше оно будет выглядеть так:
<verifier-params> //начало блока описания параметров проверки
<param name="n"> //описание параметра n – размера исходного множества
<value>10</value> //описание одного из возможных значений параметра
<value>7</value>
<value>12</value>
</param>
<param name="k"> //описание параметра k – количества элементов в размещении
<value>6</value> //описание одного из возможных значений параметра
<value>5</value>
</param>
</verifier-params>
Структура файла-описания задачи в системе имеет следующий вид:
<начало блока описания задачи>
<начало блока описания параметров генерации условия>
<начало блока описания параметра a1>
<описание одного из значений параметра/>
</конец блока описания параметра a1>
<начало блока описания параметра a2>
...
</конец блока описания параметра a2>
….
</конец блока описания параметров генерации условия>
<описание задачи предназначенное для человека/>
<начало блока описания параметров проверки решения>
//такая же структура, как и для блока параметров генерации условия
</конец блока описания параметров проверки решения>
<начало блока описания задачи предназначенного для системы>
<начало блока описания стратегии проверки>
//необходимые элементы стратегии
</конец блока описания стратегии>
</конец блока описания задачи предназначенного для системы>
</конец блока описания задачи>
Листинг. 3. Общая структура файла-описания задачи
Для обращения к текущему значению параметра (генерации или проверки) используется следующая
конструкция – ${имя_параметра}.
24
Ниже приведен пример полного описания задачи о счастливых билетах, в котором также
предусмотрена генерация условия с различными параметрами.
<?xml version="1.0" encoding="windows-1251" ?>
<task title="Счастливые билеты">
<description-params>
<param name="length">
<value text="двух">4</value>
<value text="трех">6</value>
</param>
<param name="base">
<value text="девяти">9</value>
<value text="пяти">5</value>
</param>
</description-params>
<description>
Трамвайный билет называется счастливым по-питерски,
если сумма первых ${length-text} цифр равна сумме последних
${length-text} цифр. Трамвайный билет называется счастливым
по-московски, если сумма его цифр, стоящих на четных местах,
равна сумме цифр, стоящих на нечетных местах.
Сколько существует билетов, счастливых и по-питерски и по-московски,
если для записи билета используются цифры от нуля до ${base-text}?
</description>
<mathDescription>
<sourceSet>
<set type="DecartSet">
<for name="i" first="1" last="${length}" inc="1">
<set type="NumericSet" first="0" last="${base}" />
</for>
</set>
</sourceSet>
<verifier type="SimpleVerifier">
<function type="And"> // билет счастливый и по-питерски, и по-московски?
<function type="Equals">//билет счастливый по-питерски?
<function type="Add"> //сумма первой половины цифр
<for name="i" first="1" last="${length}/2" inc="1">
<function type="Projection" axis="${i}">
<current-set-element />
</function>
</for>
</function>
<function type="Add">//сумма второй половины цифр
<for name="i" first="${length}/2+1" last="${length}" inc="1">
<function type="Projection" axis="${i}">
<current-set-element />
</function>
</for>
</function>
</function>
<function type="Equals"> //билет счастливый по-московски?
<function type="Add">//сумма цифр на нечетных местах
<for name="i" first="1" last="${length}" inc="2">
<function type="Projection" axis="${i}">
<current-set-element />
</function>
</for>
</function>
<function type="Add"> //сумма цифр на четных местах
<for name="i" first="2" last="${length}" inc="2">
<function type="Projection" axis="${i}">
<current-set-element />
</function>
</for>
25
</function>
</function>
</function>
</verifier>
</mathDescription>
</task>
Листинг. 4. Полное описание задачи на примере задачи о счастливых билетах
Интерфейс обучаемого (пользователя)
На рисунке приведен вид пользовательского интерфейса системы, предоставляющего доступ
к различным наборам задач (олимпиадам), а также к каждой из задач набора в отдельности. Для
ввода ответа предназначена виртуальная клавиатура, содержащая список всех доступных для
записи ответа примитивов.
Пользовательский интерфейс решения задачи
26
Примеры использования конструктора общего назначения
Использование параметрической генерации задач
Задачи генерируются таким образом, что при выборе одного и того же названия задачи
разные участники получают различные ее варианты. Ниже приведены два варианта одной той же
задачи, которые были предложены различным участникам.
27
Проведение дистанционных олимпиад
Возможность составления задач, для которых есть инструмент проверки правильности
ответа даже в том случае, когда авторам задачи ответ неизвестен, предоставляет новые
возможности в организации дистанционных олимпиад. Среди опубликованных олимпиадных
задач по математике около 30% допускают применение описанной технологии.
Ответ может вводиться формулой от нескольких параметров; программа может проверить
ответ двумя способами: а) сравнив ответ с правильным, б) сгенерировать ответ автоматически для
нескольких конкретных значений параметра и сравнить с ответом, получаемым по формуле,
введенной участником.
28
ИНСТРУКЦИЯ ПО РАБОТЕ С КОНСТРУКТОРОМ ОБЩЕГО
НАЗНАЧЕНИЯ «КОМБИНАТОРИКА» (С ОПИСАНИЕМ
ТЕЗАУРУСА)
Предлагаемая система генерации задач – приложение к системе “ККК”
Структура задачи
Общая структура задачи такова: условие, параметры генерации и проверки, и собственно
формальный шаблон задачи, в котором предлагается описать исходное пространство (множество)
и общий алгоритм решения, используя стандартные примитивы системы (предикаты, функции,
множества).
Критерий правильного решения
Система пытается найти решения согласно формальному описанию и сверить свой ответ с
ответом пользователя. В случае совпадения ответов задача считается решенной пользователем
правильно.
Параметры генерации
Система позволяет по созданному шаблону генерировать различные задачи, используя параметры
генерации – в основном это варьирование различных начальных данных.
Параметры проверки
Также система позволяет ставить задачи в общем виде – пользователь при этом должен ввести
формулу, зависящую от нескольких параметров. Система не сравнивает данную формулу с какимто шаблоном, а вычисляет ее значения на различных наборах параметров, и если результат
вычисления для всех наборов параметров совпадает с решением системы, то задача считается
решенной.
Описание задачи
Задает формальное описание задачи с использованием стандартных примитивов – функций,
предикатов, констант, множеств. На основе данного описания, используя текущие параметры
генерации и проверки, система решает задачу.
Формат описания
Задача описывается с использованием технологии XML. Каждая часть задачи, а также каждый
примитив представляет собой отдельный xml-элемент. Данный генератор задач позволяет при
составлении задачи не работать с текстовым файлом напрямую, а использовать графический
интерфейс, представляющий задачу в компактной форме – в виде дерева задачи.
29
Работа с общим редактором задач
Создание элемента
Формат XML предполагает наличие одного главного корневого элемента, в который
иерархически вложены все остальные, – корневым элементом в описании задачи является task,
который автоматически создается при создании новой задачи. Так что все вновь создаваемые
элементы имеют родителя. Процесс создания нового элемента в данном генераторе задач - это
просто добавление нового элемента к уже существующему родителю. Достаточно выбрать
элемент в дереве задачи и по нажатию правой кнопки откроется меню, в котором можно выбрать
новый элемент – причем можно выбрать только те, наличие которых допускает родитель – выбор
остальных блокируется.
Параметры элемента (Панель параметры)
Выбрав в дереве задачи элемент, во вкладке “Атрибуты” перечисляются все атрибуты, которые
можно указать элементу, например для множества NumericSet (отрезок числовой прямой) – это
будут первый и последний элементы, а для функции проекции это будет ось проекции. Для
параметров доступна вкладка «параметры», в которой перечисляются все значения для
выбранного параметра и в которой их можно добавлять. Если элемент допускает наличие в нем
текстового содержание (например, элемент, содержащий условие задачи – description), то
становится доступной вкладка “Текст”.
Элементы
Каждый элемент задачи (в том числе и все примитивы) представляется отдельным элементом в
xml-файле либо отдельным элементом в дереве задачи.
Корневой элемент
Имя элемента: task.
Атрибуты: title – название задачи.
Описание: корневой элемент в описании задачи, содержит все остальные.
Условие
Имя элемента: description.
Описание: в этом элементе описывается условие задачи.
Параметры генерации
Имя элементы: description-params.
Описание: в этом элементе описываются все параметры, ответственные за генерацию условия.
Параметры проверки
Имя элементы: verifier-params.
Описание: в этом элементе описываются все параметры, ответственные за проверку решения.
Параметр
Имя элемента: param.
30
Атрибуты: name – имя параметра.
Описание: описывает один из параметров генерации или проверки. Для ссылки на значение
параметра используется ${имя_параметра}. Вместо выражения ${имя_параметра} будет
подставлено текущее значение параметра. Все значения данного параметра описываются во
вложенных элементах – value. У элемента value есть атрибут text, значение которого может
использоваться для генерации условия, для получения значения этого атрибута для текущего
значения параметра достаточно использовать выражение ${имя_параметра-text}.
Формальное описание задачи
Имя элемента: mathDescription.
Описание: содержит формальное описание задачи, имеет два дочерних элемента sourceSet и
verifier.
Описание исходного множества
Имя элемента: sourceSet.
Описание: содержит формальное описание пространства событий (в задачах по комбинаторике).
Само пространство строится с помощью элемента описания множества set.
Множество
Имя элемента: set.
Атрибуты: type – задает тип множества: множество перестановок, размещений, комбинаций,
декартово произведение, отрезок числовой прямой.
Описание: Элемент, описывающий множество, допускает наличие вложенных элементов set
(например, для декартового произведения множеств указываются множества, на которых оно
строится).
Верификатор
Имя элемента: verifier.
Атрибуты: type – задает тип верификатора.
Описание: содержит формальное описание функции, используемой при решении задачи
(функция описывается элементом function). Например, верификатор SimpleVerifier подсчитывает
количество элементов из исходного множества, удовлетворяющих описанному условию (в
данном случае используется логическая функция «подходит / не подходит») и сверяет его с
ответом пользователя. А верификатор AnswerVerifier проверяет совпадение ответа пользователя
со значением функции.
Функция
Имя элемента: function.
Атрибуты: type – задает тип функции.
Описание: Используется для составления функций любой сложности, допускает рекурсивное
вложение элементов function. Система предоставляет большой выбор функций, как простейших
(логических и арифметических), так и более сложных.
31
Пример задачи
Ниже приведена одна и та же задача, описанная с помощью xml и с помощью дерева задачи.
Дерево задачи
Xml-описание
<?xml version="1.0" encoding="windows-1251"?>
<task title="Счастливые билеты">
<description-params>
<param name="length">
<value text="двух">4</value>
<value text="трех">6</value>
</param>
<param name="base">
<value text="девяти">9</value>
<value text="четырех ">4</value>
32
</param>
</description-params>
<description>
<![CDATA[Трамвайный билет называется счастливым по-питерски,
если сумма первых ${length-text} цифр равна сумме последних
${length-text} цифр. Трамвайный билет называется счастливым
по-московски, если сумма его цифр, стоящих на четных местах,
равна сумме цифр, стоящих на нечетных местах.
Сколько существует билетов, счастливых и по питерски и по московски,
если для записи билета используются цифры от нуля до ${base-text}?]]>
</description>
<mathDescription>
<sourceSet>
<set type="DecartSet">
<for name="i" first="1" last="${length}" inc="1">
<set type="NumericSet" first="0" last="${base}"/>
</for>
</set>
</sourceSet>
<verifier type="SimpleVerifier">
<function type="And">
<function type="Equals">
<function type="Add">
<for name="i" first="1" last="${length}/2" inc="1">
<function type="Projection" axis="${i}">
<current-set-element/>
</function>
</for>
</function>
<function type="Add">
<for name="i" first="${length}/2+1" last="${length}" inc="1">
<function type="Projection" axis="${i}">
<current-set-element/>
</function>
</for>
</function>
</function>
<function type="Equals">
<function type="Add">
<for name="i" first="1" last="${length}" inc="2">
<function type="Projection" axis="${i}">
<current-set-element/>
</function>
</for>
</function>
<function type="Add">
<for name="i" first="2" last="${length}" inc="2">
<function type="Projection" axis="${i}">
<current-set-element/>
</function>
</for>
</function>
</function>
33
</function>
</verifier>
</mathDescription>
</task>
34
ИНСТРУКЦИЯ ПО УСТАНОВКЕ ПРОДУКТА
Для запуска необходимо:
1) установить jre (java runtime environment) или jdk (java development kit) версии не ниже 1.5.0
(http://java.sun.com, http://java.sun.com/j2se/1.5.0/download.html).
2) Запустить программу, дважды «кликнув» на файл startup.jar или запустив скрипт run.bat
35
Download