ภาษาที่ปราศจากบริบทเป็นภาษาทางการประเภทหนึ่งที่สามารถอธิบายได้โดยใช้ไวยากรณ์ที่ปราศจากบริบท ในสาขาของทฤษฎีความซับซ้อนในการคำนวณ ภาษาที่ปราศจากบริบทมีบทบาทสำคัญในการทำความเข้าใจความซับซ้อนของปัญหาและขอบเขตของการคำนวณ หากต้องการเข้าใจแนวคิดของภาษาที่ปราศจากบริบทอย่างสมบูรณ์ จำเป็นต้องสำรวจคำจำกัดความและส่วนประกอบของไวยากรณ์ที่ปราศจากบริบท
ภาษาที่ไม่มีบริบทถูกกำหนดให้เป็นชุดของสตริงที่สามารถสร้างขึ้นโดยไวยากรณ์ที่ไม่มีบริบท ไวยากรณ์ที่ไม่มีบริบทประกอบด้วยสี่องค์ประกอบ: ชุดของสัญลักษณ์ที่ไม่ใช่เทอร์มินัล ชุดของสัญลักษณ์เทอร์มินัล ชุดของกฎการผลิต และสัญลักษณ์เริ่มต้น
สัญลักษณ์ที่ไม่ใช่ขั้วแสดงถึงสิ่งที่เป็นนามธรรมซึ่งสามารถขยายเพิ่มเติมหรือแทนที่ด้วยสัญลักษณ์อื่น โดยทั่วไปแล้วสัญลักษณ์เหล่านี้จะแสดงด้วยอักษรตัวพิมพ์ใหญ่ ตัวอย่างเช่น ในไวยากรณ์ที่ไม่มีบริบทสำหรับนิพจน์เลขคณิต เราอาจมีสัญลักษณ์ที่ไม่ใช่ขั้ว เช่น E (แทนนิพจน์), T (แทนพจน์) และ F (แทนตัวประกอบ)
ในทางกลับกัน สัญลักษณ์เทอร์มินัลเป็นหน่วยพื้นฐานของภาษา สัญลักษณ์เหล่านี้ไม่สามารถขยายเพิ่มเติมได้ และโดยทั่วไปจะแสดงด้วยอักษรตัวพิมพ์เล็กหรืออักขระอื่นๆ ในบริบทของนิพจน์ทางคณิตศาสตร์ สัญลักษณ์เทอร์มินัลอาจรวมถึงตัวเลข (เช่น 0, 1, 2) และตัวดำเนินการทางคณิตศาสตร์ (เช่น +, -, *, /)
กฎการผลิตกำหนดว่าสัญลักษณ์ที่ไม่ใช่เทอร์มินัลสามารถขยายหรือแทนที่ด้วยสัญลักษณ์อื่นได้อย่างไร กฎการผลิตแต่ละข้อประกอบด้วยสัญลักษณ์ที่ไม่ใช่ขั้วต่อทางด้านซ้ายและลำดับของสัญลักษณ์ (ทั้งที่ไม่ใช่ขั้วต่อและขั้วต่อ) ทางด้านขวา กฎเหล่านี้ระบุการแปลงหรืออนุพันธ์ที่เป็นไปได้ซึ่งสามารถนำไปใช้เพื่อสร้างสตริงที่ถูกต้องในภาษา ตัวอย่างเช่น ในไวยากรณ์ที่ไม่มีบริบทสำหรับนิพจน์ทางคณิตศาสตร์ เราอาจมีกฎการผลิตเช่น E -> E + T (ระบุว่านิพจน์สามารถขยายได้โดยการเพิ่มคำ) หรือ T -> F (ระบุว่าคำสามารถ แทนที่ด้วยตัวประกอบ)
สัญลักษณ์เริ่มต้นแสดงถึงสัญลักษณ์ที่ไม่ใช่เทอร์มินัลเริ่มต้นซึ่งการสร้างสตริงที่ถูกต้องเริ่มต้นขึ้น โดยปกติจะแสดงด้วย S ในบริบทของนิพจน์ทางคณิตศาสตร์ สัญลักษณ์เริ่มต้นอาจเป็น E ซึ่งบ่งชี้ว่าการสร้างนิพจน์ที่ถูกต้องเริ่มต้นจากนิพจน์
เพื่อแสดงแนวคิดของภาษาที่ไม่มีบริบทและส่วนประกอบของภาษา ลองพิจารณาไวยากรณ์ที่ไม่มีบริบทอย่างง่ายสำหรับภาษาที่สร้างวงเล็บที่สมดุล ไวยากรณ์ประกอบด้วยองค์ประกอบต่อไปนี้:
สัญลักษณ์ที่ไม่ใช่ขั้วต่อ: S (สัญลักษณ์เริ่มต้น)
สัญลักษณ์ขั้วต่อ: (, )
กฎการผลิต: S -> (S) | เอสเอส | ε (โดยที่ ε แทนสตริงว่าง)
ในไวยากรณ์นี้ สัญลักษณ์ที่ไม่ใช่ขั้ว S แสดงถึงสตริงของวงเล็บที่สมดุล กฎการผลิตระบุว่าสามารถขยาย S ได้โดยการใส่ S อื่นภายในวงเล็บ ((S)) เชื่อม S สองตัว (SS) เข้าด้วยกัน หรือสร้างสตริงว่าง (ε)
การใช้ไวยากรณ์นี้ เราสามารถสร้างสตริงที่ถูกต้องในภาษาของวงเล็บที่สมดุล ตัวอย่างเช่น เริ่มต้นด้วยสัญลักษณ์เริ่มต้น S เราสามารถใช้กฎการผลิตเพื่อรับสตริง ((())) สตริงนี้แสดงถึงลำดับของวงเล็บที่สมดุล
ภาษาที่ไม่มีบริบทถูกกำหนดให้เป็นชุดของสตริงที่สามารถสร้างขึ้นโดยไวยากรณ์ที่ไม่มีบริบท ส่วนประกอบของไวยากรณ์ที่ไม่มีบริบทประกอบด้วยสัญลักษณ์ที่ไม่ใช่เทอร์มินัล สัญลักษณ์เทอร์มินัล กฎการผลิต และสัญลักษณ์เริ่มต้น สัญลักษณ์ที่ไม่ใช่เทอร์มินัลแสดงถึงเอนทิตีนามธรรมที่สามารถขยายหรือแทนที่ได้ ในขณะที่สัญลักษณ์เทอร์มินัลเป็นหน่วยพื้นฐานของภาษา กฎการผลิตระบุการแปลงหรืออนุพันธ์ที่เป็นไปได้ และสัญลักษณ์เริ่มต้นแสดงถึงสัญลักษณ์ที่ไม่ใช่เทอร์มินัลเริ่มต้นสำหรับการสร้างสตริงที่ถูกต้อง
คำถามและคำตอบล่าสุดอื่น ๆ เกี่ยวกับ ภาษาที่ละเอียดอ่อนตามบริบท:
- การที่ภาษาหนึ่งมีพลังมากกว่าอีกภาษาหนึ่งหมายความว่าอย่างไร?
- รูปแบบปกติของไวยากรณ์ของ Chomsky สามารถตัดสินใจได้เสมอหรือไม่?
- มีวิธีการรับรู้ Type-0 ในปัจจุบันหรือไม่? เราคาดหวังว่าคอมพิวเตอร์ควอนตัมจะทำให้เป็นไปได้หรือไม่?
- ในตัวอย่างของภาษา D เหตุใดคุณสมบัติการปั๊มจึงไม่เก็บสตริง S = 0^P 1^P 0^P 1^P
- อะไรคือสองกรณีที่ต้องพิจารณาเมื่อแบ่งสตริงเพื่อใช้บทแทรกปั๊ม?
- ในตัวอย่างของภาษา B เหตุใดคุณสมบัติการปั๊มจึงไม่เก็บสตริง a^Pb^Pc^P
- เงื่อนไขที่ต้องปฏิบัติตามเพื่อให้คุณสมบัติการสูบน้ำถือครองคืออะไร?
- จะใช้ Pumping Lemma สำหรับ CFL เพื่อพิสูจน์ว่าภาษานั้นไม่มีบริบทได้อย่างไร
- เงื่อนไขใดบ้างที่ต้องปฏิบัติตามเพื่อให้ภาษาได้รับการพิจารณาว่าไม่มีบริบทตามบทแทรกสำหรับภาษาที่ไม่มีบริบท
- อธิบายแนวคิดของการเรียกซ้ำในบริบทของไวยากรณ์แบบไร้บริบท และวิธีสร้างสตริงแบบยาว
ดูคำถามและคำตอบเพิ่มเติมในภาษาที่มีความสำคัญต่อบริบท