이진 신경망
시간 제한2초메모리 제한256 MB
n개 입력 불리언 함수의 진리표가 주어질 때(n은 최대 10), 층 수 25 이하, 뉴런 10^4개 이하, 연결 3*10^4개 이하인 시그모이드 신경망을 설계해 마지막 뉴런의 값이 f를 근사하도록 만든다.
문제
인공 신경망(흔히 신경망이라고 부른다)은 생물학적 신경망에서 착안한 수학적 모델이다. 신경망은 서로 연결된 인공 뉴런의 집단으로 이루어져 있으며, 연결주의적 계산 방식으로 정보를 처리한다.
뉴런이 층이라는 집단으로 묶여 있으면 그 신경망을 층 구조 신경망이라고 한다. 같은 층에 속한 두 뉴런 사이에는 연결이 없다.
신경망에 있는 뉴런의 수를 라 하고 뉴런에 부터 까지 차례로 양의 정수를 붙이자. 뉴런 와 뉴런 사이의 연결은 연결 가중치 로 나타낼 수 있다.
신경망은 방향성 비순환 그래프로 나타낼 수 있다. 뉴런은 정점에, 뉴런 사이의 연결은 간선에 대응되며, 각 연결의 연결 가중치는 대응하는 간선의 가중치가 된다.

위 그림의 신경망은 네 개의 층으로 이루어져 있다. 첫 번째 층에는 뉴런 , , 이, 두 번째 층에는 뉴런 , 가, 세 번째 층에는 뉴런 , , 이, 네 번째 층에는 뉴런 하나만 있다.
각 뉴런 는 값 를 가지며, 이 값은 다음 식으로 계산된다.
층 구조 신경망이 다음 성질을 만족하면 이진 신경망이라고 한다.
- 첫 번째 층의 각 뉴런 의 값 는 또는 이다.
- 뉴런 가 층 에 속하고 뉴런 가 층 에 속하며 이면, 뉴런 에서 뉴런 로 가는 연결은 없다. 뉴런 에서 뉴런 로 가는 연결은 가능하다.
- 마지막 층에는 뉴런이 하나만 있고 그 값은 또는 이다.
- 각 층에는 뉴런이 하나 이상 있다.
이 문제에서는 개의 인자 , , , 을 갖는 이진 함수 , , 를 구현하는 이진 신경망을 만들어야 한다.
이 이진 신경망의 첫 번째 층에는 부터 까지 차례로 양의 정수가 붙은 뉴런이 정확히 개 있어야 한다. 뉴런 의 값은 자동으로 로 정해진다. 나머지 뉴런에는 부터 까지 차례로 양의 정수를 붙인다. 여기서 는 신경망에 있는 뉴런의 수이다. 모든 값 ()는 위에서 주어진 식으로 계산된다.
이 이진 신경망의 마지막 층에는 뉴런이 하나만 있어야 한다. 이 뉴런의 값은 , , , 와 이하만큼 차이가 나야 한다.
이진 신경망의 층 수는 를 넘지 않아야 한다. 뉴런의 수 는 를 넘지 않아야 한다. 연결의 총 개수 는 를 넘지 않아야 한다.
입력
첫째 줄에 정수 이 주어진다(). 둘째 줄에 개의 문자가 주어진다. 각 문자는 '0' 또는 '1'이다. 첫 번째 문자는 의 값을, 두 번째 문자는 의 값을 나타내는 식으로, 마지막 문자는 의 값을 나타낸다.
출력
첫째 줄에 이진 신경망의 층 수 과 뉴런의 수 를 출력한다(, ).
둘째 줄에 개의 정수 를 출력한다. 는 뉴런 가 속한 층의 번호이다().
셋째 줄에 이진 신경망의 연결 개수 를 출력한다().
다음 개의 줄 각각에 정수 , 와 실수 를 출력한다. 이는 에서 로 가는 가중치 의 연결을 나타낸다().