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

คำถามที่เกี่ยวข้องกับภาษาทางการไวยากรณ์และทฤษฎีออโตมาตะ

1
ความซับซ้อนในการคำนวณเทียบกับลำดับชั้นของชัมสกี
ฉันสงสัยเกี่ยวกับความสัมพันธ์ระหว่างความซับซ้อนในการคำนวณและลำดับชั้นของ Chomsky โดยทั่วไป โดยเฉพาะอย่างยิ่งถ้าฉันรู้ว่าปัญหาบางอย่างเป็นปัญหาแบบ NP เสร็จสมบูรณ์แล้วมันจะตามด้วยภาษาของปัญหานั้นหรือไม่ ตัวอย่างเช่นปัญหากลุ่มคือ NP-complete มันเป็นไปตามที่ว่าภาษาที่สอดคล้องกับแบบจำลองที่มีกลุ่มเป็นความซับซ้อนน้อยที่สุดในลำดับชั้น Chomsky (สำหรับวิธีการเข้ารหัสแบบจำลอง / ทั้งหมดเป็นสตริงหรือไม่?)

2
ภาษาของคำที่มีค่าเท่ากับ 001 และ 100 ปกติหรือไม่
ฉันสงสัยว่าภาษาที่มีจำนวนอินสแตนซ์ของสอง substrings เท่ากันจะเป็นปกติหรือไม่ ฉันรู้ว่าภาษาที่มีจำนวนเท่ากับ 1 และ 0 นั้นไม่ปกติ แต่เป็นภาษาเช่นโดยที่L = { w ∣จำนวนอินสแตนซ์ของสตริงย่อย "001" เท่ากับจำนวนอินสแตนซ์ของสตริงย่อย "100" }เป็นประจำหรือไม่ โปรดทราบว่าจะยอมรับสตริง "00100"LLLLLL{ w ∣{w∣\{ w \mid}}\} สัญชาตญาณของฉันบอกฉันว่าไม่ใช่ แต่ฉันไม่สามารถพิสูจน์ได้ ฉันไม่สามารถแปลงร่างเป็นรูปแบบที่สามารถสูบฉีดผ่านบทแทรกของปั๊มน้ำได้ดังนั้นฉันจะพิสูจน์ได้อย่างไร ในทางกลับกันฉันได้ลองสร้าง DFA หรือ NFA หรือนิพจน์ทั่วไปและล้มเหลวในเสื้อผ้าเหล่านั้นด้วยดังนั้นฉันควรดำเนินการอย่างไร ฉันต้องการที่จะเข้าใจสิ่งนี้โดยทั่วไปไม่เพียง แต่สำหรับภาษาที่เสนอ

3
คุณจะได้อะไรถ้าคุณเพิ่มพารามิเตอร์ลงในไวยากรณ์ฟรีตามบริบท
ฉันคิดถึงไวยากรณ์สำหรับภาษาที่มีความอ่อนไหวและดูเหมือนว่าไวยากรณ์กรัมจะทำเคล็ดลับถ้ารวมกับพารามิเตอร์ ลองพิจารณาตัวอย่างนี้สำหรับไวยากรณ์ Python ที่ง่ายขึ้นในรูปแบบ ANTLR: // on top-level the statements have empty indent program : statement('')+ ; // let's consider only one compound statement and one simple statement for now statement(indent) : ifStatement(indent) | passStatement(indent) ; passStatement(indent) : indent 'pass' NEWLINE ; // statements under if must have current indent …

2
คำว่า“ การผลิต” นั้นมีความหมายเหมือนกันกับคำว่า“ กฎ” ในบริบทของวิทยาศาสตร์คอมพิวเตอร์อย่างไร
ฉันกำลังศึกษาภาษาทางการและระบบฐานการผลิต (ระบบฐานกฎ) และฉันสับสนเล็กน้อยว่าทำไมคำสองคำนี้ "การผลิต" และ "กฎ" หมายถึงสิ่งเดียวกันในบริบทมากมายในวิทยาการคอมพิวเตอร์ ในภาษาอังกฤษพวกเขาดูเหมือนจะไม่ได้หมายถึงสิ่งเดียวกัน ฉันไม่ใช่เจ้าของภาษา แต่ฉันรู้ว่ากฎหมายถึงสิ่งที่เราไม่ควรทำเมื่อพูดถึงผู้คนหรือสิ่งที่ซ้ำหลายครั้งจะให้ผลลัพธ์เดียวกันและเราบอกว่ามันทำงานได้ตามกฎบางอย่าง ( วิธีการทำงานที่กำหนดโดยโปรโตคอล / โพรซีเดอร์ที่เหมือนกันทุกครั้ง) การผลิตหมายถึงบางสิ่งที่แตกต่างออกไปอย่างสิ้นเชิง ... ขั้นตอนของสินค้าหรือซอฟท์แวร์ทางกายภาพที่กำลังทำ / ผลิตอยู่ การกระทำของการทำบางสิ่งบางอย่างทั้งทางกายภาพหรืองานศิลปะการเขียนการวาดภาพบางสิ่งบางอย่างที่ทำกับความสามารถทางร่างกายหรือจิตใจของใครบางคน เราบอกว่าสิ่งที่เฉพาะเจาะจงมีการผลิต อย่างไรก็ตามในวิทยาการคอมพิวเตอร์คำเหล่านี้ที่แสดงสิ่งที่แตกต่างอย่างสิ้นเชิงในภาษาอังกฤษหมายถึงสิ่งเดียวกันใน CS ข้อกำหนดนี้มีความคล้ายคลึงกันใน CS อย่างไร มีพจนานุกรมนิรุกติศาสตร์สำหรับวิทยาการคอมพิวเตอร์อยู่บ้างไหม พจนานุกรมที่บอกเราว่าคำศัพท์ทางวิทยาศาสตร์คอมพิวเตอร์เป็นอย่างไร BTW: ข้อเท็จจริงที่น่าสนใจ: ทั้งการผลิตและกฎไม่มีแท็กในไซต์ Stack Exchange นี้

2
ภาษายูนารีเป็นปกติถ้ามีเลขชี้กำลังเป็นฟังก์ชันเชิงเส้นหรือไม่?
ในขณะที่ทำงานที่ได้รับมอบหมายในปัจจุบันสำหรับภาษาทางการและหลักสูตรออโตมาตะฉันก็ติดอยู่กับแบบฝึกหัดที่เกี่ยวข้องกับภาษาเอก (ฉันหวังว่านั่นเป็นคำที่ถูกต้อง) เช่นภาษาที่สร้างจากตัวอักษรตัวเดียว ฉันไม่ต้องการถามเกี่ยวกับแบบฝึกหัดที่เฉพาะเจาะจง แต่ แต่เกี่ยวกับการคาดเดาทั่วไปที่ฉันได้ทำมา: ให้และL = { ฉ( n ) ∈ Σ * : n ∈ N 0 } การคาดเดาของฉันคือ: L เป็นปกติ⇔ ∃ x , y ที่∈ N 0 : F ( n ) = x ⋅ n + YΣ={a}Σ={a}\Sigma=\{a\}L={af(n)∈Σ∗:n∈N0}L={af(n)∈Σ∗:n∈N0}L=\{a^{f(n)}\in\Sigma^*:n\in\mathbb N_0\} L is regular⇔∃x,y∈N0:f(n)=x⋅n+yL is regular⇔∃x,y∈N0:f(n)=x⋅n+yL\text{ is regular}\Leftrightarrow …

3
ปัญหาที่ undecidable และการปฏิเสธนั้นไม่สามารถตัดสินใจได้
ปัญหาที่ไม่สามารถระบุได้ "ที่มีชื่อเสียง" จำนวนมากนั้นอย่างไรก็ตาม semidecidable เป็นอย่างน้อย ตัวอย่างข้างต้นทั้งหมดอาจเป็นปัญหาการหยุดชะงักและส่วนประกอบที่สมบูรณ์ อย่างไรก็ตามทุกคนสามารถให้ฉันตัวอย่างที่ทั้งปัญหาและส่วนเติมเต็มของมันจะไม่สามารถตัดสินใจได้และไม่ semidecidable? ฉันคิดเกี่ยวกับภาษา diagonalization Ld แต่ดูเหมือนว่าฉันจะไม่สามารถอธิบายได้ ในกรณีนี้หมายความว่า Turing Machine M สามารถ "สูญเสีย" สตริงบางตัวที่ควรจดจำแทนเนื่องจากเป็นส่วนหนึ่งของภาษาที่เราพยายามจะเยื้อง

1
ฉันจะค้นหาการเป็นตัวแทนที่สั้นที่สุดสำหรับเซตย่อยของ powerset ได้อย่างไร
ฉันกำลังมองหาอัลกอริทึมที่มีประสิทธิภาพสำหรับปัญหาต่อไปนี้หรือพิสูจน์ความแข็งของ NP Letเป็นชุดและชุดย่อยของ\ค้นหาลำดับมีความยาวน้อยที่สุดสำหรับแต่ละจะมีเช่นนั้นLΣΣ\SigmaA⊆P(Σ)A⊆P(Σ)A\subseteq\mathcal{P}(\Sigma)ΣΣ\Sigmaw∈Σ∗w∈Σ∗w\in \Sigma^*L∈AL∈AL\in Ak∈Nk∈Nk\in\mathbb{N}{wk+i∣0≤i&lt;|L|}=L{wk+i∣0≤i&lt;|L|}=L\{ w_{k+i} \mid 0\leq i < |L| \} = L ตัวอย่างเช่นสำหรับคำว่าเป็นวิธีแก้ปัญหาเนื่องจากสำหรับมีสำหรับมี 1w = b a c { a , b } k = 0 { a , c } k = 1A={{a,b},{a,c}}A={{a,b},{a,c}}A = \{\{a,b\},\{a,c\}\}w=bacw=bacw = bac{a,b}{a,b}\{a,b\}k=0k=0k=0{a,c}{a,c}\{a,c\}k=1k=1k=1 สำหรับแรงบันดาลใจของฉันฉันพยายามที่จะเป็นตัวแทนของชุดขอบของหุ่นยนต์ที่ จำกัด ซึ่งแต่ละส่วนจะถูกระบุด้วยชุดตัวอักษรจากตัวอักษรอินพุต ฉันต้องการเก็บสตริงเดี่ยวแล้วเก็บตัวชี้ไปที่สตริงนั้นในแต่ละขอบ เป้าหมายของฉันคือลดความยาวของสตริงนั้น

4
ทฤษฎีบทสะพานสำหรับทฤษฎีกลุ่มและภาษาทางการ
มีวิธีธรรมชาติหรือเด่นในการเชื่อมโยงหรือเชื่อมโยงกลุ่มคณิตศาสตร์และภาษาทางการของ CS หรือแนวคิดหลักของ CS อื่น ๆ เช่นเครื่องจักรทัวริงหรือไม่? ฉันกำลังมองหาการอ้างอิง / แอปพลิเคชัน อย่างไรก็ตามโปรดทราบว่าฉันทราบถึงการเชื่อมโยงระหว่างกลุ่มย่อยและภาษา CS (กล่าวคือผ่านออโต จำกัด ) (วรรณกรรมนี้เกี่ยวกับ semiautomata เคยดูที่ "group-automata" หรือไม่?) ฉันได้เห็นกระดาษหนึ่งฉบับเมื่อหลายปีก่อนที่อาจเข้ามาใกล้ซึ่งแปลงตารางการเปลี่ยนแปลง TM เป็นการดำเนินการแบบไบนารีบางครั้งอาจเป็นกลุ่มในบางกรณีโดยตั้งอยู่บนสมมาตรบางอย่างในตารางสถานะ TM มันไม่ได้สำรวจโดยเฉพาะอย่างยิ่ง แต่ก็ไม่ได้ออกกฎ ยิ่งไปกว่านั้นโดยเฉพาะอย่างยิ่งเกี่ยวกับการวิจัยทางคณิตศาสตร์ที่มีขนาดใหญ่เกี่ยวกับการจำแนกกลุ่มที่ จำกัดหรือมีความหมายหรือการตีความใน TCS หรือไม่? มุมมอง "เลนส์อัลกอริธึม" ของอาคารวิจัยขนาดใหญ่นี้คืออะไร? มันคืออะไร "พูด" เกี่ยวกับโครงสร้างที่ซ่อนอยู่ที่เป็นไปได้ในการคำนวณ? คำถามนี้ได้รับแรงบันดาลใจบางส่วนจากบันทึกอื่น ๆ เช่น: การใช้โครงสร้างพีชคณิตใน TCS RJ Lipton ในทฤษฎีบทของ Gromov

1
ความหมายคืออะไร?
มีภาษายอดนิยมมากมาย แต่นักวิทยาศาสตร์คอมพิวเตอร์บอกเราว่าเพื่อให้เข้าใจถึงพฤติกรรมของโปรแกรมในภาษาเหล่านั้นอย่างแน่นอนและโต้แย้งอย่างไร้เหตุผลกับพฤติกรรมของโปรแกรม (เช่นพิสูจน์ตัวตนของพวกเขา) เราจำเป็นต้องแปลมันเป็นภาษาอื่นที่เข้าใจกันดี พวกเขาเรียกภาษานี้ว่า "ความหมาย" ผู้เขียนเสนอหนึ่งในหลายความหมาย พวกเขาอธิบายความหมายของสิ่งปลูกสร้างและวิธีที่คุณสามารถแปลภาษาของคุณเป็นของพวกเขา เมื่อคุณทำอย่างนั้นทุกคนจะเข้าใจโปรแกรมของคุณแน่นอนพวกเขาจะพูด ดูดี แต่ฉันไม่เข้าใจบางสิ่ง พวกเขาบอกเราหรือไม่ว่าพวกเขาแนะนำภาษาอื่นให้เข้าใจภาษาแรก ทำไมเราเข้าใจดีกว่าต้นฉบับ? ทำไมความหมายนี้ดีกว่านั้น ทำไมไม่เรียนรู้ความหมายของ C ทันทีแทนที่จะประดิษฐ์ภาษาอื่นเพื่ออธิบายความหมายของ C? เช่นเดียวกับไวยากรณ์ ทำไมฉันไม่ถามคำถามเดียวกันเกี่ยวกับไวยากรณ์ ป.ล.ในความคิดเห็นที่ฉันได้ยินว่าความหมายไม่ได้หมายถึงภาษาอื่นหรือการแปลเป็น แต่ความหมายที่เป็นทางการสำหรับ VHDL บอกว่าถ้าคุณเข้าใจบางสิ่งในทางเดียวคุณจะไม่เข้าใจและสามารถระบุ "ความหมายของความหมาย" ถ้าเราจัดหาภาษาที่มีกลไกที่แปลมันเป็นภาษาอื่น (ที่รู้จัก) นั่นคือ "ความหมายคือความสัมพันธ์ระหว่างระบบที่เป็นทางการ" Hennessy ในซีแมนทิกส์ของ Programming Languagesกล่าวว่าซีแมนติกส์อนุญาตให้มีการประมวลผลอย่างเป็นทางการของโปรแกรม "ความหมาย" เมื่อซีแมนทิกส์ถูกจัดให้เป็น BNF หรือ Syntax Diagram ระบบที่เป็นทางการคืออะไรถ้าไม่ใช่ภาษา? PS2ฉันสามารถพูดได้ว่าการสังเคราะห์ HW ของโปรแกรม HDL ที่กำหนดให้เป็นการเชื่อมต่อโครงข่ายประตูเป็นกระบวนการสกัดความหมายหรือไม่? เราแปลคำอธิบาย (ระดับสูง) เป็นภาษา (ระดับต่ำ) ที่เราเข้าใจหลังจากนั้น

2
ปิดกับความฉลาดทางขวาด้วยภาษาคงที่
ฉันรักความช่วยเหลือของคุณด้วย: สำหรับL 2 ที่มีการแก้ไขใด ๆฉันต้องตัดสินใจว่าจะมีการปิดภายใต้ตัวดำเนินการต่อไปนี้หรือไม่:L2L2L_2 AR( L ) = { x ∣ ∃ y∈ ล2: x y∈ L }Ar(L)={x∣∃y∈L2:xy∈L}A_r(L)=\{x \mid \exists y \in L_2 : xy \in L\} }Aล.( L ) = { x ∣ ∃ y∈ L : x y∈ ล2}Al(L)={x∣∃y∈L:xy∈L2}A_l(L)=\{x \mid \exists y \in L : xy \in …

2
วิธีการพิสูจน์ภาษาปกติถูกปิดภายใต้ความฉลาดทางซ้าย
เป็นภาษาปกติมากกว่าตัวอักษร Σ = { , ข } ความฉลาดทางด้านซ้ายของ Lเกี่ยวกับ W ∈ Σ *เป็นภาษา W - 1 L : = { วี| W วี∈ L }LLLΣ = { a , b }Σ={a,b}\Sigma = \{a,b\}LLLW ∈ Σ* * * *w∈Σ∗w \in \Sigma^*W- 1L : = { v ∣ w v ∈ L …

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

1
POSIX BRE สามารถแสดงภาษาปกติทั้งหมดได้หรือไม่
ปรากฏว่า "นิพจน์ธรรมดาพื้นฐาน" ตามที่กำหนดโดยPOSIX.1-2008ไม่สนับสนุนการสลับกันa|b(แม้ว่าการใช้ grep บางตัวจะรู้จักเวอร์ชันหลบหนี\|) เนื่องจากภาษาปกติถูกปิดภายใต้การรวมกันตามคำนิยามนี่หมายความว่า POSIX BRE มีพลังในการแสดงออกน้อยกว่าออโตเมติก จำกัด ? หรือมีวิธีการจำลองการสลับโดยใช้โครงสร้างอื่น ๆ ?

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 ตัวอย่างนี้มีอะไรบ้าง

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