Ngôn ngữ hình thức

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm
Tiền đề trong việc xây dựng lý thuyết Automata là ngôn ngữ hình thức

Trong toán họckhoa học máy tính, một ngôn ngữ hình thức (formal language) được định nghĩa là một tập các chuỗi (string) được xây dựng dựa trên một bảng chữ cái (alphabet), và chúng được ràng buộc bởi các luật (rule) hoặc văn phạm (grammar) đã được định nghĩa trước. Alphabet có thể là tập các kí tự trong ngôn ngữ tự nhiên (natural language) hoặc tập tự định nghĩa các kí tự.

Giả sử có một alphabet ∑ = {a, b} và kí hiệu L là ngôn ngữ. Như vậy, ta có thể định nghĩa một số ngôn ngữ trên alphabet ∑ như sau:

L1 = {aa, aaa}
L2 = {aba, aab}
L3 = {ab, ba, aabb,..., aaabbb,...}

Lĩnh vực mà lý thuyết ngôn ngữ hình thức nghiên cứu là những mẫu hình (pattern) có cấu trúc bên trong những ngôn ngữ hình thức, và đó là những khía cạnh hoàn toàn mang tính chất có cú pháp. Ngôn ngữ hình thức không còn đơn giản chỉ là để định nghĩa ngôn ngữ tự nhiên, mà nó đã vượt ra ngoài khỏi phạm vi đó, và nó cũng là một cách để hiểu được những quy tắc có cú pháp của ngôn ngữ tự nhiên.

Lý thuyết ngôn ngữ hình thức còn được ứng dụng trong lĩnh vực khoa học máy tính, cụ thể là các ngôn ngữ lập trình khi mà mỗi từ của ngôn ngữ đó đều mang một ý nghĩa đặc biệt. Còn trong lĩnh vực lý thuyết độ phức tạp tính toán (Computational complexity theory), các vấn đề quyết định (decision problems) được định nghĩa như là các ngôn ngữ hình thức, và các lớp độ phức tạp (complexity classes) được xác định là tập của những ngôn ngữ hình thức. Còn trong toán học, cú pháp của các hệ thống tiên đề được biểu diễn bằng ngôn ngữ hình thức.

Các định nghĩa[sửa | sửa mã nguồn]

Một alphabet, trong ngữ cảnh ngôn ngữ hình thức thì có thể bất kì tập hợp nào, mặc dù thông thường là tập các chữ cái, hoặc kí tự trong bảng ASCII được sử dụng. Hơn nữa, một alphabet có thể là vô hạn (infinite); ví dụ, một tập alphabet ngoài các kí tự ∧, ¬, ∀, (,),... ra còn có vô số x1, x2,... thể hiện các biến. Các thành phần riêng lẻ trong một alphabet được gọi là chữ cái (letter).

Chuỗi (string) hoặc từ (word): là một chuỗi các chữ cái trên alphabet nào đó.

Câu (sentence): một chuỗi được gọi là câu nếu nó thuộc về một ngôn ngữ nào đó.

Ngôn ngữ rỗng (empty language): một ngôn ngữ không chứa bất kì câu nào được gọi là ngôn ngữ rỗng (kí hiệu: ∅). Cần phân biệt ngôn ngữ rỗngchuỗi rỗng (không chứa kí tự nào trong alphabet).

Phân loại ngôn ngữ theo mô hình Chomsky[sửa | sửa mã nguồn]

Mô hình phân cấp Chomsky. Cơ bản nhất là Regular, phức tạp nhất là Recursively Enumerable

Noam Chomsky (1928), một nhà triết học người Mỹ về ngôn ngữ và là giáo sư ngôn ngữ học tại MIT đã xây dựng lên một ý tưởng rằng "Loài người học ngôn ngữ không phải bắt đầu từ những hành vi (behavior) (là những phản ứng sự kích thích một cách có định hướng), mà nó dựa trên nhận thức và sự bẩm sinh"[1]. Bằng những nỗ lực để chứng minh học thuyết này, ông đã đưa ra một mô hình gọi là Mô hình phân cấp Chomsky.

Mô hình này gồm 4 loại ngôn ngữ và các gắn kết về ngữ pháp (grammar) và máy (machine):

  • Loại 0: Recursively Enumerable Languages (ngôn ngữ đếm được theo cách đệ quy)
  • Loại 1: Context-Sensitive Languages (ngôn ngữ phụ thuộc ngữ cảnh)
  • Loại 2: Context-Free Languages (ngôn ngữ không phụ thuộc ngữ cảnh)
  • Loại 3: Regular Languages (ngôn ngữ chính quy)

Các phép toán trên ngôn ngữ[sửa | sửa mã nguồn]

Giả sử tồn tại L1 và L2 là 2 ngôn ngữ trên một hoặc nhiều bộ alphabet nào đó. Ta có thể thực hiện một số phép tính giữa L1 và L2 như sau:

  • Phép nối (concatenation): L1L2 bao gồm tất cả các chuỗi (string) được kết hợp từ 2 ngôn ngữ.
  • Phép giao (intersection): L1∩L2 gồm các chuỗi xuất hiện trong cả 2 ngôn ngữ.
  • Phép bù (complement): ¬L1 hoặc ¬L2 gồm các chuỗi không nằm trong (hoặc thuộc) 2 ngôn ngữ trên.
  • Luật Kleene star
  • Phép đảo ngược (Reversal):
  • Homomorphism trên chuỗi

Ứng dụng[sửa | sửa mã nguồn]

Ngôn ngữ lập trình[sửa | sửa mã nguồn]

Ứng dụng thường thấy trong lĩnh vực khoa học máy tính của ngôn ngữ hình thức là Trình biên dịch hay trong các giải thuật về chuỗi (tìm kiếm, hoán vị...).

Một trình biên dịch về cơ bản gồm 2 thành phần riêng biệt. Một là trình phân tích từ vựng (lexical analyser), nó có nhiệm vụ xác định các token của của nguồn một chương trình máy tính, ví dụ như các định danh (identifier) (tên của hàm, biến...), các từ khóa (keyword), các kí hiệu... Thành phần thứ 2 là trình phân tích cú pháp (parser) với nhiệm vụ quyết định xem mã nguồn chương trình đó có được viết đúng cú pháp của ngôn ngữ lập trình mà trình biên dịch đó hỗ trợ không. Kết quả của một parser là cây cú pháp trừu tượng (abstract syntax tree) và nó được sử dụng cho các giai đoạn sau của quá trình biên dịch. Hai thành phần đó đều hoạt động dựa trên ngôn ngữ hình thức.

Lý thuyết và hệ thống và dẫn xuất về hình thức[sửa | sửa mã nguồn]

Trong toán logic, một lý thuyết hình thức (formal theory) là một tập các câu (sentence) được biểu diễn trên một ngôn ngữ hình thức.

Một hệ thống hình thức (hay còn gọi là giải tích logic (logical calculus) hay hệ thống logic (logical system) là sự kết hợp của một ngôn ngữ hình thức và một bộ máy suy diễn (deductive apparatus).

Một dẫn xuất (derivation) là một chuỗi hữu hạn các công thức đúng cú pháp.

Chú thích[sửa | sửa mã nguồn]

Tham khảo[sửa | sửa mã nguồn]

Các chủ đề chính trong toán học
Nền tảng toán học | Đại số | Giải tích | Hình học | Lý thuyết số | Toán học rời rạc | Toán học ứng dụng |
Toán học giải trí | Toán học tô pô | Xác suất thống kê