N непересекающихся непустых подмножеств (кластеров), таких, что точки
Условие
Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на N непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри квадрата со стороной длиной H, причём эти квадраты между собой не пересекаются. Стороны квадрата не обязательно параллельны координатным осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров квадрата. Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных точек кластера минимальна. Для каждого кластера гарантируется единственность его центра. Расстояние между двумя точками на плоскости и вычисляется по формуле: В файле А хранятся координаты точек двух кластеров, где H = 4,7 для каждого кластера. В каждой строке записана информация о расположении на карте одной звезды: сначала координата x, затем координата y. Известно, что количество точек не превышает 1000. В файле Б хранятся координаты точек трёх кластеров, где H = 5 для каждого кластера. Известно, что количество точек не превышает 10000. Структура хранения информации в файле Б аналогична файлу A.Файл AФайл BДля каждого файла определите координаты центра каждого кластера, затем вычислите два числа: Pₓ — среднее арифметическое абсцисс центров кластеров и P_y — среднее арифметическое ординат центров кластеров.В ответе запишите четыре числа: в первой строке — сначала целую часть произведения затем целую часть произведения для файла A, во второй строке — аналогичные данные для файла Б.Возможные данные одного из файлов иллюстрированы графиком.Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию. Для выполнения задания используйте данные из прилагаемого файла.

Ответ:
Ответ
493171502251331110797
Решение по шагам
Как рассуждать
Решение. ##Приведём решение на языке Python.from math import distdata = []# Для А/Бfor s in open('3920.txt'): x, y = [float(d) for d in s.replace(',', '.').split()] data.append([x, y]) rast = 1clusters = []while data: cl = [data.pop()] for p in cl: sosed = [p1 for p1 in data if dist(p, p1) < rast] for p1 in sosed: cl.append(p1) data.remove(p1) clusters.append(cl) #print(*[len(cl) for cl in clusters]) # - проверяет кол-во кластеров# 2 кластера для файла A и 3 для файла B# В случае противоречия меняем rast - это значение (Для A - rast = 2, для B - rast =
Осталось ещё 1 шаг — откроются после входа:
- Шаг 2
Бесплатно · займёт минуту