Научная статья на тему 'Методы построения логики визуализаторов алгоритмов'

Методы построения логики визуализаторов алгоритмов Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Казаков М. А., Шалыто А. А.

The following article describes tree methods to algorithm visualization logic implementation: heuristic, straight automata implantation, formal conversion from algorithm to automata. All methods are used for Bubble sorting algorithm visualization in order to compare them.

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

Текст научной работы на тему «Методы построения логики визуализаторов алгоритмов»

7. ГОСТ 30742-2001 (ИСО/МЭК 16388-99). «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Code 39 (Код 39)» с датой введения с 1 января 2002 г.

8. ГОСТ Р 51294.7-2001 (ИСО/МЭК 15416-2000). «Автоматическая идентификация. Кодирование штриховое. Линейные символы штрихового кода. Требования к испытаниям качества печати».

9. Педагогико-эргономические условия безопасного и эффективного использования средств вычислительной техники, информатизации и коммуникации в сфере общего среднего образования /Науч. рук. И.В. Роберт.// Информатика и образование. -2000. -№4. -С. 2-11; -2000. -№5. - С. 11-21; -2000. - №7, -С. 2-9, 10-17.

10. Рябов В.Ю., Аляев Ю.А., Стадник Н.М. Интерактивная система текст + мультимедиа (BarCode Linker). Свидетельство об официальной регистрации программы для ЭВМ. - М.: РОСПАТЕНТ, 25.02.2003 г., № 2003610928.

11. Рябов В.Ю., Аляев Ю.А., Стадник Н.М. Компоновщик (Barcode Linker Classic). Свидетельство об официальной регистрации программы для ЭВМ. - М.: РОСПАТЕНТ, 18.06.2004 г., № 2004611506.

12. СанПиН 2.2.2/2.4.1340-03. «Гигиенические требования к персональным электронно-вычислительным машинам и организации работы».

13. СанПиН 2.4.7.1166-02. «Гигиенические требования к изданиям учебным для общего и начального профессионального образования».

14. СанПиН 2.4.2.1178-02. «Требования к условиям обучения в общеобразовательных учреждениях».

15. Учебно-материальная база общеобразовательного учреждения. Педагогико-эргономические требования к средствам обучения. Часть III. - М.: ИОСО РАО, 1999.

16. http://gbs.spb.ru/center/po.html

17. http://www.arialit.com

18. http ://www.bizfonts.com/code39font/

19. http://www.idautomation.com

20. http://www.pripit.perm.ru

МЕТОДЫ ПОСТРОЕНИЯ ЛОГИКИ ВИЗУАЛИЗАТОРОВ

АЛГОРИТМОВ

М.А. Казаков, асп. Тел.: (812) 233-42-98, E-mail: kazakov@rain.ifmo.ru

А.А. Шалыто, д.т.н., проф., зав. каф. Тел.: (812) 247-95-45, E-mail: shalyto@mail.ifmo.ru Кафедра Технологий программирования Санкт-Петербургский государственный университет информационных технологий, механики и оптики http://is.ifmo.ru, http://www.ifmo.ru

The following article describes tree methods to algorithm visualization logic implementation: heuristic, straight automata implantation, formal conversion from algorithm to automata. All methods are used for Bubble sorting algorithm visualization in order to compare them.

Введение

Одним из методических приемов [1-4] при обучении программированию и дискретной математике является разработка визуали-заторов классических вычислительных алгоритмов [5,6].

Визуализатор - это программа, иллюстрирующая выполнение алгоритма при определенных входных данных. Примерами визуализаторов могут служить, например, программа, занимающаяся построением гра-

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

Перечислим отличительные характеристики визуализаторов:

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

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

- компактность визуализаторов ввиду их реализации в виде 1ауа-аилетов. Это при

0 1 2 3 4 5 6 7 в 9

5 6 3 10 9 7 11 2 12 14

Сравниваемэлементы с номерами 3 и 4

>> Заново | Генерация | Авто | < | Пауза: 250 > |

Рис. 1. Интерфейс визуализатора

с 0: Старт \

V ¡ = 0 /

I >= п

( 1: Следующий ^ иначе ( 2: Всплытие \ 3: иначе

) = 0; ¡++; ч > 4 иэ

1 :]>= п- \ + 1 К /

2:а[)-1] > >Ш 1

/ : Обмен N

ч э^р (^ ] - 1); /

Рис. 2. Граф переходов, построенный непосредственно по словесному описанию алгоритма

необходимости упрощает передачу визуали-заторов в сети Интернет, что особенно важно при дистанционном обучении.

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

- графическое и словесное разъяснение действий алгоритма на конкретных наборах входных данных. При этом понимание алгоритма не обязательно, поскольку именно визуализатор должен объяснить действие алгоритма;

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

Рис. 3. Схема алгоритма «пузырьковая сортировка»

( 0 Ига.-» 1 <п

I

1

(\. Иикциагмхкуя

1 ] -

& Слсаучш*« ^ К Л

|<п_./■?

> ----Л *7Т

Я55Ни55ДТ\г'" п.'1 *'44

1 (<п I* т и

4Н1>«[М

( 3 _^ < Вслгцгго \

[ »»1И-« *-— }

V____1:) < п • I ♦ 1 ЫГЧ_' _/

2:1 < п. | » 1 54

«ОЧ>»|П

Рис. 4. Автомат Мура, построенный по схеме алгоритма «пузырьковая сортировка»

Визуализатор выполняет обычно следующие функции:

1) пошаговое выполнение алгоритма;

2) просмотр действия алгоритма при разных наборах входных данных, в том числе и введенных пользователем;

3) просмотр действия алгоритма в динамике.

4) перезапуск алгоритма на текущем наборе входных данных.

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

Анализ литературы [7, 8], а также реализации визуализаторов [9 - 12] показал, что технологии разработки визуализаторов рассматриваемого класса обычно являются эвристическими.

Опыт построения визуализаторов [3, 4] свидетельствует о том, что при эвристическом подходе каждый алгоритм требует индивидуальной реализации. Другими словами, технология разработки визуализаторов рассматриваемого типа отсутствовала, и основные успехи в этой области были педагогическими [3, 4, 13].

При этом основным недостатком является то, что обычно при построении визуа-лизатора используются только такие понятия, как «входные и выходные переменные», а понятие «состояние» в явном виде не используется. При традиционном подходе состояния задаются неявно, как значения внутренних переменных, которые часто называются «флагами». Однако, по мнению авторов, совершенно естественным кажется, что каждый шаг визуализации необходимо проводить в соответствующем явно выделенном состоянии или на переходе. Поэтому при построении программ визуализации целесообразно использовать технологию автоматного программирования, базирующуюся на конечных автоматах [14].

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

В настоящей работе показано, что формальное построение графа переходов по

программе превращает процесс разработки визуализаторов в технологию.

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

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

- эвристический (без использования автоматов для описания поведения визуализатора);

- непосредственное построение автомата по словесному описанию алгоритма;

- формальное построение автомата по схеме алгоритма.

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

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

- 1)-го элемента. После этого сортируются (п - 2) элементов и т.д. Таким образом, за (п

- 1) проход массив будет отсортирован.

Интерфейс визуализатора

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

Эвристический метод

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

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

В заключение отметим, что для построения визуализатора в целом эту программу

необходимо эвристически связать с пользовательским интерфейсом.

Листинг 1. Программа, реализующая алгоритм «пузырьковая сортировка» традиционным путем

public class БиЬЫе {

private static int a[] = {4, 3, 7, 1, 9, -2);

private static int n = a.length;

private static int i = 0;

private static int j = 0;

public static void main(String[] args) { for (int i = 1; i < n; i++) (

for (int j =1; j<n - i + 1; j++) ( if (a[j-1] > a [j]) (

Листинг 3. Программа, изоморфная графу переходов, построенному формально по схеме алгоритма

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

out() ;

soap(j,j-l¡;

11 Пошаговый вывод

}

out();

// Обиен и вывод

private static void swap (int l, int j) ( int t = a[i]; a[i] = аШ; a[j] = t;

}

private static void out () {

for (int i = 0; i < n; i++) (

System.out.print("" + a[i] +" ");

}

System.out.println(J;

>

purine class cunDieArormaj. (

public static final int STATE_START = 0

public static final int STATE_INIT1 = 1

public static final int STATE_INIT2 = 2

public static final int STATE_SWAP = 3

public static final int STATE_EMERGE = 4

public static final int STATE_HEXT = 5

private static int 3tate = STATE _START; private static int a[] = (4, 3, 7, 1, 9, -2}; private static int n = a.length; private static int i = 0; private static int j = 0;

public static void main(String[] argsj { do (

nextStep () ; > while (state !- STATE_START); out();

)

private static void nextStep£) { switch(state) {

case STATE_START:

state = STATE_IHIT1; breali;

case STATE_IHIT1: 1-1;

if [i < n) {

state - STATE_INIT2; } else {

state = STATE_START;

)

break;

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

4 3 7 1 9 -2 3 4 7 1 9 -2 3 4 1 7 9 -2 3 4 17-29 3 14 7-29 3 14-279 1 3 4 -2 7 9 13-2479 1 -2 3 4 7 9 -213479

Листинг 2. Программа, реализующая алгоритм «пузырьковая сортировка», построенная по графу переходов

public class bubbleA {

static final int STATE_IHIT = 0; public static final int STATE_NEXT = 1; public static final int STATE_EMERGE = 2; public static final int STATE_SWAP =3;

private static int state = STATE_INIT;

private static int a[] = {4, 3, 7, 1, 9, -2};

private static int n = a.length;

private static int i = 0;

private static int 3=0;

public static void main(String[] args) { do {

nextStep () ; } while (state != STATE_INIT); out();

>

private static void nextStep() { switch(state) {

case STATE INIT:

state break STATE_NEXT:

STATEJJEXT;

case STATE_INIT2: j = i;

if (j < n - i + 1 && a[ j-1] > a [j]) { state = STATE_SUAP;

> else if (j < n - i + 1 && a[j-1] <= a [j]) {

state = STATE JEMERGE; } else {

state = STATEJJEXT;

>

break;

// Пошаговый вывод

case STATE_SWAP: out () ;

swap(j,j-l);

state = STATE_EMERGE;

break;

case STATE_EME RGE:

if (j < n - i + 1 && a[j —1] > a [j]) { state = STATE_SWAP;

> else if (Э < n - i + 1 «« a[j-l] <= a [j]) {

state = STATE_EHERGE;

> else {

e = STATE_NE XT;

>

if (i < n) <

state = STATE_INIT2; > else {

state = STATE_STAJRT;

i/ int j) {

private static void swap (in int t = a[i]; a[i] = a[j]; a[3] = t;

private static void out () {

for (int i = O; i < n; i++) {

System.out.print("" + a[i] +" ");

t.pr intln () ;

if (i >. n] <

state = STATE_IMIT; > else <

state = STATE_EHERGE;

)

breaji ;

STATE_EMERGE:

Э++;

it (j >= tl - i + II (

state = STATE_MEXT; ) else if (a[j-1] > a [j]) ( state = STATE_SWAP;

)

break ;

STATE_SWAP: out() ;

swap(j,j-1);

state = STATE_EMERGE;

break ;

// Пошаговый вывод

// Обмен и вывод

Автоматный метод

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

На рис.2 приведен граф переходов автомата, построенного непосредственно по словесной формулировке алгоритма.

Программа, изоморфная этому графу переходов, приведена в листинге 2.

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

Построение визуализатора по этой программе выполняется на основе подхода, изложенного в [15].

Формальное построение автомата по схеме алгоритма

Этот метод состоит в следующем:

- по словесному описанию алгоритма эвристически строится реализующая его программа;

- по программе эвристически строится схема алгоритма; по схеме алгоритма формально строится граф переходов конечного автомата;

- граф переходов формально и изоморфно реализуется соответствующей программой;

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

Программа для рассматриваемого алгоритма приведена в листинге 1. На рис. 3 приведена схема алгоритма, построенная по этой программе. В [16] описан метод преобразования схемы алгоритма в граф переходов (в данном случае автомата Мура). На рис. 4 приведен этот граф, построенный на

основе указанного метода. Программа, изоморфная этому графу переходов, приведена в листинге 3.

Заключение

На основе выполненной работы можно сделать следующие выводы:

• несмотря на большую распространенность «эвристический подход к построению визуализаторов алгоритмов» методом не является;

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

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

Дальнейшее совершенствование методов построения визуализаторов связано, как с автоматизацией третьего метода, так и с его развитием, т.е. построением автоматов для визуализации алгоритма при его прохождении не только в прямом, но и в обратном направлении [17].

Аплет и исходный код программы ви-зуализатора приведены на сайте http://is.ifmo.ru в разделе «Визуализаторы».

Литература

1. Интернет-школа программирования. (http://ips.ifmo.ru/)

2. Казаков М.А., Мельничук О.П., Парфенов В.Г. Интернет - школа программирования в СПбГИТ-МО (ТУ). Реализация и внедрение // Всеросс. научн.-метод. конф. «Телематика'2002». - СПб., - 2002. -С.308-309. (http://tm.ifmo.ru/tm2002/db/doc/get_thes.php?id=170)

3. Столяр С.Е., Осипова Т.Г., Крылов И.П., Столяр С.С. Об инструментальных средствах для курса информатики // II Всеросс. конф. «Компьютеры в образовании». -СПб., 1994.

4. Казаков М.А., Столяр С.Е. Визуализаторы алгоритмов как элемент технологии преподавания дискретной математики и программирования // Междунар. научн.-метод. конф. «Телематика'2000» . - СПб., 2000. - С.189-191.

5. Кормен Т., Лайзерсон Ч., Ривест Р. Алгоритмы. Построение и анализ. - М.:МЦМНО.- 2000.-960 с.

6. Кнут Д. Искусство программирования. - Т. 1: Основные алгоритмы. - М.: Вильямс, 2001. -712 с.

7. Gitta D. Tutorial on Visualization. (http://www.siggraph.org/education/materials/HyperVis/domik /folien.html).

8. Owen G. S. Visualization Concepts: Overview. (http://www.siggraph.org/education/materials/HyperVis/ concepts/overview.htm).

9. Complete Collection of Algorithm Animations. (http://www.cs.hope.edu/~alganim/ccaa/).

10. Interactive Data Structure Visualizations. (http://www.student.seas.gwu.edu/~idsv/idsv.html).

11. Jawaa examples. (http://www.cs.duke.edu/csed/jawaa2/examples.html).

12. Sorting Algorithms. (http://www.cs.rit.edu/~atk/Java/Sorting/sorting.html)

13. Rling G., Naps T. L. A Testbed for Pedagogical Requirements in Algorithm Visualizations. // 7th Annual SIGCSE/SIGCUE Conference on Innovation and Technology in Computer Science Education (ITiCSE'02). (http://nibbler.tk.informatik.tu-darmstadt.de/publications/2002/TestbedPedReqinAV.pdf)

14. Шалыто А. А. Технология автоматного программирования // Мир ПК. - 2003. - № 10, - С.74-78. (http://is.ifmo.ru, раздел «Статьи»).

15. Казаков М.А., Шалыто А. А. Использование автоматного программирования для реализации визуализаторов // Компьютерные инструменты в образовании. - 2004. - № 2, - С.19-33. (http://is.ifmo.ru, раздел «Статьи»).

16. Шалыто А.А., Туккель Н.И. Преобразование итеративных алгоритмов в автоматные // Программирование. - 2002. - № 5, -С.12-26. (http://is.ifmo.ru, раздел «Статьи»).

17. Казаков М.А., Корнеев Г.А., Шалыто А.А. Разработка логики визуализаторов алгоритмов на основе конечных автоматов // Телекоммуникации и информатизация образования. - 2003. - № 6. - С. 27-58. (http://is.ifmo.ru, раздел «Статьи»).

ИНТЕЛЛЕКТУАЛЬНОЕ УПРАВЛЕНИЕ ОТКРЫТЫМ ОБРАЗОВАНИЕМ

И.И. Парфенов, д.т.н., первый зам. главного конструктора ВЭБИС М.Я. Парфенова, д.т.н., зам. главного конструктора В.И. Иванов, к.т.н., главный конструктор, президент НИФ - технологииXXI века В.И. Козырев, к.э.н., Министр промышленности и науки правительства Московской

области

Тел.: (095) 156-38-72, Е-mail: mari@mail.rb.ru Национальный инновационный фонд - технологии XXI века (Москва) Всероссийская объединенная электронная биржа интеллектуальной собственности

(ВЭБИС)

Structural, mathematical and algorithmic aspects of intellectual management are considered by open education.

Введение

Интеллектуальное управление открытым образованием определяется задачами принятия решений в условиях определенности, неопределенности и риска с необходимостью оценки и минимизации непроизводительных затрат от реализации решений и автоматизируется на базе интеллектуальной системы. Автоматизированная информационная система (АИС) называется интеллектуальной системой, если она способна автоматически выполнять процедуры принятия решений (ППР) за допустимое время и генерировать детермини-

рованную и упреждающую реакцию на основе формализованных экспертных знаний, математических методов и моделей. Наиболее высокий уровень интеллектуальности достигается в автоматизированных системах с принятием решений (АСПР), которые обеспечивают детерминированную и упреждающую реакцию применением обратной алгоритмической связи с Интеллектуальным модулем - основы жизнедеятельности естественных организованных систем. Принципом обратной алгоритмической связи в АСПР утверждается, что разность энтропии автоматизированной системы до и после получения информации уменьшает неопределенность в анализе и оценке состояния объекта управления (ОУ) и неоднозначность в выборе способов формирования управляющих воздействий.

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