아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

비결정적 유한 오토마타

시간 제한1초메모리 제한256 MB

요약
상태가 n개인 0과 1 입력의 NFA를 구성하여, 인식하지 못하는 가장 짧은 문자열의 길이 L(G)를 최대한 크게 만듭니다.
난이도

어려움10점 중 9점

유형
그래프, 정수론, 문자열
정답자
아직 제출이 없습니다

문제

비결정적 유한 오토마타(NFA)는 G=(V,E0,E1,v0,F)G = (V, E_0, E_1, v_0, F)로 정의한다. 여기서 (V,E0)(V, E_0)와 (V,E1)(V, E_1)는 두 개의 방향 그래프이고, v0∈Vv_0 \in V는 초기 정점, F⊆VF \subseteq V는 수락 정점들의 집합이다.

NFA GG가 01 문자열 s=s1s2…sns = s_1 s_2 \ldots s_n을 인식한다는 것은, u0=v0u_0 = v_0이고 모든 i=1,2,…,ni = 1, 2, \ldots, n에 대해 간선 ⟨ui−1,ui⟩\langle u_{i-1}, u_i \rangle이 EsiE_{s_i}에 속하며 un∈Fu_n \in F인 정점 수열 u0,u1,…,unu_0, u_1, \ldots, u_n이 존재한다는 뜻이다.

L=L(G)L = L(G)는 길이가 LL인 문자열 중 GG가 인식하지 못하는 것이 존재하는 가장 작은 음이 아닌 정수로 정의한다. 그런 LL이 없으면 L(G)=−1L(G) = -1로 한다.

정수 nn이 주어진다. ∣V∣=n|V| = n이고 L(G)L(G)가 충분히 큰 NFA G=(V,E0,E1,v0,F)G = (V, E_0, E_1, v_0, F)를 구성하라. nn과 L(G)L(G)의 정확한 제약은 힌트에 있다.

입력

첫 줄에 정수 nn이 주어진다.

출력

VV의 정점은 0,1,…,n−10, 1, \ldots, n-1의 정수로 번호를 매긴다. 먼저 E0E_0를 출력한다. 첫 줄에는 간선 수 e=∣E0∣e = |E_0| (0≤e≤10000 \le e \le 1000)를 쓴다. 이어서 ee개의 줄에 각각 정수 xix_i와 yiy_i (0≤xi,yi<n0 \le x_i, y_i < n)를 써서 간선 ⟨xi,yi⟩∈E0\langle x_i, y_i \rangle \in E_0를 나타낸다. xi=yix_i = y_i인 자기 루프도 허용된다.

다음으로 같은 형식으로 E1E_1을 출력한다.

그다음 정수 kk를 한 줄에 쓰고, F={f1,f2,…,fk}F = \{f_1, f_2, \ldots, f_k\}를 뜻하는 정수 f1,f2,…,fkf_1, f_2, \ldots, f_k를 한 줄에 쓴다.

초기 정점 v0v_0는 0으로 고정된다.

힌트

이 문제에는 n=6n = 6과 n=20n = 20인 두 개의 테스트가 있다.

n=6n = 6일 때 출력한 NFA의 L(G)L(G)는 18보다 커야 한다. n=20n = 20일 때는 400보다 커야 한다.

예제1

  1. 예제 1

    입력
    3
    
    예상 출력
    2
    0 0
    2 2
    4
    0 1
    1 0
    0 2
    2 1
    3
    0 1 2