การไม่ใช้ความไม่แตกต่างจากระดับคืออะไร?


13

ฉันพยายามที่จะเข้าใจสิ่งที่มีความหมายโดย "deterministic" ในการแสดงออกเช่น "ไวยากรณ์บริบทที่ปราศจากการกำหนด" (มี "สิ่ง" ที่กำหนดขึ้นได้ในฟิลด์นี้) ฉันขอขอบคุณตัวอย่างมากกว่าคำอธิบายที่ซับซ้อนที่สุด! ถ้าเป็นไปได้.

ความสับสนหลักของฉันมาจากการที่ไม่สามารถบอกได้ว่าคุณสมบัติของไวยากรณ์นี้แตกต่างจากความกำกวม (ไม่ใช่ -) อย่างไร

ที่ใกล้เคียงที่สุดที่ฉันจะต้องค้นหาสิ่งที่มันหมายถึงเป็นคำพูดจากกระดาษโดย D. Knuth ในการแปลภาษาจากซ้ายไปขวา :

Ginsburg และ Greibach (1965) ได้กำหนดแนวความคิดของภาษาที่กำหนดขึ้นมา เราแสดงในหมวดที่ 5 ว่าภาษาเหล่านี้เป็นภาษาที่มีไวยากรณ์ LR (k) อยู่จริง

ซึ่งกลายเป็นวงกลมทันทีที่คุณไปถึงที่Section Vนั่นเพราะมันบอกว่าสิ่งที่ตัวแยกวิเคราะห์ LR (k) สามารถแยกวิเคราะห์เป็นภาษาที่กำหนดขึ้น ...


ด้านล่างเป็นตัวอย่างที่ฉันสามารถค้นหาเพื่อช่วยให้ฉันเข้าใจความหมาย "คลุมเครือ" โปรดดู:

onewartwoearewe

ซึ่งสามารถแยกวิเคราะห์เป็นone war two ear eweหรือo new art woe are we- ถ้าไวยากรณ์อนุญาตให้ (บอกว่ามันมีคำทั้งหมดที่ฉันเพิ่งระบุไว้)

ฉันจะต้องทำอะไรเพื่อทำให้ภาษาตัวอย่างนี้ (ไม่ใช่ -) กำหนดขึ้นได้? (ตัวอย่างเช่นฉันสามารถลบคำoจากไวยากรณ์เพื่อให้ไวยากรณ์ไม่ชัดเจน)

ภาษาข้างต้นเป็นการกำหนดหรือไม่

PS ตัวอย่างมาจากหนังสือ Godel, Esher, Bach: Eternal Golden Braid


สมมติว่าเรากำหนดไวยกรณ์สำหรับภาษาตัวอย่างเช่น:

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

โดยการโต้เถียงเกี่ยวกับการแยกสตริงทั้งหมดไวยากรณ์นี้ทำให้ภาษาที่ไม่ได้กำหนด?


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 เนื่องจากคำถามตอนนี้มีเหตุผลเล็กน้อย ก่อนอื่นสตริงไม่ใช่ภาษา สตริงไม่ชัดเจนคลุมเครือไม่ชัดเจนกำหนดขึ้นได้เอง พวกเขาเป็นเพียงแค่สาย ไวยากรณ์ที่คุณให้ไม่ได้สร้างสตริงตัวอย่าง ฉันไม่ได้ตรวจสอบการปลอมแปลงทั้งหมด 180 ครั้งเพื่อดูว่ามีการซ้ำซ้อนหรือไม่ แต่ในทางทฤษฎีแล้วนั่นคือทั้งหมดที่คุณต้องทำเพื่อดูว่าไวยากรณ์นั้นคลุมเครือหรือไม่ น่าเศร้าที่ภาษาไม่สามารถคลุมเครือโดยเนื้อแท้เนื่องจากภาษามี จำกัด ดังนั้นปกติจึงได้รับการยอมรับจาก DPDA จึงกำหนดขึ้น
Patrick87

@ Patrick87 ใช่มั้ย มันอยู่ที่ไหนพูดว่าสตริงเป็นภาษา? สตริงนี้เป็นผลิตภัณฑ์ตัวอย่างและตรวจสอบว่าเป็นไปได้ที่จะสร้างโดยใช้ไวยากรณ์ที่กำหนด อะไรที่ทำให้คุณคิดอย่างอื่น สตริงที่เป็นปัญหานั้นเกิดขึ้นจริงโดยที่สองลำดับของแอ็พพลิเคชันกฎต่างกันสร้างสตริงเดียวกันดังนั้นไวยากรณ์จะคลุมเครือ แต่ถ้าคุณลบกฎออก (ตัวอย่างเช่นB -> 'o'จากนั้นจะไม่ชัดเจนอีกต่อไป ...
wvxvw

ก่อนอื่นคุณสามารถให้การสืบทอดของสตริงตัวอย่างโดยใช้ไวยากรณ์ได้หรือไม่? จากคำถามของคุณเอง: "ภาษาข้างต้นเป็นอุปสรรคหรือไม่" คุณไม่เคยตั้งชื่อภาษาเพียงแค่สตริงที่สร้างขึ้นโดยความไร้ขอบเขตของไวยากรณ์แม้ว่าจะไม่ใช่ภาษาที่คุณเสนอก็ตาม
Patrick87

คุณเขียนเป็นภาษาอังกฤษได้ไหม เช่น "เริ่มต้นด้วยSการใช้กฎS := ...เราได้...... "
Patrick87

@ Patrick87 ฉันได้เพิ่มขั้นตอนการสร้างแบบทีละขั้นตอนและฉันก็ตระหนักว่าฉันทำผิดในไวยากรณ์ซึ่งฉันได้แก้ไขแล้ว
wvxvw

คำตอบ:


9

พีดีเอนั้นถูกกำหนดไว้แล้วดังนั้น DPDA ถ้ามีสำหรับการกำหนดค่าออโตเมติกที่เข้าถึงได้ทุกครั้งจะมีการเปลี่ยนหนึ่งครั้งมากที่สุด (นั่นคือสามารถกำหนดค่าใหม่ได้มากที่สุด) หากคุณมี PDA ซึ่งสามารถเข้าถึงการกำหนดค่าบางอย่างที่อาจมีการเปลี่ยนรูปแบบที่ไม่ซ้ำกันสองรายการขึ้นไปคุณไม่มี DPDA

ตัวอย่าง:

Q={q0,q1}Σ=Γ={a,b}A=q0δ

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

เหล่านี้เป็นพีดีเอ nondeterministic เพราะกำหนดค่าเริ่มต้น - q_0, Z0- aสามารถเข้าถึงได้และมีสองเปลี่ยนที่ถูกต้องนำออกไปจากมันถ้าสัญลักษณ์เข้าเป็น เมื่อใดก็ตามที่ PDA นี้เริ่มพยายามประมวลผลสตริงที่ขึ้นต้นด้วยaมีตัวเลือกให้เลือก ตัวเลือกหมายถึง nondeterministic

ลองพิจารณาตารางการเปลี่ยนแปลงต่อไปนี้แทน:

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

คุณอาจถูกล่อลวงให้พูดว่า PDA นี้เป็นแบบไม่ จำกัด เวลา หลังจากทั้งหมดมีการเปลี่ยนที่ถูกต้องสองครั้งออกจากการกำหนดค่าq1, b(a+b)*เช่น อย่างไรก็ตามเนื่องจากการกำหนดค่านี้ไม่สามารถเข้าถึงได้โดยเส้นทางใด ๆ ผ่านหุ่นยนต์จึงไม่นับ การกำหนดค่าเพียงสามารถเข้าถึงได้เป็นส่วนหนึ่งของq_0, (a+b)*Z0, q1, a(a+b)*Z0และq2, b(a+b)*Z0และสำหรับแต่ละของการกำหนดค่าเหล่านี้มากที่สุดคนหนึ่งการเปลี่ยนแปลงที่ถูกกำหนด

CFL นั้นถูกกำหนดไว้ถ้ามันเป็นภาษาของ DPDA บางตัว

CFG นั้นไม่น่าสงสัยหากทุกสายมีการสืบทอดที่ถูกต้องอย่างมากที่สุดตาม CFG มิฉะนั้นไวยากรณ์ไม่ชัดเจน หากคุณมี CFG และคุณสามารถสร้างทรีที่แตกต่างกันสองสายสำหรับสตริงบางตัวคุณจะมีไวยากรณ์ที่ไม่ชัดเจน

CFL นั้นเป็นสิ่งที่คลุมเครือหากไม่ใช่ภาษาของ CFG ที่ไม่คลุมเครือ

หมายเหตุดังต่อไปนี้:

  • CFL ที่กำหนดขึ้นต้องเป็นภาษาของ DPDA บางตัว
  • CFL ทุกภาษาเป็นภาษาของพีดีเอ nondeterministic ไม่ จำกัด จำนวน
  • CFL ที่คลุมเครือโดยเนื้อแท้ไม่ใช่ภาษาของ CFG ที่ไม่คลุมเครือใด ๆ
  • CFL ทุกภาษาเป็นภาษาของ CFG ที่คลุมเครือจำนวนไม่ จำกัด
  • CFL ที่คลุมเครือโดยเนื้อแท้ไม่สามารถกำหนดได้
  • CFL แบบ nondeterministic อาจหรืออาจจะไม่คลุมเครือโดยเนื้อแท้

1
Wiki กล่าวว่า PDA ไม่ได้ถูกกำหนดไว้ (อาจเป็นเวอร์ชั่นที่กำหนดได้และไม่สามารถกำหนดได้) แต่คุณสามารถละเว้นส่วนแรกของประโยคได้ แต่มันไม่ได้มีส่วนช่วยในสิ่งที่คุณพูด: / แต่อีกครั้งนี่เป็นการนิยาม ภาษาที่กำหนดขึ้นมาเป็นภาษาป้อนข้อมูลของสิ่งที่กำหนดขึ้นแล้วและบางสิ่งนั้นถูกเรียกว่า deterministic เพราะมันยอมรับภาษาที่กำหนดขึ้นมา - มันก็เหมือนกับการพูดว่า "หญ้ามีสีเขียวเพราะสีเขียวเป็นสีของหญ้า" มันเป็นความจริง แต่ไม่มีประโยชน์ :( โปรดยกตัวอย่างเช่นจะมีค่ามากกว่านี้!
wvxvw

@wvxvw: คุณอ่านไม่ถูกต้อง มีการระบุว่า: "PDA มีการกำหนดไว้ถ้าหากทุกสถานะ / สัญลักษณ์ / สแต็คท็อปทริปเปิลมีสถานะถัดไปเพียงสถานะเดียวเท่านั้น" ไม่มีสิ่งใดในคำจำกัดความเกี่ยวกับภาษาที่หุ่นยนต์ยอมรับ
หลงทางลอจิก

2
@wvxvw คำจำกัดความของ PDA ที่กำหนดขึ้นหรือ DPDA ซึ่งฉันให้ในทางไม่มีรูปร่างหรือรูปแบบขึ้นอยู่กับความหมายของภาษาฟรีบริบทกำหนดขึ้น ฉันกำหนด DPDA ตามคุณสมบัติของหุ่นยนต์เท่านั้น จากนั้นฉันจะกำหนดสิ่งที่ CFL ที่กำหนดขึ้นได้ในแง่ของคำจำกัดความของ DPDA โปรดอ่านคำตอบอีกครั้งเนื่องจากความคิดเห็นเหล่านี้และ Wandering Logic และลองดูว่าสิ่งนี้สมเหตุสมผลหรือไม่ ฉันจะพยายามให้ตัวอย่างสั้น ๆ
Patrick87

q1,b(a+b)q2,b(a+b)Q={q0,...q2}ตัวละครปัจจุบัน? นอกจากนี้การตีความของฉันถูกต้องหรือไม่ x+- หนึ่งหรือมากกว่าx, (x)*- ศูนย์หรือมากกว่าx?
wvxvw

@wvxvw Configuration หมายถึงสถานะปัจจุบันและเนื้อหาปัจจุบันของสแต็ก x+มักจะอ้างถึง "หนึ่งหรือมากกว่าxนั้นในขณะที่x*มักจะหมายถึง" ศูนย์หรือมากกว่าxนั้น ฉันอาจใช้xx*แทนx+เนื่องจากสิ่งเหล่านี้เหมือนกัน
Patrick87

7

นี่คือตัวอย่าง (จาก Wikipedia):

S0S0|1S1|ε

ภาษาที่ไม่มีบริบทจะถูกกำหนดถ้าหากว่ามีอยู่อย่างน้อยหนึ่งตัวกดลง - ลงอัตโนมัติที่ยอมรับภาษานั้น (อาจมีการกดออโตมาต้าแบบไม่ จำกัด จำนวนมากที่ยอมรับภาษาและมันก็ยังคงเป็นภาษาที่กำหนดขึ้น) โดยพื้นฐานแล้วออโตมาตาแบบกดลงที่กำหนดขึ้นมานั้นเป็นสิ่งที่เครื่องเปลี่ยนสถานะขึ้นอยู่กับสถานะปัจจุบัน สัญลักษณ์อินพุตและสัญลักษณ์สูงสุดปัจจุบันของสแต็กำหนดนี่หมายความว่าไม่มีการเปลี่ยนสถานะมากกว่าหนึ่งสถานะสำหรับสัญลักษณ์สถานะ / อินพุต / สัญลักษณ์สแต็คสูงสุด หากคุณมีสถานะต่อไปนี้ตั้งแต่สองสถานะขึ้นไปสำหรับสัญลักษณ์สถานะ / อินพุต / สัญลักษณ์สแต็คบนสุดสามเท่าออโตเมติกนั้นไม่ได้กำหนดไว้ล่วงหน้า (คุณจะต้อง "คาดเดา" ว่าจะต้องใช้ช่วงการเปลี่ยนภาพใดเพื่อตัดสินใจว่าหุ่นยนต์ยอมรับหรือไม่)

สิ่งที่ Knuth พิสูจน์ได้ก็คือทุก ๆ ไวยากรณ์ของ LR (k) นั้นมีออโตเมติกแบบกดลงที่กำหนดไว้ได้ ดังนั้น LR (k) ไวยากรณ์และการกดลงอัตโนมัติที่กำหนดขึ้นสามารถจัดการภาษาชุดเดียวกันได้ แต่ชุดของภาษาที่มีออโตเมชั่นแบบกดลงที่กำหนดได้ซึ่งยอมรับได้คือ (โดยนิยาม) ภาษาที่กำหนดขึ้น อาร์กิวเมนต์ไม่ได้เป็นแบบวงกลม

ดังนั้นภาษาที่กำหนดขึ้นได้ก็หมายความว่ามีไวยากรณ์ที่ไม่คลุมเครือ และเราได้แสดงไวยากรณ์ที่ชัดเจนซึ่งไม่มีการกดลงอัตโนมัติ (และเป็นไวยากรณ์ที่ชัดเจนซึ่งยอมรับภาษาที่ไม่ได้กำหนด)

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


คุณช่วยอธิบายได้อย่างละเอียดหน่อยได้ไหมว่าทำไมต้องดูสายทั้งหมดก่อนที่จะกำหนดค่ากลางทำให้ภาษานี้ไม่เป็นอุปสรรค? ฉันอ่านคำอธิบายอีกคำว่า "กำหนดขึ้นเอง" คืออะไรและมันบอกว่า "ถ้าคุณไม่ต้องการย้อนรอยเมื่อแยกวิเคราะห์ภาษานั้นก็กำหนดขึ้น" ฉันไม่เห็นความจำเป็นในการย้อนรอยเพื่อแยกวิเคราะห์ภาษานี้ ...
wvxvw

1
พิจารณาสตริงอินพุต "10011001" ออโตมาดาวน์จะไม่ทราบระยะเวลาของสตริงจนกระทั่งมันถึงจุดสิ้นสุด เมื่อคุณไปถึง 0 ที่สองคุณต้องเลือก: นี่คือสตริง 4 ตัวอักษร "1001" หรือสตริงอีกต่อไปที่มีลักษณะเหมือน "100 ???? 001" เมื่อคุณไปถึงตัวที่ห้าคุณยังไม่รู้: นี่คือสตริง 8 ตัวอักษร "10011001" หรือสตริงที่ยาวกว่าที่ดูเหมือน "10011 ???? 11001"
หลงทางลอจิก

1
สิ่งที่ "แยกสตริงทั้งหมด" ไม่ใช่คำจำกัดความของการไม่กำหนดค่า มันเป็นเพียงสัญชาตญาณที่ฉันพยายามเพิ่ม ทั้ง @ Patrick87 และฉันให้คำจำกัดความที่แท้จริงเกี่ยวกับการกำหนด: จากทุก ๆ รัฐจะมีสถานะถัดไปมากที่สุด หากภาษานั้นไม่มีไวยากรณ์ที่ชัดเจนมันจะต้องไม่ถูก จำกัด ฉันไม่สามารถตอบเกี่ยวกับตัวอย่างของคุณได้โดยไม่ต้องทำงานมากขึ้น: คุณได้แสดงไวยากรณ์ที่ไม่ชัดเจน แต่นั่นไม่ใช่สิ่งสำคัญคุณต้องแสดงให้เห็นว่าไม่มีไวยากรณ์ที่ไม่คลุมเครือหากคุณต้องการแสดงให้เห็นว่าภาษานั้นคลุมเครือ
หลงทางลอจิก

1
@wvxvw หากคุณกำลังมองหาขั้นตอนการคำนวณคุณน่าจะโชคดี ... ตามen.wikipedia.org/wiki/List_of_undecidable_problems en.wikipedia.org/ไม่สามารถบอกได้ว่า CFG นั้นมีความกำกวมหรือไม่ ; มันยังไม่สามารถตัดสินใจได้ว่า CFG จะสร้างสตริงทั้งหมดหรือไม่ เมื่อพิจารณาถึงสิ่งนี้ฉันสงสัยอย่างจริงจังว่าสามารถตัดสินใจได้และมีประสิทธิภาพน้อยกว่ามากในการตัดสินใจว่าภาษา CFG เป็น CFL ที่กำหนดหรือไม่
Patrick87

1
@wvxvw หากคุณโชคดีอย่างที่คุณกำลังเผชิญกับสิ่งที่เราเรียกว่ากรณีที่มีความสุขคือไม่ใช่หนึ่งในกรณีที่ทำให้เกิดปัญหาที่ไม่สามารถตัดสินใจได้ คุณสามารถกำหนดฮิวริสติกที่ใช้ได้กับหลายกรณีที่มีความสุขและไม่ระเบิดในส่วนที่เหลือ แต่มันจะไม่ทำงานในทุกกรณีที่มีความสุข หากพวกเขาทำเช่นนั้นคุณจะต้องมีผู้ตัดสินใจสำหรับปัญหาซึ่งตามหลักฐานของเรานั้นเป็นไปไม่ได้
Patrick87

5

ภาษาที่ไม่มีบริบทกำหนดเป็นภาษาที่ได้รับการยอมรับจากหุ่นยนต์แบบกดลงที่กำหนดโดยบางภาษา เช่นนี้มันเป็นทรัพย์สินของเป็นภาษามากกว่าของไวยากรณ์ ในทางตรงกันข้ามความกำกวมเป็นคุณสมบัติของไวยากรณ์ในขณะที่ความกำกวมโดยเนื้อแท้เป็นทรัพย์สินของภาษา

มีการเชื่อมต่อระหว่างคำจำกัดความสองคำ: ภาษาที่ไม่มีบริบทกำหนดไว้จะไม่คลุมเครือโดยธรรมชาติดังที่แสดงในคำตอบของคำถามนี้


ขออภัยนั่นไม่ค่อยมีประโยชน์ จริง ๆ แล้วฉันเริ่มต้นด้วย DPDA แต่ก็ไม่เคยอธิบายว่าทำไมมันถูกเรียกว่า deterministic นี่เป็นคำจำกัดความที่หาง่ายที่ Wikipedia / Googling สำหรับบทความอื่น แต่คุณสมบัติของไวยากรณ์ / ภาษา / ตัวแยกวิเคราะห์คำใดที่อธิบายด้วยคำว่า "deterministic" กล่าวอีกนัยหนึ่งสิ่งที่ควรเกิดขึ้นในไวยากรณ์เพื่อให้เรียกว่าไม่แน่นอน
wvxvw

ขออภัยถ้าฉันแสดงความคิดเห็นมากเกินไป ความสับสนนั้นเป็นเพราะฉันไม่สามารถบอกได้พูดดูภาษาบางอย่างไม่ว่าจะเป็นการกำหนดหรือไม่และจะไม่รู้ว่าจะเริ่มระบุ "ระดับ" ของภาษาได้อย่างไร ตัวอย่างของภาษาที่กำหนดขึ้นแล้วเปลี่ยนไปในทางที่ทำให้ไม่ได้กำหนดจะเป็นประโยชน์อย่างมาก
wvxvw

1
LR(k)

1
ขออภัยยังไม่เป็นประโยชน์ ฉันเข้าใจสิ่งที่คุณพูด แต่ก็ไม่ได้ช่วยให้ฉันรู้จักภาษาที่กำหนดขึ้นและบอกได้ว่านอกเหนือจากที่ไม่ได้กำหนดไว้ เพื่อให้ตัวอย่าง: หากภาษามีกฎการผลิตที่สร้างปัญหาเกี่ยวกับวงเล็บที่สมดุลฉันรู้ได้ทันทีว่า FSM ไม่สามารถแยกวิเคราะห์ได้ (เพราะมันจะต้องมีสแต็ค) แต่เมื่อคุณพูดถึงพิธีการอื่นเพียงแค่เรียกซ้ำมันไม่ช่วยให้ฉันเข้าใจว่าภาษานั้นควรแตกต่างจากภาษาอื่นอย่างไร
wvxvw

ในคำอื่น ๆ (ตามที่คุณกล่าวถึงในความคิดเห็นก่อนหน้า) คุณต้องการตัวอย่างของภาษาที่ไม่ระบุค่าที่กำหนดและไม่ขึ้นกับบริบทของ "sort" เดียวกัน บางทีคุณควรถามคำถามที่เน้นไปที่เรื่องนั้น
Yuval Filmus

1

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


1

คำนิยาม

  1. ตัวรับการกำหนดค่าที่ลดลง (DPDA)เป็นหุ่นยนต์แบบเลื่อนลงที่ไม่เคยมีทางเลือกในการเคลื่อนที่
  2. DPDA และ NPDA ไม่เทียบเท่า
  3. CFGคือไม่ใช่กำหนด IFF มีอย่างน้อยสองโปรดักชั่นที่มีคำนำหน้าสถานีเดียวกันบนด้านขวาของพวกเขา
  4. CFGเป็นคลุมเครือ IFF มีอยู่บาง W ∈ L (G) ที่มีอย่างน้อยสองต้นที่มาที่แตกต่างกัน ดังนั้นมันจึงมีต้นไม้สองต้นขึ้นไปที่อยู่ซ้ายสุดหรือขวาสุดที่ตรงกับต้นไม้สองต้น
  5. CFGเป็นที่ชัดเจน IFF ทุกสตริงมีที่มากที่สุดคนหนึ่งที่มาที่ถูกต้องตาม CFG มิฉะนั้นไวยากรณ์ไม่ชัดเจน
  6. CFLเป็นคลุมเครือโดยเนื้อแท้ IFF มันไม่ได้เป็นภาษาของใด ๆ CFG โปร่งใส มันไม่สามารถมี DPDA ใด ๆ
    หากทุกไวยากรณ์ที่สร้าง CFL คลุมเครือแล้วCFLเรียกว่าโดยเนื้อแท้คลุมเครือ ดังนั้นมันจึงไม่ใช่ภาษาของCFG ที่ไม่คลุมเครือใด ๆ

ข้อเท็จจริง

  1. CFL ทุกภาษาเป็นภาษาของพีดีเอ nondeterministic ไม่จำกัด จำนวน
  2. CFL ทุกภาษาเป็นภาษาของCFG ที่คลุมเครือจำนวนไม่ จำกัด
  3. CFL ที่DPDA ยอมรับบางตัวไม่ชัดเจน (มี CFG อย่างน้อยหนึ่งอันสำหรับมัน)
  4. CFL ที่ NDPDA ยอมรับอาจหรืออาจไม่คลุมเครือในตัวเนื่องจากอาจมีDPDA บางส่วน (หรือ CFG ที่ไม่ชัดเจน) สำหรับมัน
  5. CFL สร้างโดย CFG คลุมเครืออาจจะหรืออาจจะไม่คลุมเครือโดยเนื้อแท้เป็นอาจมีบาง CFG โปร่งใส (หรือ DPDA) สำหรับมัน
  6. CFL ที่สร้างโดยCFG ที่ไม่คลุมเครืออย่างน้อยหนึ่งตัวนั้นไม่ได้คลุมเครือโดยเนื้อแท้ (มี DPDA อยู่บ้าง)
  7. ไวยากรณ์ที่ไม่สามารถกำหนดได้อาจเป็นหรือไม่คลุมเครือ

ตอบคำถามของคุณ (ความสัมพันธ์ระหว่างระดับและความคลุมเครือ)

  1. (ไม่ใช่) ความคลุมเครือส่วนใหญ่ใช้กับไวยากรณ์ (นี่คือ CFGs) (ไม่ใช่) การกำหนดนั้นใช้กับทั้งไวยากรณ์และออโตมาตา (ที่นี่คือพีดีเอ)

    หากคุณต้องการความแตกต่างเชิงตรรกะคุณสามารถดูสี่จุดสุดท้ายในส่วนข้อเท็จจริงขณะที่พวกเขาพยายามเชื่อมโยงทั้งความคลุมเครือและระดับ ที่นี่ฉันซ้ำพวกเขาอีกครั้ง:

  2. CFL ได้รับการยอมรับโดยบางส่วนกำหนด PDA เป็นไม่คลุมเครือโดยเนื้อแท้ (มี CFG อย่างน้อยหนึ่งอันสำหรับมัน)

  3. CFL ที่ได้รับการยอมรับจากPDA ที่ไม่ใช่ตัวกำหนดอาจจะไม่ชัดเจนหรือไม่ชัดเจนเนื่องจากอาจมี DPDA บางตัว (หรือCFG ที่ไม่ชัดเจน )
  4. CFL ที่สร้างโดยCFG ที่คลุมเครืออาจหรืออาจไม่คลุมเครือในตัวเนื่องจากอาจมี CFG ที่ไม่ชัดเจนบางอย่าง (หรือPDA ที่กำหนดขึ้น )
  5. CFL สร้างโดยอย่างน้อยหนึ่งที่ชัดเจน CFG ไม่คลุมเครือโดยเนื้อแท้ (มี DPDA อยู่บ้าง)
  6. กำหนดไม่ใช่ไวยากรณ์อาจจะหรืออาจจะไม่คลุมเครือ

PS:

  1. คำตอบที่ได้รับการยอมรับจะใช้บรรทัดที่เหมือนกับ "CFL คือตัวกำหนด", "ตัวกำหนด CFL", "CFL ไม่สามารถกำหนดได้", "CFL ที่ไม่ใช่ตัวกำหนด" ฉันเดาว่าคำคุณศัพท์ "กำหนด" และ "คลุมเครือ" ไม่ได้ใช้กับ CFL แต่กับ PDA และ CFG (แม้ว่าคำคุณศัพท์ "คลุมเครือโดยเนื้อแท้" ใช้กับ CFL) แม้ว่าฉันไม่ต้องการที่จะวิจารณ์คำตอบเดิม คะแนนจากมัน (อันที่จริงแล้วฉันได้คัดลอกวางบางบรรทัดจากคำตอบนั้น) แต่ถึงกระนั้นฉันก็รู้สึกว่ามันควรจะถูกต้องมากขึ้น ดังนั้นฉันจึงพยายามใส่เนื้อหาให้ชัดเจนยิ่งขึ้นที่นี่ในคำจำกัดความและข้อเท็จจริงสองส่วน (ฉันอาจทำให้มันเป็นคำกริยาและยาวโดยไม่จำเป็น) ฉันเดาว่าฉันควรจะแก้ไขคำตอบเดิม แต่แล้วมันจะเกี่ยวข้องกับการลบจุดต่าง ๆ ที่ใช้บนบรรทัด และฉันไม่รู้ว่านี่จะทำให้การแก้ไขที่ถูกต้องเกี่ยวข้องกับการเขียนใหม่ทั้งหมดหรือไม่
  2. ขอให้สังเกตว่าฉันได้ใส่คำเชิงปริมาณเป็นตัวหนาตัวเอียงเพื่อเน้นความแตกต่างเปรียบเทียบในคำจำกัดความและข้อเท็จจริงที่แตกต่างกัน เงื่อนไขความละเอียดตัวหนาเท่านั้น
  3. บางจุดที่ฉันทำด้วยตัวเองดังนั้นฉันจะต้องได้รับการยืนยันจากคนที่มีความรู้เกี่ยวกับความถูกต้องของทุกจุดที่นี่

PS 1 ไม่ถูกต้อง: มีคำจำกัดความมาตรฐานสำหรับ CFL ที่กำหนดขึ้น / คลุมเครือกล่าวคือพวกมันถูกกำหนดให้เป็นสิ่งที่CFG ทั้งหมดกำหนดขึ้น / คลุมเครือ
reinierpost

เพิ่งรู้จริง 7 ผิด นอกจากนี้จุดที่ 6 จากรายการสุดท้ายที่สองเหมือนกันและผิด
มหา

อันที่จริง ... การกำหนดระดับไม่ได้มีความกำกวมในทุกจุดในระหว่างการวิเคราะห์คำดังนั้นมันจึงแข็งแกร่งกว่าความกำกวมอย่างชัดเจน (เช่นความกำกวมแม้หลังจากการแยกวิเคราะห์เสร็จสิ้นแล้ว)
reinierpost
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.