Задания
Версия для печати и копирования в MS Word
Тип 27 № 75264
i

В ла­бо­ра­то­рии про­во­дит­ся экс­пе­ри­мент, со­сто­я­щий из мно­же­ства ис­пы­та­ний. Ре­зуль­тат каж­до­го ис­пы­та­ния пред­став­ля­ет­ся в виде пары чисел.

Для ви­зу­а­ли­за­ции ре­зуль­та­тов эта пара рас­смат­ри­ва­ет­ся как ко­ор­ди­на­ты точки на плос­ко­сти, и на чер­те­же от­ме­ча­ют­ся точки, со­от­вет­ству­ю­щие всем ис­пы­та­ни­ям.

По ре­зуль­та­там экс­пе­ри­мен­та про­во­дит­ся кла­сте­ри­за­ция по­лу­чен­ных ре­зуль­та­тов: на плос­ко­сти вы­де­ля­ет­ся не­сколь­ко кла­сте­ров  — кру­гов ра­ди­у­са не более 3 еди­ниц так, что каж­дая точка по­па­да­ет ровно в один кла­стер.

Цен­тром кла­сте­ра счи­та­ет­ся та из вхо­дя­щих в него точек, для ко­то­рой ми­ни­маль­но мак­си­маль­ное из рас­сто­я­ний до всех осталь­ных точек кла­сте­ра.

При этом рас­сто­я­ние вы­чис­ля­ет­ся по стан­дарт­ной фор­му­ле рас­сто­я­ния между точ­ка­ми на ев­кли­до­вой плос­ко­сти.

Ра­ди­у­сом кла­сте­ра счи­та­ет­ся мак­си­маль­ное из рас­сто­я­ний от цен­тра до осталь­ных точек кла­сте­ра.

Об­ра­бот­ка ре­зуль­та­тов экс­пе­ри­мен­та вклю­ча­ет сле­ду­ю­щие шаги:

1)  кла­стер, со­дер­жа­щий наи­боль­шее число точек, ис­клю­ча­ет­ся;

2)  опре­де­ля­ют­ся цен­тры и ра­ди­у­сы всех остав­ших­ся кла­сте­ров;

3)  вы­чис­ля­ет­ся сред­ний ра­ди­ус остав­ших­ся кла­сте­ров.

В файле за­пи­сан про­то­кол про­ве­де­ния экс­пе­ри­мен­та. Каж­дая стро­ка файла со­дер­жит два числа: ко­ор­ди­на­ты X и Y точки, со­от­вет­ству­ю­щей од­но­му ис­пы­та­нию. По дан­но­му про­то­ко­лу надо опре­де­лить сред­ний ра­ди­ус всех кла­сте­ров за ис­клю­че­ни­ем со­дер­жа­ще­го наи­боль­шее число точек.

Файл A

Файл B

 

Вам даны два вход­ных файла (A и B), каж­дый из ко­то­рых имеет опи­сан­ную выше струк­ту­ру. По дан­ным каж­до­го из пред­став­лен­ных фай­лов опре­де­ли­те сред­ний ра­ди­ус по опи­сан­ным выше пра­ви­лам.

В от­ве­те за­пи­ши­те два числа: сна­ча­ла сред­ний ра­ди­ус для файла A, затем для файла B.

В ка­че­стве зна­че­ния ука­зы­вай­те целую часть от умно­же­ния най­ден­но­го чис­ло­во­го зна­че­ния на 10 000.

 

Ответ:

Спрятать решение

Ре­ше­ние.

По­стро­им диа­грам­мы для файла А и Б. Для этого вос­поль­зу­ем­ся таб­лич­ным ре­дак­то­ром.

 

Диа­грам­ма для файла А:

Диа­грам­ма для файла Б:

 

При­ведём ре­ше­ние на языке Python для файла А.

import math

f = open('27A.txt')

claster = [[] for i in range(3)]

for s in f:

x,y = [float(c) for c in s.split()]

if y < 2:

claster[0].append ([x,y])

elif x < 3:

claster[1].append ([x,y])

else:

claster[2].append ([x,y])

del claster[claster.index(max(claster,key=len))]

radius = [0, 0]

for i in range(len(claster)):

tmp = 10**10

for x1, y1 in claster[i]:

maxi =0

for x2, y2 in claster[i]:

maxi = max(maxi, math.dist([x1,y1],[x2,y2]))

if maxi < tmp:

tmp = maxi

radius[i] = tmp

middle = sum([r for r in radius]) / 2

print(int(middle * 10000))

 

При­ведём ре­ше­ние на языке Python для файла B.

import math

f = open('27B.txt')

claster = [[] for i in range(5)]

for s in f:

x,y = [float(c) for c in s.split()]

if x < -1.5:

claster[0].append ([x,y])

elif x > 4 and y >6:

claster[1].append ([x,y])

elif y > 5:

claster[2].append ([x,y])

elif x > 2:

claster[3].append ([x,y])

else:

claster[4].append ([x,y])

del claster[claster.index(max(claster,key=len))]

radius = [0, 0, 0, 0]

for i in range(len(claster)):

tmp = 10**10

for x1, y1 in claster[i]:

maxi =0

for x2, y2 in claster[i]:

maxi = max(maxi, math.dist([x1,y1],[x2,y2]))

if maxi < tmp:

tmp = maxi

radius[i] = tmp

middle = sum([r for r in radius]) / 4

print(int(middle * 10000))

 

 

Ответ: 8807; 10741.


Аналоги к заданию № 75264: 75291 Все