ความสำคัญของภาษาตามบริบท (ประเภท 1) คืออะไร


34

เห็นได้ว่าในรัฐChomsky Hierarchy Type 3 สามารถรับรู้โดยเครื่องของรัฐที่ไม่มีหน่วยความจำภายนอก (เช่นเครื่อง จำกัด อัตโนมัติ), Type 2 โดยเครื่องของรัฐที่มีสแต็กเดียว (เช่นเครื่องกดลง) และ Type 0 โดย เครื่องรัฐที่มีสองกอง (หรือเทียบเท่าเทปเช่นเดียวกับกรณีของทัวริงเครื่อง) ภาษาประเภท 1 พอดีกับภาพนี้ได้อย่างไร และข้อดีอะไรบ้างที่นำมาพิจารณาว่าภาษาไม่เพียง แต่พิมพ์ 0 แต่พิมพ์ 1


2
เนื่องจากคุณถามที่นี่และไม่อยู่ในcstheory.SE (ตามที่แนะนำโดย @Sunil) ฉันขอแนะนำให้คุณเพิ่มคำอธิบายสั้น ๆ / คำจำกัดความของประเภท 1 ซึ่งอาจไม่ใช่คำศัพท์ที่คุ้นเคยสำหรับทุกคน
Janoma

5
@Sunil ไม่มันจะไม่ นี่ไม่ใช่คำถามระดับการวิจัย (และแม้ว่ามันจะเป็นยังคงอยู่ในหัวข้อที่นี่เพราะเราไม่ได้ยกเว้นคำถามระดับการวิจัย - อย่างน้อยนั่นคือสิ่งที่ฉันจำได้ว่าเป็นผลมาจากการอภิปรายในพื้นที่ 51)
sepp2k

3
@ Janoma: ทำไมจึงควรช่วยรวมข้อมูลที่สามารถค้นหาได้ง่าย (จะไม่นับเป็นเสียงรบกวน)
bitmask

4
@Janoma ฉันคิดว่าแนวทางทั่วไปควรจะอธิบายแนวคิดที่ใครบางคนที่สามารถตอบคำถามได้อาจไม่รู้ (ถ้าแนวทางนั้นอธิบายทุกสิ่งที่ผู้ใช้บางคนในไซต์อาจไม่ทราบเราจะอธิบายทุกอย่าง ตลอดเวลาและนั่นไม่ใช่มาตรฐานสำหรับไซต์ SE อื่น ๆ ) และฉันไม่คิดว่าคนที่ไม่รู้จักลำดับชั้นของชัมสกีจะสามารถตอบคำถามได้ แน่นอนว่ามันไม่เจ็บที่จะอธิบายให้มากที่สุดเท่าที่จะเป็นไปได้ (ตราบเท่าที่มันไม่ได้ทำให้คำถามน่าเบื่อนาน) - ฉันแค่คิดว่ามันไม่จำเป็นในกรณีนี้
sepp2k

4
วิทยาศาสตร์คอมพิวเตอร์ทุกวิชาเอกรู้ (หรือควรรู้) ลำดับชั้นของชัมสกี ทุกคนสามารถค้นหาได้ใน 20 วินาที ลิงก์ไปยังวิกิพีเดียอาจจะเพียงพอที่นี่
Raphael

คำตอบ:


19

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

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

ไวยากรณ์ที่ไวต่อบริบทนั้นไม่ค่อยมีประโยชน์ในทางปฏิบัติ บริบทฟรีไวยากรณ์มีความง่ายในการทำงานด้วย แต่เป็นตัวอย่างในวิกิพีเดียโชว์ , บริบทที่มีความสำคัญไวยากรณ์อย่างรวดเร็วกลายเป็นค่อนข้างยุ่ง โปรแกรมใช้พื้นที่พหุนามจะมากได้รับการออกแบบได้อย่างง่ายดายมากขึ้น (และ -completeness ค้ำประกันการดำรงอยู่ของบาง CSG เทียบเท่าที่เป็นเพียง polynomially ขนาดใหญ่กว่าการใช้พื้นที่ของอัลกอริทึมของคุณ)PSPACE

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

ไวยากรณ์ที่ไม่ จำกัด ได้รับแม้กระทั่งแปลก: ไม่มีความคิดของ 'ขยาย' nonterminal และแทนที่ด้วยการผลิตอาจขึ้นอยู่กับบริบท คุณได้รับอนุญาตให้แก้ไขบริบทได้อย่างอิสระเช่นกัน สิ่งนี้ทำให้ไวยากรณ์ไม่ จำกัด แม้แต่ใช้งานง่าย: โปรแกรมมีความเท่าเทียมและใช้งานง่ายกว่ามาก


แต่ภาษาที่ไวตามบริบทนั้นมีประโยชน์! ดูตัวอย่างการสนทนานี้
กราฟิลส์

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

แต่คุณพูดถึงภาษาในคำตอบส่วนใหญ่ของคุณ เกี่ยวกับไวยากรณ์ ymmw มีรูปแบบไวยากรณ์ระหว่าง CFG และ CSG ที่มีแอปพลิเคชันการสร้างแบบจำลองตามธรรมชาติเช่นคู่ / หลาย CFG
กราฟิลส์

1
คุณพูดถูกฉันมีเลศนัยที่แตกต่างระหว่างภาษาและไวยากรณ์ที่ฉันเห็น ฉันอัพเดตคำตอบแล้ว
Alex สิบ Brink

10

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

ยกตัวอย่างเช่นระดับของภาษาปกติมีดีคุณสมบัติปิดและได้รับการ DFA คุณสามารถทดสอบเส้นเวลาว่าคำว่าเป็นของL ( ) ในทางตรงกันข้ามกับเครื่องทัวริงที่คุณต้องการเวลาเชิงเส้นเพียงเพื่ออ่านผลลัพธ์ซึ่งมักจะเกิดขึ้นก่อนที่จะเริ่มการประมวลผลจริงAL(A)

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

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


2
"ในระยะสั้นสำหรับชั้นเรียนขนาดเล็กคุณต้องการพลังการคำนวณที่น้อยลงเพื่อแก้ปัญหาในการตัดสินใจว่าคำนั้นเป็นของภาษาหรือไม่" แต่สิ่งนี้นำไปใช้กับ Type 1 กับ Type 0 ได้อย่างไร นั่นคือคำถาม!
bitmask

n

8

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

สิ่งนี้นำไปสู่คุณสมบัติที่น่าสนใจที่การผลิตแต่ละครั้งสร้างภาษาย่อยของภาษาที่สร้างโดยภาษาที่อยู่ลึกลงไปในสแต็กและสำหรับแต่ละคู่ A และ B ของโปรดักชั่นที่สร้างและบริโภคในอินพุทเฉพาะเรามีสามกรณี:

  • a: อินพุตที่ใช้โดย A นั้นมีอยู่ในอินพุตที่ใช้โดย B หรือ
  • b: อินพุตที่ใช้โดย A จะมีอินพุตที่ใช้โดยสมบูรณ์ B; หรือ
  • c: อินพุตที่ใช้โดย A ถูกแยกออกจากอินพุตที่ใช้โดย B ทั้งหมด

นี่ก็หมายความว่าสิ่งต่อไปนี้จะไม่เกิดขึ้น:

  • d: อินพุตที่ใช้โดย A ทับส่วนที่ป้อนโดย B บางส่วน

ในทางตรงกันข้ามในภาษาที่คำนึงถึงบริบทพฤติกรรมของการผลิตแต่ละครั้งจะขึ้นอยู่กับตำแหน่งที่ใช้ดังนั้นการป้อนข้อมูลที่ใช้ในการผลิตจึงไม่ใช่ภาษาย่อยของภาษาที่ลึกกว่าในสแต็ก (อันที่จริงแล้วการประมวลผลด้วย สแต็คจะไม่ทำงาน) และเรามีความเป็นไปได้ที่อาจเกิดขึ้น

ในโลกแห่งความเป็นจริงกรณีที่ภาษาที่คำนึงถึงบริบทจะทำให้รู้สึกว่าเป็นเรื่องที่แสดงถึง <b> ข้อความตัวหนา </b>, <i> ข้อความตัวเอียง </i> และ <u> ข้อความที่ขีดเส้นใต้ </u> ด้วย แท็ก html เหล่านี้และให้ทับซ้อนกันเช่น "นี่คือข้อความ <u> ที่มี <i> ผสม </u> แท็กที่ทับซ้อนกัน </i>" สังเกตว่าการแยกวิเคราะห์และดูว่าแท็กเริ่มต้นทั้งหมดตรงกับแท็กสิ้นสุดหรือไม่ PDA จะไม่ทำเพราะไม่ใช่บริบท แต่ LBA จะทำอย่างง่ายดาย


7

คุณสมบัติการปิด

ของทุกชั้นเรียนภาษาจากลำดับชั้นของชัมภาษาเท่านั้นปกติและตามบริบทจะปิดภายใต้complementation ดังนั้นนี่เป็นคุณลักษณะเฉพาะของภาษาที่คำนึงถึงบริบท

ในทางตรงกันข้ามกับบริบทภาษาฟรีงานจะปิดยังอยู่ภายใต้สี่แยกและสินค้าสับเปลี่ยน


6

ภาษาใด ๆ ที่เป็นประเภท 1 สามารถรับรู้ได้โดยเครื่องทัวริงที่ใช้พื้นที่เชิงเส้นเท่านั้น


2
ใช่นั่นคือคำจำกัดความ แต่ข้อ จำกัด นี้จะช่วยฉันได้อย่างไร
bitmask

3
มันช่วยฉันได้เพราะมัน จำกัด พลังของอัลกอริทึมในการจดจำ CSGs เป็น E แทนที่จะเป็น EXP ฉันไม่ทราบว่ามันช่วยคุณได้อย่างไร :)
Suresh


4

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

คุณควรทราบว่าภาษาของไวยากรณ์ Type-0 นั้นไม่ได้รับการยอมรับจากเครื่องทัวริงทั้งหมด แต่สามารถระบุได้โดยเครื่องดังกล่าวเท่านั้น: Type-0 หมายถึงการนับซ้ำและเครื่องทัวริงรู้จักเฉพาะภาษาแบบเรียกซ้ำ


4

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

ตัวอย่างคือการวิเคราะห์ชื่อและประเภทและการอนุมานประเภท


3

หลายคนพูดถึงว่าภาษา Type-1 เป็นภาษาที่สามารถรู้จำได้ ปัญหาการหยุดชะงักสามารถนำไปใช้กับออโตมาตะแบบ จำกัด ซึ่งเป็นเส้นตรงซึ่งหมายถึงคุณสมบัติอื่น ๆ ที่ไม่สามารถคำนวณได้สำหรับภาษาที่รู้จักโดย Turning Machines จะสามารถถอดรหัสได้สำหรับภาษา Type-1

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

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