Вероятность перегрузки при сигнале счётчика

тема: Вероятность и матожидание · уровень: средний

Условие

В доме установлены счётчики электричества с системой автоматического контроля. Система может послать сигнал о возможной перегрузке, если расход энергии кажется необычно высоким. Иногда такие сигналы оказываются ложными тревогами.

Управляющая компания получила две таблицы. В первой содержатся результаты проверки квартир: была ли подтверждена перегрузка. Во второй содержатся сигналы системы. Строки двух таблиц могут идти в разном порядке, поэтому их нужно сопоставить по идентификатору квартиры.

Пусть E — событие «в квартире подтверждена перегрузка», а S — событие «система послала сигнал». В расчёт включаются только квартиры, у которых известны оба значения. Требуется найти условную вероятность P(E|S) по формуле Байеса:

P(E|S) = P(S|E) · P(E) / P(S).

Все вероятности в формуле считаются как доли среди квартир, включённых в расчёт. Гарантируется, что среди таких квартир есть хотя бы одна с подтверждённой перегрузкой и хотя бы одна с сигналом системы. При равенстве каких-либо промежуточных величин выбор не производится, так как выводится единственное числовое значение.

Формат ввода

В первой строке дано целое число n — число квартир.

Следующие n строк образуют таблицу проверок. В каждой строке записаны идентификатор квартиры apartment_id и значение overload, разделённые пробелом:

Следующие n строк образуют таблицу сигналов. В каждой строке записаны идентификатор квартиры apartment_id и значение alarm, разделённые пробелом:

Идентификаторы квартир в каждой таблице не повторяются, а множества идентификаторов в двух таблицах совпадают.

Формат вывода

Выведите вероятность P(E|S) ровно с четырьмя знаками после десятичной точки.

Ограничения

1 ≤ n ≤ 2000.

Длина каждого идентификатора квартиры — от 1 до 12 символов. Идентификатор состоит из латинских букв, цифр и символа _.

Значения overload и alarm принадлежат множеству 0, 1, -.

Не менее чем для одной квартиры известны оба значения, причём overload = 1 и alarm = 1. Также среди строк с известными обоими значениями есть хотя бы одна квартира с overload = 1 и хотя бы одна квартира с alarm = 1.

Решить задачу с автопроверкой на Python →

Куда дальше