Logo
(追記) (追記ここまで)

29632번 - Машинное обучение 스페셜 저지다국어

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 1024 MB0000.000%

문제

Машинное обучение --- раздел теоретической информатики, который изучает возможности алгоритмов и компьютерных программ <<обучаться>>. Обычно обучение происходит с использованием так называемых обучающих примеров. В этой задаче вам предстоит реализовать простейший вариант машинного обучения, натренировав детерминированный конечный автомат правильно распознавать слова из заданного множества.

Формально детерминированный конечный автомат представляет собой набор из четырех элементов: $\langle\Sigma, U, s, T, \varphi\rangle,ドル где $\Sigma$ --- конечное множество, которое представляет собой входной алфавит (в этой задаче будем полагать, что $\Sigma = \{0, 1\}$), $U$ --- это некоторое конечное множество состояний, $s \in U$ --- начальное состояние, $T \subset U$ --- множество допускающих состояний, а $\varphi : U \times \Sigma \rightarrow U$ представляет собой функцию переходов.

Входом для автомата является слово $\alpha,ドル составленное из символов алфавита $\Sigma$. Исходно автомат находится в состоянии $s$. На каждом шаге он читает очередной символ $c$ входного слова и изменяет свое состояние на $\varphi(u, c),ドル где $u$ --- текущее состояние. После этого автомат переходит к следующему символу входного слова. Если когда слово целиком обработано автомат оказывается в допускающем состоянии, то говорят, что автомат допускает слово $\alpha,ドル иначе говорят, что он его не допускает.

Разделим все слова длиной от 0 до заданного числа $n$ на два множества: $S^+$ и $S^-$. Говорят, что автомат соответствует этому разбиению, если он допускает все слова из $S^+$ и не допускает все слова из $S^-$. Заметим, что слова длиннее $n$ могут как допускаться, так и не допускаться автоматом.

Требуется построить автомат, соответствующий заданному разбиению, имеющий минимальное количество состояний.

입력

Первая строка входного файла содержит число $n$ (1ドル \le n \le 12$). Следующие 2ドル^{n+1}-1$ строк описывают $S^+$ и $S^-$. Каждая строка содержит по одному слову, перед словом идет <<+>>, если оно содержится в $S^+,ドル либо <<->>, если оно содержится в $S^-$. Слова упорядочены по длине, а при равной длине --- лексикографически.

출력

На первой строке выходного файла выведите число $u$ --- минимальное количество состояний в автомате ($u \ge 1$) и $s$ --- номер начального состояния (состояния нумеруются от 1ドル$ до $u$).

Вторая строка должна содержать $t$ --- количество допускающих состояний, затем должно следовать $t$ целых чисел --- номера допускающих состояний.

Следующие $u$ строк должны описывать переходы, каждая из этих строк должна содержать по два числа, $i$-я из строк должна содержать $\varphi(i, 0)$ и $\varphi(i, 1)$.

제한

예제 입력 1

2
+
+0
-1
+00
-01
-10
-11

예제 출력 1

2 1
1 1
1 2
2 2

힌트

출처

Olympiad > Russian Olympiad in Informatics > Internet Olympiads in Informatics > 2009-2010 Season > January 30, 2010 F번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /