СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Подготовка к ЕГЭ

Категория: Информатика

Нажмите, чтобы узнать подробности

разбор решения задачи с сайта Полякова 2753b(метод DBSCAN)

Просмотр содержимого документа
«Подготовка к ЕГЭ»



Считываем данные из файла в список

from math import * -подкл.библиотеку

file=open('27-72b.txt')

C=[]- хранит список исходных точек

A=[]-хранит данные по каждому кластеру (список списков)

for j in file:

x, y=map(float, j.split())

C. append([x, y])

print ( len(C))



распределяем точки по кластерам


while C: -пока есть точки в списке С

A.append([C.pop()]) -удаляем из списка С точку и ее добавляем в конец списка А

for p1 in A[-1]:

for p2 in C.copy():

if dist(p1,p2)

A[-1].append(p2)

C.remove(p2)


print(len(A))

for j in range(4):

print(len(A[j]))

Размер каждого кластера



пишем функцию для нахождения центра каждого кластера

def f(n):

minn=10**8

for p1 in n:

r=0

for p2 in n:

r+=dist(p1,p2)

if r

minn=r

xy=p1

return xy



Вызов функции для вычисления центра каждого кластера

sp0=f(A[0])

sp1=f(A[1])

sp2=f(A[2])

sp3=f(A[3])


print(int((sp0[0]+sp1[0]+sp2[0]+sp3[0])/4*10000))

print(int((sp0[1]+sp1[1]+sp2[1]+sp3[1])/4*10000))






10000- кол-во исходных точек

18- кол-во кластеров

Размер полученных кластеров

2498

2497

2498

2493

Ответ к задаче



92513

7039