ЕГЭ информатика: кластеризация
21

** изображение создано или обработано с помощью ИИ.
Когда я впервые увидел слово «кластеризация» в демоверсии ЕГЭ, я подумал, что речь идёт о сложных методах машинного обучения. На практике в задании №27 под этим термином оказалась обычная геометрическая задача.
Вам не нужно знать алгоритм k-means. Достаточно уметь работать с координатами точек, проверять, попадает ли точка внутрь прямоугольной области, и находить центр кластера. То есть точку, у которой сумма расстояний до всех остальных точек группы минимальна. Сегодня я разбираю, как решать такую задачу на Python, без погружения в теорию машинного обучения.
Фиксируйте для себя, какую именно точку вы проверяете на попадание в прямоугольник и по каким границам. Это поможет избежать путаницы между координатами. Безопасность здесь в том, что вы не гадаете, правильный ли ответ. А можете в любой момент вернуться к своим расчётам и увидеть, где было принято каждое решение.
Что такое кластеризация в задании ЕГЭ (разбор условия)

** изображение создано или обработано с помощью ИИ.
В демоверсии условие звучит так: есть набор точек (звёзд) с координатами (x; y). Их нужно разложить на кластеры. Но правила этой группировки строгие, отличаются от тех, что используются в Data Science.
Ключевые правила экзаменационной кластеризации:
- Геометрия (Прямоугольники). Кластер определяется тем, что точки должны помещаться в прямоугольник данного размера (H × W). Это не абстрактная «близость», а жесткое геометрическое условие.
- Центр кластера. Это важный момент. Это не среднее арифметическое координат. Это одна из конкретных точек (звёзд), которая уже есть в этом кластере. У нее сумма расстояний до всех остальных точек минимальна.
- Расстояние. Используется обычная Евклидова метрика: d = √((x₁ − x₂)² + (y₁ − y₂)²).
Ваша задача — написать скрипт, который найдет эти центры и ответит на дополнительные вопросы (например, найти ближайшую звезду определенного спектрального класса к найденному центру).
Как тема кластеризации встречается в ЕГЭ по информатике

** изображение создано или обработано с помощью ИИ.
На экзамене кластеризация проверяется исключительно через работу с координатами и файлами. Вам не встретятся маркетинговые данные или таблицы с пользователями. Вместо этого вам дадут текстовый файл, где в каждой строке записаны:
- Координаты звезды x и y.
- Её спектральный класс и класс светимости (например, G2V).
Ваша задача — написать скрипт, который:
- Считает эти данные.
- Разобьет точки на группы (кластеры) по геометрическому правилу прямоугольника.
- Найдёт центры этих групп.
- Ответит на вопрос условия (например, найдёт ближайшую звезду определённого типа к центру).
Тренируйтесь именно на таких файлах из открытого банка ФИПИ. Скачайте демо-файл, напишите парсер и проверьте, правильно ли ваш код определяет границы прямоугольников. Это единственный способ подготовиться к заданию.
Алгоритм решения

** изображение создано или обработано с помощью ИИ.
Не нужно писать сложные итерационные алгоритмы группировки. Решение сводится к четкой последовательности действий и геометрии.
Алгоритм решения на Python:
- Парсинг: считайте файл. Сохраните координаты и классы звёзд в удобный формат (например, список кортежей [(x, y, class), …]). В файле Б данных много (до 10 000 точек), поэтому чтение должно быть быстрым.
- Фильтрация: вам нужно понять, какие точки попадают в какой прямоугольник. Часто в задаче координаты кластеров не даны явно, и их нужно определить или проверить условие непересечения прямоугольников.
- Поиск центра: для каждой точки внутри найденного кластера посчитайте сумму расстояний до всех остальных точек этого же кластера.
- Сравнение: та точка, где сумма расстояний минимальна — и есть искомый центр.
Важно: не используйте math.sqrt на каждом шаге внутри глубокого вложенного цикла без необходимости. Иногда достаточно сравнивать квадраты расстояний: (x₁ − x₂)² + (y₁ − y₂)².
Это позволяет ускорить работу программы и уложиться в Time Limit. Как оптимизировать код для больших данных, разбираем в онлайн-школе про эффективные алгоритмы на ЕГЭ.
Как тренировать понимание кластеризации

** изображение создано или обработано с помощью ИИ.
Не тратьте время на абстрактные определения. Тренировка должна быть прикладной и касаться именно того, что будет на экзамене:
Быстрое чтение файлов. Научитесь считывать до 10 000 строк за доли секунды. Используйте sys.stdin или file.read().splitlines(), чтобы не терять время на медленный input().
Геометрическая проверка. Возьмите лист бумаги, нарисуйте 5–7 точек и прямоугольник. Вручную отметьте, какие попадают внутрь. Затем напишите условие if x_min <= x <= x_max and y_min <= y <= y_max и убедитесь, что код даёт тот же результат.
Оптимизация вычислений. Решите задачу «в лоб» с math.sqrt, замерьте время на файле Б, затем уберите корень и сравнивайте квадраты расстояний. Разница в скорости будет очевидной.
Парсинг сложных строк. Потренируйтесь извлекать класс из строки вида B5III. Вам нужно будет отделить букву спектрального класса, цифру подкласса и римскую цифру светимости. Ошибка здесь стоит всего балла, но случается у 30% выпускников.
Ошибки и ловушки при разборе заданий

** изображение создано или обработано с помощью ИИ.
При решении задания ученики часто допускают ошибки, связанные не с логикой, а с реализацией на Python. Типичные ошибки ниже.
Медленный код (O(N³) и хуже). Если вы для каждой точки перебираете все остальные несколько раз, программа может не успеть выполнить за отведенное время (особенно для файла Б). Старайтесь оптимизировать перебор.
Плавающая точка (float). Координаты в файле — вещественные числа. При сравнении расстояний учитывайте погрешность вычислений. Хотя в задаче обычно просят вывести целую часть произведения, что частично сглаживает ошибки округления.
Медленное чтение файла. В задании 27 входные файлы могут быть большими. Использование медленного input() в цикле может съесть драгоценные секунды. Лучше использовать sys.stdin или читать файл целиком.
Парсинг класса звезды. В задаче нужно найти «красного гиганта» или «желтого карлика». Внимательно парсите строку с классом (например, G2V), чтобы корректно отделить спектральный класс от класса светимости.
Финал: как не потерять баллы на последней задаче

** изображение создано или обработано с помощью ИИ.
Задание кажется пугающим из-за объёма данных, но по сути это набор простых геометрических проверок и аккуратного перебора.
Перед экзаменом убедитесь, что вы:
- Используете быстрое чтение файлов (sys.stdin или readlines()).
- Сравниваете квадраты расстояний, чтобы не вызывать math.sqrt вложенными циклами.
- Корректно парсите классы звёзд (не путаете спектральный класс со светимостью).
- Помните, что центр — это реальная точка из набора, а не вычисленное среднее.
Кластеризация в ЕГЭ — это проверка вашего умения работать с данными и геометрией, а не знания нейросети. Пройдите онлайн-курс «Задание 27: основы» и проверьте, понимаете ли вы условие задачи. Или запишитесь на разбор сложных задач второй части. Помните: в задании нет магии. Только координаты, циклы и внимательность. Удачи!
Хочешь начать готовиться, но остались вопросы?
Заполни форму, и мы подробно объясним, как устроена подготовка к ЕГЭ и ОГЭ в ЕГЭLAND
