Задание 27 ЕГЭ по информатике: кластеризация данных
Задание 27 ЕГЭ по информатике (КЕГЭ) — одно из двух самых дорогих и самое изменчивое задание всего экзамена. За него дают 2 первичных балла при уровне сложности высокий (В), а с 2025 года оно проверяет принципиально новое умение — «выполнять последовательность решения задач анализа данных: сбор первичных данных, очистка и оценка качества данных, выбор и построение модели, преобразование данных, визуализация данных, интерпретация результатов» (КЭС 4.1). В демоверсии это кластеризация точек по прилагаемым файлам. С 2027 года изменилась форма записи ответа: теперь это строка из двух чисел вместо двух строк по два числа, и правило частичного зачёта у заданий 26 и 27 стало общим. Ниже — разбор на официальной демоверсии с рабочим Python-кодом, отдельно — что вы встретите в старых сборниках, и правило частичного зачёта дословно по спецификации. Потренироваться можно на заданиях 27 ЕГЭ по информатике онлайн.
Что проверяет задание 27 ЕГЭ по информатике
Задание 27 относится к разделу кодификатора «Информационные технологии». Оно единственное на всём экзамене работает не с одним, а сразу с двумя прилагаемыми файлами — файл A и файл Б, оба формата *.txt. Программу пишут в одной из сред, доступных на экзамене (C#, C++, Pascal, Java, Python), а результат — не одно число и даже не пара чисел, а целая таблица 2×2.
Проекты документов КИМ-2027 (демоверсия, спецификация, кодификатор) на момент публикации статьи ФИПИ ещё не издавал, поэтому все цифры ниже приведены по действующим документам 2026 года. Структура работы не менялась с 2025 года, когда и сменился тип задания 27 — подробнее об этом в следующем разделе.
| Параметр | Значение |
|---|---|
| Максимальный балл | 2 первичных — одно из двух самых дорогих заданий экзамена (наравне с заданием 26) |
| Уровень сложности | Высокий (В) — одно из пяти заданий этого уровня во всей работе |
| Раздел кодификатора | 4. Информационные технологии; КЭС 4.1; требование 2.2 |
| Формат ответа | Краткий: с 2027 года — одна строка из двух чисел (две ячейки). До 2027 года была таблица 2×2 из четырёх чисел: строка 1 — файл A, строка 2 — файл Б |
| Файл и специализированное ПО | Входной файл *.txt (в демоверсии 2027 года — один, до 2027 года их было два: файл A и файл Б); требуется среда программирования |
| Рекомендуемое время | 36 минут (по обобщённому плану ФИПИ 2027 года; в 2026-м было 40) — больше не отводится ни на одно задание экзамена |
| Связанные задания | Задание 26 (тоже 2 балла и частичный зачёт, но одна строка из двух ячеек), задание 24 (тоже файл + высокий уровень, но один текстовый файл и одно число) |
Тренируйтесь на заданиях 27
Задания ЕГЭ по информатике из открытого банка ФИПИ с мгновенной проверкой ответа. Решаем, ошибаемся, разбираем — бесплатно.
Как выглядит формулировка
Формулировка задания 27 длинная — она заново объясняет, что такое кластер и как считается центр, ведь никакого справочного материала на экзамене не выдают. Вот формулировка демоверсии-2026 дословно:
«Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на N непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри прямоугольника со сторонами длиной H и W, причём эти прямоугольники между собой не пересекаются. Стороны прямоугольников не обязательно параллельны координатным осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров прямоугольников. Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных его точек минимальна. […] В файле A хранятся координаты точек двух кластеров, где H = 6 и W = 4,5 для каждого кластера. […] В файле Б хранятся координаты точек трёх кластеров, где H = 6, W = 5 для каждого кластера. […] Известно, что в файле Б имеются координаты ровно трёх «лишних» точек, представляющих аномалии, которые возникли в результате помех при передаче данных. Эти три точки не относятся ни к одному из кластеров, их учитывать не нужно. Для файла А определите координаты центра каждого кластера, затем найдите два числа: Px – минимальную из абсцисс центров кластеров и Py – минимальную из ординат центров кластеров. Для файла Б определите координаты центра каждого кластера, затем найдите два числа: Q1 – расстояние между центрами кластеров с минимальным и максимальным количеством точек и Q2 – максимальное расстояние от центра кластера до точки этого же кластера среди всех кластеров.» (ДЕМО ЕГЭ-2026, задание 27)
Обратите внимание: количество кластеров (N) и количество аномалий не нужно находить угадыванием — они прямо названы в условии («точки двух кластеров», «точки трёх кластеров», «ровно трёх лишних точек»). Ваша задача — не определить, сколько кластеров, а разбить точки на уже известное число групп и посчитать по ним геометрические величины.
Правило частичного зачёта — дословно
Задания 26 и 27 — единственные два из 27, где кроме «всё верно / всё неверно» есть промежуточный результат в 1 балл. Вот дословная формулировка спецификации:
«Если в ответе на задания 26, 27 верные числа в ячейках таблицы перепутаны местами ИЛИ в ячейках таблицы на верном месте присутствует только одно верное число (второе неверно или отсутствует), ставится 1 балл. В остальных случаях – 0 баллов.» (демоверсия ЕГЭ-2027 по информатике, «Система оценивания»)
С 2027 года правило у заданий 26 и 27 одно и то же: оба ответа — строка из двух чисел, и оба оцениваются по числам, а не по строкам. Прежнее правило 27 говорило про «пары» (строка таблицы = два числа одного файла) и не давало балла за одно верное число из двух; теперь такого различия нет.
| Балл | Когда ставится |
|---|---|
| 2 балла | Оба числа верны и каждое стоит в своей ячейке |
| 1 балл | Оба числа верны, но переставлены местами ЛИБО на верном месте стоит только одно верное число (второе неверно или отсутствует) |
| 0 баллов | Все остальные случаи |
Отсюда практический вывод: даже если вы уверены только в одном из двух чисел, второе всё равно стоит записать — правильно поставленное первое число само по себе даёт 1 балл. Пустая ячейка ответа не наказывается сильнее неверной.
Теория: всё, что нужно для кластеризации
Кластер, прямоугольник, центр
- Кластер — непустое подмножество точек, которое целиком помещается внутрь прямоугольника заданных размеров
H × W. Прямоугольники разных кластеров между собой не пересекаются, и их стороны не обязательно параллельны осям координат — прямоугольник может быть повёрнут. - Условие гарантирует, что разбиение на N кластеров существует и единственно — можно не сомневаться, что «правильная» кластеризация только одна, и искать её алгоритмом, а не подбирать руками.
- Центр кластера — это не среднее арифметическое координат (центроид), а одна из точек самого кластера с минимальной суммой расстояний до всех остальных его точек. Формально: среди точек кластера
{p_1, ..., p_k}центром считается точкаp_i, для которой суммаΣ d(p_i, p_j)по всемj ≠ iминимальна. - Расстояние между точками — обычное евклидово:
d(A, B) = √((x2 − x1)² + (y2 − y1)²). - Условие отдельно гарантирует единственность центра для каждого кластера — при вычислениях с плавающей точкой это избавляет от необходимости обрабатывать «ничью» между двумя точками с одинаковой суммой расстояний.
Как разбить точки на кластеры: минимальное остовное дерево
Раз кластеры не пересекаются и каждый умещается в прямоугольник H × W, то расстояние между двумя точками внутри одного кластера ограничено сверху (не больше диагонали прямоугольника), а между точками из разных кластеров — заметно больше, потому что прямоугольники физически разнесены. Это ровно та структура данных, для которой работает классический приём — кластеризация через минимальное остовное дерево (MST, minimum spanning tree).
Идея по шагам
- Постройте MST по всем точкам файла: дерево, соединяющее все точки рёбрами так, что сумма длин рёбер минимальна. Для плотного графа это делает алгоритм Прима за
O(n²). - Отсортируйте рёбра MST по убыванию длины. Самые длинные рёбра — это как раз те, что «случайно» соединили разные кластеры или зацепили аномалию, потому что дерево обязано быть связным и достанет даже до одинокой дальней точки.
- Удалите
K − 1самых длинных рёбер, гдеK— общее число кусков, на которое нужно разбить точки (число кластеров плюс число аномалий, если они есть). Дерево распадётся ровно наKкомпонент связности. - Компоненты с наибольшим числом точек — это настоящие кластеры (их ровно N, это число дано в условии). Мелкие компоненты (в демоверсии — из одной точки) — аномалии.
Этот метод называют иерархической кластеризацией методом одиночной связи (single linkage). Он не требует заранее знать форму кластера и хорошо ведёт себя на вытянутых прямоугольниках — в отличие, например, от метода k-средних, который «тянет» центры к сферическим формам и может ошибиться на кластере, вытянутом по диагонали.
Аномалии: точки, которые не входят ни в один кластер
Это и есть «очистка и оценка качества данных» из формулировки умения — этап, без которого расчёт центров даст неверный результат. В демоверсии файл Б содержит ровно три аномальные точки, о чём прямо сказано в условии: «эти три точки не относятся ни к одному из кластеров, их учитывать не нужно».
На практике аномалии — это одиночные точки, отстоящие от любого кластера дальше, чем размеры прямоугольника H × W. При построении MST они дают самые длинные рёбра дерева (ведь ближайший сосед аномалии — далёкий кластер), поэтому шаг «отрезать самые длинные рёбра» из предыдущего блока автоматически изолирует их в отдельные маленькие компоненты.
Частая ошибка — включить аномалию в ближайший кластер «за компанию». Даже одна лишняя точка сдвигает центр кластера (ведь сумма расстояний пересчитывается по новому, большему набору точек) и меняет ответ во всех связанных ячейках таблицы.
Рабочий код: от точек к таблице 2×2
Ниже — полный код на Python: чтение файла, построение MST, разбиение на кластеры и аномалии, поиск центра кластера и финальное округление по правилу «целая часть произведения на 10 000».
import math
def read_points(path):
points = []
with open(path) as f:
for line in f:
parts = line.split()
if len(parts) == 2:
points.append((float(parts[0]), float(parts[1])))
return points
def dist(a, b):
return math.hypot(a[0] - b[0], a[1] - b[1])
def build_mst(points):
n = len(points)
in_tree = [False] * n
min_edge = [math.inf] * n
nearest = [-1] * n
min_edge[0] = 0
edges = []
for _ in range(n):
u = -1
for j in range(n):
if not in_tree[j] and (u == -1 or min_edge[j] < min_edge[u]):
u = j
in_tree[u] = True
if nearest[u] != -1:
edges.append((min_edge[u], u, nearest[u]))
for j in range(n):
if not in_tree[j]:
d = dist(points[u], points[j])
if d < min_edge[j]:
min_edge[j] = d
nearest[j] = u
return edges
def find(parent, x):
while parent[x] != x:
parent[x] = parent[parent[x]]
x = parent[x]
return x
def union(parent, a, b):
ra, rb = find(parent, a), find(parent, b)
if ra != rb:
parent[ra] = rb
def cluster_points(points, k_clusters, n_anomalies=0):
n = len(points)
edges = build_mst(points)
edges.sort(key=lambda e: -e[0])
cuts = k_clusters + n_anomalies - 1
parent = list(range(n))
for _, a, b in edges[cuts:]:
union(parent, a, b)
groups = {}
for i in range(n):
root = find(parent, i)
groups.setdefault(root, []).append(points[i])
by_size = sorted(groups.values(), key=len, reverse=True)
clusters = by_size[:k_clusters]
anomalies = [p for g in by_size[k_clusters:] for p in g]
return clusters, anomalies
def cluster_center(cluster):
best_point, best_sum = None, math.inf
for p in cluster:
s = sum(dist(p, q) for q in cluster)
if s < best_sum:
best_sum, best_point = s, p
return best_point
def scaled_int(value):
return int(abs(value) * 10000)Функция build_mst — алгоритм Прима за O(n²): для файла с несколькими сотнями точек он отрабатывает мгновенно; для файлов на тысячи точек (как файл Б в демоверсии, до 10 000 точек по условию) время растёт до нескольких секунд на чистом Python — этого достаточно, ведь отдельного лимита времени на задание 27, кроме общих 3 часов 55 минут на весь экзамен, нет.
Алгоритм решения задания 27
- Прочитайте условие до конца. Выпишите отдельно для файла A и для файла Б: число кластеров N, размеры прямоугольника
H × W, число аномалий (если оно названо) и то, какие именно величины нужно найти по каждому файлу — в демоверсии это разные пары (Px, Py для A; Q1, Q2 для Б). - Загрузите точки обоих файлов функцией
read_points. Первая координата в строке — x, вторая — y; разделитель — пробел. - Постройте минимальное остовное дерево для точек каждого файла отдельно (файл A и файл Б обрабатываются независимо, между ними нет связи).
- Отрежьте самые длинные рёбра дерева — их количество равно (число кластеров + число аномалий − 1). Так дерево распадётся на нужное число компонент связности.
- Отделите кластеры от аномалий по размеру компоненты: N самых крупных компонент — кластеры, остальные — аномалии, их отбрасываете.
- Найдите центр каждого кластера функцией
cluster_center— переберите точки кластера, посчитайте для каждой сумму расстояний до всех остальных точек этого же кластера, возьмите точку с минимальной суммой. - Вычислите требуемые величины и округлите. Возьмите нужные координаты или расстояния между центрами, умножьте на 10 000, возьмите целую часть от модуля (функция
scaled_int) и запишите четыре числа в таблицу 2×2: строка 1 — файл A, строка 2 — файл Б, порядок внутри строки — как требует условие.
Проверьте алгоритм на реальных заданиях
Тренажёр по заданию 27 из открытого банка ФИПИ — с мгновенной проверкой ответа. На Repet.ai.
Примеры с разбором
Пример 1. Задание 27 демоверсии ЕГЭ-2026 (главный пример)
Пример задания
Официальная демоверсия ФИПИ, полный текст — в разделе выше
Фрагмент звёздного неба спроецирован на плоскость. Файл A содержит точки двух кластеров (H = 6, W = 4,5), файл Б — точки трёх кластеров (H = 6, W = 5) и ровно трёх аномалий. Нужно найти Px, Py (минимальную абсциссу и минимальную ординату центров кластеров файла A) и Q1, Q2 (расстояние между центрами самого маленького и самого большого по числу точек кластеров файла Б, и максимальное расстояние от центра до точки того же кластера — по файлу Б).
Что вы встретите в старых сборниках
До 2025 года задание 27 проверяло другое умение — «создавать собственные программы (20–40 строк) для анализа числовых последовательностей». Условие тоже приходило с двумя файлами (A и Б), но ответом были не четыре числа в таблице, а два числа одной строкой, и задача обычно сводилась к поиску оптимума (минимума или максимума) на большом массиве чисел, где перебор всех вариантов на файле Б заведомо не укладывался во время. Многие сборники и тренажёры, изданные до обновления, до сих пор используют этот тип — на реальном экзамене 2026–2027 годов он не встретится, но техника линейного прохода по массиву с накоплением нужных величин полезна и пригождается в заданиях 24 и 26.
Пример задания
Реальное задание старого типа из открытого банка ФИПИ
«У медицинской компании есть N пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов. Пробирки перевозят в специальных транспортировочных контейнерах вместимостью не более 36 штук. […] Стоимость перевозки биоматериалов равна произведению расстояния от пункта до лаборатории на количество контейнеров с пробирками. […] Лабораторию расположили в одном из пунктов приёма биоматериалов таким образом, что общая стоимость доставки биоматериалов из всех пунктов минимальна. Определите минимальную общую стоимость доставки биоматериалов из всех пунктов приёма в лабораторию. […] Дано два входных файла (файл A и файл B) […] В ответе укажите два числа: сначала значение искомой величины для файла А, затем – для файла B.»
Типичные ошибки и ловушки
- Готовятся по заданиям старого типа
Многие тренажёры и сборники до сих пор дают задание 27 в виде «два файла, ответ — два числа, найти оптимум перебором». Такой тип на экзамене 2026–2027 годов не встретится. Тренируйтесь на актуальном типе — кластеризации с ответом из четырёх чисел.
- Центр кластера считают как среднее арифметическое координат
По условию центр — это точка самого кластера с минимальной суммой расстояний до остальных точек, а не центроид (среднее по всем координатам). На несимметричном по форме наборе точек эти две точки почти всегда различаются, и центроид, скорее всего, не совпадёт ни с одной реальной точкой данных.
- Включают аномалии в ближайший кластер
Одна лишняя точка меняет сумму расстояний внутри кластера и, как следствие, сдвигает найденный центр — все связанные с ним числа ответа станут неверными. Аномалии нужно сначала отделить (например, отрезав самые длинные рёбра остовного дерева) и только потом искать центры оставшихся кластеров.
- Путают числа местами
Порядок двух чисел в ответе задаёт условие: сначала первая названная величина, потом вторая. Если поменять их местами, по правилу частичного зачёта это 1 балл вместо 2, даже если оба числа найдены верно.
- Забывают про абсолютную величину или про округление вниз
Инструкция явно требует «целую часть абсолютной величины произведения»: если Px или Py оказались отрицательными, знак нужно отбросить до умножения на 10 000, а результат — округлить вниз до целого (взять целую часть, а не округлить по правилам математики).
- Пытаются угадать число кластеров вместо того, чтобы прочитать его в условии
Число кластеров и число аномалий в задании 27 не нужно вычислять — они прямо названы в тексте условия («точки двух кластеров», «ровно трёх лишних точек»). Автоматический подбор числа кластеров по данным — лишняя и рискованная работа.
- Используют метод, чувствительный к форме кластера
Кластеризация k-средних ищет сферические группы вокруг центроидов и может ошибиться на кластере, вытянутом вдоль диагонали прямоугольника
H × W. Разбиение по минимальному остовному дереву не опирается на форму и работает надёжнее для условий этого задания.
Как задание 27 связано с остальным экзаменом
Задание 27 закрывает экзамен и стоит 2 первичных балла из 29 — почти 7% всей работы. Несколько связей стоит держать в голове:
- вместе с заданием 26 образует пару заданий с частичным зачётом — это единственные два задания экзамена, где кроме 1 и 0 баллов есть промежуточный результат;
- делит раздел кодификатора «Информационные технологии» с заданиями 3, 9 и 18 — но только в задании 27 нужна собственная программа, а не готовый инструмент вроде редактора таблиц;
- как и задание 24, требует написать программу для файла, который нельзя обработать вручную или перебором — но в 24 файл один и ответ одно число, а в 27 — два файла и таблица 2×2;
- приём «минимальное остовное дерево + отсечение длинных рёбер» из этой статьи пригодится и вне экзамена — это стандартная техника кластеризации, которую используют далеко за пределами школьной программы, включая обработку реальных данных.
План подготовки на 3 недели
Неделя 1 — геометрия и центр кластера
День 1–2: разберитесь с определением центра кластера на маленьких наборах точек (5–10 штук) — считайте суммы расстояний руками и сверяйте с кодом из этой статьи. Обязательно решите пример, где центроид (среднее координат) и правильный центр кластера не совпадают — так вы перестанете путать эти два понятия. День 3–5: напишите и запустите функции dist и cluster_center самостоятельно, не подглядывая в готовый код. День 6–7: потренируйтесь читать формат входного файла — две координаты в строке через пробел.
Неделя 2 — разбиение на кластеры и аномалии
День 1–3: реализуйте построение минимального остовного дерева (алгоритм Прима) и убедитесь, что оно верно работает на наборе из 10–15 точек с двумя явно разделёнными группами. День 4–5: добавьте отсечение самых длинных рёбер и разделение на кластеры и аномалии — проверьте на наборе с одной-двумя нарочно удалёнными «одинокими» точками. День 6–7: соберите весь конвейер целиком — от чтения файла до таблицы 2×2 — и прогоните на собственных тестовых наборах, для которых заранее известен правильный ответ.
Неделя 3 — форма ответа и скорость
День 1–2: отработайте округление по формуле «целая часть абсолютной величины произведения на 10 000» — на отрицательных координатах и на числах, где эта разница особенно заметна. День 3–4: потренируйтесь безошибочно расставлять четыре числа по ячейкам таблицы — строка 1 всегда файл A, строка 2 всегда файл Б. День 5–7: решайте задание 27 на время (уложитесь в 40 минут, как рекомендует ФИПИ), а также повторите старый тип задания в разделе выше — не для тренировки, а для того, чтобы уверенно отличать его от актуального, если он попадётся в старом сборнике. Проверьте себя в тренажёре на заданиях из банка ФИПИ.
Заберите оба балла за задание 27
На Repet.ai собраны задания ЕГЭ по информатике из открытого банка ФИПИ. Решайте онлайн, проверяйте ответ мгновенно и разбирайте решение — бесплатно.
Часто задаваемые вопросы
С 2025 года задание 27 проверяет умение выполнять последовательность решения задач анализа данных: сбор первичных данных, очистка и оценка их качества, выбор и построение модели, преобразование данных, визуализация данных, интерпретация результатов (КЭС 4.1). В демоверсии-2026 это кластеризация точек звёздного неба по двум прилагаемым файлам.
2 первичных балла — наравне с заданием 26 это самое дорогое задание экзамена. Уровень сложности — высокий. По обобщённому плану ФИПИ 2027 года на задание 27 отводится примерно 36 минут (в 2026 году было 40) — больше, чем на любое другое задание работы.
Да, задание менялось дважды. До 2025 года нужно было написать программу для поиска оптимума на большом массиве чисел, ответ — два числа одной строкой. С 2025 года это кластеризация точек на плоскости, и в 2025–2026 годах ответом были четыре числа в таблице 2×2. С 2027 года форма ответа снова стала строкой из двух чисел, а само умение (анализ данных и кластеризация) осталось прежним.
Центр кластера — это не среднее арифметическое координат точек (центроид), а одна из точек самого кластера, для которой сумма расстояний до всех остальных его точек минимальна. Нужно перебрать все точки кластера, для каждой посчитать сумму расстояний до остальных и выбрать точку с наименьшей суммой.
Кластеры — компактные группы точек, умещающиеся в прямоугольник заданного размера H×W, а аномалии — одиночные точки, удалённые от любого кластера. Удобный способ: построить минимальное остовное дерево по всем точкам, отсортировать его рёбра по убыванию длины и отрезать самые длинные — аномалии окажутся в маленьких изолированных компонентах, а кластеры — в крупных.
С 2027 года ответ — одна строка из двух ячеек, и порядок задаёт условие: сначала первая названная величина, затем вторая. В демоверсии 2027 года это целая часть произведения Q1 × 10 000, затем целая часть произведения Q2 × 10 000. В 2025–2026 годах ответ был таблицей 2×2: строка 1 — файл A, строка 2 — файл Б.
С 2027 года — 1 балл, если оба числа верны, но переставлены местами, либо если на верном месте стоит только одно верное число (второе неверно или отсутствует). Это то же самое правило, что у задания 26. До 2027 года правило было другим: балл давался за верную строку целиком, а за одно верное число из двух — нет.
Нет. Число кластеров и число аномалий в задании 27 названы прямо в тексте условия («точки двух кластеров», «ровно трёх лишних точек»). Задача — разбить точки на уже известное число групп, а не подбирать это число алгоритмически.
Готовы взять оба балла самого дорогого задания?
Задание 27 меняет тип, но не сложность приёма: минимальное остовное дерево, отсечение аномалий и поиск центра кластера — три понятных шага. Отработайте их на реальных заданиях из открытого банка ФИПИ с мгновенной проверкой ответа.