27 задание ЕГЭ информатика
Анализ данных: кластеризация
2 балла ≈ 40 мин уровень В
Задание 27 – файлы A и Б с координатами точек (звёзд), которые образуют несколько кластеров. Нужно разделить точки на кластеры, найти центр каждого (точку кластера с минимальной суммой расстояний до остальных) и вычислить требуемые величины. Ответ – четыре числа (по два для A и Б), обычно целая часть величины × 10 000. 2 балла.
Алгоритм
- Посмотри на данные: построй точечную диаграмму в Excel – кластеры видны глазами, легко подобрать границы.
- Раздели точки на кластеры: по границам (if x < 5 …) или автоматически – поиском связных групп (точки ближе R друг к другу – в одном кластере).
- Отбрось аномалии – одиночные точки, не входящие в кластеры.
- Центр кластера: перебери все его точки, для каждой посчитай сумму расстояний до остальных, возьми минимум.
- Посчитай величины из условия и умножь на 10 000, возьми целую часть int(…).
Шаблон на Python
from math import dist
pts = [tuple(map(float, line.replace(",", ".").split())) for line in open("27A.txt")]
R = 1.0 # порог соседства, подбери по диаграмме
clusters, used = [], set()
for i in range(len(pts)):
if i in used:
continue
used.add(i)
stack, cl = [i], []
while stack: # обход связной группы
j = stack.pop()
cl.append(pts[j])
for k in range(len(pts)):
if k not in used and dist(pts[j], pts[k]) < R:
used.add(k)
stack.append(k)
clusters.append(cl)
def center(cl):
return min(cl, key=lambda p: sum(dist(p, q) for q in cl))
cs = [center(cl) for cl in clusters if len(cl) > 3] # аномалии отброшены
px = min(c[0] for c in cs)
py = min(c[1] for c in cs)
print(int(abs(px) * 10000), int(abs(py) * 10000))
Для файла Б (до 10 000 точек) обход «каждый с каждым» медленный: раздели точки по координатным границам, подобранным по диаграмме, – это быстро и надёжно.
Разобранный пример. Кластер из точек (0; 0), (1; 0), (2; 0). Суммы расстояний: для (0; 0) – 1 + 2 = 3, для (1; 0) – 1 + 1 = 2, для (2; 0) – 3. Центр – (1; 0). Если ответ – абсцисса центра × 10 000, записываем 10000.
Ловушки: центр – это точка кластера (медоид), а не среднее арифметическое координат; запятая вместо точки в дробях файла; аномальные точки в файле Б нельзя включать в кластеры; «целая часть абсолютной величины» – int(abs(…)), без округления.
- Начни с диаграммы в Excel: увидишь число кластеров, границы и аномалии.
- math.dist(p, q) считает евклидово расстояние между точками-кортежами.
- Даже если файл Б не получается – реши файл A: это уже 1 балл.
Разобранные задания 27 из открытого банка ФИПИ
Пример 1 · код ФИПИ AAB9D2
Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на N непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри прямоугольника со сторонами длиной H и W, причём эти прямоугольники между собой не пересекаются. Стороны прямоугольников не обязательно параллельны координатным осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров прямоугольников. Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных точек кластера минимальна. Для каждого кластера гарантируется единственность его центра. Расстояние между двумя точками на плоскости A(x1, y1) и B(x2, y2) вычисляется по формуле:
В файле A хранятся координаты точек двух кластеров, где H = 6, W = 6 для каждого кластера. В каждой строке записана информация о расположении на карте одной точки: сначала координата x, затем координата y. Известно, что количество точек не превышает 1000. В файле Б хранятся координаты точек трёх кластеров, где H = 8, W = 8 для каждого кластера. Известно, что количество точек не превышает 10 000. Структура хранения информации в файле Б аналогична структуре в файле А. Для каждого файла определите координаты центра каждого кластера, затем вычислите два числа: Px – среднее арифметическое абсцисс центров кластеров, и Py – среднее арифметическое ординат центров кластеров. В ответе запишите четыре числа: в первой строке – сначала абсолютное значение целой части произведения Px × 10 000, затем абсолютное значение целой части произведения Py × 10 000 для файла А; во второй строке – аналогичные данные для файла Б. Возможные данные одного из файлов проиллюстрированы графиком.
Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию. Для выполнения задания используйте данные из прилагаемого файла.
| |
Показать ответ и решение
Ответ: 26216 24182 150891 63754
Кластеры выделяем как компоненты связности точек (соседи на расстоянии ≤ r): в A – 2 кластера по 50 точек, в Б – 3 кластера.
Центр – точка с минимальной суммой расстояний до остальных точек кластера. A: Px·10⁴ → 26216, Py·10⁴ → 24182; Б: 150891 и 63754.
Пример 2 · код ФИПИ BED6E1
| ||||
Показать ответ и решение
Ответ: 471228 49113954961677
Пункты стоят через 3 км на кольце из N пунктов: расстояние . Стоимость для каждого центра считаем за O(1) через префиксные суммы и по утроенному массиву.
Минимум: A – 471228, B – 49113954961677.
Пример 3 · код ФИПИ EF3033
| ||||
Показать ответ и решение
Ответ: 172675914708 130708226880
Для средней позиции j берём максимум слева до и максимум справа от (префиксные/суффиксные максимумы) – O(N).
A: 172675914708, B: 130708226880.
Частые вопросы о задании 27
Сколько баллов даёт задание 27 ЕГЭ по информатике?
Максимум – 2 первичных балла. Норма времени на экзамене – около 40 мин. Уровень сложности – В.
Что проверяет задание 27?
Задание 27 – файлы A и Б с координатами точек (звёзд), которые образуют несколько кластеров. Нужно разделить точки на кластеры, найти центр каждого (точку кластера с минимальной суммой расстояний до остальных) и вычислить требуемые величины. Ответ – четыре числа (по два для A и Б), обычно целая часть величины × 10 000. 2 балла.
Как подготовиться к заданию 27?
Прочитайте теорию выше: алгоритм, нужные факты и ловушки. Затем решите подход из 10 заданий с автопроверкой и разбором – первые без регистрации – и вернитесь к ошибкам. В пробниках Сотки номер встречается в полных вариантах ФИПИ с подсчётом баллов.
Задание выполняется с использованием прилагаемых файлов.

