Оглавление | Глава 1. Информатика - ключевой предмет современной школы | 6 |
1. 1 Программирование | 6 |
1. 2 Парадигмы программирования | 11 |
1. 3 Основные идеи образовательной информатики по Сеймуру Пейперту | 16 |
1. 4 Информатика - ключевой инструмент развития интеллекта школьника | 19 |
1. 5 Олимпиадная информатика | 23 |
Литература | 31 |
Глава 2. Перебор и методы его сокращения | 32 |
2. 1 Перебор с возвратом | 32 |
2. 1. 1 Общая схема | 32 |
2. 1. 2 Задача о расстановке ферзей | 33 |
2. 1. 3 Задача о шахматном коне | 37 |
2. 1. 4 Задача о лабиринте | 40 |
2. 1. 5 Задача о парламенте | 41 |
2. 1. 6 Задача о рюкзаке (перебор вариантов) | 49 |
2. 1. 7 Задача о коммивояжере (перебор вариантов) | 50 |
2. 1. 8 Задача о секторах | 53 |
2. 2 Динамическое программирование | 59 |
2. 2. 1. Задача о Черепашке | 59 |
2. 2. 2 Треугольник | 60 |
2. 2. 3 Степень числа | 61 |
2. 2. 4 Автозаправка | 61 |
2. 2. 5 Алгоритм Нудельмана - Вунша | 62 |
2. 2. 6 Разбиение выпуклого N-угольника | 63 |
2. 2. 7 Задача о рюкзаке (динамическая схема) | 65 |
2. 2. 8 Задача о паркете | 68 |
2. 2. 9 «Канадские авиалинии» | 71 |
2. 3 Метод «решета» | 77 |
2. 3. 1 Решето Эратосфена | 78 |
2. 3. 2 Быки и коровы | 78 |
2. 4 Задачи | 81 |
Литература | 84 |
Глава 3. Алгоритмы на графах | 85 |
3. 1 Представление графа в памяти компьютера | 85 |
3. 2 Поиск в графе | 85 |
3. 2. 1 Поиск в глубину | 85 |
3. 2. 2 Поиск в ширину | 87 |
3. 3 Деревья | 88 |
3. 3. 1 Основные понятия. Стягивающие деревья | 88 |
3. 3. 2 Порождение всех каркасов графа | 90 |
3. 3. 3 Каркас минимального веса. Метод Краскала | 92 |
3. 3. 4 Каркас минимального веса. Метод Прима | 93 |
3. 4 Связность | 95 |
3. 4. 1 Достижимость | 95 |
3. 4. 2 Определение связности | 97 |
3. 4. 3 Двусвязиость | 98 |
3. 5 Циклы | 101 |
3. 5. 1 Эйлеровы циклы | 101 |
3. 5. 2 Гамильтоновы циклы | 102 |
3. 5. 3 Фундаментальное множество циклов | 103 |
3. 6 Кратчайшие пути | 105 |
3. 6. 1 Постановка задачи. Вывод пути | 105 |
3. 6. 2 Алгоритм Дейкстры | 107 |
3. 6. 3 Пути в бесконтурном графе | 108 |
3. 6. 4 Кратчайшие пути между всеми парами вершин. Алгоритм Флойда | 110 |
3. 7 Независимые и доминирующие множества | 112 |
3. 7. 1 Независимые множества | 112 |
3. 7. 2 Метод генерации всех максимальных независимых множеств графа | 113 |
3. 7. 3 Доминирующие множества | 117 |
3. 7. 4 Задача о наименьшем покрытии | 118 |
3. 8 Раскраски | 124 |
3. 8. 1 Правильные раскраски | 124 |
3. 8. 2 Поиск минимальной раскраски вершин графа | 125 |
3. 8. 3 Использование задачи о наименьшем покрытии при раскраске вершин графа | 128 |
3. 9 Потоки в сетях, паросочетания | 129 |
3. 9. 1 Постановка задачи | 129 |
3. 9. 2 Метод построения максимального потока в сети | 131 |
3. 9. 3 Наибольшее паросочетание в двудольном графе | 135 |
3. 10 Методы приближенного решения задачи коммивояжера | 139 |
3. 10. 1 Метод локальной оптимизации | 139 |
3. 10. 2 Алгоритм Эйлера | 141 |
3. 10. 3 Алгоритм Кристофидеса | 143 |
3. 11 Задачи | 145 |
Литература | 148 |
Глава 4. Олимпиады по информатике | 149 |
4. 1 Олимпиада-89 | 149 |
4. 2 Олимпиада - 90 | 151 |
4. 3 Олимпиада - 91 | 153 |
4. 4 Олимпиада - 92 | 155 |
4. 5 Олимпиада - 93 | 157 |
4. 6 Олимпиада - 94 | 160 |
4. 7 Олимпиада - 95 | 164 |
4. 8 Олимпиада - 96 | 167 |
4. 9 Олимпиада - 97 | 171 |
4. 10 Олимпиада - 98 | 175 |
Глава 5. Алгоритмы решения задач | 179 |
5. 1 Олимпиада-89 | 179 |
5. 2 Олимпиада - 90 | 186 |
5. 3 Олимпиада-91 | 190 |
5. 4 Олимпиада - 92 | 193 |
5. 5 Олимпиада - 93 | 195 |
5. 6 Олимпиада - 94 | 206 |
5. 7 Олимпиада-95 | 212 |
5. 8 Олимпиада - 96 | 215 |
5. 9 Олимпиада-97 | 223 |
5. 10 Олимпиада-98 | 226 |