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

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

4
ความซับซ้อนของเวลาของคอมไพเลอร์
ฉันสนใจเวลาที่ซับซ้อนของคอมไพเลอร์ เห็นได้ชัดว่านี่เป็นคำถามที่ซับซ้อนมากเนื่องจากมีคอมไพเลอร์ตัวเลือกคอมไพเลอร์และตัวแปรที่ต้องพิจารณาจำนวนมาก โดยเฉพาะฉันสนใจ LLVM แต่จะสนใจในความคิดใด ๆ ที่ผู้คนมีหรือสถานที่เพื่อเริ่มการวิจัย ดูเหมือนว่า google ค่อนข้างจะนำความสว่างมาให้ ฉันเดาว่าจะมีขั้นตอนการเพิ่มประสิทธิภาพบางอย่างที่อธิบายแทนได้ แต่มีผลกระทบเพียงเล็กน้อยต่อเวลาจริง เช่นเลขชี้กำลังเป็นเลขชี้กำลังเป็นอาร์กิวเมนต์ของฟังก์ชัน จากด้านบนของหัวฉันจะบอกว่าการสร้างต้นไม้ AST จะเป็นเส้นตรง รุ่น IR จะต้องก้าวผ่านต้นไม้ในขณะที่มองค่าในตารางที่เคยเติบโตดังนั้นหรือlog) การสร้างรหัสและการเชื่อมโยงจะเป็นการดำเนินการที่คล้ายกัน ดังนั้นฉันเดาว่าจะเป็นถ้าเราลบเลขยกกำลังของตัวแปรที่ไม่เติบโตตามจริงO ( n log n ) O ( n 2 )O(n2)O(n2)O(n^2)O(nlogn)O(nlog⁡n)O(n\log n)O(n2)O(n2)O(n^2) ฉันอาจผิดอย่างสมบูรณ์แม้ว่า ไม่มีใครมีความคิดเกี่ยวกับมัน?
54 compilers 

8
รหัสมอร์สที่ไม่มีช่องว่างสามารถถอดรหัสได้หรือไม่
สตริงรหัสมอร์สทั้งหมดสามารถถอดรหัสได้โดยไม่ซ้ำกันหรือไม่? ไม่มีช่องว่าง ......-...-..---.-----.-..-..-.. อาจเป็นได้Hello Worldแต่บางทีตัวอักษรตัวแรกคือ5- ในความเป็นจริงมันดูไม่น่าจะเป็นไปได้มากตามลำดับจุดและขีดคั่นควรมีการแปลที่เป็นเอกลักษณ์ อาจเป็นไปได้ว่าอาจใช้อสมการคราฟท์แต่ใช้กับรหัสนำหน้าเท่านั้น รหัสมอร์สที่มีช่องว่างเป็นรหัสนำหน้าซึ่งข้อความสามารถถอดรหัสได้ไม่ซ้ำกัน เมื่อเราลบช่องว่างออกแล้วสิ่งนี้จะไม่เป็นจริงอีกต่อไป ในกรณีที่ฉันถูกและข้อความรหัสมอร์สทั้งหมดไม่สามารถถอดรหัสได้โดยไม่ซ้ำมีวิธีการแสดงข้อความที่เป็นไปได้ทั้งหมดหรือไม่ นี่คือแบบฝึกหัดที่เกี่ยวข้องที่ฉันพบใน codegolf.SE https://codegolf.stackexchange.com/questions/36735/morse-decode-golf https://codegolf.stackexchange.com/questions/131/morse-code-translator

7
เครื่องทัวริง“ ตามนิยาม” เป็นเครื่องจักรที่ทรงพลังที่สุดหรือไม่?
ฉันยอมรับว่าเครื่องทัวริงสามารถทำ "ปัญหาทางคณิตศาสตร์ที่เป็นไปได้ทั้งหมด" แต่นั่นเป็นเพราะมันเป็นเพียงการนำเสนอเครื่องจักรของอัลกอริทึม: ก่อนอื่นให้ทำแล้วทำสิ่งนั้นในที่สุดก็เอาท์พุท ฉันหมายถึงทุกสิ่งที่สามารถแก้ไขได้โดยอัลกอริทึม (เพราะนั่นคือนิยามของ 'แก้ไขได้') มันเป็นเพียงการพูดซ้ำซาก ฉันไม่ได้พูดอะไรใหม่ที่นี่ และด้วยการสร้างอัลกอริธึมที่เป็นตัวแทนของเครื่องจักรเพื่อที่จะแก้ปัญหาที่เป็นไปได้ทั้งหมดก็ไม่มีอะไรใหม่ นี่เป็นเพียงการพูดซ้ำซาก ดังนั้นโดยทั่วไปเมื่อมีการกล่าวว่าเครื่องทัวริงเป็นเครื่องที่ทรงพลังที่สุดสิ่งที่มีประสิทธิภาพหมายถึงเครื่องที่ทรงพลังที่สุดคือเครื่องที่ทรงพลังที่สุด! คำจำกัดความของ "มีประสิทธิภาพมากที่สุด": สิ่งที่สามารถยอมรับภาษาใดก็ได้ คำจำกัดความของ "อัลกอริทึม": กระบวนการทำอะไร การแสดงเครื่องของ "อัลกอริทึม": เครื่องที่สามารถทำอะไรได้ ดังนั้นจึงเป็นเหตุผลเท่านั้นที่การแสดงเครื่องของอัลกอริทึมจะเป็นเครื่องที่มีประสิทธิภาพที่สุด อลันทัวริงมีอะไรใหม่ให้เราบ้าง

5
อัลกอริทึมการเรียงลำดับนี้เป็นอย่างไร³ (n³) และไม่Θ (n²) เป็นกรณีที่เลวร้ายที่สุด?
ฉันเพิ่งเริ่มเรียนหลักสูตรโครงสร้างข้อมูลและอัลกอริธึมและผู้ช่วยสอนของฉันให้รหัสหลอกต่อไปนี้สำหรับการเรียงลำดับอาร์เรย์ของจำนวนเต็ม: void F3() { for (int i = 1; i < n; i++) { if (A[i-1] > A[i]) { swap(i-1, i) i = 0 } } } อาจไม่ชัดเจน แต่ที่นี่คือขนาดของอาร์เรย์ที่เราพยายามเรียงลำดับnnnA ในกรณีใด ๆ ผู้ช่วยสอนอธิบายให้ชั้นเรียนรู้ว่าอัลกอริทึมนี้อยู่ในเวลา (แย่ที่สุดฉันเชื่อ) แต่ไม่ว่าฉันจะผ่านมันไปกี่ครั้งด้วยอาเรย์เรียงกลับด้าน มันดูเหมือนว่าฉันที่มันควรจะเป็นและไม่ได้3)Θ(n3)Θ(n3)\Theta(n^3)Θ(n2)Θ(n2)\Theta(n^2)Θ(n3)Θ(n3)\Theta(n^3) คนที่จะสามารถอธิบายให้ฉันทำไมนี้เป็นΘ(n3)Θ(n3)Θ(n^3)และไม่Θ(n2)Θ(n2)Θ(n^2) ?

7
ทำไมโปรเซสเซอร์ถึงมี 32 รีจิสเตอร์?
ฉันสงสัยอยู่เสมอว่าทำไมโปรเซสเซอร์หยุดทำงานที่การลงทะเบียน 32 ครั้ง มันเป็นชิ้นส่วนที่เร็วที่สุดของเครื่องทำไมไม่เพียงสร้างตัวประมวลผลที่ใหญ่กว่าด้วยการลงทะเบียนมากขึ้น? นั่นจะหมายถึงการไปที่ RAM น้อยลงหรือไม่

2
วิธีการกำหนดเครื่องทัวริงควอนตัม?
ในการคำนวณควอนตัมแบบจำลองเทียบเท่าของทัวริงคืออะไร เป็นที่ชัดเจนสำหรับฉันว่าวงจรควอนตัมสามารถสร้างขึ้นจากประตูควอนตัมได้อย่างไร แต่เราจะกำหนดเครื่องควอนตัมทัวริง (QTM) ที่สามารถได้รับประโยชน์จากผลกระทบเชิงควอนตัมจริง ๆ แล้ว

4
การเรียกซ้ำแบบหางคืออะไร
ฉันรู้ว่าแนวคิดทั่วไปของการเรียกซ้ำ ฉันเจอแนวคิดเรื่องการเรียกซ้ำหางในขณะที่ศึกษาอัลกอริทึมแบบเร่งด่วน ในวิดีโอของอัลกอริทึมการเรียงลำดับด่วนจาก MITเวลา 18:30 วินาทีอาจารย์บอกว่านี่เป็นอัลกอริทึมแบบเรียกซ้ำ ไม่ชัดเจนสำหรับฉันว่าการเรียกซ้ำแบบหางหมายถึงอะไรจริงๆ บางคนสามารถอธิบายแนวคิดด้วยตัวอย่างที่เหมาะสมได้หรือไม่ คำตอบบางอย่างให้โดยชุมชนดังนั้นที่นี่

2
มีอัลกอริธึมเวลาเอ็กซ์โพเนนเชียลสำหรับปัญหา NP-complete หรือไม่
มีปัญหาที่ทำให้ NP เสร็จสมบูรณ์ซึ่งพิสูจน์อัลกอริธึมเวลาเอ็กซ์โปแนนเชียลหรือไม่? ฉันกำลังขออินพุตกรณีทั่วไปฉันไม่ได้พูดถึงกรณีพิเศษที่เข้าใจได้ง่ายที่นี่ โดยการย่อยชี้แจงผมหมายถึงคำสั่งของการเจริญเติบโตดังกล่าวข้างต้นมีหลายชื่อ แต่น้อยกว่าแทนเช่น nnเข้าสู่ระบบnnlog⁡nn^{\log n}

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

6
การรักษาความลับของสตริงในซอร์สโค้ด (เปิด)
ฉันได้พัฒนาแอพสำหรับ Android และตั้งใจที่จะเผยแพร่มันด้วย GPL - ฉันต้องการให้มันเป็นโอเพนซอร์ส อย่างไรก็ตามลักษณะของแอปพลิเคชั่น (เกม) คือมันจะถามปริศนาและมีคำตอบที่เข้ารหัสลงในทรัพยากรสตริง ฉันไม่สามารถเผยแพร่คำตอบได้! ฉันได้รับคำสั่งให้ดูที่การเก็บรหัสผ่านอย่างปลอดภัย - แต่ฉันไม่พบสิ่งที่เหมาะสม เป็นไปได้ไหมที่จะเผยแพร่ซอร์สโค้ดของฉันด้วยอาร์เรย์สตริงที่ซ่อนเข้ารหัสหรือถูกบดบัง บางทีการอ่านคำตอบจากฐานข้อมูลออนไลน์ ปรับปรุง โซลูชันของ Yuval Filmus ด้านล่างใช้งานได้ เมื่อฉันอ่านครั้งแรกฉันยังไม่แน่ใจว่าจะทำอย่างไร ฉันพบโซลูชันบางอย่างสำหรับตัวเลือกที่สอง: การจัดเก็บโซลูชันแฮชในแหล่งที่มาและคำนวณแฮชทุกครั้งที่ผู้ใช้คาดเดา การทำเช่นนี้ใน JavaScript มีห้องสมุดการเข้ารหัสลับ js ที่http://code.google.com/p/crypto-js/ สำหรับ Android ให้ใช้ฟังก์ชันMessageDigest มีแอปพลิเคชัน (บน fdroid / github) เรียกว่าHashPassซึ่งทำสิ่งนี้
50 arrays  security 

6
เหตุใดบางเกมจึงเสร็จสมบูรณ์ np
ฉันอ่านรายการ Wikipedia เกี่ยวกับ " รายการปัญหาที่เกิดปัญหา NP-complete " และพบว่าเกมเช่น super mario, pokemon, tetris หรือ saga crush candy เป็น np-complete ฉันจะจินตนาการถึงความสมบูรณ์แบบของเกมได้อย่างไร คำตอบไม่จำเป็นต้องแม่นยำเกินไป ฉันแค่ต้องการรับภาพรวมความหมายของเกมที่สามารถทำให้สมบูรณ์ได้

4
ทำไมเวลาพหุนามจึงเรียกว่า“ มีประสิทธิภาพ”?
ทำไมในวิทยาการคอมพิวเตอร์ความซับซ้อนใด ๆ ที่มากที่สุดในพหุนามถือว่ามีประสิทธิภาพ? สำหรับแอปพลิเคชันเชิงปฏิบัติใด ๆ(a)อัลกอริทึมที่มีความซับซ้อนนั้นเร็วกว่าอัลกอริธึมที่ใช้ในเวลาพูดแต่ตัวแรกถือว่าไม่มีประสิทธิภาพในขณะที่หลังมีประสิทธิภาพ ตรรกะอยู่ที่ไหน! n 80nlognnlog⁡nn^{\log n}n80n80n^{80} (ก) สมมติตัวอย่างเช่นจำนวนของอะตอมในจักรวาลจะอยู่ที่ประมาณ{80}1080108010^{80}

2
เกิดอะไรขึ้นกับเนื้อหาแคชในการสลับบริบท
ในตัวประมวลผลแบบมัลติคอร์จะเกิดอะไรขึ้นกับเนื้อหาของแคชของคอร์ (เช่น L1) เมื่อมีการสลับบริบทเกิดขึ้นบนแคชนั้น พฤติกรรมขึ้นอยู่กับสถาปัตยกรรมหรือเป็นพฤติกรรมทั่วไปตามด้วยผู้ผลิตชิปทั้งหมดหรือไม่

3
ทำไมการค้นหาแบบไบนารี่จึงเร็วกว่าการค้นหาแบบไตรภาค
การค้นหาอาเรย์ขององค์ประกอบโดยใช้การค้นหาแบบไบนารี่จะใช้เวลาในกรณีที่ซ้ำที่สุดการทำซ้ำเพราะในแต่ละขั้นตอนเราตัดแบ่งครึ่งของพื้นที่การค้นหาของเรา หากเราใช้ 'การค้นหาแบบไตรภาค' แทนเราจะตัดพื้นที่การค้นหาของเราสองในสามในแต่ละการวนซ้ำดังนั้นกรณีที่แย่ที่สุดควรใช้การซ้ำ ...log 2 N log 3 N &lt; log 2 NNNNlog2Nlog2⁡N\log_2 Nlog3N&lt;log2Nlog3⁡N&lt;log2⁡N\log_3 N < \log_2 N ดูเหมือนว่าการค้นหาแบบไตรภาคเร็วกว่าแล้วทำไมเราถึงใช้การค้นหาแบบไบนารี่?

12
วิธีตรวจสอบหมายเลขกับ Bob โดยไม่ต้องรู้ว่าอีฟ
คุณต้องตรวจสอบว่าบ๊อบเพื่อนของคุณมีหมายเลขโทรศัพท์ที่ถูกต้อง แต่คุณไม่สามารถถามเขาได้โดยตรง คุณต้องเขียนคำถามลงบนบัตรที่มอบให้อีฟซึ่งจะนำบัตรไปให้บ๊อบและส่งคำตอบกลับมาให้คุณ คุณต้องเขียนอะไรลงบนการ์ดนอกเหนือจากคำถามเพื่อให้แน่ใจว่าบ๊อบสามารถเข้ารหัสข้อความเพื่อให้อีฟไม่สามารถอ่านหมายเลขโทรศัพท์ของคุณได้? หมายเหตุ:คำถามนี้อยู่ในรายการของ "คำถามสัมภาษณ์ Google" ด้วยเหตุนี้จึงมีคำถามมากมายหลายคำถามในเว็บและหลายคำถามยังไม่มีคำตอบที่ชัดเจนหรือแม้แต่คำตอบที่ถูกต้อง หมายเหตุ 2:คำตอบที่น่ารำคาญสำหรับคำถามนี้คือบ๊อบควรเขียน "โทรหาฉัน" ใช่มันฉลาดมาก 'นอกกรอบ' และทุกอย่าง แต่ไม่ได้ใช้เทคนิคใด ๆ ของ CS ที่เราเรียกฮีโร่ของเราว่า "บ๊อบ" และศัตรูที่แอบดักฟัง "อีฟ" ของเขา อัปเดต: คะแนนโบนัสสำหรับอัลกอริทึมที่คุณและบ๊อบทำได้ด้วยมืออย่างสมเหตุสมผล อัปเดต 2: โปรดทราบว่าบ๊อบไม่จำเป็นต้องส่งข้อความใด ๆ ถึงคุณ แต่ยืนยันว่าเขามีหมายเลขโทรศัพท์ที่ถูกต้องของคุณโดยไม่ต้องส่งให้อีฟสามารถถอดรหัสได้ซึ่งอาจนำไปสู่การแก้ปัญหาที่ง่ายกว่า

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