Пробный урок
📘 ЕГЭ по информатике 2027 · задание 27 из 27

Задание 27 ЕГЭ по информатике: Последовательность решения задач анализа данных: сбор, очистка, модель, визуализация, интерпретация

Что проверяет задание 27, сколько баллов оно приносит и сколько времени на него закладывать — и 3 примера в формате ФИПИ с подробным решением и ответом.

Уровень
высокий
Максимум
2 балла
Время
~36 минут
Компьютер
нужен (специальное ПО)

Примеры задания 27 с решениями

Сначала попробуйте решить сами, затем откройте решение и сверьте ответ

Пример 1

Учёный решил исследовать скопления звёзд. В файле записаны координаты звёзд (x, y) — по одной паре чисел в строке. Звёзды образуют два кластера. Центром кластера называется звезда, у которой сумма расстояний до остальных звёзд кластера минимальна. Найдите среднее арифметическое абсцисс центров кластеров Px и среднее арифметическое их ординат Py. В ответе запишите целые части произведений Px · 10 000 и Py · 10 000.
Показать решение
1. Строим точечную диаграмму в электронной таблице и смотрим, как разделить точки на кластеры — например, прямой y = x или условием x < 5. 2. Для каждого кластера ищем звезду с минимальной суммой расстояний до остальных — перебором. 3. Усредняем координаты центров и умножаем на 10 000.
from math import dist                                   # евклидово расстояние между двумя точками
pts = [tuple(map(float, line.replace(',', '.').split()))   # читаем пары координат, запятую меняем на точку
       for line in open('27.txt')]                      # по одной звезде в строке
cl = [[p for p in pts if p[1] > p[0]],                  # кластер выше прямой y = x (границу берём по диаграмме)
      [p for p in pts if p[1] <= p[0]]]                 # кластер ниже прямой
def center(c):                                          # центр кластера
    return min(c, key=lambda p: sum(dist(p, q) for q in c))   # точка с минимальной суммой расстояний
cs = [center(c) for c in cl]                            # центры обоих кластеров
px = sum(c[0] for c in cs) / len(cs)                    # среднее абсцисс центров
py = sum(c[1] for c in cs) / len(cs)                    # среднее ординат центров
print(int(px * 10000), int(py * 10000))                 # целые части, как требует условие
Если в файле есть строка заголовка, её нужно пропустить. Ответ зависит от файла с экзамена.

Пример 2

В файле записаны координаты звёзд (x, y) — по одной паре чисел в строке. Звёзды образуют три кластера. Центром кластера называется звезда, у которой сумма расстояний до остальных звёзд кластера минимальна. Найдите среднее арифметическое абсцисс центров кластеров Px и среднее арифметическое их ординат Py. В ответе запишите целые части произведений Px · 10 000 и Py · 10 000.
Показать решение
1. Строим точечную диаграмму и подбираем условия, разделяющие три кластера (например, по x: x < 3, 3 ≤ x < 7, x ≥ 7). 2. В каждом кластере перебором ищем центр, затем усредняем.
from math import dist                                          # расстояние между двумя точками
pts = [tuple(map(float, line.replace(',', '.').split()))       # читаем пары координат
       for line in open('27.txt')]                             # по одной звезде в строке
cl = [[p for p in pts if p[0] < 3],                            # первый кластер (границы — по диаграмме)
      [p for p in pts if 3 <= p[0] < 7],                       # второй кластер
      [p for p in pts if p[0] >= 7]]                           # третий кластер
def center(c):                                                 # центр кластера
    return min(c, key=lambda p: sum(dist(p, q) for q in c))    # минимальная сумма расстояний
cs = [center(c) for c in cl]                                   # центры всех кластеров
px = sum(c[0] for c in cs) / len(cs)                           # среднее абсцисс центров
py = sum(c[1] for c in cs) / len(cs)                           # среднее ординат центров
print(int(px * 10000), int(py * 10000))                        # ответ
Ответ зависит от файла с экзамена.

Пример 3

В файле записаны координаты звёзд (x, y) — по одной паре чисел в строке. Звёзды образуют два кластера. Центром кластера называется звезда, у которой сумма расстояний до остальных звёзд кластера минимальна. Для каждого кластера найдите звезду, наиболее удалённую от его центра. В ответе запишите целую часть наибольшего из этих двух расстояний, умноженного на 10 000.
Показать решение
1. Делим звёзды на кластеры по диаграмме, в каждом находим центр. 2. Для каждого кластера считаем расстояние от центра до самой дальней звезды и берём наибольшее из двух.
from math import dist                                          # расстояние между двумя точками
pts = [tuple(map(float, line.replace(',', '.').split()))       # читаем пары координат
       for line in open('27.txt')]                             # по одной звезде в строке
cl = [[p for p in pts if p[1] > p[0]],                         # кластер выше прямой y = x
      [p for p in pts if p[1] <= p[0]]]                        # кластер ниже прямой
def center(c):                                                 # центр кластера
    return min(c, key=lambda p: sum(dist(p, q) for q in c))    # минимальная сумма расстояний
far = []                                                       # дальние расстояния по кластерам
for c in cl:                                                   # для каждого кластера
    ce = center(c)                                             # его центр
    far.append(max(dist(ce, p) for p in c))                    # расстояние до самой дальней звезды
print(int(max(far) * 10000))                                   # наибольшее из двух · 10 000
Ответ зависит от файла с экзамена.

Не получается задание 27? Разберём на пробном уроке

Бесплатно покажем, как решать задание 27 и похожие, определим пробелы и составим план подготовки к ЕГЭ.

Записаться бесплатно

Все задания ЕГЭ по информатике

Структура экзамена, баллы и темы — на странице программы ЕГЭ по информатике