Thuộc tính chính của DFA's / NFA là thiếu bộ nhớ không giới hạn. Nếu bạn nhìn vào một ngôn ngữ và thuật toán duy nhất (sau này sẽ được dịch thành Finite Automaton), bạn có thể nghĩ rằng cần có thuộc tính này, nghĩa là, bạn cảm thấy rằng bất kỳ thuật toán nào nhận ra nó sẽ cần phải nhớ một số lượng lớn tùy ý (như trong ví dụ của bạn) thì ngôn ngữ đó có lẽ không thường xuyên.n
Tất nhiên, bạn nên luôn nhớ rằng trực giác toán học có thể sai, và cách duy nhất để chắc chắn về trực giác của bạn là chứng minh điều đó.
EDIT: Tôi sẽ trả lời câu hỏi cuối cùng trong các bình luận ở đây, vì thiếu không gian.
các bạn đang nói về bộ nhớ không giới hạn mà bạn muốn nói là lý do tại sao nó không thường xuyên. nhưng một ^ nb ^ m cũng có thể có bộ nhớ không giới hạn nếu tôi muốn, phải không? Điều này vẫn mang lại cho tôi không có hòa bình.
Vấn đề không phải là các từ có thể lớn đến mức nào (bạn thường sẽ gặp các ngôn ngữ thông thường vô hạn, bởi vì mọi ngôn ngữ hữu hạn đều đều và điều đó khá nhàm chán) mà là DFA cần nhớ bao nhiêu.
Trong ví dụ , không cần nhớ . Các algorihm chỉ cần đảm bảo rằng chúng là tích cực và từ đó được sắp xếp chính xác. Đây là một danh sách hữu hạn và mỗi mục trong danh sách yêu cầu một lượng bộ nhớ không đổi.
So sánh điều này với , trong đó một thuật toán đơn giản được yêu cầu để nhớ rằng số lượng của 'bằng với số m , n a n b n a bmộtmbnm , n
mộtnbnmộtb'S. Điều này sẽ yêu cầu bộ nhớ không giới hạn. Khi tôi nhìn vào một ngôn ngữ và thấy rằng bất kỳ thuật toán nào tôi có thể nghĩ về nhu cầu bộ nhớ không bị ràng buộc, trực giác của tôi rằng ngôn ngữ không thường xuyên phát triển mạnh hơn. Nếu tôi không thể tìm thấy thuật toán "thông minh" (thuật toán yêu cầu bộ nhớ không đổi) trong một khoảng thời gian hợp lý (bạn cần bao nhiêu thời gian hợp lý), tôi sẽ thử chứng minh ngôn ngữ không thường xuyên.
Hy vọng điều này làm cho nó rõ ràng hơn một chút.