Задание 27 — компьютерная задача на анализ данных. В проекте КИМ 2027 нужно прочитать файл с частицами, сгруппировать их в кластеры по кинетической энергии и найти две величины. Ответ записывается одной строкой из двух целых чисел, поэтому особенно важны порядок чисел и точность вычислений.
Минимум для задания 27
читать текстовый файл и преобразовывать числа с запятой в float
вычислять кинетическую энергию по координатам, скорости и массе
сортировать частицы по энергии и делить их на кластеры при разрыве больше R
проверять, что получилось ровно K кластеров
находить центр кластера — частицу с минимальной суммой отклонений
считать евклидово расстояние между точками
отбирать частицы по признаку (например, II)
брать целую часть произведения, а не округлять
записывать два числа в одной строке в нужном порядке
различать центр кластера, центроид и медиану
Что проверяет задание 27
В 2027 году задание 27 относится к анализу данных. По проекту спецификации проверяются прогнозирование, классификация, кластеризация и анализ отклонений. В демоверсии 2027 — кластеризация частиц по кинетической энергии. В тренировочных вариантах прошлых лет та же идея встречается с точками на плоскости: кластеры задаются прямоугольниками H×W, расстоянием между точками или окрестностью.
Формат ответа 2027: одна строка, два целых числа через пробел.
За верное решение — 2 первичных балла.
Если верно только одно число или числа перепутаны местами — 1 балл.
Данные лежат в прилагаемом файле; без его чтения задачу не решить.
Файл и его поля
В демоверсии 2027 каждая строка описывает одну частицу. Поля разделены пробелами или табуляцией, десятичный разделитель может быть запятой. Количество строк — до 10 000, поэтому решение должно быть программным.
x, y — декартовы координаты частицы.
Vx, Vy — проекции вектора скорости.
m — масса.
sign — признак внутреннего строения: I, II, …, VII.
E — не поле файла, а вычисляемая величина.
В тренировочных файлах иногда есть строка заголовка: проверьте первую строку и при необходимости пропустите её.
Кинетическая энергия
Ключевая величина демоверсии 2027 — кинетическая энергия. Она вычисляется по массе и проекциям скорости; координаты x и y в формулу не входят.
Сначала переведите все числа в float.
Возведите в квадрат каждую проекцию скорости.
Сложите квадраты, умножьте на массу и на 0,5.
Не путайте скорость и координаты: x, y нужны только для расстояний.
Единицы измерения в файле не указаны, переводить их не нужно.
E = ½ · m · (Vx² + Vy²)E = 0,5 · m · (vx*vx + vy*vy)
Евклидово расстояние
Для Q1 нужно расстояние между двумя точками на плоскости. В демоверсии используется евклидово расстояние; в некоторых тренировочных задачах встречается расстояние Чебышёва — уточняйте формулу в условии.
В Python удобно использовать math.hypot(dx, dy) или math.dist(p1, p2).
Квадратный корень не нужен, если сравниваются расстояния между собой.
Для итогового ответа корень нужен: Q1 — само расстояние.
Расстояние считается между точками одного кластера, а не между центрами.
Кластер — непустое подмножество частиц, в котором энергия любых двух частиц отличается не больше чем на R. Кластеры не пересекаются и покрывают все частицы. В демоверсии K = 4, R = 2,0; разбиение единственно.
Условие «любые две частицы» сильнее, чем «соседние»: оно задаёт интервал энергии шириной не больше R.
После сортировки по E кластеры идут подряд.
Новый кластер начинается там, где E_i − E_{i−1} > R.
Если разрыв ровно R, частицы ещё могут быть в одном кластере: сравнивайте строго больше.
После разбиения проверьте количество: должно получиться ровно K кластеров.
Нельзя соединять точки по цепочке «разность ≤ R»: цепочка может растянуться больше R.
Почему сортировки достаточно
Если отсортировать частицы по энергии, кластеры не могут перемешаться. Иначе в одном кластере оказались бы частицы, между которыми есть частица из другого кластера, и условие на разность энергий нарушилось бы. Поэтому достаточно найти разрывы больше R.
Сортировка затрагивает только E, остальные поля переносятся вместе с частицей.
Храните частицу целиком: (E, x, y, sign) или отдельный список.
Если кластеров получилось больше K, проверьте R, разделитель и точность.
Если кластеров меньше K, возможно, вы склеили соседние кластеры неверным порогом.
Центр кластера
В демоверсии центр — это частица кластера, для которой сумма модулей разностей энергий со всеми остальными частицами минимальна. Это медоид по одному признаку. Для энергии такой центр совпадает с медианой: после сортировки кластера это средний элемент.
Центр — обязательно частица из кластера, а не среднее арифметическое.
Для нечётного числа частиц медиана единственна.
Для чётного числа медиан две; в задании обещают единственный центр, поэтому такой случай не появится.
В геометрических задачах центр ищут перебором: для каждой точки считают сумму расстояний до остальных.
Не путайте центр (медоид) и центроид (среднее координат).
В тренировочных задачах определение центра меняется. Всегда читайте, что именно просят найти: минимум или максимум суммы расстояний, среднее координат, медиану по x и y, диагональ, крайние точки или самую плотную окрестность.
Центр: минимум суммы расстояний до точек кластера.
Антицентр: максимум суммы расстояний.
Центроид: среднее арифметическое координат всех точек.
Медиана по x и по y: отдельные средние элементы после сортировки по каждой координате.
Диагональ: пара точек кластера с максимальным расстоянием.
Крайние точки: ближайшие точки двух разных кластеров.
Точка наведения: больше всего точек в единичной окрестности; изолированная — меньше всего.
Плотность: среднее число точек в единичной окрестности.
Что именно считаем в ответе
После кластеризации и выбора опорных точек считаются агрегаты. В демоверсии 2027 это Q1 и Q2; в других задачах — диаметр, среднее расстояние, плотность, сумма или максимум.
Q1 — наибольшее расстояние между частицами признака II внутри одного кластера.
Q2 — максимальная энергия среди центров кластеров.
Для Q1 переберите пары частиц с нужным признаком в каждом кластере.
Для Q2 сравните энергии центров, а не всех частиц.
Если в кластере меньше двух частиц с нужным признаком, он не даёт пары для Q1.
Среднее арифметическое считается по числу кластеров, а не по числу всех частиц.
Точность, целая часть и формат
Ответ проверяется автоматически, поэтому важны и вычисления, и запись. В демоверсии нужно взять целую часть произведения, а не округлить результат.
Умножьте Q1 и Q2 на 10 000.
int(x) отбрасывает дробную часть; round(x) округляет — это разные операции.
Для отрицательных значений уточните в условии, нужна ли абсолютная величина.
Не округляйте промежуточные энергии и расстояния без необходимости.
Сравнивайте энергии с небольшим допуском: 1e-9.
Пишите два числа через пробел в одной строке, без единиц измерения.
Порядок чисел фиксирован: сначала Q1, затем Q2.
Если одно число неверно, ставится 1 балл; если числа перепутаны — тоже 1 балл.
Разбор примера
Учебный пример: четыре кластера частиц
Даны 12 частиц, K = 4 и R = 2,0. Все скорости направлены вдоль оси x, поэтому E = 2m. Найдём кластеры, их центры, Q1 и Q2.
Учебные данные: координаты, скорость, масса, признак и вычисленная энергия
№
x
y
Vx
Vy
m
признак
E
кластер
P1
0
0
2
0
0,5
I
1,0
A
P2
1
1
2
0
0,75
III
1,5
A
P3
2
0
2
0
1,25
II
2,5
A
P4
10
0
2
0
2,5
IV
5,0
B
P5
11
1
2
0
3
II
6,0
B
P6
12
0
2
0
3,5
V
7,0
B
P7
20
0
2
0
5
II
10,0
C
P8
23
4
2
0
5,5
II
11,0
C
P9
22
2
2
0
6
VI
12,0
C
P10
30
0
2
0
7,5
VII
15,0
D
P11
31
1
2
0
8
III
16,0
D
P12
32
0
2
0
8,5
I
17,0
D
Считаем E = 0,5·m·(Vx² + Vy²). При Vx = 2, Vy = 0 получаем E = 2m.
Методы собраны по решениям задания 27 из базы Kompege. Начните с того, что именно нужно найти в условии.
01
с чего начинается любое решение
Чтение файла и вычисление энергии
Когда использовать: В файле несколько числовых полей и признак; нужно получить массив частиц с вычисленной энергией.
Откройте файл с кодировкой utf-8.
Разбейте строку по пробелам и табуляции: split() без аргументов.
Замените запятую на точку у всех числовых полей.
Преобразуйте x, y, Vx, Vy, m в float; признак оставьте строкой.
Вычислите E и сохраните частицу целиком.
Проверьте на первых строках, что порядок полей совпадает с условием.
Пример
Шаблон для файла демоверсии 2027.
data = []
for line in open('27.txt', encoding='utf-8'):
x, y, vx, vy, m, sign = line.replace(',', '.').split()
x, y, vx, vy, m = map(float, (x, y, vx, vy, m))
e = 0.5 * m * (vx * vx + vy * vy)
data.append((e, x, y, sign))
ОтветДля первой строки примера E = 0,5 · 0,5 · (2² + 0²) = 1,0.
По мотивам решений задач № 31521 и № 29979.
02
когда кластер задан порогом R
Кластеризация по энергии
Когда использовать: Нужно разбить частицы по числовому признаку так, чтобы разность любых двух значений в кластере не превышала R.
Отсортируйте частицы по E.
Первую частицу поместите в первый кластер.
Сравнивайте каждую следующую с предыдущей.
Если разность больше R, начинайте новый кластер.
Проверьте, что кластеров ровно K.
Если K не совпало, проверьте R, разделитель и точность.
Пример
Сортировка и разрывы больше R.
data.sort(key=lambda p: p[0])
R = 2.0
clusters = [[data[0]]]
for cur, prev in zip(data[1:], data):
if cur[0] - prev[0] > R + 1e-9:
clusters.append([])
clusters[-1].append(cur)
print(len(clusters))
ОтветВ учебном примере разрывы 2,5; 3 и 3 дают 4 кластера.
По мотивам задач № 20130, 20291 и 31521.
03
когда центр — минимум суммы отклонений
Центр кластера как медиана
Когда использовать: В условии сказано: центр — частица с минимальной суммой расстояний (или модулей разностей) до остальных.
Отсортируйте энергии внутри кластера.
Возьмите средний элемент.
Для чётного размера проверьте оба средних, но в задании обещают единственный центр.
Сохраните не только E, но и координаты и признак центра.
Если признак не энергия, а расстояние на плоскости, перебирайте все точки и считайте сумму расстояний.
Пример
Для массива (E, x, y, sign): медиана по энергии и медоид по расстояниям.
from math import hypot
def center(cluster):
return sorted(cluster, key=lambda p: p[0])[len(cluster) // 2]
def medoid(cluster):
return min(
cluster,
key=lambda p: sum(hypot(p[1] - q[1], p[2] - q[2]) for q in cluster)
)
ОтветВ учебном примере центры имеют E = 1,5; 6; 11; 16.
По мотивам задач № 20207, 21929, 28848 и 31521.
04
когда Q1 требует отобрать точки
Второй признак и расстояние
Когда использовать: Нужно максимальное расстояние между частицами с определённым признаком внутри одного кластера.
Пройдите по кластерам отдельно.
Отфильтруйте частицы с нужным признаком.
Переберите все пары i и j, где j больше i.
Считайте евклидово расстояние.
Обновляйте глобальный максимум.
Не сравнивайте точки из разных кластеров.
Пример
Поиск максимального расстояния среди частиц признака II.
from math import hypot
best = 0
for cluster in clusters:
pts = [(x, y) for e, x, y, sign in cluster if sign == 'II']
for i in range(len(pts)):
for j in range(i + 1, len(pts)):
d = hypot(pts[i][0] - pts[j][0], pts[i][1] - pts[j][1])
best = max(best, d)
ОтветВ учебном примере пары признака II есть только в кластере C: P7(20; 0) и P8(23; 4). Расстояние равно 5.
Демоверсия 2027; по мотивам решений задач № 20291, 20292 и 31521.
05
для тренировочных задач со звёздами
Геометрическая кластеризация
Когда использовать: Кластеры заданы прямоугольниками H×W, расстоянием между точками или единичной окрестностью, а не одним числовым признаком.
Если кластеры разделены прямыми, подберите пороги по x и y и разложите точки.
Если кластер — цепочка близких точек, используйте обход в ширину или глубину: берите точку и присоединяйте всех соседей на расстоянии не больше eps.
Повторяйте, пока точки не закончатся.
Проверьте количество кластеров и их размеры.
Для прямоугольников H×W подбирайте eps с запасом, но не склеивайте соседние кластеры.
Пример
Обход точек по окрестности.
from math import hypot
def split_clusters(points, eps):
points = points[:]
clusters = []
while points:
stack = [points.pop()]
cluster = []
while stack:
p = stack.pop()
cluster.append(p)
near = [q for q in points if hypot(p[0] - q[0], p[1] - q[1]) <= eps]
for q in near:
points.remove(q)
stack.append(q)
clusters.append(cluster)
return clusters
ОтветЕсли расстояние внутри кластера не больше 1, а между кластерами — больше 1, eps = 1 разделяет точки правильно.
По мотивам решений задач № 18674, 20130, 21262, 21928 и 22509.
06
когда центр определён иначе
Другие опорные точки
Когда использовать: В условии есть центроид, медиана, диагональ, крайние точки, точка наведения или плотность.
Центроид: среднее x и среднее y по кластеру.
Медиана по x и y: отдельная сортировка по каждой координате.
Антицентр: точка с максимальной суммой расстояний.
Диагональ: две наиболее удалённые точки кластера.
Крайние точки: две ближайшие точки разных кластеров.
Точка наведения: максимум точек в окрестности; при равенстве — большая координата x.
Изолированная точка: минимум точек в окрестности; при равенстве — большая координата y.
Плотность: среднее число точек в окрестности по всем точкам кластера.
Пример
Для списка точек-пар (x, y): медоид возвращает точку кластера, центроид — вычисленную точку, которой может не быть в файле.
from math import hypot
def medoid(cluster):
return min(
cluster,
key=lambda p: sum(hypot(p[0] - q[0], p[1] - q[1]) for q in cluster)
)
def centroid(cluster):
return (sum(p[0] for p in cluster) / len(cluster),
sum(p[1] for p in cluster) / len(cluster))
По мотивам задач № 20207, 20217, 20293, 20294, 21929 и 22509.
07
когда в задаче файлы A и B
Агрегаты и два файла
Когда использовать: Нужно обработать два набора данных и вывести по два числа для каждого либо одну строку с двумя числами.
Оформите обработку одного файла функцией, чтобы не копировать код.
Для файлов A и B вызовите её отдельно и сохраните результаты.
Среднее арифметическое делите на количество кластеров, а не на количество точек.
Минимум и максимум ищите среди значений по кластерам, а не по всем частицам.
В старых задачах ответ — две строки; в 2027 — одна строка из двух чисел.
Проверьте, не нужно ли взять модуль или целую часть.
Пример
Разделение обработки на функцию.
# read, split и center — функции из методов 01–03
def solve(path):
data = read(path)
clusters = split(data)
centers = [center(c) for c in clusters]
return clusters, centers
clusters_a, centers_a = solve('27A.txt')
clusters_b, centers_b = solve('27B.txt')
ОтветСначала печатайте результат для A, затем для B, если в условии две строки.
По мотивам задач № 20130, 20291, 20292, 20293 и 20294.
08
когда осталось записать ответ
Целая часть и формат ответа
Когда использовать: Величины найдены, нужно умножить, взять целую часть и записать числа.
Убедитесь, что Q1 и Q2 считаются в тех же единицах, что в условии.
Умножьте на 10 000 или на другой коэффициент из условия.
Возьмите int(), если нужна целая часть; abs(), если нужна абсолютная величина.
Формат проекта КИМ 2027; критерии оценивания — 2 балла, 1 балл при одном верном числе.
09
готовое решение
Полный шаблон для демоверсии 2027
Когда использовать: Нужно проверить себя или разобрать демонстрационный вариант целиком.
Скопируйте шаблон и подставьте имя файла.
Проверьте, что в файле нет заголовка.
Запустите и сравните количество кластеров с K.
Если K не совпало, выведите разрывы энергий и проверьте R.
Сверьте Q1 и Q2 с ручной проверкой на нескольких кластерах.
Пример
Полное решение демоверсии 2027.
from math import hypot
data = []
for line in open('27.txt', encoding='utf-8'):
x, y, vx, vy, m, sign = line.replace(',', '.').split()
x, y, vx, vy, m = map(float, (x, y, vx, vy, m))
e = 0.5 * m * (vx * vx + vy * vy)
data.append((e, x, y, sign))
data.sort(key=lambda p: p[0])
R = 2.0
clusters = [[data[0]]]
for cur, prev in zip(data[1:], data):
if cur[0] - prev[0] > R + 1e-9:
clusters.append([])
clusters[-1].append(cur)
centers = [sorted(c, key=lambda p: p[0])[len(c) // 2] for c in clusters]
q1 = 0
for c in clusters:
pts = [(x, y) for e, x, y, sign in c if sign == 'II']
for i in range(len(pts)):
for j in range(i + 1, len(pts)):
q1 = max(q1, hypot(pts[i][0] - pts[j][0], pts[i][1] - pts[j][1]))
q2 = max(c[0] for c in centers)
print(int(q1 * 10000), int(q2 * 10000))
ОтветДля учебного примера: 50000 160000. Для файла демоверсии 2027 ответ: 539936 100704.
Полный шаблон по мотивам решений задач № 31521, 29979, 31371 и 31233; адаптирован к демоверсии 2027.
Видеоразборы открытого курса КомпЕГЭ; для заданий 8–12 и 27 — дополнительные разборы демоверсии 2027.
По базе Kompege: 456 задач по заданию 27, 45 решений (42 программных и 3 текстовых) и 95 видеоразборов (3 YouTube, 61 VK, 31 Rutube). Для методов отобраны решения задач № 18068, 18674, 20130, 20132, 20207, 20217, 20291–20295, 21262, 21293, 21928–21932, 22509, 24670, 27797, 28848, 29979, 31233, 31371 и 31521; примеры переработаны в учебные.
Разборы из видео
Задачи, которые разбирают в курсе
Условия и код показаны в кадре в конце соответствующего фрагмента. Источники задач — КомпЕГЭ, сайт К. Полякова, ФИПИ и другие.
из разбора
разбор из видео · 2025
Центроиды и расстояния между кластерами
Даны два файла с точками A и B. Кластеры заданы порогами по x и y. Для файла A найдите Px и Py — средние координаты центров кластеров. Для файла B найдите Q1 и Q2 — минимальное и максимальное расстояние между центрами кластеров. Ответ — целые части произведений на 10000.
По одному пункту на каждую главу: условие или код из кадра, ответ и ссылка. Источники задач — КомпЕГЭ, сайт К. Полякова, ФИПИ и другие; номер берётся из кадра. Текст с экрана распознан автоматически, служебные строки и артефакты удалены; если текст нечитаем, остаются название, таймкод и ссылка.
Показать все фрагменты (34)
2026 · 00:00Приветствие
Каждая звезда обязательно принадлежит только одному из кластеров. Центр кластера, или центроид, это одна из звёзд на графике, сумма расстояний от которой до всех остальных звёзд кластера минимальна. Расстояние между двумя точками A(X, ур) и B(Xp, 92) вычисляется по формуле: „Даны два входных файла (файл A и файл. В файле „ 'А хранятся данные о звёздах двух кластеров. каждой строке записана информация 0 4 "расположении на карте одной звезды: сначала координата X, затем координата у (в условных 4 единицах). Известно, что количество звёзд не ы превышает 1000. В файле B хранятся данные о звёздах трёх кластеров. Известно, что количество звёзд не превышает 10 000.
elif y>10: clA[0].append([x,y])
else: clA[1].append([x,y])
elif x<15: clB[0].append([x,y])
elif y>8: clB[1].append([x,y])
else: clB[2].append([x,y])
from math import dist a
def centr(cl):
for p in cl:
return min(m)[1]
px = int(abs(x0-x1)*10000)
elif y>15: clA[0].append([x,y])
else: clA[1].append([x,y])
elif y>13: cl6[1].append([x,y])
else: clB[2].append([x,y])
from math import dist
def centr(el):
for p in cl:
return min(m)[1]
Гарантируется, что такое разбиение единственно для заданных размеров прямоугольников. Расстояние между двумя точками А(з1. Антицентром кластера будем называть точку кластера, сумма расстояний OT которой до остальных точек этого кластера максимальна. В файле A хранятся координаты точек двух класте
else: clA[1] append([x,y])
elif y>16: clB[0].append([x,y])
elif x>25: clB[1].append([x,y])
else: clB[2].append([x,y])
from math import dist
def acentr(cl):
for p in cl:
return max(m)[1]
Каждая звезда обязательно принадлежит только одному из кластеров. Центр кластера, или центроид, это одна из звёзд на графике, сумма расстояний от которой до всех остальных звёзд кластера минимальна. Расстояние между двумя точками A(X, ур) и B(Xp, 92) вычисляется по формуле: „Даны два входных файла (файл A и файл. В файле „ 'А хранятся данные о звёздах двух кластеров. каждой строке записана информация 0 4 "расположении на карте одной звезды: сначала координата X, затем координата у (в условных 4 единицах). Известно, что количество звёзд не ы превышает 1000. В файле B хранятся данные о звёздах трёх кластеров. Известно, что количество звёзд не превышает 10 000.
Кластер звёзд — это набор звёзд (точек) на графике. центроил, — это одна из звёзд на графике, сумма расстояний от которой ло всех остальных звёзд. Расстояние между лвумя точками A(X, у1) п B(X2, уз) вычисляется по ‚Даны лва входных файла (фаблА и файл В). В файле А хранятся" "данные о звёздах двух кластеров. В каждой строке записана ы информация о расположении на карте одной звезды: сначала м координата X, затем координата у (в условных единииах. Известно, что количество звёзл не превышает 1000. В файле B > "хранятся данные о звёздах трёх кластеров. количество звёзд не превышает 10 000.
2025 · 56:40Аналитическое разбиение на кластеры II
Каждая звезда обязательно приналлежит только одному из кластеров. Центр кластера, пли пентроид, это одна из звёзд на графике, сумма расстояний от которой до. всех остальных звёзл кластера минимальна. Расстояние между лвумя точками A(X, 1) и ВС. одной условной ешшишы от точек кластеров. аномалии учитывать не нужно. Даны два вхолных файла (файл А. В файле А хранятся данные о звёздах двух кластеров. каждой строке записана информация о расположении на карте одной звезлы: сначала координата х, затем координата у (в условных единицах). Известно, что количество звёзл не превышает 1000. В файле Б хранятся ланные о звёздах
2025 · 1:16:50Аналитическое разбиение с аномалиями I
звёзд (точек) на графике. Каждая звезда обязательно принадлежит только одному из кластеров. Центр кластера, или иентроид, — это одна из звёзд на графике, сумма расстояний от которой ло. всех остальных звёзл кластера уз) вычисляется по формуле: Аномалиями назовём точки, находящиеся Ha расстоянии более одной условной единицы от точек кластеров. аномалии учитывать не нужно. Даны Ba входных файла (файл А. В файле A хранятся данные о звёздах двух кластеров. Расстояние между лвумя точками A(x, У1) п BOX, кажлой строке записана информашия о расположении на карте одной звезды: сначала координата х, затем координата у (в условных единицах).
2025 · 1:46:40Аналитическое разбиение с аномалиями II
звёзд (точек) на графике. Кажлая звезда обязательно принадлежит только саному из кластеров. — это одна по звёзд на графике. сумма расстояний от которой ло всех остальных звёзд кластера зинимальна. Расстояние между двумя точками Абу) и Вх, Аномалиями назовём точки, нахоляшнеся на расстоянии более z одной условной единицы от точек кластеров. При расчётах Е аномалии учитывать не нужно. Даны два входных файла (файла (35) Г. В файле Ахрмятся данные о завал yx кластеров. зажсюй строке записана пформашия о расположении на карте превышает 1000.
for p in kl:
return min(m)[1]
def center(kl):
print(int(pxA), int(pyA))
print(int(pxB), int(pyB))
звёзд (точек) ва графике. каждой строке записана информашия о расположении на карте одной звезлы: сначала координата х, затем координата у (в условных единицах). Известно, что количество звёзл HE ы превышает 1000. В файле Б хранятся анные о звёздах трёх кластеров. Повестно, что количество звёзд He превышает 10 000.
Каждая звезда обязательно принадлежит только одному из кластеров. Центр кластера, или центроид, это одна из звёзд на графике, сумма расстояний от которой до всех остальных звёзд кластера минимальна. Расстояние между двумя точками A(X, ур) и B(Xp, 92) вычисляется по формуле: „Даны два входных файла (файл A и файл. В файле „ 'А хранятся данные о звёздах двух кластеров. каждой строке записана информация 0 4 "расположении на карте одной звезды: сначала координата X, затем координата у (в условных 4 единицах). Известно, что количество звёзд не ы превышает 1000. В файле B хранятся данные о звёздах трёх кластеров. Известно, что количество звёзд не превышает 10 000.
кластера, или центроид, — это одна из звёзд на графике, сумма расстояний от которой до всех остальных звёзд кластера минимальна. Расстояние между двумя точками A(X, ур) и B(xp, 92) вычисляется по формуле: Даны два входных файла (файл А и файл Б). В файле —— Ахранятся данные 0 звёздах двух кластеров. каждой строке записана информация 0 "расположении на карте одной звезды: координата х, затем координата у (в условных единицах). Известно, что количество звёзд не превышает 1000. В файле Б хранятся данные о звёздах трёх кластеров. Известно, что количество звёзд не превышает 10 000. Структура хранения "информации о звездах в файле B аналогична файлу Возможные данные одного из файлов Для к
from math import dist
while data:
cl = [data.pop()]
for p in cl:
for p1 in sosed:
print([len(cl) for el in clusters])
from turtle import *
for cl in clusters:
for x,y in cl:
def centroid(cl):
кластера, или центроид, — это одна из звёзд на графике, сумма расстояний от которй о = 670494 317539 всех остальных звёзл кластера минимальна. Расстояние между двумя точками A(X), У) п о B(x, ¥2) вычисляется по формуле: Даны два входных файла (файл А и файл 5). хранятся данные о звёздах двух кластеров. В кажлой строке "записана информация о расположении на карте одной Y Oa звезды: сначала координата X, затем координата у (в. Известно, что количество звёалне РЕ ИЕ ИИ превышает 1000. В файле Б хранятся данные о звёздах трёх. Известно, что количество звёзд He превышает 10 " Структура хранения информации о звездах в файле B + аналогична файлу A.
соседних звёзд (точек) на графике. Каждая звезда обязательно принадлежит только одному из кластеров. Центр кластера, или пентроид, — это одна из звёзд на графике, сумма расстояний от которой до всех остальных звёзд кластера минимальна. Расстояние между „двумя точками A(X, у1) и B(X2, у) вычисляется по формуле: расчётах аномалии учитывать не нужно. Даны лва входных (3) + звёздах двух кластеров. В каждой строке записана информания о расположении на карте одной звезды: сначала координата х, затем координата у (в условных единицах). Известно, что количество звёзд не превышает 10 000. Структура хранения информации о звездах в файле Б аналогична файлу А. Возможные данные одного из
Каждый населенный пункт обязательно принадлежит только одному району. Столица района (или пентроид) — это такой населенный пункт, сумма манхэттенских расстояний от которого до всех других населённых пунктов в кластере минимальна. Манхэттенское расстояние между двумя точками A(X, у1) и В(хо, y>) вычисляется по формуле: Даны два входных файла (файл А и файл Б). хранятся данные о точках двух кластеров. В каждой строке записана информания о расположении одной точки: сначала координата X, затем координата у (в условных единииах).
кластеров и определить их среднее арифметическое Даны два входных файла (файл А и файл Б). В файле * "Ахранятся данные о звёздах двух кластеров. каждой строке записана информация о "расположении на карте одной звезды: сначала координата X, затем координата у (в условных единицах). Известно, что количество звёзд не превышает 1000. В файле B аналогичной структуры хранятся данные о звёздах четырёх кластеров. Известно, что количество звёзд не превышает 10 000. Возможные данные одного из файлов иллюстрированы графиком. Для каждого файла определите раднус каждого кластера, затем вычислите В — среднее арифметическое радиусов кластеров. В ответе запишите два числа: сначала абсолютное значение целой
У-меднана кластера определяется " аналогично для ординат точек. Даны два входных файла (файл А и файл B). В файле " 'Ахранятся данные о звёздах двух кластеров. каждой строке записана информация о "расположении на карте одной звезды: сначала q координата x, затем координата у (в условных единицах). Известно, что количество звёзд не превышает 1000. В файле B аналогичной структуры хранятся данные о звёздах трёх.
def medianax(cl):
for p incl:
return p[0]
def medianay(cl):
for p in cl:
Каждая звезда обязательно принадлежит только одному из кластеров; ближайшие точки разных кластеров отстоят друг от друга не менее, чем на единичное расстояние. Расстояние между двумя точками A(X, у) и B(X2, у2) вычисляется по Средним расстоянием $ назовём среднее арифметическое расстояние между всеми парами различных точек B Даны два входных файла (файл А и файл Б). хранятся данные о звёздах четырёх кластеров. В каждой строке записана информация о расположении на карте одной звезлы: сначала координата х, затем координата у (в условных единицах). Известно, что количество звёзд не =. В файле Б аналогичной структуры хранятся данные о звёздах семи кластеров
Даны два входных файла (файл Ап файл). В файле А хранятся данные о звёздах двух кластеров. В каждой строке записана информация о "расположении на карте одной точки: сначала координата х, затем координата у (в условных единипах). Известно, зто количество точек не превышает 1000. В файле B хранятся данные о трёх кластерах. Известно, что количество точек не превышает 10 000. Структура хранения информации о точках в файле Б аналогична
def max_min_ras(cl1,cl2):
for pt in cli:
for p2 in cl2:
return [min(m), max(m)]
from itertools import *
for cli, cl2 in combinations(clusters,2):
Крючков) В лесу выделено несколько мест (кластеров), где растёт много „деревьев, предназначенных для вырубки. После спиливания дерева его нужно доставить в точку сбора, которая совпадает с одним из деревьев кластера. Стоимость доставки "определяется как расстояние от дерева до точки сбора, умноженное на высоту дерева. (шентр), такую что суммарная стоимость доставки в это. место всех спиленных деревьев данного кластера минимальна. Аномалиями назовём совокупности из не более чем 10 точек, каждая из которых находится на "расстоянии более 30 м от точек кластеров. Аномалии в "расчётах не учитываются. Даны два входных файла (файл А. В файле A хранятся данные о двух кластерах.
for s in
for pin cit
def centroid(cl):
for p in cl:
return min(m)[1]