Фрагмент звёздного неба спроецирован на плоскость с декартовой системой координат. Учёный решил провести кластеризацию полученных точек, являющихся изображениями звёзд, то есть разбить их множество на N непересекающихся непустых подмножеств (кластеров), таких, что точки каждого подмножества лежат внутри квадрата со стороной длиной H, причём эти квадраты между собой не пересекаются. Стороны квадрата не обязательно параллельны координатным осям. Гарантируется, что такое разбиение существует и единственно для заданных размеров квадрата.
Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных точек кластера минимальна. Для каждого кластера гарантируется единственность его центра. Расстояние между двумя точками на плоскости $A ( x_1, y_1 )$ и $B ( x_2, y_2 )$ вычисляется по формуле:
$d ( A, B ) = $\sqrt{аргумента: ( x_2 - x_1 ) ^2 + ( y_2 - y_1 ) ^2}$ аргумента$
В файле А хранятся координаты точек двух кластеров, где H = 4,7 для каждого кластера. В каждой строке записана информация о расположении на карте одной звезды: сначала координата x, затем координата y. Известно, что количество точек не превышает 1000.
В файле Б хранятся координаты точек трёх кластеров, где H = 4 для каждого кластера. Известно, что количество точек не превышает 10 000. Структура хранения информации в файле Б аналогична файлу A.
Файл A
Файл B
Для каждого файла определите координаты центра каждого кластера, затем вычислите два числа: Px — среднее арифметическое абсцисс центров кластеров и Py — среднее арифметическое ординат центров кластеров.
В ответе запишите четыре числа: в первой строке — сначала целую часть произведения $|P_x|\times 10000$ затем целую часть произведения $|P_y|\times 10 000$ для файла A, во второй строке — аналогичные данные для файла Б.
Возможные данные одного из файлов иллюстрированы графиком.
Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию. Для выполнения задания используйте данные из прилагаемого файла.
[рис.]
Ответ:
Будем называть центром кластера точку этого кластера, сумма расстояний от которой до всех остальных точек кластера минимальна. Для каждого кластера гарантируется единственность его центра. Расстояние между двумя точками на плоскости $A ( x_1, y_1 )$ и $B ( x_2, y_2 )$ вычисляется по формуле:
$d ( A, B ) = $\sqrt{аргумента: ( x_2 - x_1 ) ^2 + ( y_2 - y_1 ) ^2}$ аргумента$
В файле А хранятся координаты точек двух кластеров, где H = 4,7 для каждого кластера. В каждой строке записана информация о расположении на карте одной звезды: сначала координата x, затем координата y. Известно, что количество точек не превышает 1000.
В файле Б хранятся координаты точек трёх кластеров, где H = 4 для каждого кластера. Известно, что количество точек не превышает 10 000. Структура хранения информации в файле Б аналогична файлу A.
Файл A
Файл B
Для каждого файла определите координаты центра каждого кластера, затем вычислите два числа: Px — среднее арифметическое абсцисс центров кластеров и Py — среднее арифметическое ординат центров кластеров.
В ответе запишите четыре числа: в первой строке — сначала целую часть произведения $|P_x|\times 10000$ затем целую часть произведения $|P_y|\times 10 000$ для файла A, во второй строке — аналогичные данные для файла Б.
Возможные данные одного из файлов иллюстрированы графиком.
Внимание! График приведён в иллюстративных целях для произвольных значений, не имеющих отношения к заданию. Для выполнения задания используйте данные из прилагаемого файла.
[рис.]
Ответ:
💡 Пошаговый разбор и решение:
##Приведём решение на языке Python.
from math import dist
data = []
# Для А/Б
for s in open('3920.txt'):
x, y = [float(d) for d in s.replace(',', '.').split()]
data.append([x, y])
rast = 1
clusters = []
while data:
cl = [data.pop()]
for p in cl:
sosed = [p1 for p1 in data if dist(p, p1) Ответ:
49704 150425
38907 20259
from math import dist
data = []
# Для А/Б
for s in open('3920.txt'):
x, y = [float(d) for d in s.replace(',', '.').split()]
data.append([x, y])
rast = 1
clusters = []
while data:
cl = [data.pop()]
for p in cl:
sosed = [p1 for p1 in data if dist(p, p1) Ответ:
49704 150425
38907 20259
Правильный ответ:
49704&150425&38907&20259
📚 Похожие разобранные задания по предмету:
ID 33298 • Задание №19
Представленный ниже на пяти языках программирования фрагмент программы обрабатывает элементы одномерного целоч...
ID 31447 • Задание №11
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 30 символов. В качес...
🔗 Другие задания линии №27 по предмету Информатика:
ID 34669
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой ...
ID 34670
Последовательность натуральных чисел характеризуется числом Х — наибольшим числом, кратным 14 ...
ID 34671
На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются ...
ID 34672
Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последо...
ID 34673
На вход программы поступает последовательность из N натуральных чисел. Рассматриваются все пары...