Làm thế nào là không ambuiguity khác với quyết định?


13

Tôi đang cố gắng hiểu ý nghĩa của "tính xác định" trong các biểu thức, chẳng hạn như "ngữ pháp không ngữ cảnh xác định". (Có nhiều "điều" mang tính quyết định hơn trong lĩnh vực này). Tôi sẽ đánh giá cao một ví dụ nhiều hơn sau đó giải thích công phu nhất! Nếu có thể.

Nguồn gây nhầm lẫn chính của tôi là từ việc không thể biết tính chất của ngữ pháp này khác với sự mơ hồ (không) như thế nào.

Điều gần nhất tôi có thể tìm thấy ý nghĩa của nó là trích dẫn này từ bài báo của D. Knuth Về việc dịch ngôn ngữ từ trái sang phải :

Ginsburg và Greibach (1965) đã định nghĩa khái niệm ngôn ngữ xác định; chúng tôi chỉ ra trong Phần V rằng đây chính xác là những ngôn ngữ tồn tại ngữ pháp LR (k)

sẽ trở thành vòng tròn ngay khi bạn đến Section V, bởi vì nó nói rằng trình phân tích cú pháp LR (k) có thể phân tích cú pháp là ngôn ngữ xác định ...


Dưới đây là một ví dụ mà tôi có thể tìm thấy để giúp tôi hiểu "mơ hồ" nghĩa là gì, xin vui lòng xem:

onewartwoearewe

Mà có thể được phân tích cú pháp là one war two ear ewehoặc o new art woe are we- nếu một ngữ pháp cho phép điều đó (giả sử nó có tất cả các từ tôi vừa liệt kê).

Tôi cần làm gì để biến ngôn ngữ ví dụ này (không phải) mang tính quyết định? (Tôi có thể, ví dụ, loại bỏ từ okhỏi ngữ pháp, để làm cho ngữ pháp không mơ hồ).

Là ngôn ngữ trên có tính quyết định?

Tái bút Ví dụ là từ cuốn sách Godel, Esher, Bach: Eternal Golden Braid.


Giả sử, chúng tôi định nghĩa ngữ pháp cho ngôn ngữ ví dụ như vậy:

S -> A 'we' | A 'ewe'
A -> B | BA
B -> 'o' | 'new' | 'art' | 'woe' | 'are' | 'one' | 'war' | 'two' | 'ear'

Theo lập luận về việc phải phân tích toàn bộ chuỗi, ngữ pháp này có làm cho ngôn ngữ không mang tính quyết định không?


let explode s =
  let rec exp i l =
    if i < 0 then l else exp (i - 1) (s.[i] :: l) in
  exp (String.length s - 1) [];;

let rec woe_parser s =
  match s with
  | 'w' :: 'e' :: [] -> true
  | 'e' :: 'w' :: 'e' :: [] -> true
  | 'o' :: x -> woe_parser x
  | 'n' :: 'e' :: 'w' :: x -> woe_parser x
  | 'a' :: 'r' :: 't' :: x -> woe_parser x
  | 'w' :: 'o' :: 'e' :: x -> woe_parser x
  | 'a' :: 'r' :: 'e' :: x -> woe_parser x
  (* this line will trigger an error, because it creates 
     ambiguous grammar *)
  | 'o' :: 'n' :: 'e' :: x -> woe_parser x
  | 'w' :: 'a' :: 'r' :: x -> woe_parser x
  | 't' :: 'w' :: 'o' :: x -> woe_parser x
  | 'e' :: 'a' :: 'r' :: x -> woe_parser x
  | _ -> false;;

woe_parser (explode "onewartwoearewe");;
- : bool = true

| Label   | Pattern      |
|---------+--------------|
| rule-01 | S -> A 'we'  |
| rule-02 | S -> A 'ewe' |
| rule-03 | A -> B       |
| rule-04 | A -> BA      |
| rule-05 | B -> 'o'     |
| rule-06 | B -> 'new'   |
| rule-07 | B -> 'art'   |
| rule-08 | B -> 'woe'   |
| rule-09 | B -> 'are'   |
| rule-10 | B -> 'one'   |
| rule-11 | B -> 'war'   |
| rule-12 | B -> 'two'   |
| rule-13 | B -> 'ear'   |
#+TBLFM: @2$1..@>$1='(format "rule-%02d" (1- @#));L

Generating =onewartwoearewe=

First way to generate:

| Input             | Rule    | Product           |
|-------------------+---------+-------------------|
| ''                | rule-01 | A'we'             |
| A'we'             | rule-04 | BA'we'            |
| BA'we'            | rule-05 | 'o'A'we'          |
| 'o'A'we'          | rule-04 | 'o'BA'we'         |
| 'o'BA'we'         | rule-06 | 'onew'A'we'       |
| 'onew'A'we'       | rule-04 | 'onew'BA'we'      |
| 'onew'BA'we'      | rule-07 | 'onewart'A'we'    |
| 'onewart'A'we'    | rule-04 | 'onewart'BA'we'   |
| 'onewart'BA'we'   | rule-08 | 'onewartwoe'A'we' |
| 'onewartwoe'A'we' | rule-03 | 'onewartwoe'B'we' |
| 'onewartwoe'B'we' | rule-09 | 'onewartwoearewe' |
|-------------------+---------+-------------------|
|                   |         | 'onewartwoearewe' |

Second way to generate:

| Input             | Rule    | Product           |
|-------------------+---------+-------------------|
| ''                | rule-02 | A'ewe'            |
| A'ewe'            | rule-04 | BA'ewe'           |
| BA'ewe'           | rule-10 | 'one'A'ewe'       |
| 'one'A'ewe'       | rule-04 | 'one'BA'ewe'      |
| 'one'BA'ewe'      | rule-11 | 'onewar'A'ewe'    |
| 'onewar'A'ewe'    | rule-04 | 'onewar'BA'ewe'   |
| 'onewar'BA'ewe'   | rule-12 | 'onewartwo'A'ewe' |
| 'onewartwo'A'ewe' | rule-03 | 'onewartwo'B'ewe' |
| 'onewartwo'B'ewe' | rule-13 | 'onewartwoearewe' |
|-------------------+---------+-------------------|
|                   |         | 'onewartwoearewe' |

1
-1, vì câu hỏi bây giờ rất ít ý nghĩa. Trước hết, một chuỗi không phải là một ngôn ngữ; các chuỗi không mơ hồ, không mơ hồ, xác định hoặc không xác định; chúng chỉ là những chuỗi. Ngữ pháp bạn đưa ra không tạo ra chuỗi ví dụ. Tôi đã không kiểm tra tất cả 180 dẫn xuất để xem liệu có trùng lặp hay không, nhưng trên lý thuyết đó là tất cả những gì bạn cần làm để xem liệu ngữ pháp có mơ hồ hay không. Đáng buồn thay, ngôn ngữ không thể mơ hồ, vì ngôn ngữ là hữu hạn, do đó thường xuyên, do DPDA chấp nhận, do đó mang tính quyết định.
Patrick87

@ Patrick87 hả? Trường hợp nó nói rằng chuỗi ngôn ngữ? Chuỗi này là một sản phẩm mẫu và chắc chắn có thể tạo bằng cách sử dụng ngữ pháp đã cho. Điều gì khiến bạn nghĩ khác? Chuỗi trong câu hỏi hoàn toàn chính xác, trong đó hai chuỗi ứng dụng quy tắc khác nhau tạo ra cùng một chuỗi, do đó ngữ pháp không rõ ràng, nhưng nếu bạn loại bỏ một số quy tắc (ví dụ: B -> 'o'thì nó sẽ không còn mơ hồ nữa ...
wvxvw

Trước hết, bạn có thể vui lòng cung cấp một dẫn xuất của chuỗi ví dụ bằng cách sử dụng ngữ pháp không? Từ câu hỏi của riêng bạn: "Ngôn ngữ trên có mang tính quyết định không?" Bạn không bao giờ đặt tên cho một ngôn ngữ, chỉ là một chuỗi, được tạo ra bởi vô số ngữ pháp, mặc dù không phải là ngôn ngữ bạn đề xuất.
Patrick87

Bạn có thể viết nó bằng tiếng Anh không? Ví dụ: "Bắt đầu với S. Bằng cách áp dụng quy tắc S := ..., chúng tôi nhận được ..., ..."
Patrick87

@ Patrick87 Tôi đã thêm quy trình tạo từng bước, cũng như tôi nhận ra mình đã mắc lỗi ngữ pháp mà tôi đã sửa.
wvxvw

Câu trả lời:


9

Một PDA có tính quyết định, do đó DPDA, cho mọi cấu hình có thể tiếp cận của máy tự động, có nhiều nhất một chuyển đổi (nghĩa là, nhiều nhất là một cấu hình mới có thể). Nếu bạn có một thiết bị PDA có thể đạt được một số cấu hình mà có thể chuyển đổi hai hoặc nhiều lần chuyển đổi duy nhất, bạn không có DPDA.

Thí dụ:

Q={q0,q1}Σ=Γ={a,b}Một= =q0δ

q    e    s    q'   s'
--   --   --   --   --
q0   a    Z0   q1   aZ0
q0   a    Z0   q2   bZ0
...

Đây là những thiết bị không xác định bởi vì cấu hình ban đầu - q_0, Z0- có thể truy cập được và có hai chuyển đổi hợp lệ dẫn ra khỏi nó nếu ký hiệu đầu vào là a. Bất cứ khi nào thiết bị này bắt đầu cố gắng xử lý một chuỗi bắt đầu bằng một a, có một sự lựa chọn. Lựa chọn có nghĩa là không điều kiện.

Thay vào đó, hãy xem xét bảng chuyển tiếp sau đây:

q    e    s    q'   s'
--   --   --   --   --
q0   a    Z0   q1   aZ0
q0   a    Z0   q2   bZ0
q1   a    a    q0   aa
q1   a    b    q0   ab
q1   a    b    q2   aa
q2   b    a    q0   ba
q2   b    b    q0   bb
q2   b    a    q1   bb

Bạn có thể bị cám dỗ để nói rằng PDA này là không đặc biệt; Rốt cuộc, có hai chuyển đổi hợp lệ ra khỏi cấu hình q1, b(a+b)*, ví dụ. Tuy nhiên, vì cấu hình này không thể truy cập được bằng bất kỳ đường dẫn nào qua máy tự động, nên nó không được tính. Các cấu hình có thể truy cập duy nhất là một tập hợp con của q_0, (a+b)*Z0, q1, a(a+b)*Z0q2, b(a+b)*Z0, và đối với mỗi cấu hình này, nhiều nhất một chuyển đổi được xác định.

Một CFL mang tính quyết định nếu đó là ngôn ngữ của một số DPDA.

CFG không rõ ràng nếu mỗi chuỗi có nhiều nhất một dẫn xuất hợp lệ theo CFG. Nếu không, ngữ pháp là mơ hồ. Nếu bạn có CFG và bạn có thể tạo hai cây phái sinh khác nhau cho một số chuỗi, bạn có một ngữ pháp mơ hồ.

Một CFL vốn dĩ không rõ ràng, nó không phải là ngôn ngữ của bất kỳ CFG rõ ràng nào.

Lưu ý những điều dưới đây:

  • CFL xác định phải là ngôn ngữ của một số DPDA.
  • Mỗi CFL là ngôn ngữ của vô số các thiết bị không điều kiện.
  • Một CFL mơ hồ vốn không phải là ngôn ngữ của bất kỳ CFG rõ ràng nào.
  • Mỗi CFL là ngôn ngữ của vô số CFG mơ hồ.
  • Một CFL mơ hồ vốn có thể không xác định.
  • Một CFL không đặc biệt có thể có hoặc không mơ hồ vốn có.

1
Wiki cho biết PDA không mang tính quyết định (có thể có phiên bản xác định và không xác định), nhưng bạn cũng có thể bỏ qua phần đầu của câu, nó không thực sự đóng góp cho những gì bạn đang nói: / Nhưng, một lần nữa, điều này định nghĩa một ngôn ngữ xác định là ngôn ngữ đầu vào của một thứ gì đó xác định và một thứ được gọi là xác định bởi vì nó chấp nhận ngôn ngữ xác định - nó giống như nói "cỏ có màu xanh lá cây vì màu xanh lá cây là màu của cỏ". Điều đó đúng, nhưng không hữu ích :( Làm ơn, ví dụ sẽ quý hơn!
wvxvw

@wvxvw: bạn không đọc chính xác. Nó nói: "Một PDA có tính xác định khi và chỉ khi mọi bộ ba trạng thái / biểu tượng / stacktop chỉ có một trạng thái tiếp theo." Không có gì trong định nghĩa về ngôn ngữ mà máy tự động chấp nhận.
Logic lang thang

2
@wvxvw Định nghĩa của PDA xác định, hoặc DPDA, mà tôi đưa ra không có cách nào, hình dạng hoặc hình thức phụ thuộc vào định nghĩa của ngôn ngữ tự do bối cảnh xác định. Tôi xác định DPDA chỉ dựa trên các thuộc tính của máy tự động. Sau đó, tôi xác định CFL xác định là gì theo định nghĩa của DPDA. Vui lòng đọc lại câu trả lời dưới đây và nhận xét của Wandering Logic và thử xem điều này có hợp lý không. Tôi sẽ cố gắng cung cấp một số ví dụ ngắn gọn.
Patrick87

q1,b(a+b)q2,b(a+b)Q={q0,...q2}nhân vật hiện tại? Ngoài ra, giải thích của tôi có đúng không? x+- một hay nhiều x, (x)*- không hay nhiều hơn x?
wvxvw

Cấu hình @wvxvw đề cập đến trạng thái hiện tại và nội dung hiện tại của ngăn xếp. x+thường đề cập đến "một hoặc nhiều x, trong khi x*thường đề cập đến" không hoặc nhiều hơn x; Tôi có thể sử dụng xx*thay thế x+, vì chúng là giống hệt nhau.
Patrick87

7

Dưới đây là ví dụ (từ Wikipedia):

S0S0|1S1|ε

Một ngôn ngữ tự do ngữ cảnh là xác định khi và chỉ khi tồn tại ít nhất một máy tự động đẩy xuống xác định chấp nhận ngôn ngữ đó. (Cũng có thể có rất nhiều automata đẩy xuống không xác định chấp nhận ngôn ngữ, và nó vẫn sẽ là một ngôn ngữ xác định.) Về cơ bản một automata đẩy xuống xác định là một trong những nơi các hiệu ứng chuyển tiếp máy được deterministically dựa trên hiện trạng, biểu tượng đầu vào và biểu tượng trên cùng hiện tại của ngăn xếp . Quyết đoánở đây có nghĩa là không có nhiều hơn một chuyển đổi trạng thái cho bất kỳ biểu tượng trạng thái / đầu vào / biểu tượng ngăn xếp trên cùng. Nếu bạn có hai hoặc nhiều trạng thái tiếp theo cho một số biểu tượng trạng thái / đầu vào / biểu tượng ngăn xếp trên cùng gấp ba thì automaton là không xác định. (Bạn sẽ cần phải "đoán" chuyển đổi nào sẽ thực hiện để quyết định xem máy tự động có chấp nhận hay không.)

Điều Knuth đã chứng minh là mọi ngữ pháp LR (k) đều có một máy tự động đẩy xuống xác định và mọi máy tự động đẩy xuống xác định đều có ngữ pháp LR (k). Vì vậy, ngữ pháp LR (k) và automata đẩy xuống xác định có thể xử lý cùng một bộ ngôn ngữ. Nhưng tập hợp các ngôn ngữ có tính năng tự động đẩy xuống xác định chấp nhận chúng là (theo định nghĩa) các ngôn ngữ xác định. Đối số không phải là thông tư.

Vì vậy, ngôn ngữ xác định ngụ ý rằng tồn tại một ngữ pháp rõ ràng. Và chúng tôi đã chỉ ra một ngữ pháp rõ ràng không có tự động đẩy xuống xác định (và do đó, nó là một ngữ pháp rõ ràng chấp nhận một ngôn ngữ không xác định.)

{anbmcmdn|n,m>0}{anbncmdm|n,m>0}{anbnccdn|n>0}


Bạn có thể giải thích rõ hơn, tại sao phải xem xét toàn bộ chuỗi trước khi xác định phần giữa làm cho ngôn ngữ này không mang tính quyết định? Tôi đã đọc một lời giải thích khác về "tính xác định" là gì, và ở đó nó nói rằng "nếu bạn không cần phải quay lại khi phân tích cú pháp, ngôn ngữ đó là xác định". Tôi không thấy cần phải quay lại để phân tích ngôn ngữ này ...
wvxvw

1
Hãy xem xét chuỗi đầu vào "10011001". Máy tự động đẩy xuống không biết chuỗi này dài bao nhiêu cho đến khi kết thúc. Khi bạn đến 0 thứ hai, bạn cần đưa ra lựa chọn: đây là chuỗi 4 ký tự "1001" hay chuỗi dài hơn trông giống như "100 ???? 001"? Khi bạn nhận được ký tự thứ năm, bạn vẫn không biết: đây là chuỗi 8 ký tự "10011001" hay chuỗi dài hơn trông giống như "10011 ???? 11001"?
Logic lang thang

1
Điều "phân tích toàn bộ chuỗi" không phải là định nghĩa của tính không xác định. Đó chỉ là một số trực giác mà tôi đang cố gắng thêm vào. Cả @ Patrick87 và tôi đã cho bạn định nghĩa thực sự về tính xác định: Từ mọi tiểu bang đều có nhiều nhất một trạng thái tiếp theo. Nếu một ngôn ngữ không có ngữ pháp rõ ràng thì nó phải không mang tính quyết định. Tôi không thể trả lời về ví dụ của bạn mà không làm việc nhiều hơn: bạn đã thể hiện một ngữ pháp mơ hồ, nhưng đó không phải là vấn đề, bạn cần chứng minh rằng không có ngữ pháp rõ ràng nếu bạn muốn chứng minh rằng ngôn ngữ vốn đã mơ hồ.
Logic lang thang

1
@wvxvw Nếu bạn đang tìm kiếm một quy trình tính toán, bạn có thể không gặp may ... theo en.wikipedia.org/wiki/List_of_undecidable_probols , không thể biết được liệu CFG có mơ hồ hay không. ; cũng không thể chắc chắn liệu CFG có tạo ra tất cả các chuỗi hay không. Vì điều này, tôi thực sự nghi ngờ về việc quyết định, có hiệu quả hơn rất nhiều để quyết định, liệu ngôn ngữ của CFG có phải là CFL xác định hay không.
Patrick87

1
@wvxvw Nếu bạn may mắn như thế, bạn đang xử lý cái mà chúng ta gọi là một trường hợp hạnh phúc, tức là không phải là một trong những trường hợp khiến đây là một vấn đề không thể giải quyết được. Bạn có thể định nghĩa các heuristic hoạt động cho nhiều trường hợp hạnh phúc và không làm nổ tung phần còn lại, nhưng chúng sẽ không hoạt động trên tất cả các trường hợp hạnh phúc; nếu họ đã làm, bạn sẽ có một người quyết định cho vấn đề, mà tiền đề của chúng tôi là không thể.
Patrick87

5

Các ngôn ngữ không có ngữ cảnh xác định là những ngôn ngữ được chấp nhận bởi một số máy tự động đẩy xuống xác định (ngôn ngữ không ngữ cảnh là những ngôn ngữ được chấp nhận bởi một số máy tự động đẩy xuống không xác định). Như vậy, đó là một tài sản của ngôn ngữ chứ không phải ngữ pháp . Ngược lại, sự mơ hồ là một thuộc tính của ngữ pháp, trong khi sự mơ hồ vốn có là một thuộc tính của ngôn ngữ (ngôn ngữ không ngữ cảnh vốn dĩ mơ hồ nếu mọi ngữ pháp không ngữ cảnh cho ngôn ngữ đều mơ hồ).

Có một mối liên hệ giữa hai định nghĩa: các ngôn ngữ không có ngữ cảnh xác định không bao giờ mơ hồ, như thể hiện trong câu trả lời cho câu hỏi này .


Xin lỗi, điều đó không hữu ích lắm. Tôi thực sự bắt đầu với DPDA, nhưng nó không bao giờ giải thích tại sao nó được gọi là xác định. Đây là một định nghĩa dễ tìm thấy ở Wikipedia / Googling cho các giấy tờ khác. Nhưng thuộc tính nào của ngữ pháp / ngôn ngữ / trình phân tích cú pháp được mô tả bằng từ "xác định"? Nói cách khác, những gì nên xảy ra trong ngữ pháp để nó được gọi là xác định?
wvxvw

Xin lỗi, nếu tôi bình luận quá nhiều. Sự nhầm lẫn là bởi vì tôi không thể nói, nhìn, nhìn vào một số ngôn ngữ cho dù đó là xác định hay không, và không biết bắt đầu từ đâu để xác định "tính xác định" của ngôn ngữ. Một ví dụ về ngôn ngữ mang tính quyết định và sau đó thay đổi theo cách làm cho ngôn ngữ không mang tính quyết định sẽ vô cùng hữu ích.
wvxvw

1
LR(k)

1
Xin lỗi, vẫn không hữu ích. Tôi hiểu những gì bạn đang nói, nhưng nó không giúp tôi nhận ra một ngôn ngữ mang tính quyết định và phân biệt nó với ngôn ngữ không xác định. Để cho bạn một ví dụ: nếu một ngôn ngữ có quy tắc sản xuất tạo ra vấn đề về ngoặc đơn cân bằng, tôi ngay lập tức biết rằng nó không thể được phân tích cú pháp bởi FSM. (Bởi vì nó sẽ yêu cầu một ngăn xếp). Nhưng khi bạn chỉ đề cập đến một chủ nghĩa hình thức khác, nó chỉ được đệ quy, nó không giúp tôi hiểu ngôn ngữ đó nên khác với ngôn ngữ khác như thế nào.
wvxvw

Nói cách khác (như bạn đã đề cập trong một bình luận trước đó), bạn muốn các ví dụ về các ngôn ngữ không có ngữ cảnh xác định và không xác định của cùng một "sắp xếp". Có lẽ bạn nên hỏi một câu hỏi tập trung về điều đó.
Yuval Filmus

1

{a,b}{w(a+b)w=wR}SaSa|bSb|a|b|ϵababab


1

Các định nghĩa

  1. Một chấp nhận đẩy xuống xác định (DPDA) là một máy tự động đẩy xuống không bao giờ có sự lựa chọn trong di chuyển của nó.
  2. DPDA và NPDA không tương đương.
  3. Một CFGkhông xác định nếu có ít nhất hai sản phẩm có cùng tiền tố đầu cuối ở bên phải của chúng.
  4. Một CFGmơ hồ khi và chỉ khi tồn tại một số w ∈ L (G) có ít nhất hai cây nguồn gốc khác nhau. Do đó, nó có hai hoặc nhiều đạo hàm ngoài cùng hoặc phải tương ứng với hai cây phái sinh khác nhau.
  5. Một CFGrõ ràng khi và chỉ khi tất cả các chuỗi có tối đa là một nguồn gốc hợp lệ theo quy định của CFG. Nếu không, ngữ pháp là mơ hồ.
  6. Một CFLvốn đã mập mờ khi và chỉ khi nó không phải là ngôn ngữ của bất kỳ CFG rõ ràng. Nó không thể có bất kỳ DPDA nào.
    Nếu mọi ngữ pháp tạo ra CFL đều mơ hồ, thì CFL được gọi là mơ hồ vốn có . Do đó, nó không phải là ngôn ngữ của bất kỳ CFG rõ ràng nào .

Sự kiện

  1. Mỗi CFL là ngôn ngữ của vô số các thiết bị không điều kiện.
  2. Mỗi CFL là ngôn ngữ của vô số CFG mơ hồ.
  3. Một CFL được chấp nhận bởi một số DPDA không phải là mơ hồ. (Tồn tại ít nhất một CFG rõ ràng cho nó.)
  4. Một CFL được NDPDA chấp nhận có thể có hoặc không mơ hồ vì có thể tồn tại một số DPDA (hoặc CFG không rõ ràng) cho nó.
  5. Một CFL được tạo bởi CFG không rõ ràng có thể có hoặc không mơ hồ vì có thể tồn tại một số CFG không rõ ràng (hoặc DPDA) cho nó.
  6. Một CFL được tạo bởi ít nhất một CFG rõ ràng không phải là mơ hồ. (Có một số DPDA cho nó.)
  7. Một ngữ pháp không xác định có thể hoặc không mơ hồ.

Trả lời câu hỏi của bạn (mối quan hệ giữa tính quyết định và sự mơ hồ)

  1. (Không) mơ hồ áp dụng chủ yếu cho các ngữ pháp (ở đây là CFG). Tính không xác định (Không) áp dụng cho cả ngữ pháp và tự động (ở đây là các thiết bị PDA).

    Nếu bạn muốn sự khác biệt logic, bạn có thể xem xét bốn điểm cuối cùng trong phần sự kiện khi chúng cố gắng liên quan đến cả sự mơ hồ và tính quyết định. Ở đây tôi đang nhắc lại chúng một lần nữa:

  2. Một CFL được chấp nhận bởi một số PDA xác định không phảimơ hồ . (Tồn tại ít nhất một CFG rõ ràng cho nó.)

  3. Một CFL được chấp nhận bởi PDA không xác định có thể có hoặc không mơ hồ vì có thể tồn tại một số DPDA (hoặc CFG không rõ ràng ) cho nó.
  4. Một CFL được tạo bởi CFG không rõ ràng có thể có hoặc không mơ hồ vì có thể tồn tại một số CFG không rõ ràng (hoặc PDA xác định ) cho nó.
  5. Một CFL được tạo bởi ít nhất một CFG rõ ràng không phải là mơ hồ . (Có một số DPDA cho nó.)
  6. Một ngữ pháp không xác định có thể hoặc không mơ hồ .

Tái bút

  1. Câu trả lời được chấp nhận sử dụng các dòng thích CFL là xác định, CFL xác định, CFL không thể là CFL xác định, CF Một CFL không xác định. Tôi đoán các tính từ, tính xác định và không rõ ràng, không phù hợp với CFL, nhưng đối với PDA và CFG. điểm từ nó. (Trong thực tế tôi đã sao chép theo nghĩa đen đã dán một số dòng từ câu trả lời đó.) Nhưng tôi vẫn cảm thấy nó nên được thực hiện chính xác hơn. Vì vậy, tôi đã cố gắng đưa các công cụ rõ ràng hơn ở đây trong hai phần định nghĩa và sự kiện (tôi có thể đã làm cho nó dài dòng một cách không cần thiết và dài). Tôi đoán tôi nên đã chỉnh sửa câu trả lời ban đầu, nhưng sau đó nó sẽ liên quan đến việc xóa nhiều điểm sử dụng các dòng trên. Và tôi không biết nếu điều này sẽ làm cho nó bất kỳ chỉnh sửa hợp lệ vì nó liên quan đến việc viết lại hoàn toàn.
  2. Lưu ý rằng tôi đã đặt một từ định lượng bằng chữ in nghiêng để làm nổi bật sự khác biệt so sánh trong các định nghĩa và sự kiện khác nhau. Các thuật ngữ định nghĩa chỉ được in đậm .
  3. Một vài điểm tôi đã tự đưa ra, vì vậy tôi sẽ cần xác nhận từ một người am hiểu ở đây về tính đúng đắn của mọi điểm.

PS 1 sai: có một định nghĩa chuẩn cho các CFL xác định / không rõ ràng, cụ thể, chúng được định nghĩa là các định nghĩa mà tất cả các CFG đều xác định / không rõ ràng.
rebierpost

chỉ nhận ra thực tế 7 là sai. Ngoài ra điểm 6 từ danh sách cuối cùng thứ hai là giống nhau và là sai.
Maha

Thật vậy ... tính xác định không có sự mơ hồ tại bất kỳ thời điểm nào trong quá trình phân tích cú pháp, vì vậy nó mạnh hơn sự mơ hồ (nghĩa là sự mơ hồ ngay cả sau khi phân tích cú pháp đã hoàn thành).
Revierpost
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.