Научная статья на тему 'ПРИМЕНЕНИЕ ОФИСНЫХ ПРИЛОЖЕНИЙ ДЛЯ ИЗУЧЕНИЯ ДЕРЕВА ФЕНВИКА ПРИ ПОДГОТОВКЕ ШКОЛЬНИКОВ 8-9-Х КЛАССОВ К ОЛИМПИАДАМ ПО ИНФОРМАТИКЕ'

ПРИМЕНЕНИЕ ОФИСНЫХ ПРИЛОЖЕНИЙ ДЛЯ ИЗУЧЕНИЯ ДЕРЕВА ФЕНВИКА ПРИ ПОДГОТОВКЕ ШКОЛЬНИКОВ 8-9-Х КЛАССОВ К ОЛИМПИАДАМ ПО ИНФОРМАТИКЕ Текст научной статьи по специальности «Математика»

CC BY
29
5
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЭЛЕКТРОННЫЙ ОБРАЗОВАТЕЛЬНЫЙ РЕСУРС / МЕТОДИКА ОБУЧЕНИЯ ИНФОРМАТИКЕ / ОЛИМПИАДА ПО ИНФОРМАТИКЕ / ПРЕФИКСНАЯ СУММА / ДЕРЕВО ФЕНВИКА / ДЕРЕВО ОТРЕЗКОВ

Аннотация научной статьи по математике, автор научной работы — Любутов Олег Дмитриевич

В статье рассматривается использование популярного электронного образовательного ресурса MS Excel для изучения дерева Фенвика при подготовке школьников к олимпиадам по информатике.

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

Похожие темы научных работ по математике , автор научной работы — Любутов Олег Дмитриевич

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

THE USE OF OFFICE APPLICATIONS FOR THE STUDY OF THE SEGMENT TREE IN PREPARING SCHOOLCHILDREN OF THE 8-9 FORMS FOR COMPUTER SCIENCE OLYMPIADS

The article considers the use of a popular ELR of MSExcel to explain a Fenwick tree when training students for IT Olympiads.

Текст научной работы на тему «ПРИМЕНЕНИЕ ОФИСНЫХ ПРИЛОЖЕНИЙ ДЛЯ ИЗУЧЕНИЯ ДЕРЕВА ФЕНВИКА ПРИ ПОДГОТОВКЕ ШКОЛЬНИКОВ 8-9-Х КЛАССОВ К ОЛИМПИАДАМ ПО ИНФОРМАТИКЕ»

УДК 373

DOI 10.25688/2072-9014.2022.59.1.03

О. Д. Любутов

ПРИМЕНЕНИЕ ОФИСНЫХ ПРИЛОЖЕНИЙ ДЛЯ ИЗУЧЕНИЯ ДЕРЕВА ФЕНВИКА ПРИ ПОДГОТОВКЕ ШКОЛЬНИКОВ 8-9-Х КЛАССОВ К ОЛИМПИАДАМ ПО ИНФОРМАТИКЕ

В статье рассматривается использование популярного электронного образовательного ресурса MS Excel для изучения дерева Фенвика при подготовке школьников к олимпиадам по информатике.

Ключевые слова: электронный образовательный ресурс; методика обучения информатике; олимпиада по информатике; префиксная сумма; дерево Фенвика; дерево отрезков.

O. D. Lyubutov

THE USE OF OFFICE APPLICATIONS FOR THE STUDY OF THE SEGMENT TREE IN PREPARING SCHOOLCHILDREN OF THE 8-9 FORMS FOR COMPUTER SCIENCE OLYMPIADS

The article considers the use of a popular ELR of MSExcel to explain a Fenwick tree when training students for IT Olympiads.

Keywords: electronic learning resources; IT training methodology; IT Olympiads; prefix sum; Fenwick tree; segment tree.

Современные школьные олимпиады [3; 5-7] требуют от участников, работающих в обстановке ограниченного времени, полной концентрации внимания на решаемой задаче. Но решение задач на олимпиадах по информатике, в отличие от олимпиад по другим предметам, требует знания специфических алгоритмов и в особенности знания специфических структур данных, изучение которых не предусмотрено даже в рамках углубленной школьной программы по информатике.

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

© Любутов О. Д., 2022

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

Известно, что большое количество олимпиадных задач по информатике требуют для своего решения расчета префиксных сумм. Префиксной суммой массива a0, a1, a2, ..., an называется массив b0, b1, b2, ..., bn, определяющийся следующим образом:

b_i = 0; bo = ao; bi = ao + ai; b2 = ao + ai + a2;

b = a + a + ... + a .

n 0 1 n

Очевидно, что для вычисления значения bk нет необходимости каждый раз складывать значения всех элементов от a0 до a Достаточно вычислить значение суммы b + a Имея заполненный массив b, можно за одну операцию вычислить сумму на отрезке. Например, если требуется вычислить сумму всех элементов от ax до ay включительно, достаточно вычислить разность by - bx_1.

Приведем пример классической задачи с использованием префиксных сумм.

Задача «Рулетка». В игре «Рулетка» выигрыш регулярно сменяется проигрышем, и наоборот. Как выигрыш, так и проигрыш — это целые числа (положительные или отрицательные). Пускай имеется список из N партий, сыгранных в течение дня (1 < N < 1000), и для каждой партии задано значение выигрыша (или проигрыша) X. (-10000 < X. < 10000; 1 < i < N). Известно, что один из игроков сыграл несколько партий подряд. Требуется определить сумму максимального выигрыша игрока, а также номер партии k, с которой он начал игру, и номер партии m, после которой он закончил играть (1 < k, m < N).

Для решения данной задачи можно использовать префиксную сумму. Пройдя по массиву выигрышей и создав массив с префиксной суммой, можно за одно арифметическое действие (вычитание) находить выигрыш между k-й и m-й партиями:

b - bk1.

m k-1

Таким образом, сложность алгоритма, решающего данную задачу, сводится к асимптотике O (n2), что вполне допустимо для заданной размерности N. Если же не использовать префиксную сумму, то сложность возрастает до O (n3), что не позволит программе уложиться в отведенное время.

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

изменения необходимо заново пересчитывать префиксную сумму. Рассмотрим следующую задачу.

Задача «Мороженое». В одном городе живет дегустатор мороженого. В каждый из d дней (1 < d < 10 000) он выходит из дома и идет по улице, на которой расположены N (1 < N < 10 000) киосков с мороженым, пронумерованных от 0 до N - 1. В каждом киоске продается один тип мороженого стоимостью Sk (1 < Sk < 100, 0 < k < N - 1). Дегустатор идет вдоль улицы, удерживаясь от покупки мороженого. У киоска с номером a у него заканчивается сила воли, и он начинает покупать по одному мороженому в каждом киоске, начиная с киоска a.

Последнее мороженое он покупает в киоске с номером b (0 < a < b < N). Известно, что ежедневно (в i-й день) только один из киосков (с номером k.) может изменить цену мороженого на следующий (i + 1) день. Требуется написать программу, которая по входным значениям d, N, (S0 ^ SN_ j), а также по ежедневным значениям a., b., k., Ski определит сумму, которую дегустатор затратил на покупку мороженого за d дней.

Если применять для решения данной задачи префиксную сумму (как в предыдущей задаче), то асимптотическая сложность алгоритма будет O (n2), потому что при изменении цены на мороженое придется выполнять массовую операцию по пересчету префиксной суммы массива. Такая же сложность алгоритма будет и в случае, если решать данную задачу методом «грубой силы» и ежедневно вычислять сумму цен на мороженое во всех киосках, начиная с киоска с номером a. и заканчивая киоском с номером b.. Для более эффективного решения данной задачи можно использовать дерево Фенвика.

Деревом Фенвика называется структура данных, позволяющая изменять значения массива и находить значение некоторой ассоциативной функции f на произвольном отрезке a0, ap a2, ..., an массива за асимптотику O (log2 n). В отличие от дерева отрезков функция должна быть обратимой. Чаще всего в качестве f берутся функции суммы, произведения, сложения по модулю два. Дерево Фенвика реализуется с помощью дополнительного массива размерности n f f f ...,fn).

Рассмотрим операции, которые можно реализовывать с помощью дерева Фенвика:

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

7 , = 7 | (7 + 1).

next prev 1 4 prev '

Согласно этой формуле в массиве f будет изменено не более чем log2 n элемен-

2. Операция вычисления функции на префиксе. Для вычисления функции, например суммы элементов a a a ..., ak , необходимо вычислить сумму элементов массива f, индексы которых определяются следующей формулой:

i f = i & (i + 1) - 1 (при этом in = k).

next prev 4 prev ' x r 0 '

Согласно этой формуле в итоговую сумму будет добавлено не более log2 k элементов массива f

Знаки в формулах вычисления очередного значения индекса массива («|» и «&») означают поразрядную дизъюнкцию и поразрядную конъюнкцию. Вычисление значения суммы на отрезке осуществляется вычитанием значений сумм на префиксах (sum (а, b) = sum (b) - sum (a - 1)).

Следует заметить, что подобное математическое описание дерева Фенвика вызывает определенные сложности при усвоении учениками 8-9-х классов. Для повышения наглядности имеет смысл представить формулы изменения индексов в виде числовых рядов следующего вида:

Для изменения элемента: Требуется изменить значения элементов:

ао /о> /1' /3' /7' /15' /31' /63' •••

а1 /1'/3'/7'/15'/31'/63' •"

а2 ■/2'/3' /7' /15' /31' /63' •

аз /з' /т /15' /31' /63' •

Для вычисления суммы: Требуется сложить значения элементов:

а0 - ах /1

ао - а2 /' /

ао - а5 /з> /5

а0 - а7 /7

а0 - а14 /7' /11' Аз' /14

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

Реализовать подобную модель можно с помощью программы MS Excel, входящей в пакет MS Office (см. рис. 1). В данной модели изображены три одномерных массива: а - массив исходных (входных) значений, f — массив, реализующий дерево Фенвика, и массив sum - выходной массив префиксных сумм. При вводе чисел в столбец B осуществляется автоматический пересчет значений в строке 3 и столбце V. Стрелками указаны взаимосвязи при вычислении элементов в массивеf и массиве sum. При работе с данной моделью ученики изменяют значения в массиве а и в динамике наблюдают соответствующие изменения в массивах sum иf Стрелки помогают понять, почему произошли изменения в тех или иных элементах массивов.

Если присвоить элементу входного массива (например, а2) значение 5, то значения массивов f и sum изменятся (см. рис. 2).

АВСРЕРСН1.1К1_ММ0Р01г5ТиУ VI/

Массив дерева Фенвика для вычисления префиксных сумм

то 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

а 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ит()

0 ► 0 0+0

1 0 0 + 1

2 V 0 0 + 2

3 0 0 + 3

4 0 0 + 4

— ► -►

5 —► —► 0 0 + 5

-►

Ь 7 р- 0 0 0 + 6 0+7

► —►

8 -► 0 0 + 8

9 0 0 + 9

10 0 + 10

11 0 0 + 11

1? 0+12

13 0 0 0+13

14 £ Г! 0+14

15 ► —> 0 0 + 15

16 ► —* 0 0 + 16

Рис. 1. Функционирующая модель дерева Фенвика

АВСОЕРеН! .1К1_ММОРС!К5ТиУ \Л/

Массив дерева Фенвика для вычисления префиксных сумм

ТО 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

а 0 0 а 0 5 5 а а а □ 0 0 а а а а 5 □ —> а ит() 0+0

2 3 5 —► 5 5 0 + 2 0 + 3

4 5 * —► —+ — Ь 5 0 + 4 0 + 5

0 6 ——► 5 0 + 6

Рис. 2. Массив дерева Фенвика для вычисления префиксных сумм

Из рисунка 2 видно, что все суммы, начиная с 0 ^ 2, стали равны 5. Если присвоить элементу входного массива (например, а4) значение -3, то значения массивов f и sum опять изменятся (рис. 3).

Рис. 3. Массив дерева Фенвика для вычисления префиксных сумм

С помощью дерева Фенвика можно реализовать решение задачи «Мороженое» за асимптотику O (n log2 n), так как n — количество дней, а изменение цены на мороженое и вычисление стоимости съеденного мороженого на отрезке улицы имеют сложность O (log2 n).

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

Задача «Белки». В городском парке живут M (1 < M < 10 000) белок. На зиму белки запасают орехи. Для этого они облюбовали аллею из N (1 < N < 10 000) деревьев, пронумерованных от 0 до N - 1. В каждом дереве есть дупло. Каждая белка, собрав Sk орехов (1 < Sk < 100, 0 < k < N - 1) раскладывает по одному ореху в каждое дупло подряд, начиная с дерева с номером а и заканчивая деревом с номером b (b = а + Sk- 1, 0 < а < b < N). Требуется написать программу, которая по входным значениям M, N, (S0 - SN-1) определит номер дерева, в дупле которого будет максимальное количество орехов.

Для решения этой задачи построим обратную модель дерева Фенвика (см. рис. 4). В этой модели входными являются значения массива sum, а выходными — значения в массиве а. Направление стрелок указывает порядок расчета. Для задания входного значения k на отрезке от а до b требуется ввести два значения: значение k в префикс b (sum[b] := k) и значение -k

в префикс а - 1 ^ит[а-1] := -к). Например' если требуется присвоить всем элементам выходного массива от а[3] до а[6] значение 5' то нужно присвоить sum[6] число 5' а sum[2] — число -5 (рис. 4).

А В с О Г в н 1 J К м N О р О к 5 Т и V 1«

Массив дерева Фенвика для вычисления префиксных сумм

2 3 Ч] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

а 0 0 — -5 * 0 5 * 'о 0 0 0 0 0 0 0 0 0 итЦ

4 5 1 0 0 + 1

2 0 — < -5 0 + 2

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

7 3 5 4- 0 + 3

д 4 5 — < ----- 0 + 4

9 5 5 ч- 0 + 5

0 1 6 7 5 0 — <4 5 0 + 6 0 + 7

—■*

2 8 0 0 + 8

Рис. 4. Массив дерева Фенвика для вычисления префиксных сумм

Проиллюстрируем задачу «Белки» на небольшом наборе данных (рис. 5).

Пусть у нас есть 5 белок и 16 деревьев (от 0 до 15):

- первая белка размещает 11 орехов с дерева № 0 по дерево № 10;

- вторая белка размещает 11 орехов с дерева № 5 по дерево № 15;

- третья белка размещает 5 орехов с дерева № 2 по дерево № 6;

- четвертая белка размещает 5 орехов с дерева № 6 по дерево № 10;

- пятая белка размещает 10 орехов с дерева № 4 по дерево № 13.

В столбце V таблицы записаны единицы в элементах' соответствующих концам отрезков' и минус единицы в элементах' предшествующих началам отрезков. В столбце В таблицы мы видим результат — количество орехов в каждом дереве. Легко заметить' что максимальное количество орехов было положено в дупло дерева № 6. Сложность алгоритма решения данной задачи имеет асимптотику О(п1о82п) потому что и операция по раскладке орехов одной белкой' и проверка количества орехов в одном дупле имеют сложность

О (1082 п).

Если сравнивать дерево Фенвика с аналогичными структурами данных' например с деревом отрезков' то можно отметить следующие преимущества и недостатки (см. табл. 1).

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

А 3 С D Е F G Н 1 J К L M N О Р Q R S Т и V W

Массив дерева Фенвика для вычисления префиксных сумм

2 3 ТО 0 1 2 3 4 5 6 7 S 9 10 11 12 13 14 15 16

а 0 — -1 0 -2 -1 0 0 2 * '1 0 1 0 1 0 um()

4 5 1 1 л= 1 -1 0 + 1

4—

fi 2 2 4= — < 0+2

7 3 2 ч— •4- -1 0 + 3

i—

g 4 3 | — •* ----- -1 0 + 4

9 5 4 1 ■4 Ч- -1 0 + 5

0 1 6 7 5 4 1 <— — 4 0 + 6 0 + 7

1— Ч

2 8 9 4 4 л= а= •4 0 + 8 0 + 9

■4

m 4 * ч 7 0+10

S 11 2 i -4 0+11

•в

IP ? а— ■4- -4 0 + 12

7 13 2 4- 4= ■4 1 0 + 13

4

Я 14 1 1- * •4- ■4 0+14

9 15 1 M- •4 1 0+15

Рис. 5. Массив дерева Фенвика для вычисления префиксных сумм

Таблица 1

Структура данных Преимущества Недостатки

Дерево Фенвика Простота программной реализации. Реализуется итерационно. Занимаемый объем памяти п Позволяет реализовывать только обратимые функции

Дерево отрезков Позволяет реализовывать не только обратимые функции, но и необратимые (например, максимум) Требует рекурсивной реализации и объема памяти 2п

Литература

1. Бондаренко С., Бондаренко М. Excel 2003. Популярный самоучитель. СПб.: Питер, 2005. 320 с.

2. Киммел П. Excel 2003 и VBA. Справочник программиста / П. Киммел и др. М.: Вильямс, 2005. 725 с.

3. Кирюхин В. М. Информатика: всероссийские олимпиады. Вып. 1. М.: Просвещение, 2008. 220 с.

4. Левитин А. В. Алгоритмы. Введение в разработку и анализ. М.: Вильямс, 2006. 576 с.

5. Меньшиков Ф. В. Олимпиадные задачи по программированию (+CD). СПб.: Питер, 2006. 315 с.

6. Мозговой М. В. Занимательные алгоритмы. Самоучитель. СПб.: Питер, 2004. 208 с.

7. Скиена С. С., Ревилла М. А. Олимпиадные задачи по программированию. Руководство по подготовке к соревнованиям. М.: КУДИЦ-Образ, 2005. 416 с.

8. Уокенбах Дж. Библия пользователя Excel 2003 (+CD). М.: Диалектика, 2007. 768 с.

Literatu^

1. Bondarenko S., Bondarenko M. Excel 2003. Populyarnyj samouchiteF. SPb.: Piter,

2005. 320 s.

2. Kimmel P. Excel 2003 i VBA. Spravochnik programmista / P. Kimmel i dr. M.: ViFyams, 2005. 725 s.

3. Kiryuxin V. M. Informatika: vserossijskie olimpiady. Vy'p. 1. M.: Prosveshhenie, 2008. 220 s.

4. Levitin A. V. Algoritmy\ Vvedenie v razrabotku i analiz. M.: ViFyams, 2006. 576 s.

5. Menshikov F. V. Olimpiadnye zadachi po programmirovaniyu (+CD). SPb.: Piter,

2006. 315 s.

6. Mozgovoj M. V. ZanimateFny'e algoritmy\ SamouchiteF. SPb.: Piter, 2004. 208 s.

7. Skiena S. S., Revilla M. A. Olimpiadnye zadachi po programmirovaniyu. Ruko-vodstvo po podgotovke k sorevnovaniyam. M.: KUDICz-Obraz, 2005. 416 s.

8. Uokenbax Dzh. Bibliya poFzovatelya Excel 2003 (+CD). M.: Dialektika, 2007. 768 s.

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