วิธีการแสดงว่า L = L (G)


22

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

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

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

คำตอบ:


21

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

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

ให้ไวยากรณ์อย่างเป็นทางการกับอาคารผู้โดยสารไม่ , ขั้วกฎและเริ่มต้นสัญลักษณ์N เราใช้แสดงโดยชุดของประโยคที่ว่าจะได้รับจากได้รับที่เป็น\ ภาษาที่สร้างขึ้นโดยเป็น * สมมติว่าเราต้องการแสดงให้เห็นว่าสำหรับบางตัวG=(N,T,δ,S)NTδSNϑ(G)Sδαϑ(G)SαGL(G)=ϑ(G)TL=L(G)LT

สถานที่จัดงาน

นี่คือวิธีที่เราจะไปเกี่ยวกับที่ เรากำหนดเพื่อให้M1,,Mk(NT)

  1. ϑ(G)=i=1kMiและ
  2. Ti=1kMi=LL

ในขณะที่ 2. มักจะชัดเจนโดยคำจำกัดความของ , 1. ต้องมีงานที่จริงจัง ทั้งสองรายการเข้าด้วยกันอย่างชัดเจนบ่งบอกตามที่ต้องการL ( G ) = LMiL(G)=L

เพื่อความสะดวกในสัญกรณ์ขอแสดงว่าM_iM=i=1kMi

ถนนหิน

มีสองขั้นตอนหลักในการดำเนินการพิสูจน์ดังกล่าว

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

  • วิธีการพิสูจน์ 1. ?
    เช่นเดียวกับความเท่าเทียมกันที่กำหนดไว้มีสองทิศทาง

    • ϑ(G)M : (โครงสร้าง) เหนี่ยวนำกว่าโปรดักชั่นของGG
    • Mϑ(G) : โดยปกติหนึ่งเหนี่ยวนำโดยเริ่มต้นจากที่หนึ่งที่มีS SMiS

นี่เป็นสิ่งเฉพาะเจาะจงตามที่ได้รับ รายละเอียดขึ้นอยู่กับไวยากรณ์และภาษาในมือ

ตัวอย่าง

พิจารณาภาษา

L={anbncmn,mN}

และไวยากรณ์ด้วยกำหนดโดยδG=({S,A},{a,b,c},δ,S)δ

SScAAaAbε

ที่เราต้องการที่จะแสดงให้เห็นว่า{G} ขั้นตอนของไวยากรณ์นี้ทำงานอย่างไร ดีแรกมันสร้างแล้ว nนี้ทันทีแจ้งทางเลือกของเราคือc m a n b n M iL=L(G)cmanbnMi

M0={ScmmN},M1={anAbncmm,nN},M2={anbncmm,nN}.

เนื่องจากและรายการที่ 2 ได้รับการดูแลแล้ว ต่อ 1. เราแบ่งหลักฐานออกเป็นสองส่วนตามที่ประกาศM 0T = M 1T = M2=LM0T=M1T=

ϑ(G)M

เราดำเนินการเหนี่ยวนำโครงสร้างตามกฎของGG

IA:เนื่องจากเรายึดได้สำเร็จS=Sc0M0

IH:สมมติว่ามีประโยคบางชุดที่เรารู้จักด้วยX MXϑ(G)XM

IS:ให้โดยพลการ เราต้องแสดงให้เห็นว่ารูปแบบใดก็ตามมีและสิ่งที่ถูกนำไปใช้กฎต่อไปเราจะไม่ปล่อยให้Mเราทำสิ่งนี้โดยแยกความแตกต่างของกรณีอย่างสมบูรณ์ จากสมมติฐานการเข้าเป็นสมาชิกเรารู้ว่ากรณีใดกรณีหนึ่งต่อไปนี้มีผล:α MαXϑ(G)MαM

  • w = S c m m N MwM0นั่นคือสำหรับบาง\ สามารถนำกฎสองข้อมาใช้ซึ่งทั้งคู่ได้รับประโยคใน : w=ScmmN
    M
    • ScmScm+1M0และ
    • ScmAcm=a0Ab0cmM1M_1
  • w = a n A b n c m m , n NwM1 , คือสำหรับบาง : w=anAbncmm,nN
    • wan+1Abn+1cmM1และ
    • wanbncmM2M_2
  • wM3 : เนื่องจาก , ไม่สามารถหาอนุพันธ์ได้อีกwT

เนื่องจากเราครอบคลุมทุกกรณีเรียบร้อยแล้วการเหนี่ยวนำจึงเสร็จสมบูรณ์

ϑ(G)M

เราดำเนินการอย่างใดอย่างหนึ่ง (แบบง่าย) หลักฐานต่อM_iหมายเหตุวิธีการที่เราห่วงโซ่การพิสูจน์ว่า "ภายหลัง"สามารถยึดโดยใช้ "ก่อนหน้านี้" M_iMiMiMi

  • M1 : เราทำการเหนี่ยวนำมากกว่ายึดในและใช้ในขั้นตอนmSc0=SSSc
  • M2 : เราแก้ไขเป็นค่าโดยพลการและเหนี่ยวนำให้เกิดมากกว่าnเรายึดเหนี่ยวในโดยใช้โดยหลักฐานก่อนหน้านี้ ดำเนินขั้นตอนผ่านAABmnAcmSScmAcmAaAb
  • M3 : สำหรับพลเราใช้หลักฐานอดีตเมตรm,nNSanAbncmanbncm

นี่เป็นการสรุปทิศทางที่สองของการพิสูจน์ข้อ 1 แล้วเราก็ทำเสร็จแล้ว

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

SaAbCεAaAbεCcCε

การออกกำลังกาย

ให้ไวยากรณ์สำหรับ

L={bkal(bc)manbok,l,m,n,oN,ko,2l=n,m2}

และพิสูจน์ความถูกต้องของมัน

หากคุณมีปัญหาไวยากรณ์:

พิจารณาด้วยโปรดักชั่นG=({S,Br,Bl,A,C},{a,b,c},δ,S)

SbSbBlBrBlbBlbABrBrbAbAaAaaCCbcCbcbc

และ :Mi

M0={biSbiiN}M1={biBlbooN,io}M2={bkBrbikN,ik}M3={bkaiAa2ibok,o,iN,ko}M4={bkal(bc)iCa2lbok,o,l,iN,ko}M5=L

สิ่งที่เกี่ยวกับไวยากรณ์ที่ไม่ใช่เชิงเส้น?

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

แน่นอนว่าเรายังคงสามารถกำหนดและทำการพิสูจน์ได้ แต่มันก็ยากที่จะเหนี่ยวนำซ้อนกันมากขึ้น มีวิธีทั่วไปหนึ่งอย่างที่ฉันรู้ว่าสามารถช่วยได้บ้าง เราเปลี่ยน ansatz เพื่อแสดงว่าเราสร้างคำที่ต้องการอย่างน้อยที่สุดและสร้างจำนวนคำที่เหมาะสม (ต่อความยาว) อย่างเป็นทางการเราแสดงให้เห็นว่าMi

  1. ϑ(G)Lและ
  2. |L(G)Tn|=|LTn|สำหรับทั้งหมดnN

ด้วยวิธีนี้เราสามารถ จำกัด ตัวเองให้อยู่ในทิศทาง "ง่าย" จาก ansatz ดั้งเดิมและใช้ประโยชน์จากโครงสร้างในภาษาโดยไม่สนใจคุณสมบัติที่ซับซ้อนที่ไวยากรณ์อาจมี แน่นอนไม่มีอาหารกลางวันฟรี: เราได้รับงานใหม่ทั้งหมดของการนับคำสร้างสำหรับแต่ละ\ โชคดีสำหรับเรานี่เป็นคำหยั่งรู้ได้ ดูรายละเอียดที่นี่และที่นี่ ¹ คุณสามารถค้นหาตัวอย่างบางส่วนในวิทยานิพนธ์ปริญญาตรีของฉันG nN

สำหรับแกรมม่าที่คลุมเครือและไม่ใช้บริบทฉันกลัวว่าเราจะกลับมาอีกครั้งหนึ่งและคิดแคป


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