Задача Y. JCP-19. Нейро-область Ромбик
Имя входного файла: стандартный ввод
Имя выходного файла: стандартный вывод
Ограничение по времени: 1 с
Ограничение по памяти: 1024 МБ
На плоскости, с помощью четырех прямых, обозначенных (w1), (w2), (w3) и (w4), выделена область D, которая представлена на рисунке 1. Границы области D можно интерпретировать как охраняемый периметр.
Спроектируйте и реализуйте нейронную сеть, которая бы со 100-процентным результатом распознавала принадлежность объекта защиты, представляемого точкой с координатами (x1, x2), к области D (считаем, что границы области принадлежат области).
Результатом работы нейронной сети должно быть значение 1, если объект защиты с координатами (x1,x2) принадлежит D или 0 в противном случае.
Сеть, которую вам необходимо построить, должна быть двухслойной.
В ее входном слое три значения – 1, x1 и x2 координаты точки (х1,х2). В первом слое четыре персептрона, каждый из которых реализует разбиение плоскости на две полуплоскости одной из заданных прямых (w1)-(w4). Во втором слое один персептрон, реализующий булеву функцию AND от четырех входов (выходов предыдущего слоя). f(u) – функция активации. В графическом виде нужная нейросеть может быть представлена как на рисунке 2.
А в матричной форме – как на рисунке 3:
Конечно, представление сети в матричной форме неоднозначно, но мы постараемся устранить эту неоднозначность. Коэффициенты векторов матрицы w нормируем. Так, чтобы w_2^i=\{-1,1\}, i=1,2,3,4. А если w_2^i=0, то w_1^i=\{-1,1\}
Вам необходимо построить нейронную сеть, которая распознавала бы принадлежность точки к области D, представленной на рисунке. В случае, если точка находится на границе либо внутри этой области – нейросеть должна выдавать значение 1, в противном случае – значение 0.
Решение должно быть получено при помощи двухслойной нейросети. Ответом на задание будет матрица w для работы с первым слоем и первый коэффициент h_0 матрицы для работы со вторым слоем.

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

В первой строке – число N – количество точек (x, y), принадлежность которых к области D надо определить с помощью нейронной сети. Далее идут N строк, каждая из которых состоит из двух вещественных чисел, разделенных пробелами – координат точек.

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

В первой строке – два натуральных числа N_1 и M_1, число строк и число столбцов матрицы для работы с первым слоем нейросети. В каждой из следующих N_1 строк – коэффициенты строк матрицы. По M_1 целых чисел. Числа разделены пробелами. Порядок столбцов соответствует порядку линий (w1)-(w4). В следующей строке – значение коэффициента h_0, вещественное число, округленное до двух цифр после точки. В следующих P строках выводится по одному числу - 0 если соответствующая точка лежит вне прямоугольника или 1 – если внутри его или на границе.

Примеры

стандартный вводстандартный вывод
1 0.0 0.0 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00 1
1 1 1.5 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00 0
7 1.0 0.0 0.0 0.0 0.0 10.0 0.5 0.5 0.5 0.501 -0.5 -0.5 -0.5 -0.501 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00 1 1 0 1 0 1 0
В примере матрицы умышленно сделаны нулевыми