ให้ภาษาให้นิยามชุดความยาวของเป็นชุดของความยาวของคำใน :
ชุดจำนวนเต็มใดที่สามารถตั้งค่าความยาวของภาษาปกติได้
ให้ภาษาให้นิยามชุดความยาวของเป็นชุดของความยาวของคำใน :
ชุดจำนวนเต็มใดที่สามารถตั้งค่าความยาวของภาษาปกติได้
คำตอบ:
อันดับแรกการสังเกตซึ่งไม่สำคัญ แต่สะดวก: ชุดของชุดจำนวนเต็มที่เป็นสำหรับภาษาปกติบางบนตัวอักษรที่ไม่ว่างไม่ได้ขึ้นอยู่กับการเลือกตัวอักษร หากต้องการดูสิ่งนั้นให้พิจารณาหุ่นยนต์ จำกัด ที่รับรู้ ; ความยาวของคำที่อยู่ในคือความยาวของเส้นทางบนหุ่นยนต์ที่มองว่าเป็นกราฟที่ไม่มีป้ายกำกับจากสถานะเริ่มต้นไปยังสถานะที่ยอมรับ โดยเฉพาะอย่างยิ่งคุณสามารถสับทุกลูกศรเพื่อและได้รับเป็นภาษาปกติด้วยชุดยาวเดียวกันมากกว่าตัวอักษร{ } ในทางกลับกันถ้าเป็นภาษาปกติของตัวอักษรแบบองค์ประกอบเดียวสามารถฉีดเข้าไปในตัวอักษรขนาดใหญ่ได้เล็กน้อยและผลลัพธ์ยังคงเป็นภาษาปกติ
ดังนั้นเรากำลังมองหาความยาวที่เป็นไปได้ที่ตั้งไว้สำหรับคำที่มากกว่าตัวอักษรซิงเกิล บนตัวอักษรเดี่ยวภาษาที่เป็นชุดความยาวที่เขียนออกมาในเอก: } ภาษาดังกล่าวเรียกว่าภาษาเอก
ให้เป็นภาษาปกติและพิจารณากำหนดแน่นอนหุ่นยนต์ (DFA) ที่ตระหนักถึงLชุดความยาวของคำของคือชุดของความยาวของเส้นทางใน DFA ที่เห็นเป็นกราฟกำกับที่เริ่มต้นที่สถานะเริ่มต้นและสิ้นสุดในหนึ่งในรัฐที่ยอมรับ DFA บนตัวอักษรแบบองค์ประกอบเดียวนั้นค่อนข้างเชื่อง (NFA จะเป็นตัวสร้าง): มันเป็นรายการที่แน่นอนหรือรายการแบบวงกลม หากรายการมีจำนวน จำกัด ให้ระบุสถานะตั้งแต่ถึงตามลำดับรายการ ถ้ามันเป็นวงกลมให้ระบุสถานะจากถึงตามหลังหัวของรายการและถึงตามลูป
ให้เป็นชุดของดัชนียอมรับรัฐขึ้นไปและเป็นชุดของดัชนีของรัฐยอมรับจากการ R แล้วก็
ตรงกันข้ามให้และมีสอง integers และและเป็นสองชุด จำกัด ของจำนวนเต็มเช่นว่าและ R จากนั้นชุดเป็นภาษาปกติ: เป็นภาษาที่ DFA อธิบายไว้ข้างต้น นิพจน์ทั่วไปที่อธิบายภาษานี้เป็น F | G ( R ) *
เพื่อสรุปเป็นภาษาอังกฤษชุดความยาวของภาษาปกติคือชุดของจำนวนเต็มที่มีค่าเป็นระยะ¹สูงกว่าค่าที่แน่นอน
¹ ที่จะแขวนบนกับความคิดที่ดีขึ้น , ระยะหมายถึงลักษณะการทำงานของชุด (ซึ่งเป็นฟังก์ชั่นซึ่งเรายกให้เป็นฟังก์ชั่น ) เป็นระยะ ค่าเหนือค่าที่แน่นอนเป็นระยะหมายความว่าฟังก์ชัน จำกัด ให้ สามารถยืดเยื้อเป็นฟังก์ชันธาตุได้
เซตย่อย จำกัด ใด ๆสามารถเป็นชุดภาษาLปกติได้เนื่องจากคุณสามารถใช้ตัวอักษร unary { 0 }และกำหนดLเป็น{ 0 ℓ 1 , … , 0 ℓ n } (รวมถึงภาษาว่างและ{ ε } )
ตอนนี้สำหรับเซตอนันต์ ฉันจะให้การวิเคราะห์สั้น ๆ แต่คำตอบสุดท้ายอาจไม่ชัดเจนเพียงพอ ฉันจะไม่ทำอย่างละเอียดจนกว่าคุณจะขอให้ฉันเพราะฉันคิดว่ามันใช้งานง่ายและเพราะฉันไม่มีเวลามากในขณะนี้
ให้เป็นนิพจน์ทั่วไปที่สร้างภาษาL 1และL 2ตามลำดับ มันเป็นเรื่องง่ายที่จะเห็น
ดังนั้นชุดที่เป็นไปได้ของจำนวนเต็มที่สามารถเป็นชุดความยาวของภาษาปกติคือเซตย่อยที่มีขอบเขต จำกัด ของหรือที่สามารถสร้างขึ้นได้โดยการเซตย่อยเซตS 1 , S 2ของNและใช้สูตรก่อนหน้านี้แน่นอน จำนวนครั้ง.
ที่นี่เราใช้ภาษาปกติที่สร้างโดยนิยามโดยใช้กฎสำหรับการสร้างนิพจน์ทั่วไปในจำนวนครั้งที่ จำกัด โปรดทราบว่าเราสามารถเริ่มต้นด้วยเซตย่อย จำกัด ใด ๆ ของแม้ว่าในนิพจน์ทั่วไปเราเริ่มต้นด้วยคำที่มีความยาว 0 และ 1 เป็นกรณีพื้นฐานเท่านั้น นี่คือเหตุผลที่ง่าย ๆ โดยข้อเท็จจริงที่ว่าทุกคำ (แน่นอน) คือ (จำกัด ) เรียงต่อกันของสัญลักษณ์ของตัวอักษร
ตามการปั๊มของบทแทรกสำหรับภาษาปกติมีอยู่เช่นนั้นที่สตริงxของความยาวอย่างน้อยเท่ากับnสามารถเขียนในรูปแบบต่อไปนี้: x = u v wโดยที่สามเงื่อนไขต่อไปนี้ถือ: | คุณv | < n | v | > 0 u v k w ∈ L
สิ่งนี้ทำให้เราได้รับการทดสอบหนึ่งชุด: ชุดไม่สามารถเป็นชุดความยาวของภาษาปกติเว้นแต่องค์ประกอบทั้งหมดสามารถแสดงเป็นชุดจำนวนเต็มโดยพลการไม่มากกว่าค่าคงที่รวมทั้งค่าหลายค่าที่ไม่ได้นิยามm (ความยาว ของv ) บวกค่า จำกัด โดยพลการบางอย่าง
กล่าวอีกนัยหนึ่งดูเหมือนว่าชุดความยาวภาษาที่เป็นไปได้สำหรับภาษาปกติคือการปิดด้วยความเคารพต่อการรวมกลุ่ม (ตามที่กล่าวไว้ภายใต้ EDIT และ EDIT2 ขอบคุณผู้แสดงความคิดเห็น) ของชุดที่อธิบายดังต่อไปนี้: สำหรับการแก้ไขa , b ∈ Nและชุด จำกัด ทั้งหมดS , โดยการแทรกบทแทรกสำหรับภาษาปกติ (ขอบคุณ Gilles ที่ชี้ให้เห็นข้อผิดพลาดโง่ ๆ ในฉบับดั้งเดิมของฉัน, โดยที่ฉันกำหนดชุดN )
แก้ไข: การอภิปรายเพิ่มเติมเล็กน้อย แน่นอนว่าจำนวนเต็ม จำกัด ทั้งหมดเป็นชุดความยาว ยิ่งไปกว่านั้นการรวมกันของชุดความยาวสองชุดจะต้องเป็นชุดความยาวเนื่องจากต้องเป็นชุดประกอบของชุดความยาวใด ๆ สาเหตุของเรื่องนี้คือภาษาปกติจะปิดภายใต้การดำเนินการเหล่านี้ ดังนั้นคำตอบที่ฉันให้ไว้ข้างต้นอาจไม่สมบูรณ์ ในความเป็นจริงการรวมกันของชุดนี้ก็เป็นความยาวของภาษาปกติบางอย่าง (โปรดทราบว่าฉันได้ละทิ้งต้องแยกแยกประกอบแตกต่าง ฯลฯ เนื่องจากสิ่งเหล่านี้ถูกปกคลุมด้วยความจริงที่ว่าภาษาปกติจะปิดภายใต้คุณสมบัติเหล่านี้เช่น กล่าวถึงใน EDIT3 ฉันคิดว่าการรวมกันเป็นสิ่งจำเป็นจริง ๆ แม้ว่าคนอื่น ๆ จะถูกต้องซึ่งอาจไม่เป็นเช่นนั้น)
EDIT3: ในแง่ของความเห็นของ Janoma เราลืมปิดคุณสมบัติของชุดความยาวภาษาที่ฉันพูดถึงใน EDIT แรก เนื่องจากภาษาปกติมีคุณสมบัติการปิดเหล่านี้และเนื่องจากภาษาปกติทุกภาษามี DFA จึงเป็นไปตามที่การเติมศัพท์สำหรับภาษาปกติใช้กับสหภาพทั้งหมดทางแยกการเติมเต็มและความแตกต่างของภาษาปกติและเราจะปล่อยไว้ที่ ; ไม่จำเป็นต้องพิจารณาสิ่งเหล่านี้ยกเว้นสหภาพซึ่งฉันยังคิดว่าอาจจำเป็นต้องทำให้ต้นฉบับของฉัน (แก้ไขแล้วขอบคุณการป้อนข้อมูลจาก Gilles) ที่ถูกต้อง ดังนั้นคำตอบสุดท้ายของฉันคือ: สิ่งที่ฉันพูดในรุ่นดั้งเดิมบวกกับการปิดชุดความยาวภาษาด้วยความเคารพต่อการรวมกลุ่ม