
- •Введение
- •Порядок разработки олимпиадных задач
- •Общие требования к олимпиадным задачам
- •Формирование комплектов олимпиадных задач
- •Типы олимпиадных задач
- •Типы задач для 9 – 11 классов
- •Типы задач для 7 – 8 классов
- •Типы задач для 5 – 6 классов
- •Содержание олимпиадных задач
- •Математические основы информатики
- •Разработка и анализ алгоритмов
- •Основы программирования
- •Средства икт
- •Операционные системы
- •Основы технологии программирования
- •Методы вычислений и моделирование
- •Компьютерные сетевые технологии
- •Примеры олимпиадных задач
- •Рекомендации по проверке и оцениванию решений задач
- •Методика проверки решений задач участников
- •Система оценивания решений участников
- •Технология проверки решений участников
- •Список рекомендуемой литературы
Коды Грея: подмножества, сочетания, перестановки **
Таблицы инверсий перестановок **
Разбиения на подмножества. Числа Стирлинга **
Скобочные последовательности **
Теория графов
Типы графов
Маршруты и связность
Деревья
Операции над графами *
Остовные деревья *
Раскраска графов *
Эйлеровы и гамильтоновы графы *
Покрытия и независимость **
Укладка графов. Плоские (планарные) графы **
Двусвязность графа. Мосты, блоки, точки сочленения **
Связь ориентированных ациклических графов и отношений порядка. Транзитивное замыкание **
Двудольные графы **
Потоки и сети **
Основы теории синтаксического анализа
Обратная польская запись
Синтаксический анализ простых выражений *
Регулярные выражения, конечные автоматы **
Основы теории вероятностей
Понятие вероятности и математического ожидания *
Аксиомы теории вероятностей **
Основы вычисления вероятностей **
Основы теории игр
Понятие игры и результата игры
Простейшие игры
Простейшие стратегии игры *
Игры на матрицах **
Решение игровых задач с использованием функции Гранди **
Разработка и анализ алгоритмов
Алгоритмы и их свойства
Понятие алгоритма
Концепции и свойства алгоритмов
Запись алгоритма на неформальном языке
Структуры данных
Простые базовые структуры
Множества
Последовательности
Списки
Неориентированные графы *
Ориентированные графы *
Деревья *
Пирамида и дерево отрезков **
Сбалансированные деревья **
Хэш-таблицы и ассоциативные массивы **
Бор **
Основы анализа алгоритмов
Нотация О большое *
Стандартные классы сложности *
Асимптотический анализ поведения алгоритмов в среднем и крайних случаях *
Компромисс между временем и объемом памяти в алгоритмах **
Использование рекуррентных отношений для анализа рекурсивных алгоритмов **
NP-полнота **
Алгоритмические стратегии
Алгоритмы полного перебора
"Жадные" алгоритмы *
Алгоритмы "разделяй и властвуй" *
Перебор с возвратом *
Эвристики **
Рекурсия
Понятие рекурсии
Рекурсивные математические функции *
Простые рекурсивные процедуры *
Реализация рекурсии *
Рекурсивный перебор с возвратами **
Фундаментальные вычислительные алгоритмы
Простые численные алгоритмы
Классические комбинаторные алгоритмы
Алгоритмы с подмножествами: генерация, восстановление по номеру и построение номера, генерация следующего и предыдущего (прибавление и вычитание единицы)
Алгоритмы последовательного и бинарного поиска
Алгоритмы с сочетаниями и перестановками (генерация, восстановление по номеру и построение номера, генерация следующего и предыдущего) *
Квадратичные методы сортировки (сортировка методом выбора, сортировка вставками) *
Сортировка подсчетом за линейное время *
Алгоритмы сортировки за время O(N log N) (быстрая сортировка, пирамидальная сортировка, сортировка слиянием) **
Цифровая сортировка **
Алгоритм вычисления номера слова в лексикографически упорядоченном множестве перестановок его символов **
Арифметика многоразрядных целых чисел **
Числовые алгоритмы
Разложение числа на простые множители
Решето Эратосфена *
Алгоритм Евклида *
Расширенный алгоритм Евклида. Способы реализации алгоритма без деления **
Решение линейных сравнений с помощью алгоритма Евклида **
Эффективная реализация решета Эратосфена (O(n)) **
Эффективная проверка числа на простоту **
Быстрые алгоритмы разложения чисел на простые множители. Ро-эвристика **
Алгоритмы на строках
Поиск подстроки в строке. Наивный метод *
Алгоритмы поиска подстроки в строке за O(N+M) **
Периодические и циклические строки **
Алгоритм поиска нескольких подстрок за линейное время **
Алгоритмы на графах
Вычисление длин кратчайших путей в дереве
Обход графа в ширину и в глубину
Способы реализации поиска в ширину (“наивный” и с очередью) *
Проверка графа на связность *
Алгоритмы поиска кратчайшего пути во взвешенных графах *
Топологическая сортировка графа, нахождение компонент сильной связности и построение диаграммы порядка **
Циклы отрицательной длины – критерий наличия, поиск **
Задача о синхронизации времени и задача о системе неравенств **
Алгоритм поиска эйлерова цикла (в том числе лексикографически минимального) **
Нахождение транзитивного замыкания графа **
Алгоритмы нахождения взвешенных остовных деревьев **
Алгоритмы отыскания компонент двусвязности, точек сочленения, мостов с помощью поиска в глубину **
Алгоритм нахождения максимального паросочетания и минимального вершинного покрытия в двудольном графе **
Поиск максимального потока в сети **
Динамическое программирование
Основная идея динамического программирования. Рекурсивная реализация и развертывание в цикл *
Задачи с монотонным направлением движения в таблице *
Задача о рюкзаке – решение методом динамического программирования *
Оптимизация решения задачи динамического программирования на примере задачи о рюкзаке (исключение лишних параметров) **
Восстановление решения в задачах динамического программирования **
Общая схема решения задач динамического программирования **
Алгоритмы теории игр
Динамическое программирование и полный перебор как методы решения игровых задач **
Игры на ациклическом графе **
Оценка позиций. Альфа-бета отсечение **
Геометрические алгоритмы
Алгоритмы определения совпадения точек, лучей, прямых и отрезков
Представление точек, прямых и отрезков на плоскости *
Нахождение расстояний между объектами на плоскости **
Алгоритмы определения пересечения отрезков на плоскости **
Алгоритмы вычисления площади многоугольника с заданными координатами вершин. Случай целочисленной решетки (формула Пика) **
Алгоритмы построения выпуклой оболочки (алгоритмы Грэхема и Джарвиса) **
Окружности на плоскости, пересечение их с другими геометрическими объектами **
Эффективный алгоритм нахождения пары ближайших точек на плоскости **
Основы программирования
Языки программирования
Классификация языков программирования
Процедурные языки
Основы синтаксиса и семантики языков высокого уровня *
Формальные методы описания синтаксиса: форма Бэкуса-Наура **
Объектно-ориентированные языки **
Основные конструкции программирования
Переменные, типы, выражения и присваивания
Основы ввода/вывода
Операторы проверки условия и цикла
Функции и передача параметров *
Структурная декомпозиция **
Переменные и типы данных
Концепция типа данных как множества значений и операций над ними
Свойства объявлений (связывание, область видимости, блоки и время жизни) *
Обзор проверки типов *
Типы структур данных
Примитивные типы
Массивы
Записи *
Стратегии выбора подходящей структуры данных *
Представление данных в памяти **
Статическое, автоматическое и динамическое выделение памяти **
Указатели и ссылки **
Связанные структуры **
Методы реализации стеков, очередей и хэш-таблиц **
Методы реализации графов и деревьев **
Механизмы абстракции.
Классы и объекты, замыкания *
Процедуры, функции и итераторы как механизмы абстракции *
Механизмы параметризации (ссылки и значения) *
Модули в языках программирования *
Особенности программирования фундаментальных алгоритмов.
Стратегии решения задач
Роль алгоритмов в процессе решения задач
Стратегии реализации алгоритмов *
Реализация рекурсии *
Стратегии отладки **
Средства икт
Цифровая логика
Системы счисления
Компьютерная арифметика
Логические схемы *
Представление данных в памяти компьютера
Биты, байты и слова *
Представление числовых данных **
Системы с фиксированной и плавающей точкой **
Представление со знаковым битом и в дополнительном коде **
Представление нечисловых данных (коды символов, графические данные) **
Представление массивов и записей **
Организация работы компьютера
Принципы фон Неймана
Управляющее устройство: выборка инструкций, декодирование и выполнение *
Набор инструкций и виды инструкций (манипуляция данными, управление, ввод-вывод) *
Форматы инструкций **
Режимы адресации **
Механизм вызовов и возвратов из процедур **
Ввод-вывод и прерывания **
Устройство памяти компьютера
Организация основной памяти и операции с ней
Иерархия памяти *
Кодирование данных, сжатие данных и целостность **
Кэш-память **
Взаимодействие и коммуникации
Интерфейс пользователя. Основы ввода-вывода информации. Основы скоростного клавиатурного ввода.
Введение в сетевые технологии
Внешняя память, физическая организация и устройства *
Прямой доступ к памяти **
Операционные системы
Основы операционных систем
Роль и задачи операционных систем
Функционирование типичной операционной системы
Директории: содержимое и структура
Именование, поиск, доступ, резервное копирование *
Основные функции операционных систем
Абстракции, процессы и ресурсы *
Организация устройств *
Защита, доступ и аутентификация *
Управление памятью
Обзор физической памяти и аппаратного обеспечения, предназначенного для управления памятью *
Страничная и сегментная организации памяти **
Кэширование **
Основы технологии программирования
Программные средства и окружения
Среды программирования
Инструментальные средства тестирования *
Проверка соответствия программного обеспечения
Основы тестирования программ
Создание тестового плана и генерация тестов *
Тестирование методом "черного ящика" и "белого ящика" *
Тестирование элементов, интеграционное, системное тестирование и проверка соответствия **
Методы вычислений и моделирование
Основы вычислительной математики
Основные методы вычислительной математики
вычисление периметра и площади плоских фигур
вычисление объема плоских фигур *
вычисление значения и корней функции *
Арифметика с плавающей точкой *
Вычисление функций с шагом. Метод сеток **
Ошибка, устойчивость, сходимость**
Введение в моделирование
Понятия модели и моделирования
Основные типы моделей
Компоненты компьютерной модели и способы их описания: входные и выходные переменные, переменные состояния, функции перехода и выхода, функция продвижения времени *
Основные этапы и особенности построения компьютерных моделей *
Основные этапы использования компьютерных моделей при решении практических задач *
Компьютерные сетевые технологии
Сети и телекоммуникации.
Сетевые устройства
Среды передачи данных
Использование паролей и механизмов контроля доступа
Использование сетевых ресурсов
Сетевые архитектуры *
Вопросы качества обслуживания: производительность, восстановление после сбоев **
Беспроводные сети.
Специфические проблемы беспроводных и мобильных компьютеров
Установка программ на мобильные и беспроводные компьютеры *
Беспроводные локальные сети и линии связи *
Олимпиадные задачи для школьного и муниципального этапов Олимпиады должны отличаться тематическим разнообразием и давать возможность использовать в процессе их решения знания и умения, характерные для основных этапов решения задач с помощью компьютеров. В частности, такими этапами являются:
формализация задачи;
выбор формального метода и разработка алгоритма решения задачи, включая оценку правильности и сложности алгоритма;
программирование алгоритма и отладка программы;
тестирование полученной программы.
Очевидно, что чем выше уровень Олимпиады, тем сложнее предлагаемые задачи и больший уровень знаний и умений требуется от участников. Но совершенно не правильно считать, что эта сложность возрастает только за счет программирования. Программирование здесь, как и в информатике в целом, играет важную, но не определяющую роль, и названный выше перечень знаний и умений участников в гораздо большей степени охватывает другие разделы информатики как науки.