คำถามติดแท็ก regular-languages

คำถามเกี่ยวกับคุณสมบัติของคลาสของภาษาปกติและแต่ละภาษา

1
มีบริบทที่ไม่ใช่ภาษาที่ไม่ใช่ภาษาปกติ
ฉันรู้ว่ามีภาษาที่ไม่ปกติเพื่อให้เป็นปกติ แต่ตัวอย่างทั้งหมดที่ฉันสามารถค้นหานั้นมีความอ่อนไหวต่อบริบท แต่ไม่ใช่บริบทที่ฟรีL* * * *L∗L^* ในกรณีที่ไม่มีคุณจะพิสูจน์ได้อย่างไร

4
ทำไมไม่มีการเปลี่ยนแปลงใน Regexes? (แม้ว่าภาษาปกติจะสามารถทำได้)
ปัญหา ไม่มีวิธีง่ายๆในการรับการเปลี่ยนแปลงด้วย regex การเปลี่ยนแปลง:การเดินทางคำ ( "aabc") ในการสั่งซื้ออื่นโดยไม่มีการเปลี่ยนแปลงจำนวนหรือชนิดของตัวอักษรw = x1… xnW=x1...xnw=x_1…x_n Regex:การแสดงออกปกติ สำหรับการตรวจสอบ: "การเปลี่ยนลำดับ Regex โดยไม่มีการทำซ้ำ"คำตอบจะสร้างรหัส JavaScript แทนการใช้ Regex โดยสมมติว่าสิ่งนี้ง่ายกว่ามาก "วิธีหาวิธีเรียงสับเปลี่ยนทั้งหมดของคำที่กำหนดในข้อความที่กำหนด" - คำตอบไม่ได้ใช้ regexes เช่นกัน "Regex จับคู่ทั้งหมด {1, 2, 3, 4} โดยไม่มีการทำซ้ำ" - คำตอบนั้นใช้ regexes แต่ก็ไม่สามารถปรับเปลี่ยนได้หรือไม่ง่าย คำตอบนี้ยังเรียกร้อง: "นิพจน์ทั่วไปไม่สามารถทำในสิ่งที่คุณขอมันไม่สามารถสร้างพีชคณิตจากสตริง." วิธีการแก้ปัญหาที่ฉันค้นหา ควรมีแบบฟอร์ม: » aabc « (หรืออะไรก็ได้ที่คุณสามารถใช้วงเล็บเปิดและปิด) (aabc)! (คล้ายกับ (abc)? แต่มีสัญลักษณ์อื่นในตอนท้าย) [aabc]! (คล้ายกับ [abc] …

3
ภาษาปกติที่ไม่สามารถแสดงออกได้ด้วยการดำเนินการ regex เพียง 2 ครั้ง
ฉันคิดว่าภาษาปกติทั้งหมดสามารถแสดงออกด้วยการแสดงออกปกติ (ถ้าภาษาเป็นปกติมันสามารถแสดงด้วย regex) แต่ฉันได้รับแจ้งว่าคุณต้องการการดำเนินงานปกติทั้งสาม (การต่อเชื่อมสหภาพและดาว) ที่จะถือ ตัวอย่างเช่นผมได้รับการบอกว่าถ้าฉันสามารถเพียงใช้ยูเนี่ยนและการ concatenationการดำเนินงาน regex (2 จาก 3) จะมีภาษาปกติฉันไม่สามารถอธิบายที่มีเพียงสองคน เช่นเดียวกันกับ Kleene Star และ Union ตัวอย่างนี้มีอะไรบ้าง

4
การรวมกันของภาษาปกติที่ไม่ปกติ
ฉันเจอคำถามนั้น: "ยกตัวอย่างภาษาสองภาษาปกติซึ่งสหภาพของพวกเขาไม่ได้แปลภาษาปกติ" นี่เป็นเรื่องที่ค่อนข้างน่าตกใจสำหรับฉันเพราะฉันเชื่อว่าภาษาปกติถูกปิดลงภายใต้สหภาพ ซึ่งหมายความว่าสำหรับฉันถ้าฉันใช้สองภาษาปกติและรวมพวกเขาฉันต้องได้รับภาษาปกติ และฉันคิดว่าฉันเข้าใจหลักฐานของสิ่งนั้น: ในคำพูดของฉันหากภาษาเป็นปกติ หากเรารับสถานะทั้งหมด (ยูเนี่ยน) และเราเพิ่มสถานะใหม่สำหรับจุดเริ่มต้นและเราแก้ไขฟังก์ชั่นการเปลี่ยนภาพสำหรับสถานะใหม่ด้วย epsilon เราก็โอเค เรายังแสดงให้เห็นว่ามีเส้นทางจากทุกรัฐ ฯลฯ คุณบอกฉันได้ไหมว่าฉันผิดตรงไหนหรืออาจเป็นอีกวิธีหนึ่งในการถามคำถาม แหล่งที่มาของคำถามแบบฝึกหัดที่ 4 ในภาษาฝรั่งเศส นอกจากนี้คำถามเดียวกันจะถูกถามกับทางแยก

2
เครื่องทัวริงเทปเดี่ยวที่มีอินพุตป้องกันการเขียนจะรับรู้เฉพาะภาษาปกติ
นี่คือปัญหา: พิสูจน์ว่าเครื่องทัวริงเทปเดี่ยวที่ไม่สามารถเขียนบนส่วนของเทปที่มีสตริงป้อนข้อมูลจะรับรู้เฉพาะภาษาปกติ ความคิดของฉันคือการพิสูจน์ว่า TM นี้โดยเฉพาะเทียบเท่ากับ DFA การใช้ TM นี้เพื่อจำลอง DFA นั้นตรงไปตรงมามาก อย่างไรก็ตามเมื่อฉันต้องการใช้ DFA นี้เพื่อจำลอง TM ฉันพบปัญหา สำหรับการเปลี่ยนแปลง TM , DFA สามารถจำลองได้อย่างแน่นอนโดยการอ่านเทปทางด้านขวาและทำการเปลี่ยนสถานะเดียวกันδ( q, a ) = ( q', a , R )δ(q,a)=(q′,a,R)\delta(q,a)=(q',a,R) สำหรับ , ฉันไม่สามารถหาวิธีใช้ DFA หรือ NFA นี้เพื่อจำลองการย้ายทางซ้ายเนื่องจาก DFA อ่านไปทางซ้ายเท่านั้นและไม่มีสแต็กหรืออะไรที่จะเก็บδ( q, a ) = ( q', a , L )δ(q,a)=(q′,a,L)\delta(q,a)=(q',a,L) …

2
หาก
พูด, L⊆{0}∗L⊆{0}∗L \subseteq \{0\}^* * ถ้าเช่นนั้นเราจะพิสูจน์ได้อย่างไรว่าL∗L∗L^*นั้นปกติ? ถ้าLLLเป็นปกติแน่นอนว่าL∗L∗L^*ก็เหมือนกัน ถ้าLLLเป็นจำนวน จำกัด แสดงว่าเป็นปกติและอีกครั้งคือL∗L∗L^*ปกติ นอกจากนี้ฉันได้สังเกตเห็นว่าสำหรับL={0p∣p is a prime}L={0p∣p is a prime}L = \{0^p \mid p \text{ is a prime}\} , LLLไม่ปกติ, L⊆{0}∗L⊆{0}∗L \subseteq \{0\}^*และL∗L∗L^*เป็นปกติ แต่วิธีการแสดงนี้ได้เซตLLLของ{0}∗{0}∗\{0\}^* ?

3
มีการทดสอบที่มีประสิทธิภาพหรือไม่หาก NFA ยอมรับชุดย่อยของ NFA อื่นหรือไม่
ดังนั้นฉันรู้ว่าการทดสอบว่าภาษาปกติเป็นชุดย่อยของภาษาปกติสามารถถอดรหัสได้เนื่องจากเราสามารถแปลงทั้งสองเป็น DFA ได้คำนวณแล้วทดสอบว่าภาษานี้ว่างเปล่าหรือไม่RRRSSSR∩S¯R∩S¯R \cap \bar{S} อย่างไรก็ตามเนื่องจากสิ่งนี้ต้องการการแปลงเป็น DFA จึงเป็นไปได้ที่ DFAs และดังนั้นขั้นตอนวิธีการทดสอบจะเป็นแบบเอ็กซ์โปเนนเชียลในแง่ของจำนวนรัฐในอินพุต NFA มีวิธีที่รู้จักกันในการทำสิ่งนี้ในเวลาพหุนามหรือไม่? โดยทั่วไปปัญหานี้ได้รับการพิสูจน์แล้วว่า Co-NP เสร็จสมบูรณ์หรือไม่ โปรดทราบว่าปัญหาอยู่ใน Co-NP ตั้งแต่คำรับการยอมรับจากแต่ไม่ได้โดยจะเป็นผู้รับรองว่าพหุนามSRRRSSSR⊈SR⊈SR \not \subseteq S แก้ไข: สิ่งนี้ไม่ถูกต้องเนื่องจากไม่มีการรับประกันว่าคำดังกล่าวจะเป็นพหุนามในจำนวนสถานะ

7
คือปกติถ้า
ถ้าA2A2A^2เป็นปกติมันเป็นไปตามที่AAAเป็นปกติหรือไม่? ความพยายามของฉันในการพิสูจน์: ใช่เพราะความขัดแย้งสมมติว่าAAAไม่ปกติ จากนั้น2 = ⋅A2= A ⋅ AA2=A⋅AA^2 = A \cdot A เนื่องจากการต่อข้อมูลสองภาษาที่ไม่ใช่ภาษาปกติไม่ใช่ภาษาปกติA2A2A^2จึงไม่สามารถเป็นภาษาปกติได้ สิ่งนี้ขัดแย้งกับสมมติฐานของเรา ดังนั้นจึงAAAเป็นปกติ ดังนั้นถ้าA2A2A^2ปกติแล้วAAAเป็นปกติ หลักฐานถูกต้องหรือไม่ เราจะพูดเรื่องนี้กับA3A3A^3 , A4A4A^4 , etc ... ได้ไหม? และยังถ้า*เป็นปกติแล้วไม่จำเป็นต้องเป็นปกติ?A* * * *A∗A^*AAA ตัวอย่าง: A = { 12ผม∣ ฉัน≥ 0 }A={12i∣i≥0}A=\lbrace 1^{2^i} \mid i \geq 0\rbraceไม่ปกติ แต่A* * * *A∗A^*เป็นปกติ

2
ทางแยกและสหภาพของภาษาปกติและไม่ปกติ
ให้เป็นปกติปกติไม่ปกติ แสดงว่าไม่ใช่แบบปกติหรือให้ตัวอย่างL 1 ∩ L 2 L 2 L 1 ∪ L 2L1L1L_1L1∩ ล2L1∩L2L_1 \cap L_2L2L2L_2L1∪ ล2L1∪L2L_1 \cup L_2 ฉันพยายามนี้: ดูL_1) อันนี้เป็นเรื่องปกติ ฉันสามารถสร้างแน่นอนหุ่นยนต์สำหรับการนี้:เป็นปกติเป็นปกติดังนั้นลบทุกเส้นทาง (จำนวน จำกัด ) สำหรับจากจำนวน จำกัด ของเส้นทางสำหรับL_1ดังนั้นจึงมีจำนวน จำกัด ของเส้นทางที่เหลืออยู่สำหรับสิ่งทั้งหมดนี้ สิ่งนี้แยกออกจากแต่ฉันจะพิสูจน์ได้อย่างไรว่าการรวมกันของ (ธรรมดา) และ (ไม่ใช่ปกติ) ไม่ปกติ?L 1 L 2 ∩ L 1 L 1 ∩ L 2 L 1 L …

2
ภาษาทั้งหมดที่ไม่มีบริบทและภาษาปกติสามารถตัดสินใจได้อย่างมีประสิทธิภาพหรือไม่
ฉันเจอตัวเลขนี้ซึ่งแสดงว่าภาษาที่ไม่มีบริบทและภาษาปกติเป็นเซตย่อยของปัญหาที่มีประสิทธิภาพ (สมมุติว่า ) ฉันเข้าใจอย่างถ่องแท้ว่าปัญหาที่มีประสิทธิภาพเป็นส่วนย่อยของปัญหาที่ตัดสินใจได้ทั้งหมดเพราะเราสามารถแก้ปัญหาได้ แต่อาจใช้เวลานานมากPP\mathrm{P} ทำไมทุกบริบทฟรีและปกติภาษา decidable ได้อย่างมีประสิทธิภาพ? มันหมายถึงการแก้ปัญหาพวกเขาจะไม่ใช้เวลานาน (ฉันหมายถึงเรารู้โดยไม่มีบริบท)

4
ติดดาวภาษาฟรีเทียบกับภาษาปกติ
ผมสงสัยว่าตั้งแต่*ตัวเองเป็นภาษาดาวฟรีจะมีภาษาที่ปกติที่ไม่ได้เป็นภาษาดาวฟรีหรือไม่ คุณยกตัวอย่างได้ไหมa∗a∗a^* (จากwikipdia ) Lawson กำหนดภาษาที่ไม่มีดาวเป็น: ภาษาปกติได้รับการกล่าวถึงว่าไม่มีดาวหากสามารถอธิบายได้ด้วยการแสดงออกปกติที่สร้างขึ้นจากตัวอักษรของตัวอักษรสัญลักษณ์ชุดที่ว่างเปล่าผู้ประกอบการบูลีนทั้งหมดรวมถึงการประกอบและการต่อเรียงกัน นี่คือหลักฐานการ*เป็นดาวฟรี:a∗a∗a^* ∅∅\emptysetเป็นดาวฟรี⟹⟹\Longrightarrow Σ∗=∅¯Σ∗=∅¯\Sigma^*=\bar{\emptyset}เป็นดาวฟรี⟹⟹\Longrightarrow หาก ⊆ Σแล้ว Σ * Σ *เป็นดาวฟรี ⟹ หาก ⊆ Σแล้ว * = ¯ Σ * ( Σ ∖ ) Σ *คือ ดาวฟรีA⊆ΣA⊆ΣA\subseteq\SigmaΣ∗AΣ∗Σ∗AΣ∗\Sigma^*A\Sigma^*⟹⟹\LongrightarrowA⊆ΣA⊆ΣA\subseteq\SigmaA∗=Σ∗(Σ∖A)Σ∗¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯A* * * *=Σ* * * *(Σ∖A)Σ* * * *¯A^*=\overline{\Sigma^*(\Sigma \setminus A)\Sigma^*} ในบรรทัดสุดท้ายที่เรามี* = ¯ Σ * ( …

1
พิสูจน์ว่าส่วนเสริมของ ไม่ได้เป็นปกติโดยใช้คุณสมบัติการปิด
ฉันต้องการพิสูจน์ว่าส่วนเติมเต็มของไม่ได้เป็นปกติโดยใช้คุณสมบัติการปิด{0n1n∣n≥0}{0n1n∣n≥0}\{0^n1^n \mid n \geq{} 0\} ฉันเข้าใจว่าการปั๊มบทแทรกนั้นสามารถใช้พิสูจน์ได้ว่าไม่ใช่ภาษาปกติ ฉันยังเข้าใจว่าภาษาปกติถูกปิดภายใต้การใช้งานที่สมบูรณ์ อย่างไรก็ตามนั่นก็หมายความว่าส่วนเสริมของภาษาที่ไม่ปกตินั้นก็ไม่ใช่แบบปกติเช่นกัน?{0n1n∣n≥0}{0n1n∣n≥0}\{0^n1^n \mid n \geq{} 0\}

3
เหตุใดนิพจน์ทั่วไปที่นิยามไว้ด้วยการรวมกันเป็นสหภาพการต่อเรียงและการติดดาว?
expresssion ปกติจะถูกกำหนดเป็นซ้ำ aaaสำหรับบางคนคือการแสดงออกปกติa∈Σa∈Σa \in \Sigma εε\varepsilonเป็นนิพจน์ทั่วไป ∅∅\emptysetเป็นนิพจน์ทั่วไป (R1∪R2)(R1∪R2)(R_1 \cup R_2)โดยที่และเป็นนิพจน์ทั่วไปเป็นนิพจน์ปกติR1R1R_1R2R2R_2 (R1∘R2)(R1∘R2)(R_1 \circ R_2)โดยที่และเป็นนิพจน์ทั่วไปคือนิพจน์ทั่วไปR1R1R_1R2R2R_2 (R1)∗(R1)∗(R_1)^*โดยที่เป็นนิพจน์ทั่วไปคือนิพจน์ทั่วไปR1R1R_1 คำจำกัดความนี้นำมาจากหน้า 64 ของ Sipser, Michael ทฤษฎีการคำนวณเบื้องต้นรุ่นที่ 3 เรียนรู้ Cengage, 2012 ตอนนี้ฉันมีคำถามต่อไปนี้ ทำไมคุณไม่นิยามมีintersection, complementหรือreverseการดำเนินงาน? หากเราเปลี่ยนรายการที่ 4 เป็นเราจะได้คำจำกัดความที่เทียบเท่ากันเช่นสำหรับภาษาปกติแต่ละภาษาจะมีนิพจน์ทั่วไปที่ปรับเปลี่ยนและในทางกลับกันR1∩R2R1∩R2R_1 \cap R_2 ฉันรู้ว่าคำจำกัดความนี้สมบูรณ์และกำหนดชัดเจน แต่ทำไมถึงต้องการคำนิยามอื่น ๆ ที่เทียบเท่านิยามที่ชัดเจนและสมบูรณ์

1
อัลกอริทึมในการทดสอบว่าภาษาปกติหรือไม่
มีอัลกอริทึม / ขั้นตอนการทดสอบอย่างเป็นระบบว่าภาษานั้นปกติหรือไม่? กล่าวอีกนัยหนึ่งระบุภาษาที่ระบุในรูปแบบพีชคณิต (คิดว่าบางอย่างเช่น ) ทดสอบว่าภาษาเป็นปกติหรือไม่ ลองนึกภาพเรากำลังเขียนบริการเว็บเพื่อช่วยนักเรียนทำการบ้านทั้งหมด ผู้ใช้ระบุภาษาและบริการบนเว็บตอบกลับด้วย "ปกติ", "ไม่ปกติ" หรือ "ฉันไม่รู้" (เราต้องการให้บริการเว็บตอบ "ฉันไม่รู้" ไม่บ่อยเท่าที่จะเป็นไปได้) มีวิธีใดที่ดีในการทำสิ่งนี้โดยอัตโนมัติหรือไม่? สิ่งนี้สามารถแก้ไขได้หรือไม่? เป็นเรื่องที่ตัดสินใจได้หรือไม่ (คือสามารถรับประกันได้ว่าเราไม่จำเป็นต้องตอบว่า "ไม่รู้" หรือไม่? มีอัลกอริทึมที่มีประสิทธิภาพพอสมควรสำหรับการแก้ปัญหานี้หรือไม่และสามารถให้คำตอบอื่นที่ไม่ใช่ "ไม่รู้"L = { anขn: n ∈ N }L={anขn:n∈ยังไม่มีข้อความ}L=\{a^n b^n : n \in \mathbb{N}\} วิธีคลาสสิกสำหรับการพิสูจน์ว่าภาษาไม่ปกติคือการแทรกบทแทรก อย่างไรก็ตามดูเหมือนว่าต้องมีความเข้าใจคู่มือในบางจุด (เช่นเพื่อเลือกคำที่จะปั๊ม) ดังนั้นฉันไม่ชัดเจนว่าจะกลายเป็นสิ่งที่เป็นอัลกอริทึม วิธีคลาสสิกสำหรับการพิสูจน์ว่าภาษาเป็นเรื่องปกติที่จะใช้ทฤษฎีบท Myhill – Nerode เพื่อให้ได้มาซึ่งสถานะออโตเมติกอัน จำกัด นี่เป็นวิธีที่มีแนวโน้ม แต่จะต้องใช้ความสามารถในการดำเนินการขั้นพื้นฐานกับภาษาในรูปแบบพีชคณิต ไม่ชัดเจนสำหรับฉันว่ามีวิธีที่เป็นระบบในการดำเนินการเชิงสัญลักษณ์ที่จำเป็นสำหรับภาษาในรูปแบบพีชคณิต เพื่อให้คำถามนี้ถูกต้องเราจำเป็นต้องตัดสินใจว่าผู้ใช้จะระบุภาษาอย่างไร …


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