Все видеоматериалы можно записать в Могилевском государственном областном институте развития образования. Обратитесь к своему учителю информатики за подробностями.
Курс "базовые и "продвинутые" алгоритмы для школьников.
авторы: | Пестов О.А. (Инженер-программист, Crystal Reality LLC) |
Мельников С.В. (неоднократный призёр всероссийских олимпиад, финалист TopCoder High School Tournament 2008) |
Копелиович С.В. (золотой медалист Международной олимпиады по информатике) |
Этот курс читался на летней компьютерной школе для участников олимпиад по информатике. Рассматривается широкий список алгоритмов: двоичный поиск, методы сортировки, поиска кратчайшего пути в графе и обход графа в глубину. Изучаются остовные деревья, динамическое программирование, динамика на деревьях, вопросы вычислительной геометрии и алгоритмы работы со строками.
1. Двоичный поискВ лекции подробно рассматриваются быстрая сортировка и сортировка слиянием, относящиеся к группе сортировок сравнения. Подробно разбираются сортировка подсчетом, цифровая и корзинная сортировки. Для каждого метода сортировки приводятся оценки времени выполнения. Рассматривается задача Райта для графов, приводится пример двоичного поиска по ответам.
2. Алгоритмы и методы сортировки. Алгоритмы нахождения кратчайшего пути в графеВ первой половине лекции подробно рассматриваются метод сортировки подсчетом и метод цифровой (поразрядной) сортировки. Приводятся оценки времени их выполнения. Дается определение понятия списка, программно реализуются основные операции работы со списком. Во второй половине лекции рассматриваются алгоритм поиска вершины в графе в ширину и алгоритм Дейкстры нахождения кратчайшего пути во взвешенном графе. Для каждого алгоритма приводятся варианты программной реализации, оценки времени выполнения, примеры практического использования.
3. Алгоритмы и методы поиска кратчайшего пути в графеВ данной лекции приводится метод хранения графа в виде списка. Подробно рассматриваются алгоритмы обхода графа в ширину и в глубину, алгоритмы Форда-Беллмана и Флойда поиска кратчайшего пути во взвешенном графе. Для каждого алгоритма приводятся варианты программной реализации, оценки времени выполнения, примеры практического использования
4. Алгоритм обхода графа в глубинуВ лекции рассматривается применение алгоритма обхода графа в глубину к решению практических задач. В начале лекции подробно рассматривается алгоритм метода и его программная реализация. Далее рассматривается применение метода к решению задач поиска циклов в графе, топологической сортировки вершин, поиска компонент связности и сильной связности в графе.
5. Алгоритм DFSВ первой половине лекции рассматривается применение алгоритма DFS к задаче о мостах и задаче поиска точек сочленения графа. Подробно разбираются алгоритмы решения и варианты их программной реализации. Формулируются и доказываются критерии существования эйлеровых цикла и пути в графе. Во второй половине лекции вводятся понятия новых типов данных - кучи и очереди с приоритетами. Определяются основные операции над элементами данных типов, приводятся варианты их программной реализации.
6. Системы непересекающихся множеств. Остовные деревьяВ лекции вводится понятие системы непересекающихся множеств (СНМ). Рассматриваются примеры СНМ, возможные варианты реализации, основные операции над элементами СНМ. Во второй половине лекции рассматриваются остовные деревья (ОД), объясняются основные алгоритмы построения ОД.
7. Динамическое программированиеВ первой части лекции повторяются основные моменты алгоритмов Прима и Краскала построения остовных деревьев. Во второй части вводится понятие динамического программирования, рассматриваются алгоритмы вычисления числа сочетаний из n по k. В заключительной части лекции подробно разбираются несколько примеров задач динамического программирования.
Курс "продвинутые" алгоритмы для школьников.
авторы: | Сатюков Р.В. (золотой медалист чемпионата мира по программированию) |
Давыдов О.С. (призер финала студенческого чемпионата мира по программированию) |
Этот курс читался на летней компьютерной школе для участников олимпиад по информатике. Рассматриваются вопросы сортировки, поиски в ширину и глубину, алгоритмы на графах, динамическое программирование. Демонстрируются алгоритмы работы с графическими объектами, отрезками и строками.
1.СортировкиРассматриваются вопросы сортировки: быстрая, сортировка слиянием, устойчивость сортировки, цифровая сортировка. Списки, операции с элементами массива.
2.Поиск в ширинуВ лекции даются алгоритмы поиска в ширину. Рассматриваются подвешенные и двоичные деревья. Дается пример решения задачи нахождения самого длинного пути.
3.Графы. Задача максимальных или минимальных остованных деревьевДается алгоритм поиска минимального остованного дерева. Алгоритм Прима. Рассматриваются другие алгоритмы нахождения минимального остованного дерева.
4.Матрицы. Поиск кратчайших путей в графахМатрицы и операции с ними. Числа Фибоначчи. Дается алгоритм поиска кратчайших путей в графах. Алгоритм Форда-Беллмана. Алгоритм Флойда.
5.Поиск в глубину и его применениеВ лекции рассматриваются Эйлеровы циклы и Эйлеровы пути. Поиск в глубину. Неориентированные графы.
6.Паросочетания в двудольном графеВ данной лекции рассматриваются независимые множества, паросочетания, вершинные покрытия. Даются определения, приводятся способы решения различных задач, рассматривается алгоритм Куна.
7.Динамическое программированиеВ данной лекции дается сравнение динамического программирования с перебором. Даются примеры решения различных задач с применением динамического программирования.
8.Простейшие геометрические объектыВ лекции даются определения простейших геометрических объектов, операции с ними. Рассматриваются примеры пересечения прямых. Окружности.
9.СтрокиДаются определения, рассматривается алгоритм Кнута-Морриса-Пратта. Бор: Базовые операции. Хэш.
10.ОтрезкиРассматриваются задачи на отрезках, операции при наличии обновлений на отрезке, построение дерева отрезков, подсчет суммы чисел на отрезке.
11.Задачи на отрезкахРассматриваются задачи на отрезках, построение дерева отрезков, подсчет сумм чисел на отрезке. Решение задач.