Задание 27 ЕГЭ по информатике: кластеризация данных
Задание 27 ЕГЭ по информатике (КЕГЭ) — одно из двух самых дорогих и самое изменчивое задание всего экзамена. За него дают 2 первичных балла при уровне сложности высокий (В), а с 2025 года оно проверяет принципиально новое умение — «выполнять последовательность решения задач анализа данных: сбор первичных данных, очистка и оценка качества данных, выбор и построение модели, преобразование данных, визуализация данных, интерпретация результатов» (КЭС 4.1). В демоверсии-2026 это кластеризация точек звёздного неба по двум прилагаемым файлам. Ниже — разбор нового типа на официальной демоверсии с рабочим Python-кодом, отдельно — что вы встретите в старых сборниках, и правило частичного зачёта дословно по спецификации. Потренироваться можно на заданиях 27 ЕГЭ по информатике онлайн.
Что проверяет задание 27 ЕГЭ по информатике
Задание 27 относится к разделу кодификатора «Информационные технологии». Оно единственное на всём экзамене работает не с одним, а сразу с двумя прилагаемыми файлами — файл A и файл Б, оба формата *.txt. Программу пишут в одной из сред, доступных на экзамене (C#, C++, Pascal, Java, Python), а результат — не одно число и даже не пара чисел, а целая таблица 2×2.
Проверяемые умения (КЭС 4.1, требование 2.2):
- «выполнять последовательность решения задач анализа данных» — дословная формулировка умения из «Изменений в КИМ ЕГЭ 2025 г.», действующая и в спецификации 2026 года;
- пройти весь путь этой последовательности на практике: сбор первичных данных из файла, очистка и оценка их качества (отсеять аномалии), выбор и построение модели (разбиение на кластеры), преобразование данных (вычисление координат центров), интерпретация результатов (перевод в требуемые числа ответа);
- читать оба входных файла программно и не путать, какая величина считается по файлу A, а какая — по файлу Б;
- строить и обосновывать алгоритм кластеризации точек на плоскости без явного порогового значения «на глаз»;
- находить центр кластера — точку из данных этого кластера с минимальной суммой расстояний до всех остальных его точек — и отличать это правило от простого среднего арифметического координат.
Проекты документов КИМ-2027 (демоверсия, спецификация, кодификатор) на момент публикации статьи ФИПИ ещё не издавал, поэтому все цифры ниже приведены по действующим документам 2026 года. Структура работы не менялась с 2025 года, когда и сменился тип задания 27 — подробнее об этом в следующем разделе.
| Параметр | Значение |
|---|---|
| Максимальный балл | 2 первичных — одно из двух самых дорогих заданий экзамена (наравне с заданием 26) |
| Уровень сложности | Высокий (В) — одно из пяти заданий этого уровня во всей работе |
| Раздел кодификатора | 4. Информационные технологии; КЭС 4.1; требование 2.2 |
| Формат ответа | Краткий: таблица 2×2 (четыре числа), первая строка — файл A, вторая — файл Б |
| Файл и специализированное ПО | Два входных файла *.txt (файл A и файл Б); требуется среда программирования |
| Рекомендуемое время | 40 минут (по обобщённому плану ФИПИ) — больше не отводится ни на одно задание экзамена |
| Связанные задания | Задание 26 (тоже 2 балла и частичный зачёт, но одна строка из двух ячеек), задание 24 (тоже файл + высокий уровень, но один текстовый файл и одно число) |
Важно: тип задания 27 сменился в 2025 году
Если вы видели задание 27 раньше — программу на 20–40 строк, где из двух файлов чисел нужно было найти оптимум перебором с линейным алгоритмом, — это старый тип, снятый с экзамена в 2025 году. Актуальный тип, действующий и в демоверсии-2026, — кластеризация точек. Разбор старого типа с реальным примером — в отдельном разделе ниже, но тренироваться стоит именно на новом.
Ниже — только актуальный тип. Все теоретические блоки, алгоритм решения и главный пример статьи посвящены кластеризации.
Тренируйтесь на заданиях 27
Задания ЕГЭ по информатике из открытого банка ФИПИ с мгновенной проверкой ответа. Решаем, ошибаемся, разбираем — бесплатно.
Как выглядит формулировка
Формулировка задания 27 длинная — она заново объясняет, что такое кластер и как считается центр, ведь никакого справочного материала на экзамене не выдают. Вот формулировка демоверсии-2026 дословно:
«Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на N непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри прямоугольника со сторонами длиной H и W, причём эти прямоугольники между собой не пересекаются. Стороны прямоугольников не обязательно параллельны координатным осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров прямоугольников. Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных его точек минимальна. […] В файле A хранятся координаты точек двух кластеров, где H = 6 и W = 4,5 для каждого кластера. […] В файле Б хранятся координаты точек трёх кластеров, где H = 6, W = 5 для каждого кластера. […] Известно, что в файле Б имеются координаты ровно трёх «лишних» точек, представляющих аномалии, которые возникли в результате помех при передаче данных. Эти три точки не относятся ни к одному из кластеров, их учитывать не нужно. Для файла А определите координаты центра каждого кластера, затем найдите два числа: Px – минимальную из абсцисс центров кластеров и Py – минимальную из ординат центров кластеров. Для файла Б определите координаты центра каждого кластера, затем найдите два числа: Q1 – расстояние между центрами кластеров с минимальным и максимальным количеством точек и Q2 – максимальное расстояние от центра кластера до точки этого же кластера среди всех кластеров.» (ДЕМО ЕГЭ-2026, задание 27)
Обратите внимание: количество кластеров (N) и количество аномалий не нужно находить угадыванием — они прямо названы в условии («точки двух кластеров», «точки трёх кластеров», «ровно трёх лишних точек»). Ваша задача — не определить, сколько кластеров, а разбить точки на уже известное число групп и посчитать по ним геометрические величины.
Форма ответа: ЧЕТЫРЕ числа в таблице 2×2
Инструкция задания дословно требует: «В ответе запишите четыре числа: в первой строке – сначала целую часть абсолютной величины произведения Px × 10 000, затем целую часть абсолютной величины произведения Py × 10 000; во второй строке – сначала целую часть произведения Q1 × 10 000, затем целую часть произведения Q2 × 10 000». Значит:
- строка 1 — результат по файлу A: ячейка 1 =
⌊|Px| × 10000⌋, ячейка 2 =⌊|Py| × 10000⌋; - строка 2 — результат по файлу Б: ячейка 1 =
⌊Q1 × 10000⌋, ячейка 2 =⌊Q2 × 10000⌋.
«Строка = файл» — это ключевая привязка формы ответа. Слитная запись всех четырёх чисел одной строкой не соответствует форме ответа, указанной в инструкции.
Правило частичного зачёта — дословно
Задания 26 и 27 — единственные два из 27, где кроме «всё верно / всё неверно» есть промежуточный результат в 1 балл. Вот дословная формулировка спецификации:
«За верный ответ на каждое из заданий 26 и 27 выставляется 2 балла. […] Если в ответе на задание 27 записана только одна верная пара чисел (с правильным порядком чисел в паре) или записаны две верные пары чисел, но строки в ячейках таблицы перепутаны местами, ставится 1 балл. В остальных случаях – 0 баллов.» (СПЕЦ ЕГЭ-2026 по информатике, §10)
Ключевое слово здесь — «пара»: в задании 27 парой считается строка таблицы (два числа одного файла), а не отдельное число. Это отличает правило 27 от правила 26, где частичный зачёт даётся и за «одно верное число из двух».
| Балл | Когда ставится |
|---|---|
| 2 балла | Обе строки верны и стоят каждая на своём месте (строка 1 — файл A, строка 2 — файл Б) |
| 1 балл | Верна только одна строка (порядок чисел внутри неё правильный) ЛИБО обе строки верны, но переставлены местами (файл Б в первой строке, файл A — во второй) |
| 0 баллов | Всё остальное — в том числе случай, когда внутри верной строки числа переставлены местами: порядок в паре обязан быть правильным, «половинного» зачёта здесь нет |
Отдельно подчеркнём случай из последней строки: если вы верно нашли оба числа файла A, но записали их как «Py, Px» вместо «Px, Py» — это 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 (расстояние между центрами самого маленького и самого большого по числу точек кластеров файла Б, и максимальное расстояние от центра до точки того же кластера — по файлу Б).
Решение:
Сами файлы демоверсии (DEMO_27_A.txt, DEMO_27_Б.txt) в этой статье не приложены — возьмите их из официального пакета демоверсии ЕГЭ-2026 по информатике на сайте ФИПИ вместе с остальными файлами демонстрационного варианта. Здесь мы прогоним алгоритм из предыдущего раздела на небольшом собственном наборе точек, чтобы показать его работу целиком, а затем сверим метод с официальным ответом демоверсии.
Свой набор для файла A — два маленьких кластера по 4–5 точек:
file_a = [
(1.0, 2.0), (1.4, 2.3), (0.8, 1.9), (1.2, 1.7), (1.6, 2.1),
(8.0, 6.0), (8.3, 6.4), (7.7, 5.8), (8.1, 6.2),
]
clusters_a, anomalies_a = cluster_points(file_a, k_clusters=2)
centers_a = [cluster_center(c) for c in clusters_a]
Px = min(c[0] for c in centers_a)
Py = min(c[1] for c in centers_a)
print([len(c) for c in clusters_a], anomalies_a)
print(Px, scaled_int(Px), Py, scaled_int(Py))Вывод: алгоритм находит кластеры размером 5 и 4 точки без аномалий, центрами оказываются точки (1.0, 2.0) и (8.1, 6.2), значит Px = 1.0 → 10000, Py = 2.0 → 20000.
Для файла Б добавим третий кластер и две дальние одиночные точки-аномалии:
file_b = [
(0.0, 0.0), (0.5, 0.3), (0.2, 0.6),
(5.0, 5.0), (5.4, 5.2), (4.8, 5.3), (5.1, 4.9), (5.3, 5.1),
(10.0, 0.0), (10.3, 0.4),
(20.0, 20.0),
(-8.0, 12.0),
]
clusters_b, anomalies_b = cluster_points(file_b, k_clusters=3, n_anomalies=2)
centers_b = [cluster_center(c) for c in clusters_b]
sizes_b = [len(c) for c in clusters_b]
order = sorted(range(3), key=lambda i: sizes_b[i])
c_min, c_max = centers_b[order[0]], centers_b[order[-1]]
Q1 = dist(c_min, c_max)
Q2 = max(dist(ctr, p) for cl, ctr in zip(clusters_b, centers_b) for p in cl)
print(sizes_b, anomalies_b)
print(Q1, scaled_int(Q1), Q2, scaled_int(Q2))Алгоритм верно отделяет обе дальние точки (20.0, 20.0) и (−8.0, 12.0) как аномалии и находит три кластера размером 5, 3 и 2 точки с центрами (5.0, 5.0), (0.5, 0.3) и (10.0, 0.0) соответственно. Самый маленький кластер (2 точки) — третий, самый большой (5 точек) — первый, расстояние между их центрами Q1 = √((10−5)² + (0−5)²) = 5√2 ≈ 7,0711 → 70710. Максимальное расстояние от центра до точки внутри одного кластера — в кластере из 3 точек: от (0.0, 0.0) до его центра (0.5, 0.3), Q2 ≈ 0,5831 → 5830.
На настоящих файлах демоверсии (223 точки в файле A → 2 кластера по 92 и 131 точке; 623 точки в файле Б → 3 кластера по 100, 113 и 407 точек плюс 3 аномалии) этот же алгоритм даёт официальный эталон ФИПИ: строка 1 — 38471 и 61225 (файл A), строка 2 — 142058 и 25299 (файл Б). Проверка здравым смыслом: все четыре числа — положительные целые в разумных пределах (напомним, координаты и размеры кластеров в условии — величины порядка единиц-десятков, поэтому после умножения на 10 000 естественно получать пяти-шестизначные числа).
Что вы встретите в старых сборниках
До 2025 года задание 27 проверяло другое умение — «создавать собственные программы (20–40 строк) для анализа числовых последовательностей». Условие тоже приходило с двумя файлами (A и Б), но ответом были не четыре числа в таблице, а два числа одной строкой, и задача обычно сводилась к поиску оптимума (минимума или максимума) на большом массиве чисел, где перебор всех вариантов на файле Б заведомо не укладывался во время. Многие сборники и тренажёры, изданные до обновления, до сих пор используют этот тип — на реальном экзамене 2026–2027 годов он не встретится, но техника линейного прохода по массиву с накоплением нужных величин полезна и пригождается в заданиях 24 и 26.
Условие (реальное задание старого типа из открытого банка ФИПИ):
«У медицинской компании есть N пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов. Пробирки перевозят в специальных транспортировочных контейнерах вместимостью не более 36 штук. […] Стоимость перевозки биоматериалов равна произведению расстояния от пункта до лаборатории на количество контейнеров с пробирками. […] Лабораторию расположили в одном из пунктов приёма биоматериалов таким образом, что общая стоимость доставки биоматериалов из всех пунктов минимальна. Определите минимальную общую стоимость доставки биоматериалов из всех пунктов приёма в лабораторию. […] Дано два входных файла (файл A и файл B) […] В ответе укажите два числа: сначала значение искомой величины для файла А, затем – для файла B.»
Решение:
Из пункта с t пробирками уезжает ⌈t / 36⌉ контейнеров (контейнер вскрывается только в лаборатории, поэтому неполный контейнер всё равно занимает место целиком). Если лабораторию открыть в пункте с номером x_j, стоимость доставки равна сумме w_i · |x_i − x_j| по всем пунктам. Перебор всех пунктов с полным пересчётом суммы для каждого — это O(N²), для файла Б с сотнями тысяч строк это не успеет выполниться. Раскрыв модуль на «пункты левее» и «пункты правее» и поддерживая по ходу единственного прохода слева направо четыре накопительные суммы (число контейнеров и сумму вес × позиция отдельно слева и справа от текущего пункта), можно посчитать стоимость для каждого кандидата на лабораторию за O(1), а весь алгоритм — за O(N):
def solve(name, cap=36):
f = open(name)
n = int(f.readline())
x = [0] * n
w = [0] * n
for i in range(n):
a, b = map(int, f.readline().split())
x[i] = a
w[i] = -(-b // cap)
wt = sum(w)
xwt = sum(w[i] * x[i] for i in range(n))
wl = 0
xwl = 0
best = None
for i in range(n):
wr = wt - wl - w[i]
xwr = xwt - xwl - w[i] * x[i]
cost = x[i] * wl - xwl + xwr - x[i] * wr
if best is None or cost < best:
best = cost
wl += w[i]
xwl += w[i] * x[i]
return best
print(solve('A.txt'), solve('B.txt'))Запуск на реальных файлах A и Б этого задания даёт 51063 и 5634689219329 — это в точности эталон ФИПИ. Ответ по файлу Б — тринадцатизначное число, и это нормально: чем больше файл, тем больше и типичная величина суммарной стоимости.
Проверка здравым смыслом: файл Б длиннее файла A примерно на четыре порядка (число строк) и содержит бо́льшие расстояния и бо́льшую суммарную загрузку, поэтому ответ по нему на несколько порядков больше — это ожидаемо, а не признак ошибки в вычислениях.
Типичные ошибки и ловушки
Готовятся по заданиям старого типа
Многие тренажёры и сборники до сих пор дают задание 27 в виде «два файла, ответ — два числа, найти оптимум перебором». Такой тип на экзамене 2026–2027 годов не встретится. Тренируйтесь на актуальном типе — кластеризации с ответом из четырёх чисел.
Центр кластера считают как среднее арифметическое координат
По условию центр — это точка самого кластера с минимальной суммой расстояний до остальных точек, а не центроид (среднее по всем координатам). На несимметричном по форме наборе точек эти две точки почти всегда различаются, и центроид, скорее всего, не совпадёт ни с одной реальной точкой данных.
Включают аномалии в ближайший кластер
Одна лишняя точка меняет сумму расстояний внутри кластера и, как следствие, сдвигает найденный центр — все связанные с ним числа ответа станут неверными. Аномалии нужно сначала отделить (например, отрезав самые длинные рёбра остовного дерева) и только потом искать центры оставшихся кластеров.
Путают строки местами
Строка 1 таблицы ответа — всегда результат по файлу A, строка 2 — по файлу Б. Если строки поменять местами, по правилу частичного зачёта это максимум 1 балл вместо 2, даже если оба числа в каждой строке верны.
Забывают про абсолютную величину или про округление вниз
Инструкция явно требует «целую часть абсолютной величины произведения»: если Px или Py оказались отрицательными, знак нужно отбросить до умножения на 10 000, а результат — округлить вниз до целого (взять целую часть, а не округлить по правилам математики).
Пытаются угадать число кластеров вместо того, чтобы прочитать его в условии
Число кластеров и число аномалий в задании 27 не нужно вычислять — они прямо названы в тексте условия («точки двух кластеров», «ровно трёх лишних точек»). Автоматический подбор числа кластеров по данным — лишняя и рискованная работа.
Используют метод, чувствительный к форме кластера
Кластеризация k-средних ищет сферические группы вокруг центроидов и может ошибиться на кластере, вытянутом вдоль диагонали прямоугольника H × W. Разбиение по минимальному остовному дереву не опирается на форму и работает надёжнее для условий этого задания.
Как задание 27 связано с остальным экзаменом
Задание 27 закрывает экзамен и стоит 2 первичных балла из 29 — почти 7% всей работы. Несколько связей стоит держать в голове:
- вместе с заданием 26 образует пару заданий с частичным зачётом — это единственные два задания экзамена, где кроме 1 и 0 баллов есть промежуточный результат;
- делит раздел кодификатора «Информационные технологии» с заданиями 3, 9, 10 и 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 это самое дорогое задание экзамена. Уровень сложности — высокий. По обобщённому плану ФИПИ на задание 27 отводится примерно 40 минут — больше, чем на любое другое задание работы.
Да, тип сменился в 2025 году. Старый тип требовал написать программу для поиска оптимума на большом массиве чисел, ответ — два числа одной строкой. Новый тип, действующий с 2025 года и в демоверсии-2026, — кластеризация точек на плоскости, ответ — четыре числа в таблице 2×2. Старый тип на экзамене 2026–2027 годов не встретится.
Центр кластера — это не среднее арифметическое координат точек (центроид), а одна из точек самого кластера, для которой сумма расстояний до всех остальных его точек минимальна. Нужно перебрать все точки кластера, для каждой посчитать сумму расстояний до остальных и выбрать точку с наименьшей суммой.
Кластеры — компактные группы точек, умещающиеся в прямоугольник заданного размера H×W, а аномалии — одиночные точки, удалённые от любого кластера. Удобный способ: построить минимальное остовное дерево по всем точкам, отсортировать его рёбра по убыванию длины и отрезать самые длинные — аномалии окажутся в маленьких изолированных компонентах, а кластеры — в крупных.
В таблицу 2×2: первая строка — результат по файлу A (в демоверсии — Px и Py, целые части абсолютных величин произведений на 10 000), вторая строка — результат по файлу Б (в демоверсии — Q1 и Q2 по той же формуле). Строка = файл, порядок чисел внутри строки задаётся условием.
1 балл — если верна только одна строка (при правильном порядке чисел внутри неё), либо если обе строки верны, но переставлены местами. Если же внутри верной по сути строки числа стоят не в том порядке, ставится 0 баллов — половинного зачёта на уровне одного числа для задания 27 не предусмотрено.
Нет. Число кластеров и число аномалий в задании 27 названы прямо в тексте условия («точки двух кластеров», «ровно трёх лишних точек»). Задача — разбить точки на уже известное число групп, а не подбирать это число алгоритмически.
Готовы взять оба балла самого дорогого задания?
Задание 27 меняет тип, но не сложность приёма: минимальное остовное дерево, отсечение аномалий и поиск центра кластера — три понятных шага. Отработайте их на реальных заданиях из открытого банка ФИПИ с мгновенной проверкой ответа.