Cho DFA M=(Q,Σ,δ,q0,F). Tìm chuỗi w ngắn nhất được M chấp nhận. Nếu nhiều chuỗi cùng độ dài ngắn nhất, in chuỗi nhỏ nhất theo thứ tự từ điển (thứ tự ký tự theo thứ tự tăng của bảng chữ cái).
Nếu ngôn ngữ rỗng in -1. Chuỗi rỗng biểu diễn bằng một dòng trống.
Thuật toán: BFS từ q0, mỗi trạng thái duyệt các ký tự theo thứ tự tăng để nghiệm tối tiểu từ điển.
Ví dụ: DFA chấp nhận chuỗi có số 1 chẵn -> chuỗi ngắn nhất là chuỗi rỗng.
Dòng 1: số nguyên Q — số trạng thái (đánh số 0..Q−1).
Dòng 2: các ký tự bảng chữ cái Σ, phân tách bởi dấu cách.
Dòng 3: trạng thái bắt đầu q0.
Dòng 4: số trạng thái chấp nhận F rồi danh sách các trạng thái chấp nhận (cùng dòng, cách nhau dấu cách).
Tiếp theo Q×∣Σ∣ dòng, mỗi dòng p a q nghĩa là δ(p,a)=q.
1≤Q≤1000, 1≤∣Σ∣≤26.
In chuỗi ngắn nhất (nhỏ nhất từ điển) được chấp nhận; dòng trống nếu là chuỗi rỗng; -1 nếu ngôn ngữ rỗng.
Ví dụ:
Đầu vào:
3
a b
0
1 2
0 a 1
0 b 0
1 a 1
1 b 2
2 a 2
2 b 2
Đầu ra:
ab
Giải thích:
Đang tải editor...