วิทยาศาสตร์คอมพิวเตอร์

ถาม - ตอบสำหรับนักเรียนนักวิจัยและผู้ปฏิบัติงานด้านวิทยาการคอมพิวเตอร์


1
มีแคลคูลัส SKI ที่พิมพ์หรือไม่
ส่วนมากของเรารู้ว่าการติดต่อระหว่างcombinatory ตรรกศาสตร์และแลมบ์ดาแคลคูลัส แต่ฉันไม่เคยเห็น (บางทีฉันไม่ได้ดูลึกพอ) เทียบเท่ากับ "combinators ที่พิมพ์" ซึ่งสอดคล้องกับแคลคูลัสแลมบ์ดาที่พิมพ์ได้ง่าย สิ่งนั้นมีอยู่จริงหรือไม่? เราจะหาข้อมูลเกี่ยวกับมันได้จากที่ไหน?

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

2
กฎของหัวแม่มือที่จะรู้ว่าปัญหาอาจจะเป็นปัญหาที่สมบูรณ์
คำถามนี้ได้รับแรงบันดาลใจจากความคิดเห็นใน StackOverflow นอกเหนือจากการรู้ปัญหาที่สมบูรณ์แบบของหนังสือ Garey Johnson และอื่น ๆ อีกมากมาย; มีกฎของหัวแม่มือที่จะรู้ว่าปัญหาดูเหมือนว่าสมบูรณ์ NP ปัญหาหรือไม่ ฉันไม่ได้มองหาบางสิ่งที่เข้มงวด แต่เป็นสิ่งที่ใช้ได้ผลในกรณีส่วนใหญ่ แน่นอนทุกครั้งที่เราต้องพิสูจน์ว่าปัญหานั้นเกิดจากปัญหา NP-complete หรือตัวแปรหนึ่งของปัญหา NP-complete แต่ก่อนที่จะรีบไปพิสูจน์มันจะเป็นการดีถ้ามีความมั่นใจในผลบวกของการพิสูจน์

4
ความแตกต่างระหว่างประเภทและชนิดคืออะไร
ฉันเรียนรู้การเขียนโปรแกรม langauge Haskell และฉันพยายามที่จะตัดหัวของฉันรอบสิ่งที่แตกต่างระหว่างที่typeและkindเป็น a kind is a type of typeตามที่ผมเข้าใจมัน ยกตัวอย่างเช่นและa ford is a type of cara car is a kind of vehicle นี่เป็นวิธีที่ดีที่จะคิดเกี่ยวกับสิ่งนี้หรือไม่? เพราะวิธีการที่สมองของฉันเป็นสายในปัจจุบันเป็นford is a **type** of carแต่ยังขณะที่ในเวลาเดียวกันcar is a **type** of vehicle นั่นcar is a **kind** of vehicleคือข้อกำหนดtypeและkindสามารถใช้แทนกันได้ ใครช่วยแสงนี้บ้าง

5
ใช้การสอบถามซ้ำเมื่อใด
อินสแตนซ์บางตัว (ค่อนข้าง) ขั้นพื้นฐาน (คิดว่านักเรียนระดับ CS ปีแรกของวิทยาลัย) เมื่อไรที่เราจะใช้การเรียกซ้ำแทนการวนซ้ำ?

10
“ สำหรับค่าเล็ก ๆ ของ n, O (n) สามารถถือว่าเหมือนกับ O (1)”
ฉันเคยได้ยินมาหลายครั้งแล้วว่าสำหรับค่าที่น้อยมากของ n, O (n) สามารถคิดเกี่ยวกับ / ถือว่าราวกับว่ามันเป็น O (1) ตัวอย่าง : แรงจูงใจในการทำเช่นนั้นขึ้นอยู่กับความคิดที่ไม่ถูกต้องที่ O (1) ดีกว่า O (lg n) เสมอดีกว่า O (n) ลำดับของการดำเนินการแบบซีมโทติคนั้นเกี่ยวข้องเฉพาะในกรณีที่ขนาดจริงของปัญหาใหญ่มาก ถ้า n ยังเล็กอยู่ทุกปัญหาคือ O (1)! มีขนาดเล็กพอเพียงคืออะไร 10? 100? 1,000? คุณพูดว่า "เราไม่สามารถปฏิบัติเช่นนี้กับการดำเนินการฟรีอีกต่อไป" มีกฎง่ายๆไหม? ดูเหมือนว่าจะเป็นโดเมนหรือกรณีเฉพาะ แต่มีกฎทั่วไปเกี่ยวกับวิธีคิดเกี่ยวกับเรื่องนี้หรือไม่?

2
รุ่นการปรับให้เหมาะสมของปัญหาการตัดสินใจ
คำถามนี้ถูกย้ายจาก Theoretical Computer Science Exchange Exchange เพราะสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 7 ปีที่ผ่านมา เป็นที่ทราบกันว่าปัญหาการเพิ่มประสิทธิภาพ / การค้นหาแต่ละรายการมีปัญหาในการตัดสินใจเทียบเท่า ตัวอย่างเช่นปัญหาเส้นทางที่สั้นที่สุด การเพิ่มประสิทธิภาพ / รุ่นค้นหา: สมมติว่าไม่มีทิศทางกราฟไม่ได้ชั่งและสองจุดหาเส้นทางที่สั้นที่สุดระหว่างและยูG=(V,E)G=(V,E)G = (V, E)v,u∈Vv,u∈Vv,u\in Vvvvuuu เวอร์ชันการตัดสินใจ: เนื่องจากกราฟถ่วงน้ำหนักที่ไม่ได้บอกทิศทาง , สองจุดยอด , และเลขจำนวนเต็มที่ไม่เป็นลบ , มีเส้นทางในระหว่างและที่มีความยาวสูงสุดหรือไม่?G=(V,E)G=(V,E)G = (V, E)v,u∈Vv,u∈Vv,u\in VkkkGGGuuuvvvkkk โดยทั่วไป "ค้นหา st !" กลายเป็น "มีx \ in X st f (x) …

3
ภาษาของคู่ของคำที่มีความยาวเท่ากันซึ่งระยะการแฮ็มเป็น 2 หรือมากกว่านั้นโดยไม่มีบริบทหรือไม่
บริบทภาษาต่อไปนี้ฟรีหรือไม่ L={uxvy∣u,v,x,y∈{0,1}+,|u|=|v|,u≠v,|x|=|y|,x≠y}L={uxvy∣u,v,x,y∈{0,1}+,|u|=|v|,u≠v,|x|=|y|,x≠y}L = \{ uxvy \mid u,v,x,y \in \{ 0,1 \}^+, |u| = |v|, u \neq v, |x| = |y|, x \neq y\} ตามที่อธิบายไว้โดย sdcvvc คำในภาษานี้ยังสามารถอธิบายได้ว่าเป็นการรวมกันของคำสองคำที่มีความยาวเท่ากันในระยะการเชื่อมต่อที่มีค่าเท่ากับ 2 หรือมากกว่า ฉันคิดว่ามันไม่ใช่บริบท แต่ฉันมีเวลาพิสูจน์ยาก ฉันพยายามตัดภาษานี้ด้วยภาษาปกติ (เช่น เป็นต้น) จากนั้นให้ใช้บทแทรกและบทหรือ \ ลง. 0∗1∗0∗1∗ 0∗1∗0∗1∗ \ 0^*1^*0^*1^*

6
GCD มีประสิทธิภาพมากที่สุดคืออะไร
ฉันรู้ว่าอัลกอริทึมของ Euclid เป็นอัลกอริทึมที่ดีที่สุดในการรับ GCD (ตัวหารร่วมมาก) ของรายการจำนวนเต็มบวก แต่ในทางปฏิบัติคุณสามารถเขียนโค้ดอัลกอริทึมนี้ได้หลายวิธี (ในกรณีของฉันฉันตัดสินใจใช้ Java แต่ C / C ++ อาจเป็นตัวเลือกอื่น) ฉันต้องใช้รหัสที่มีประสิทธิภาพที่สุดเท่าที่จะเป็นไปได้ในโปรแกรมของฉัน ในโหมดเรียกซ้ำคุณสามารถเขียน: static long gcd (long a, long b){ a = Math.abs(a); b = Math.abs(b); return (b==0) ? a : gcd(b, a%b); } และในโหมดวนซ้ำดูเหมือนว่า: static long gcd (long a, long b) { long r, i; …

2
Dominosa NP-Hard หรือไม่
คำถามนี้ย้ายมาจาก Mathematics Stack Exchange เพราะสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 6 ปีที่แล้ว Dominosa เป็นเกมตัวต่อปริศนาที่ค่อนข้างใหม่ มันเล่นบน กริดก่อนที่เกมจะเริ่มขึ้นกระดูกโดมิโน ถูกวางลงบนตาราง (ประกอบเป็นกระเบื้องที่สมบูรณ์แบบ ) ในขั้นตอนต่อไปกระดูกโดมิโนจะถูกซ่อนไว้เหลือเพียงตัวเลขที่เปิดเผย จุดประสงค์ของเกมคือการกู้คืนการจัดเรียงเดิมของกระดูกโดมิโน คุณสามารถเล่นเกมได้ที่นี่: http://www.puzzle-dominosa.com/ :(n+1)×(n+2)(n+1)×(n+2)(n+1)\times(n+2)(0,0),(0,1),…,(n,n)(0,0),(0,1),…,(n,n)\left(0,0\right),\left(0,1\right),\ldots,\left(n,n\right) กฎ: กฎนั้นง่าย คุณต้องหาที่ตั้งของแต้มทั้งหมดบนกริด โดมิโนเป็นคู่ของตัวเลข คุณสามารถมีหนึ่งในแต่ละคู่เท่านั้น ฉันมีอัลกอริทึมพหุนามบางอย่างที่แก้ปัญหาส่วนเล็ก ๆ ของตัวต่อ ฉันสามารถแสดงให้เห็นว่ากริดโดมิโนทั่วไปมีอย่างน้อยวิธีแก้ปัญหา2n2+o(n)2n2+o(n)2^{\frac{n}{2}+o\left(n\right)} Dominosa NP-Hard หรือไม่

6
สามารถป้อนข้อมูลลงในเครื่องทัวริงให้มีความยาวไม่ จำกัด ได้หรือไม่?
พิจารณาเพียงตัวอักษรสายที่จะได้รับเป็น input เพื่อเครื่องจักรทัวริงจากชุดΣ * แต่มันสมเหตุสมผลไหมที่อินพุตจะเป็นสตริงไบนารี่ที่ไม่มีที่สิ้นสุด? ตัวอย่างเช่นหากเครื่องทัวริงยอมรับสตริงทั้งหมดที่เริ่มต้นด้วย 0 สตริงเลขฐานสองของศูนย์อนันต์ก็เป็นของภาษาที่ยอมรับโดยเครื่องทัวริงด้วยหรือไม่Σ = { 0 , 1 }Σ={0,1}\Sigma = \{0,1\}Σ* * * *Σ∗\Sigma^{*}

1
คำจำกัดความสองแบบของต้นไม้ไบนารีแบบสมดุล
ฉันได้เห็นคำจำกัดความสองประการของต้นไม้ไบนารีแบบสมดุลซึ่งดูแตกต่างจากฉัน ต้นไม้ไบนารีมีความสมดุลถ้าสำหรับแต่ละโหนดถือว่าจำนวนโหนดด้านในทรีย่อยด้านซ้ายและจำนวนโหนดด้านในในทรีย่อยด้านขวาแตกต่างกันมากที่สุด 1 ต้นไม้ไบนารีมีความสมดุลถ้าสองใบใด ๆ ความแตกต่างของความลึกอยู่ที่ 1 มากที่สุด ต้นไม้ทุกต้นที่ตรงตาม def หรือไม่ 1 ยังตอบสนอง def 2? แล้วรอบทางอื่นล่ะ?

3
หน่วยประมวลผลกลางทำอะไรในขณะที่รอการดึงหน่วยความจำหลัก
สมมติว่าคำขอ l1 และ l2 แคชส่งผลให้พลาดตัวประมวลผลจะหยุดทำงานจนกว่าหน่วยความจำหลักจะถูกเข้าถึงหรือไม่? ฉันได้ยินเกี่ยวกับแนวคิดของการเปลี่ยนไปใช้เธรดอื่นถ้าเช่นนั้นจะใช้อะไรในการปลุกเธรดที่ค้างอยู่

4
วิธีการจำลอง backreferences, lookaheads และ lookbehinds ใน automata state ที่ จำกัด ?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันสร้างนิพจน์ทั่วไปอย่างง่าย lexer และ parser เพื่อทำนิพจน์ปกติและสร้างแผนภูมิการแยกวิเคราะห์ การสร้างออโตเมติกอัน จำกัด ที่ไม่ได้กำหนดค่าจากต้นไม้การแยกวิเคราะห์นี้ค่อนข้างง่ายสำหรับนิพจน์ทั่วไปขั้นพื้นฐาน อย่างไรก็ตามฉันไม่สามารถคาดศีรษะได้ว่าจะทำอย่างไรในการจำลองการอ้างอิงย้อนกลับ, Lookaheads และ Lookbehinds จากสิ่งที่ฉันอ่านในหนังสือมังกรสีม่วงฉันเข้าใจว่าการจำลอง lookahead ซึ่งนิพจน์ปกติrถูกจับคู่ถ้าหากการจับคู่ตามด้วยการจับคู่ของนิพจน์ทั่วไปคุณสร้างขอบเขตที่ไม่ จำกัด รัฐหุ่นยนต์ที่/จะถูกแทนที่ด้วยε เป็นไปได้หรือไม่ที่จะสร้างออโตเมติกอัน จำกัด ที่กำหนดได้ซึ่งทำเช่นเดียวกัน?r / sr/sr/sRrrsss///εε\varepsilon สิ่งที่เกี่ยวกับการจำลอง lookaheads เชิงลบและ lookbehinds? ฉันจะขอบคุณถ้าคุณจะเชื่อมโยงฉันไปยังแหล่งข้อมูลที่อธิบายวิธีการทำอย่างละเอียด

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