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

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

1
เหตุใดอัลกอริทึมการหมุนแผนภูมิต้นไม้จึงคำนึงถึงทั้งโหนดหลักและโหนดปู่ย่าตายาย
ฉันไม่เข้าใจว่าทำไมการหมุนในโครงสร้างข้อมูลแผนภูมิต้นไม้ไม่ได้คำนึงถึงเฉพาะพาเรนต์ของโหนดการจัดอันดับ แต่ยังรวมถึงปู่ย่าตายาย (การดำเนินการ zig-zag และ zig-zig) ทำไมสิ่งต่อไปนี้ถึงไม่ทำงาน: ในขณะที่เราแทรกเช่นโหนดใหม่ไปยังทรีเราตรวจสอบว่าเราแทรกลงในทรีย่อยทางซ้ายหรือขวา หากเราแทรกเข้าไปทางซ้ายเราจะหมุน RIGHT ผลลัพธ์และในทางกลับกันสำหรับแผนผังย่อยที่เหมาะสม มันจะเป็นแบบนี้ซ้ำ ๆ ซ้ำ ๆ Tree insert(Tree root, Key k){ if(k < root.key){ root.setLeft(insert(root.getLeft(), key); return rotateRight(root); } //vice versa for right subtree } ที่ควรหลีกเลี่ยงกระบวนการ "กาง" ทั้งหมดคุณคิดหรือไม่?

2
มีหลักฐานที่แสดงว่าการใช้ภาษาแบบไดนามิกมีผลกระทบต่อผลผลิตหรือไม่
ฉันสงสัยว่ามีการทดลองใด ๆ ที่แสดงการมีอยู่หรือไม่มีความสัมพันธ์ระหว่างการใช้ภาษาแบบไดนามิก (เช่น Python, Ruby หรือแม้แต่ภาษาที่ทำงานบนแพลตฟอร์ม Java เช่น Groovy, Clojure) มากกว่า ภาษาแบบคงที่ (เช่น C / C ++) และความแตกต่างในการผลิต

11
การอ้างความผิดบาปของ von Neumann ไม่สามารถใช้ได้อีกต่อไป?
บางคนพูดว่าต่อไปนี้: ใครก็ตามที่พยายามสร้างตัวเลขสุ่มด้วยวิธีการที่กำหนดขึ้นมาแน่นอนว่าอยู่ในสภาพบาป นั่นหมายความว่าคุณไม่สามารถสร้างตัวเลขสุ่มจริงด้วยคอมพิวเตอร์ได้ และเขาบอกว่าเมื่อคอมพิวเตอร์มีขนาดเท่ากับไมโครโปรเซสเซอร์ Intel 8080 (ประมาณ 6,000 วาล์ว) คอมพิวเตอร์มีความซับซ้อนมากขึ้นและฉันเชื่อว่าคำสั่งของ von Von Neumann อาจไม่เป็นจริงอีกต่อไป พิจารณาว่าอัลกอริทึมที่ใช้งานซอฟต์แวร์เท่านั้นเป็นไปไม่ได้ พวกเขาทำงานบนฮาร์ดแวร์ทางกายภาพ เครื่องกำเนิดเลขสุ่มที่แท้จริงและแหล่งข้อมูลเอนโทรปีของพวกเขายังทำจากฮาร์ดแวร์ ส่วนของ Java นี้ใส่ลงในลูป: file.writeByte((byte) (System.nanoTime() & 0xff)); สามารถสร้างไฟล์ข้อมูลที่ฉันแสดงเป็นภาพ: คุณสามารถเห็นโครงสร้าง แต่มีการสุ่มมากมายเช่นกัน สิ่งที่น่าสนใจคือไฟล์ PNG นี้มีขนาด 232KB แต่มีพิกเซลสีเทาขนาด 250,000 พิกเซล ระดับการบีบอัด PNG สูงสุด นั่นเป็นเพียงอัตราส่วนการอัด 7% คือ ไม่สามารถบีบอัดได้ สิ่งที่น่าสนใจก็คือไฟล์นั้นมีเอกลักษณ์ ทุกรุ่นของไฟล์นี้มีรูปแบบที่แตกต่างกันเล็กน้อยและมีความสามารถในการบีบอัดประมาณ 7% ฉันเน้นสิ่งนี้ตามที่สำคัญต่อการโต้แย้งของฉัน นั่นคือเอนโทรปี ~ 7bits / byte …

6
ความสัมพันธ์ระหว่างภาษาการเขียนโปรแกรมนิพจน์ทั่วไปและภาษาที่เป็นทางการคืออะไร
ฉันได้ดูคำตอบสำหรับคำถามนี้และดูเหมือนว่าทุกคนรู้คำตอบโดยปริยายยกเว้นฉัน สันนิษฐานว่าเป็นเพราะคนเพียงคนเดียวที่สนใจคือผู้ที่มีการศึกษาระดับอุดมศึกษาในเรื่อง ในทางกลับกันฉันถูกโยนลงไปลึกสุดเพื่อรับงานมัธยมปลาย คำถามของฉันคือภาษาการเขียนโปรแกรมเกี่ยวข้องกับภาษาทางการอย่างไร ทุกที่ที่ฉันอ่านมีบางสิ่งที่เรียงตามแนวของ "ภาษาที่เป็นทางการใช้เพื่อกำหนดไวยากรณ์ของภาษาโปรแกรม" ตอนนี้จากสิ่งที่ฉันสามารถรวบรวมได้ภาษาทางการเป็นชุดของกฎการผลิตที่ใช้กับชุดสัญลักษณ์เฉพาะ (ตัวอักษรของภาษา) กฎการผลิตเหล่านี้กำหนดชุดการแปลงเช่น: b -> a aaa->c สิ่งนี้สามารถนำไปใช้ได้เช่น: abab->aaaa aaaa-> ca เช่นเดียวกับบันทึกย่อหากเรากำหนดว่าตัวอักษรของภาษาทางการของเราคือ {a, b, c} จากนั้น a และ b ไม่ใช่เทอร์มินัลและ c เป็นเทอร์มินัลเนื่องจากไม่สามารถเปลี่ยนได้ (โปรดแก้ไขให้ฉันด้วยถ้าฉันผิด ที่). ถ้าอย่างนั้นจะใช้กับภาษาโปรแกรมได้อย่างไร บ่อยครั้งที่มีการระบุด้วยว่า regex ใช้ในการแยกภาษาในรูปแบบข้อความเพื่อให้แน่ใจว่าไวยากรณ์นั้นถูกต้อง มันสมเหตุสมผลแล้ว จากนั้นจะกล่าวว่า regex ถูกกำหนดโดยภาษาทางการ Regex ส่งคืนจริงหรือเท็จ (จากประสบการณ์ของฉันอย่างน้อย) ขึ้นอยู่กับว่าสถานะออโตมาต้าที่ จำกัด ซึ่งแสดงถึง regex มาถึงจุดเป้าหมายหรือไม่ เท่าที่ฉันเห็นมันไม่มีส่วนเกี่ยวข้องกับการเปลี่ยนแปลง * สำหรับการรวบรวมโปรแกรมนั้นฉันคิดว่าภาษาทางการจะสามารถแปลงรหัสให้เป็นรหัสระดับล่างได้อย่างต่อเนื่องในที่สุดก็ถึงการชุมนุมผ่านชุดกฎที่ซับซ้อนซึ่งฮาร์ดแวร์นั้นสามารถเข้าใจได้ นั่นคือสิ่งที่มาจากมุมมองที่สับสนของฉัน …

4
จะพิสูจน์ได้อย่างไรว่าไวยากรณ์นั้นไม่คลุมเครือ?
ปัญหาของฉันคือฉันจะพิสูจน์ได้อย่างไรว่าไวยากรณ์ไม่คลุมเครือ? ฉันมีไวยากรณ์ต่อไปนี้: S→statement∣if expression then S∣if expression then S else SS→statement∣if expression then S∣if expression then S else SS → statement ∣ \mbox{if } expression \mbox{ then } S ∣ \mbox{if } expression \mbox{ then } S \mbox{ else } S และทำให้เป็นไวยากรณ์ที่ชัดเจนฉันคิดว่ามันถูกต้อง: S→S1∣S2S→S1∣S2 S → S_1 ∣ S_2 S1→if expression …

5
ทำไมปัญหานี้ที่แก้ไม่ตกใน NP ไม่ได้?
เห็นได้ชัดว่าไม่มีปัญหาที่ไม่สามารถตัดสินใจได้ใน NP อย่างไรก็ตามตามWikipedia : NP คือชุดของปัญหาการตัดสินใจทั้งหมดซึ่งอินสแตนซ์ที่คำตอบคือ "ใช่" มี [.. หลักฐานที่] ตรวจสอบได้ในเวลาพหุนามโดยเครื่องทัวริงกำหนด [ ... ] ปัญหาได้รับการกล่าวถึงว่าอยู่ใน NP ถ้าหากว่ามีตัวตรวจสอบสำหรับปัญหาที่ดำเนินการในเวลาพหุนาม พิจารณาปัญหาต่อไปนี้: ได้สมการไดโอแฟนไทน์มันมีเลขจำนวนเต็มไหม? ได้รับการแก้ไขมันง่ายต่อการตรวจสอบในเวลาพหุนามว่าจริง ๆ แล้วมันเป็นทางออก: เพียงแค่เสียบตัวเลขเข้ากับสมการ ดังนั้นปัญหาอยู่ใน NP อย่างไรก็ตามการแก้ปัญหานี้เป็นที่รู้จักกันว่า undecidable ! (ในทำนองเดียวกันดูเหมือนว่าปัญหาการหยุดชะงักควรอยู่ใน NP เนื่องจาก "ใช่" - การแก้ไข "โปรแกรมนี้หยุดที่ขั้นตอน N-th" สามารถตรวจสอบได้ในขั้นตอน N) เห็นได้ชัดว่ามีบางอย่างผิดปกติกับความเข้าใจของฉัน แต่มันคืออะไร

7
อัลกอริทึมในการกระจายรายการ“ อย่างสม่ำเสมอ”
ฉันกำลังค้นหาอัลกอริทึมเพื่อแจกจ่ายค่าจากรายการเพื่อให้รายการผลลัพธ์เป็น "สมดุล" หรือ "กระจายอย่างสม่ำเสมอ" ที่สุด (ในเครื่องหมายคำพูดเพราะฉันไม่แน่ใจว่าสิ่งเหล่านี้เป็นวิธีที่ดีที่สุดในการอธิบาย ... ต่อมาฉันจะให้วิธีการวัดว่าผลลัพธ์ดีกว่าอื่น) ดังนั้นสำหรับรายการ: [1, 1, 2, 2, 3, 3] หนึ่งในผลลัพธ์ที่ดีที่สุดหลังจากการกระจายค่าอีกครั้งคือ: [1, 2, 3, 1, 2, 3] อาจมีผลลัพธ์อื่น ๆ ที่ดีเท่านี้และแน่นอนว่าสิ่งนี้จะซับซ้อนมากขึ้นด้วยชุดค่าที่น้อยกว่า นี่คือวิธีการวัดว่าผลลัพธ์ดีกว่าวิธีอื่นหรือไม่: นับระยะทางระหว่างแต่ละรายการและรายการถัดไปด้วยค่าเดียวกัน คำนวณค่าเบี่ยงเบนมาตรฐานสำหรับชุดของระยะทาง การกระจายตัวที่ต่ำกว่าหมายถึงผลลัพธ์ที่ดีกว่า ข้อสังเกต: เมื่อคำนวณระยะทางและถึงจุดสิ้นสุดของรายการโดยไม่ต้องค้นหารายการที่มีค่าเท่ากันเราจะกลับไปที่จุดเริ่มต้นของรายการ ดังนั้นในที่สุดรายการเดียวกันจะถูกพบและระยะทางสำหรับรายการนั้นจะเป็นความยาวของรายการ ซึ่งหมายความว่ารายการเป็นวงกลม ; รายการทั่วไปมี ~ 50 รายการที่มีค่าแตกต่างกัน ~ 15 ในปริมาณที่แตกต่างกัน ดังนั้น: สำหรับผลที่[1, 2, 3, 1, 2, 3]ระยะห่างอยู่[3, 3, 3, …

9
สร้างตัวเลขสุ่มกระจายอย่างสม่ำเสมอโดยใช้เหรียญ
คุณมีหนึ่งเหรียญ คุณสามารถพลิกมันได้หลายครั้งตามที่คุณต้องการ คุณต้องการที่จะสร้างตัวเลขสุ่มดังกล่าวว่า≤ R &lt; Bที่R , , ข∈ Z +Rrra ≤ r &lt; ba≤r&lt;ba \leq r < br,a,b∈Z+r,a,b∈Z+r,a,b\in \mathbb{Z}^+ การแจกแจงของตัวเลขควรเหมือนกัน มันง่ายถ้า :b−a=2nb−a=2nb -a = 2^n r = a + binary2dec(flip n times write 0 for heads and 1 for tails) เกิดอะไรขึ้นถ้า ?b−a≠2nb−a≠2nb-a \neq 2^n


3
ปัญหา P vs. NP จะกลายเป็นเรื่องเล็กน้อยเนื่องจากการพัฒนาคอมพิวเตอร์ควอนตัมสากลหรือไม่?
หากมีใครบางคนกำลังสร้างคอมพิวเตอร์ควอนตัมสากลนั่นจะมีผลกระทบต่อปัญหาของ P กับ NP หรือไม่?

2
มีปัญหาใด ๆ ที่คำนวณได้ง่าย แต่ยากต่อการตรวจสอบหรือไม่?
สมมติว่า P NP ปัญหา NP-สมบูรณ์ "ยากที่จะแก้ปัญหา แต่มีคำตอบที่ง่ายต่อการตรวจสอบ." มันสมเหตุสมผลหรือไม่ที่จะต้องพิจารณาสิ่งที่ตรงกันข้ามนั่นคือปัญหาที่ง่ายต่อการคำนวณคำตอบที่ถูกต้อง แต่ยากที่จะตรวจสอบวิธีการแก้ปัญหาโดยพลการหรือไม่?≠≠\neq ฉันคิดว่าปัญหาดังกล่าวจะบอกเป็นนัย: คำตอบที่ "ถูกต้อง" จำนวนมากชี้แจงสำหรับอินพุตใด ๆ ที่ได้รับเพราะมิฉะนั้นการตรวจสอบสามารถทำได้โดยเพียงแค่คำนวณคำตอบที่ถูกต้องทั้งหมด บางคำตอบที่ "ถูกต้อง" นั้นง่ายต่อการคำนวณ แต่คนอื่นหาได้ยาก

3
อัลกอริทึมใดที่ไม่สามารถทำการขนานกันได้
มีอัลกอริทึมใดที่ยากต่อการขนานหรือการวิจัยยังคงทำงานอยู่หรือไม่? ฉันต้องการทราบเกี่ยวกับอัลกอริทึมหรือสาขาการวิจัยใด ๆ ในการคำนวณแบบขนาน ฉันค้นหาทุกสิ่งมีการใช้งาน 'แบบขนาน' เสร็จสิ้น เพียงแค่ต้องการศึกษาเกี่ยวกับเขตข้อมูลการคำนวณแบบขนานที่ยังไม่ได้สำรวจ

6
ต้นไม้ที่ทอดสองแห่งของกราฟอย่างง่าย ๆ มีขอบร่วมกันเสมอหรือไม่?
ฉันลองสองสามกรณีและพบต้นไม้สองอันที่ครอบคลุมของกราฟอย่างง่ายมีขอบทั่วไป ฉันหมายถึงฉันไม่พบตัวอย่างตัวนับใด ๆ แต่ฉันไม่สามารถพิสูจน์หรือหักล้างสิ่งนี้ได้ จะพิสูจน์หรือหักล้างการคาดเดานี้ได้อย่างไร

5
O (mn) ถือว่าการเติบโตแบบ "เชิงเส้น" หรือ "กำลังสอง" หรือไม่?
ถ้าฉันมีฟังก์ชั่นบางตัวที่ความซับซ้อนของเวลาคือ O ( mn ) โดยที่mและnเป็นขนาดของอินพุตทั้งสองเราจะเรียกความซับซ้อนของเวลาว่า "เป็นเส้นตรง" (เนื่องจากเป็นเชิงเส้นทั้งในmและn ) หรือ "กำลังสอง" ( เนื่องจากเป็นผลิตภัณฑ์ที่มีสองขนาด) หรืออย่างอื่น? ฉันรู้สึกว่าเรียกว่า "เป็นเส้นตรง" ทำให้สับสนเพราะ O (m + n) เป็นเส้นตรง แต่เร็วกว่ามาก แต่ฉันรู้สึกว่าเรียกมันว่า "กำลังสอง" นั้นก็แปลกเพราะมันเป็นเส้นตรงในตัวแปรแต่ละตัว

3
เป็นไปได้จริงหรือที่จะพิสูจน์ขอบเขตที่ต่ำกว่า?
เมื่อพิจารณาจากปัญหาการคำนวณงานในการค้นหาขอบเขตที่ต่ำกว่าสำหรับการคำนวณดังกล่าวเป็นไปได้จริงหรือ ฉันคิดว่ามันจะทำให้ขั้นตอนการคำนวณเป็นขั้นตอนเดียวและแบบจำลองใดที่เราใช้สำหรับการพิสูจน์ แต่จากนั้นเราจะพิสูจน์ขอบเขตที่ต่ำกว่าโดยทั่วไปหรือไม่? สิ่งที่ฉันหมายถึงคือเราสามารถพิสูจน์บางสิ่งเช่น "ปัญหาไม่สามารถแก้ไขได้เร็วกว่าเวลา " มากกว่า "ปัญหาสามารถแก้ไขได้ในเวลาหรือเร็วกว่า"?t ( X ) X t ( X )XXXt(X)t(X)t(X)XXXt(X)t(X)t(X) ฉันได้พยายามค้นหาข้อมูลโดยเฉพาะเกี่ยวกับขอบเขตที่ต่ำกว่าและการพิสูจน์ของพวกเขาแล้ว แต่ฉันไม่สามารถหาข้อเสนอแนะใด ๆ ที่น่าสนใจเกี่ยวกับหนังสือ / เอกสาร / เว็บไซต์ในเรื่องนี้

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