From Wikipedia, the free encyclopedia Từ Wikipedia tiếng Việt


[ edit ] Formal language theory [Sửa] Formal ngôn ngữ lý thuyết



tải về 308.69 Kb.
trang4/6
Chuyển đổi dữ liệu07.06.2018
Kích308.69 Kb.
#39586
1   2   3   4   5   6

[ edit ] Formal language theory [Sửa] Formal ngôn ngữ lý thuyết


Regular expressions can be expressed in terms of formal language theory . Biểu thức thông thường có thể được thể hiện trong điều khoản của ngôn ngữ chính thức lý thuyết. Regular expressions consist of constants and operators that denote sets of strings and operations over these sets, respectively. Biểu thức thông thường bao gồm constants và vận hành biểu rằng bộ dây và các hoạt động trên các bộ, tương ứng. Given a finite alphabet Σ the following constants are defined: Cho một finite alphabet Σ sau constants được định nghĩa:

  • ( empty set ) denoting the set (Không có sản phẩm nào cài) ∅ denoting các thiết lập ∅

  • ( empty string ) ε denoting a string with no characters. (Không có sản phẩm nào chuỗi) ε denoting với một chuỗi ký tự không có.

  • ( literal character ) a in Σ denoting a character in the language. (Chữ ký tự) là một trong Σ denoting một ký tự trong ngôn ngữ.

The following operations are defined: Dưới đây là những hoạt động được định nghĩa:

  • ( concatenation ) RS denoting the set { αβ | α in R and β in S }. (Concatenation) RS denoting các thiết lập αβ (| R α trong và β trong S). For example {"ab", "c"}{"d", "ef"} = {"abd", "abef", "cd", "cef"}. Ví dụ ( "ab", "c") ( "d", "ef") = ( "ABD", "abef", "cd", "cef").

  • ( alternation ) R|S denoting the set union of R and S . (Đổi) R | S denoting các thiết lập tổ chức công đoàn của RS. Many textbooks use the symbols , + , or for alternation instead of the vertical bar. Nhiều sách giáo khoa sử dụng các biểu tượng ∪, +, hay ∨ cho thay đổi của các thanh dọc. For example {"ab", "c"} {"d", "ef"} = {"ab", "c", "d", "ef"} Ví dụ ( "ab", "c") ∪ ( "d", "ef") = ( "ab", "c", "d", "ef")

  • ( Kleene star ) R * denoting the smallest superset of R that contains ε and is closed under string concatenation. (Kleene sao) R * denoting các nhỏ superset của R có chứa ε và chỉ, đóng cửa dưới string concatenation. This is the set of all strings that can be made by concatenating zero or more strings in R . Đây là các thiết lập của tất cả các strings có thể được thực hiện bởi concatenating không dây hoặc nhiều hơn trong R. For example, {"ab", "c"}* = {ε, "ab", "c", "abab", "abc", "cab", "cc", "ababab", "abcab", ... Ví dụ, ( "ab", "c" *) = (ε, "ab", "c", "abab", "abc", "cab", "cc", "ababab", "abcab",. .. }. ).

The above constants and operators form a Kleene algebra . Ở trên constants và vận hành một mẫu Kleene đại số.

To avoid brackets it is assumed that the Kleene star has the highest priority, then concatenation and then set union. Để tránh dấu ngoặc nó là giả định rằng các Kleene sao có ưu tiên cao nhất, sau đó concatenation và sau đó thiết lập công đoàn. If there is no ambiguity then brackets may be omitted. Nếu không có dấu ngoặc ambiguity sau đó có thể được bỏ qua. For example, (ab)c can be written as abc , and a|(b(c*)) can be written as a|bc* . Ví dụ, (ab)c có thể được ghi như a|(b(c*)) và một a|(b(c*)) có thể được ghi a|bc* là một a|bc*

Examples: Ví dụ:

  • a|b* denotes {ε, a , b , bb , bbb , ...} a|b* denotes (ε, a, b, bb, bbb, ...)

  • (a|b)* denotes the set of all strings with no symbols other than a and b , including the empty string: {ε, a , b , aa , ab , ba , bb , aaa , ...} (a|b)* denotes các thiết lập của tất cả những dây mà không có một biểu tượng khác hơn b, bao gồm cả chuỗi rỗng: (ε, a, b, aa, ab, ba, bb, aaa, ...)

  • ab*(c|ε) denotes the set of strings starting with a , then zero or more b s and finally optionally a c : { a , ac , ab , abc , abb , abbc , ...} ab*(c|ε) denotes các thiết lập của những dây bắt đầu với một, sau đó không hay nhiều b s và cuối cùng là một tùy chọn c: (a, ac, ab, abc, abv, abbc, ...)

The formal definition of regular expressions is purposely parsimonious and avoids defining the redundant quantifiers ? and + , which can be expressed as follows: a+ = aa* , and a? = (a|ε) . Thức định nghĩa của các biểu thức thông thường là ý parsimonious và tránh xác định dư ? Và + có thể được thể hiện như sau: a+ = aa* và a? = (a|ε) Sometimes the complement operator ~ is added; ~ R denotes the set of all strings over Σ* that are not in R . Đôi khi các nhà điều hành bổ sung được cập nhật ~; ~ R denotes các thiết lập của tất cả các xâu hơn Σ * mà không có trong R. The complement operator is redundant, as it can always be expressed by using the other operators (although the process for computing such a representation is complex, and the result may be exponentially larger). Bổ sung cho các nhà điều hành là thừa, như nó có thể luôn luôn được thể hiện bằng cách sử dụng các nhà điều hành (mặc dù quá trình cho máy tính như là một đại diện là phức tạp, và kết quả có thể được exponentially lớn hơn).

Regular expressions in this sense can express the regular languages , exactly the class of languages accepted by finite state automata . Biểu thức thông thường trong này có thể bày tỏ ý thức thường xuyên ngôn ngữ, chính xác của các lớp học ngôn ngữ được chấp nhận bởi finite nhà nước automata. There is, however, a significant difference in compactness. Có đó, tuy nhiên, một sự khác biệt đáng kể trong compactness. Some classes of regular languages can only be described by automata that grow exponentially in size, while the length of the required regular expressions only grow linearly. Một số các lớp học của ngôn ngữ bình thường chỉ có thể được mô tả bởi automata rằng phát triển exponentially trong kích thước, trong khi độ dài của yêu cầu biểu thức thông thường chỉ tăng trưởng linearly. Regular expressions correspond to the type-3 grammars of the Chomsky hierarchy . Biểu thức thông thường tương ứng với các loại-3 grammars của Chomsky Hierarchy. On the other hand, there is a simple mapping from regular expressions to nondeterministic finite automata (NFAs) that does not lead to such a blowup in size; for this reason NFAs are often used as alternative representations of regular expressions. Mặt khác, có một cách dễ dàng lập bản đồ từ biểu thức thông thường để nondeterministic finite automata (NFAs) mà không dẫn đến như vậy trong một blowup kích thước, vì lý do này NFAs thường được sử dụng như thay thế đại diện của các biểu thức bình thường.

We can also study expressive power within the formalism. Chúng tôi cũng có thể học expressive quyền lực trong formalism. As the examples show, different regular expressions can express the same language: the formalism is redundant. Ví dụ như hiển thị, biểu thức thông thường khác nhau có thể bày tỏ cùng một ngôn ngữ: các formalism là dư.

It is possible to write an algorithm which for two given regular expressions decides whether the described languages are essentially equal, reduces each expression to a minimal deterministic finite state machine, and determines whether they are isomorphic (equivalent). Có thể viết một thuật toán mà cho hai cho các biểu thức bình thường quyết định liệu mô tả là ngôn ngữ chủ yếu bằng phẳng, mỗi biểu hiện để giảm tối thiểu deterministic finite máy nhà nước, và quyết định cho dù là họ đang có isomorphic (tương đương).

To what extent can this redundancy be eliminated? Phạm vi những gì để có thể được loại bỏ sự thừa này? Can we find an interesting subset of regular expressions that is still fully expressive? Chúng tôi có thể tìm thấy một con của biểu thức thông thường mà vẫn còn đầy đủ expressive? Kleene star and set union are obviously required, but perhaps we can restrict their use. Kleene sao và thiết lập công đoàn rõ ràng là cần thiết, nhưng có lẽ chúng tôi có thể giới hạn sử dụng của họ. This turns out to be a surprisingly difficult problem. Điều này rẽ ra phải là một vấn đề khó khăn đáng ngạc nhiên. As simple as the regular expressions are, it turns out there is no method to systematically rewrite them to some normal form. Như đơn giản như các biểu thức thông thường được, nó quay ra không có phương pháp để hệ thống chúng để ghi đè một số mẫu bình thường. The lack of axiomatization in the past led to the star height problem . Thiếu thông axiomatization trong quá khứ đã dẫn đến những vấn đề sao chiều cao. Recently, Cornell University professor Dexter Kozen axiomatized regular expressions with Kleene algebra . Gần đây, giáo sư Trường Đại học Cornell Dexter Kozen axiomatized thường xuyên với các biểu thức đại số Kleene.

It is worth noting that many real-world "regular expression" engines implement features that cannot be expressed in the regular expression algebra; see below for more on this. Đó là lưu ý rằng nhiều thực trên thế giới "thường xuyên biểu hiện" động cơ thực hiện các tính năng có thể không được thể hiện trong đại số biểu hiện thường xuyên; xem dưới đây để biết thêm về điều này.


tải về 308.69 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương