Tại sao toán tử sao Kleene còn được gọi là toán tử Kleene 'clos'?


13

Tôi đã thấy rằng nếu tôi không hiểu từ nguyên đằng sau thuật ngữ lập trình / cs, điều đó thường có nghĩa là tôi đã bỏ lỡ hoặc hiểu sai một số khái niệm cơ bản quan trọng.

Tôi không hiểu tại sao ngôi sao Kleene còn được gọi là đóng cửa Kleene. Có liên quan đến việc đóng trong lập trình, một hàm với các biến không cục bộ ràng buộc không?

... Về sự phản chiếu, có thể là vì nó cho phép một tập kết thúc mở được viết dưới dạng biểu thức đóng?

... cũng trong thời trang giải thích vịt cao su tốt , bây giờ tôi đoán là vậy, nhưng vẫn sẽ chào đón một câu trả lời có thẩm quyền.


3
Là tên người dùng của bạn là lý do tại sao bạn muốn thời trang giải thích vịt cao su tốt ?
babou

@babou Vâng. Nhưng nó đã làm tôi thất bại hôm nay :(
mallardz

Nhận xét của bạn rằng việc đóng theo cách nối được xác định trong câu trả lời của tôi (và trong câu trả lời của @David Richerby, một cách vô thức vì anh ta không bao giờ đề cập rõ ràng bất kỳ thao tác chuỗi nào, ngoại trừ trong một nhận xét) sẽ không bao gồm từ trống rỗng ϵ là hoàn toàn chính xác. Cảm ơn. Kết quả là toán tử ngôi sao Kleene không thể biểu diễn sự đóng cửa theo cách ghép: toán tử Kleene + thực hiện. Tuy nhiên, toán tử ngôi sao Kleene có thể biểu thị việc đóng cửa dưới hoạt động điện có nguồn gốc từ ghép. Tôi bổ sung câu trả lời của tôi để bao gồm khía cạnh này. Nó tinh tế hơn mong đợi.
babou

Là câu trả lời đủ đọc, hoặc tôi nên thêm một phần bằng cao su mềm hơn?
babou

Câu trả lời:


15

Một tập hợp được đóng dưới một số toán tử nếu kết quả của việc áp dụng toán tử cho các thứ trong tập hợp luôn nằm trong tập hợp. Ví dụ, các số tự nhiên được đóng dưới phép cộng bởi vì, bất cứ khi nào nm là số tự nhiên, n+m là số tự nhiên. Mặt khác, các naturals không bị đóng dưới phép trừ vì, ví dụ, 35 không phải là số tự nhiên.

Tập đóng của tập dưới toán tử nào đó là tập nhỏ nhất chứa S được đóng dưới toán tử. Ví dụ, việc đóng các số tự nhiên dưới phép trừ là các số nguyên; việc đóng các số tự nhiên được thêm vào chỉ là các số tự nhiên, vì tập hợp đã được đóng.SS

Vì vậy, "Đóng cửa Kleene" không phải là một tên thay thế cho "Ngôi sao Kleene". Ngôi sao Kleene là nhà điều hành; đóng Kleene của một tập hợp là đóng của tập hợp đó dưới toán tử.


Ok cảm ơn, lời giải thích của bạn về việc đóng một bộ là rất dễ hiểu. Nhưng bạn có nghĩa là ngôi sao Kleene là một toán tử (như cộng là một toán tử) và đóng Kleene là một phép toán (như phép cộng)? Ngoài ra câu trả lời của Babou rằng cái tên này xuất phát từ thực tế là hoạt động về cơ bản thể hiện sự đóng cửa của tập hợp dưới sự ghép nối có rất nhiều ý nghĩa. Mặc dù không epsilon làm mọi thứ hơi lộn xộn ở đó?! ...
mallardz

1
@mallardz Nói một cách chính xác, đóng cửa là tập hợp; hoạt động của việc hình thành việc đóng cửa thường được gọi là "đóng cửa".
David Richerby

@DavidR Richby: Bạn có thể gọi tập hợp các số tự nhiên được trừ là đóng không? Bạn có muốn nói rằng vì tập hợp các biểu thức chính quy đóng dưới toán tử kleene * tạo ra một biểu thức chính quy mà chúng ta gọi nó là một biểu thức đóng không?
justin

@justin Theo định nghĩa, việc đóng bất kỳ tập hợp nào trong một hoạt động phải tự đóng trong hoạt động đó. Vì các tự nhiên không bị đóng dưới phép trừ, chúng không thể là đóng của bất cứ thứ gì dưới phép trừ. Tập hợp các biểu thức chính quy đã được đóng dưới ngôi sao Kleene và việc đóng tập hợp các biểu thức chính quy theo một số thao tác, theo định nghĩa, là một tập hợp các thứ, không phải là một biểu thức chính quy duy nhất. Vì vậy, tôi không thực sự hiểu câu hỏi của bạn.
David Richerby

@DavidR Richby: Đúng vậy
justin

7

Tóm lại

Tên đóng cửa Kleene rõ ràng có nghĩa là đóng cửa dưới một số hoạt động chuỗi.

Tuy nhiên, phân tích cẩn thận (nhờ nhận xét quan trọng của OP mallardz), cho thấy ngôi sao Kleene không thể bị đóng dưới sự ghép, tương ứng với toán tử Kleene plus.

Toán tử sao Kleene thực sự tương ứng với một bao đóng dưới hoạt động điện có nguồn gốc từ ghép.

Cái tên Kleene star xuất phát từ cách biểu diễn cú pháp của phép toán với một ngôi sao *, trong khi đóng là những gì nó làm.

Điều này được giải thích thêm dưới đây.
Hãy nhớ lại rằng đóng cửa nói chung và ngôi sao Kleene nói riêng, là một hoạt động trên các tập hợp, ở đây trên các chuỗi, tức là trên các ngôn ngữ. Điều này sẽ được sử dụng trong giải thích.

Đóng một tập hợp con trong một hoạt động luôn được xác định

Một tập hợp được đóng theo một số n -ary hoạt động f khi và chỉ khi f luôn luôn được xác định đối với bất kỳ n -tuple các đối số trong CC = { f ( c 1 , ... , c n ) | c 1 , ... , c nC } .CnffnCC= ={f(c1,Giáo dục,cn)|c1,Giáo dục,cnC}

Bằng cách mở rộng để bộ giá trị theo cách thông thường, tức là f ( S 1 , ... , S n ) = { f ( s 1 , ... , s n ) | s iS i . 1 i n } chúng ta có thể viết lại điều kiện dưới dạng phương trình đã đặt: C = f ( C , Lôi , C )f

f(S1,Giáo dục,Sn)= ={f(S1,Giáo dục,Sn)|STôiSTôi.1Tôin}


C= =f(C,Giáo dục,C)

Đối với một tên miền (hoặc bộ) với một hoạt động e rằng luôn luôn xác định trên D , và một tập S D , Việc đóng cửa S dưới fnhỏ nhất bộ S f chứa S thỏa mãn phương trình: S f = { f ( s 1 , ... , s n ) | s 1 , ... , s ns f } .DfDSDSfSfSSf= ={f(S1,Giáo dục,Sn)|S1,Giáo dục,SnSf}

Nghiêm trọng hơn với một phương trình đã đặt, việc đóng theo f có thể được xác định bởi:Sf

Sf là tập nhỏ nhất sao cho SSf và Sf= =f(Sf,Giáo dục,Sf)

Đây là một ví dụ về định nghĩa điểm cố định ít nhất, thường được sử dụng trong ngữ nghĩa và cũng được sử dụng trong các ngôn ngữ chính thức. Một ngữ pháp không ngữ cảnh có thể được xem như là một hệ thống các phương trình ngôn ngữ (tức là phương trình tập hợp chuỗi), trong đó không phải là đầu cuối cho các biến ngôn ngữ. Giải pháp điểm cố định ít nhất liên kết một ngôn ngữ với từng biến và ngôn ngữ được liên kết với ký hiệu intial là ngôn ngữ được xác định bởi ngữ pháp CF.

Mở rộng khái niệm

Việc đóng như được định nghĩa ở trên chỉ nhằm mục đích mở rộng một tập hợp con thành một tập hợp tối thiểu S f sao cho thao tác f luôn được xác định.SSff

Như nhận xét của mallardz OP, đây không phải là một lời giải thích đầy đủ, vì nó sẽ không bao gồm các từ rỗng trong S f khi nó không phải là đã có trong S . Thật vậy, sự đóng cửa này tương ứng với định nghĩa của Kleene plus và không phải với ngôi sao Kleene .εSfS+*

Trên thực tế, ý tưởng đóng cửa có thể được mở rộng, hoặc xem xét theo những cách khác nhau.

  1. Mở rộng cho các tính chất đại số khác

    Về cách mở rộng nó (mặc dù nó không còn được gọi là đóng ) xem xét chung hơn là một phần mở rộng cho tập có các thuộc tính đại số cụ thể đối với phép toán f .Sff

    Nếu bạn xác định là tập nhỏ nhất chứa S đó là một monoid cho hàm nhị phân f , sau đó bạn yêu cầu cả hai đóng cửa và một yếu tố trung lập mà là từ rỗng ε .SfSfε

  2. Mở rộng thông qua một hoạt động dẫn xuất

    Có một cách thứ hai đúng hơn là vấn đề đóng cửa. Khi bạn xác định việc đóng , bạn có thể xem xét nó đối với một số đối số, trong khi bạn cho phép các giá trị từ toàn bộ D cho các đối số khác.SDD

    Xét (vì đơn giản) một hàm nhị phân trên D , bạn có thể xác định S f , 1 là tập nhỏ nhất chứa S thỏa mãn phương trình: S f , 1 = { f ( s 1 , s 2 ) | s 1S f , 1s 2D }fDSf,1S

    Sf,1= ={f(S1,S2)|S1Sf,1S2D}

    hoặc với các phương trình thiết lập:

    Sf,1 là tập nhỏ nhất sao cho SSf,1 và Sf,1= =f(Sf,1,D)

    Điều này cũng có ý nghĩa khi các đối số không thuộc cùng một tập hợp. Sau đó, bạn có thể đóng đối với một số đối số trong một bộ, trong khi xem xét tất cả các giá trị có thể cho các đối số khác (có thể có nhiều biến thể).

    (M,f,ε) --fMεbạnM

    bạnM.bạn0= =ε và nNbạnn= =f(bạn,bạnn-1)

    bạnnMN0

    MnBạnn= ={bạnn|bạnBạn}bạnnf

    {Bạn0= ={bạn0|bạnBạn}= ={ε}nN,Bạnn= =f(Bạn,Bạnn-1)
    fM

    Bạn,1BạnM

    Bạn,1 là tập nhỏ nhất như vậy BạnBạn,1 và Bạn,1= =f(Bạn,1,N0)

    Và điều này cho chúng ta hoạt động của ngôi sao Kleene khi việc xây dựng được áp dụng cho hoạt động nối của chuỗi Monoid miễn phí.

    Thành thật mà nói, tôi không chắc là tôi đã không lừa dối. Nhưng một định nghĩa chỉ là những gì bạn tạo ra nó, và đó là cách duy nhất tôi tìm thấy để thực sự biến ngôi sao Kleene thành một sự đóng cửa. Tôi có thể đang cố gắng quá sức.
    Bình luận được chào đón.

Đóng một tập hợp dưới một hoạt động không phải lúc nào cũng được xác định

Đây là một quan điểm hơi khác và sử dụng khái niệm đóng cửa. Quan điểm này không thực sự trả lời câu hỏi, nhưng có vẻ tốt để ghi nhớ nó để tránh một số nhầm lẫn có thể.

fD

  • Df

  • D'Df'

  • DD'ff'

D'f'Df

Đó là cách các số nguyên được xây dựng từ các số tự nhiên, xem xét tập hợp các cặp số tự nhiên được xác định bằng một mối quan hệ tương đương (hai cặp tương đương với hai phần tử theo cùng một thứ tự và có cùng một sự khác biệt).

Đây cũng là cách hợp lý có thể được xây dựng từ các số nguyên.

Và đây là cách thực tế cổ điển có thể được xây dựng từ các lý do, mặc dù việc xây dựng phức tạp hơn.


Xin cảm ơn, việc đóng cửa theo giải thích ghép nối có rất nhiều ý nghĩa, nhưng epsilon có tồn tại trong việc đóng cửa dưới sự kết hợp không?
mallardz

ε

@DavidR Richby Thật ra điều tôi muốn nói là nếu bạn có một tập hợp S = {m} thì việc đóng cửa dưới S có chứa epsilon không? Vì m * làm đúng? Nếu không thì tôi đoán đóng Kleene không hoàn toàn tương đương với đóng cửa theo cách ghép, mặc dù tôi vẫn có thể thấy đó là nơi mà tên bắt nguồn. Ngoài ra tôi dường như còn nhớ đọc ở đâu đó ban đầu sao Kleene là một toán tử nhị phân và tránh sản xuất epsilon?
mallardz

@DavidR Richby Tôi đã hoàn thành câu trả lời của mình trong nỗ lực gặp @ mallardz phản đối công bằng.
babou

6

*:XXX

  1. xx*
  2. xyx*y*
  3. (x*)*= =x*

*= =(xy)*= =x*y*

X= =2Σ*x,yΣ*xyxy

  1. LL*
  2. L1L2L1*L2*
  3. (L*)*= =L*

Toán tử Kleene plus cũng thỏa mãn các tiên đề này, do đó cũng là toán tử đóng theo định nghĩa này.


Đây không phải là loại bỏ yêu cầu tối thiểu? Ý tôi là, nếu bạn loại bỏ yêu cầu này, cả câu trả lời của David Richerby và câu trả lời ban đầu của tôi đều ổn đối với ngôi sao Kleene.
babou

Trả lời bình luận của riêng tôi. Tối thiểu được giữ, nhưng được xác định đối với tập hợp các tập đóng. Không liên quan trực tiếp đến một hoạt động trên các chuỗi như nối. Kleene star và plus sau đó đều là các hoạt động đóng, nhưng được xác định bằng cách sử dụng mức tối thiểu đối với các bộ đóng khác nhau. Đây là một cái nhìn trừu tượng hơn nhiều. (Ít nhất tôi có sự hài lòng khi thấy rằng lý do ở mức đã đặt như cuối cùng tôi đã làm là cách đúng đắn :). Hấp dẫn. Cảm ơn.
babou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.