tôi đang làm một bài tập cho lý thuyết automata, mà tôi phải xác định xem một từ được chấp nhận hay không bằng một chức năng chuyển tiếp cho một automaton hữu hạn xác địnhThực hiện một mã số để mô phỏng một automaton hữu hạn không xác định trong C++
tôi có tập tin đầu vào này:
6 8 0 2
2
5
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
3 4 d
4 4 d
4 5 d
3
aaabcccc
aabbbbcdc
acdddddd
các đầu vào bắt đầu với 4 số nguyên, là người đầu tiên là số của nhà nước cho các automaton, bên cạnh là số hiệu ứng chuyển tiếp của automaton, số thứ ba là tình trạng ban đầu, và sau đó số trạng thái cuối cùng. sau đó đến các trạng thái cuối cùng (trong ví dụ các trạng thái cuối cùng là 2 và 5). Sau đó đến N dòng (N là số lần chuyển tiếp), mỗi dòng có 2 số nguyên và một ký tự, I, J và C, đại diện cho các trạng thái mà quá trình chuyển đổi, tức là chuyển tiếp đi từ trạng thái i sang trạng thái J với ký tự C. Theo sau dòng này đi kèm với một số nguyên S, sẽ chứa số chuỗi để kiểm tra, sau đó S dòng với các chuỗi tương ứng.
Kết quả của chương trình này sẽ là:
Case #2:
aaabcccc Rejected
aabbbbcdc Rejected
acdddddd Accepted
Nó nên nói nếu String được chấp nhận hay từ chối. Cho đến nay, tôi đã chỉ mã hóa công việc với đầu vào.
Tôi không biết cách thuận tiện nhất để đại diện cho ô tô. Tôi có nên sử dụng mảng đơn giản không? Tôi sẽ áp dụng logic nào cho các mảng ?. Có cách nào để làm điều đó mà không biết trước bảng chữ cái automaton? Tôi có cần cấu trúc dữ liệu để đại diện cho automata không ?. Tôi là một chút khó khăn với nhiệm vụ này, và muốn một số ý tưởng, một số giả hoặc ý tưởng để làm điều đó. Mã có phải là ngôn ngữ khác không? Tôi không muốn các giải pháp, bởi vì tôi muốn làm nhiệm vụ của tôi, nhưng nếu tôi có thể sử dụng một số giúp đỡ
Im không có chuyên môn về chủ đề này có thể đặt một câu hỏi ngớ ngẩn ở đây. làm thế nào đến bạn có hai quá trình chuyển đổi nơi bạn bắt đầu từ cùng một tiểu bang và bạn đến các tiểu bang khác nhau với cùng một sự kiện/char kích hoạt quá trình chuyển đổi? điều đó có nghĩa là chính họ cũng có một trạng thái nội bộ? – sergico
@sergico: đây là lý do tại sao biểu đồ như vậy được gọi là không xác định, đôi khi có một số chuyển tiếp. Vì vậy, bạn cần một số theo dõi lại. Tất cả các automatons như vậy có thể được biểu diễn bằng một automaton xác định (lớn hơn nhiều), nhưng nó có thể không đáng để tính toán nó. –