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

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

9
มีปัญหาใดที่จะง่ายขึ้นเมื่อพวกเขาเพิ่มขนาดหรือไม่
นี่อาจเป็นคำถามที่ไร้สาระ แต่เป็นไปได้ไหมที่จะมีปัญหาที่ง่ายขึ้นเมื่ออินพุตมีขนาดโตขึ้น? ฉันสงสัยว่าปัญหาในทางปฏิบัติเป็นเช่นนี้ แต่บางทีเราสามารถคิดค้นปัญหาที่เลวร้ายที่มีคุณสมบัตินี้ได้ ตัวอย่างเช่นบางทีมันอาจเริ่ม "แก้ปัญหาเอง" เมื่อมันใหญ่ขึ้นหรือทำงานในลักษณะแปลกประหลาดอื่น ๆ

6
การคำนวณแบบกระจายเทียบกับแบบขนาน
ฉันมักจะได้ยินคนพูดถึงการคำนวณแบบขนานและการคำนวณแบบกระจายแต่ฉันรู้สึกว่าไม่มีขอบเขตที่ชัดเจนระหว่าง 2 และผู้คนมักจะสับสนอย่างง่ายดายในขณะที่ฉันเชื่อว่ามันแตกต่างกันมาก: การคำนวณแบบขนานนั้นมีความเชื่อมโยงกับมัลติเธรดอย่างแน่นหนามากขึ้นหรือวิธีการใช้งาน CPU อย่างเต็มรูปแบบ การคำนวณแบบกระจายหมายถึงแนวคิดของการแบ่งและพิชิตการเรียกใช้งานย่อยในเครื่องที่แตกต่างกันแล้วรวมผลลัพธ์ อย่างไรก็ตามเนื่องจากเราก้าวเข้าสู่ยุคข้อมูลขนาดใหญ่ดูเหมือนว่าความแตกต่างกำลังจะละลายและระบบส่วนใหญ่ในปัจจุบันใช้การผสมผสานระหว่างการคำนวณแบบขนานและแบบกระจาย ตัวอย่างที่ฉันใช้ในงานประจำวันของฉันคือ Hadoop พร้อมแผนที่ / ลดกระบวนทัศน์ระบบการกระจายที่ชัดเจนกับพนักงานที่ปฏิบัติงานบนเครื่องที่แตกต่างกัน แต่ยังใช้ประโยชน์จากเครื่องแต่ละเครื่องด้วยการคำนวณแบบขนาน ฉันต้องการคำแนะนำเพื่อให้เข้าใจว่าจะสร้างความแตกต่างในโลกปัจจุบันได้อย่างไรและถ้าเรายังพูดถึงการคำนวณแบบขนานหรือไม่มีความแตกต่างที่ชัดเจนอีกต่อไป สำหรับฉันดูเหมือนว่าการคำนวณแบบกระจายได้เพิ่มขึ้นอย่างมากในช่วงหลายปีที่ผ่านมาในขณะที่การคำนวณแบบขนานดูเหมือนจะนิ่งซึ่งอาจอธิบายได้ว่าทำไมฉันได้ยินมากขึ้นเกี่ยวกับการกระจายการคำนวณมากกว่าการขนานกัน

6
ทำไมเราไม่รวมตัวสร้างจำนวนสุ่ม?
มีแอปพลิเคชั่นมากมายที่ใช้ตัวสร้างตัวเลขสุ่มหลอก ดังนั้นผู้คนจึงใช้สิ่งที่พวกเขาคิดว่ายอดเยี่ยมเท่านั้นที่จะพบในภายหลังว่ามันมีข้อบกพร่อง สิ่งนี้เกิดขึ้นกับเครื่องสร้างตัวเลขสุ่มจาวาสคริปต์ RandU เร็วเกินไปเช่นกัน นอกจากนี้ยังมีปัญหาของการเริ่มต้นเริ่มต้นที่ไม่เหมาะสมสำหรับบางอย่างเช่น Twister ฉันไม่สามารถหาตัวอย่างของใครก็ตามที่รวมเครื่องกำเนิดไฟฟ้าสองตระกูลหรือมากกว่าเข้ากับผู้ดำเนินการ xor ปกติ หากมีพลังงานคอมพิวเตอร์เพียงพอที่จะเรียกใช้สิ่งต่าง ๆ เช่นการใช้งาน java.SecureRandom หรือ Twister ทำไมคนไม่รวมพวกเขา? ISAAC xor XORShift xor RandU ควรเป็นตัวอย่างที่ดีพอสมควรและคุณสามารถเห็นจุดอ่อนของเครื่องกำเนิดไฟฟ้าเดี่ยว ๆ ที่ได้รับการผ่อนปรนจากผู้อื่น นอกจากนี้ยังควรช่วยในการกระจายตัวเลขไปสู่มิติที่สูงขึ้นเนื่องจากอัลกอริทึมภายในนั้นแตกต่างกันโดยสิ้นเชิง มีหลักการพื้นฐานบางอย่างที่พวกเขาไม่ควรนำมารวมกัน? หากคุณต้องการสร้างตัวสร้างตัวเลขสุ่มจริงผู้คนอาจแนะนำให้คุณรวมแหล่งข้อมูลเอนโทรปีสองแหล่งขึ้นไป ตัวอย่างของฉันแตกต่างกันอย่างไร ฉันไม่รวมตัวอย่างทั่วไปของตัวเลื่อนการตอบรับเชิงเส้นหลายตัวที่ทำงานร่วมกันเนื่องจากพวกเขามาจากตระกูลเดียวกัน

10
พลังการคำนวณของมนุษย์: มนุษย์สามารถตัดสินปัญหาการหยุดชะงักของเครื่องจักรทัวริงได้หรือไม่?
เรารู้ว่าปัญหาการหยุดชะงัก (ในเครื่องทัวริง) นั้นไม่สามารถระบุได้สำหรับเครื่องทัวริง มีการวิจัยว่าจิตใจมนุษย์สามารถจัดการกับปัญหานี้ได้ดีเพียงใดโดยได้รับความช่วยเหลือจากเครื่องทัวริงหรือคอมพิวเตอร์วัตถุประสงค์ทั่วไป หมายเหตุ : เห็นได้ชัดว่าในความหมายที่เข้มงวดที่สุดคุณสามารถปฏิเสธได้เสมอเพราะมีเครื่องจักรทัวริงขนาดใหญ่มากจนไม่สามารถอ่านได้ในช่วงชีวิตของมนุษย์เพียงคนเดียว แต่นี่เป็นข้อ จำกัด ที่ไร้สาระซึ่งไม่ได้นำไปสู่คำถามที่แท้จริง ดังนั้นในการสร้างสิ่งต่าง ๆ เราต้องสมมติว่ามนุษย์มีช่วงชีวิตโดยพลการ ดังนั้นเราจึงสามารถถามได้: เนื่องจาก Turing Machine T แสดงในรูปแบบที่เหมาะสมใด ๆ มนุษย์ H ที่มีอายุยืนโดยพลการและบัฟเฟอร์จำนวนหนึ่ง (เช่นกระดาษ + ปากกา) โดยพลการ H สามารถตัดสินใจได้ว่า T หยุดคำที่ว่างเปล่าหรือไม่ ข้อสรุป: หากคำตอบคือใช่จะไม่ตัดสินด้วยหรือไม่หากคอมพิวเตอร์เครื่องใดมีโอกาสผ่านการทดสอบทัวริง

5
การอนุญาตให้มีน้ำหนักเท่ากับศูนย์ในกราฟน้ำหนักหรือไม่
ฉันกำลังพยายามเขียนสคริปต์ที่สร้างกราฟแบบสุ่มและฉันจำเป็นต้องทราบว่าขอบในกราฟถ่วงน้ำหนักสามารถมีค่า 0 หรือไม่ จริงๆแล้วมันสมเหตุสมผลที่ 0 สามารถใช้เป็นน้ำหนักของขอบ แต่ฉันได้ทำงานกับกราฟในไม่กี่วันที่ผ่านมาและฉันไม่เคยเห็นตัวอย่างของมันมาก่อน

8
สัญชาตญาณของอัลกอริทึมสำหรับความซับซ้อนลอการิทึม
ฉันเชื่อว่าฉันมีความเข้าใจที่เหมาะสมของความซับซ้อนเช่น , Θ ( n )และΘ ( n 2 )O (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)Θ ( n2)Θ(n2)\Theta(n^2) ในแง่ของรายการคือการค้นหาอย่างต่อเนื่องดังนั้นมันจึงเป็นแค่การนำส่วนหัวของรายการ Θ ( n )คือที่ที่ฉันจะเดินรายการทั้งหมดและΘ ( n 2 )กำลังเดินรายการหนึ่งครั้งสำหรับแต่ละองค์ประกอบในรายการO (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)Θ ( n2)Θ(n2)\Theta(n^2) มีวิธีที่เข้าใจง่ายคล้ายกันในการเข้าใจนอกเหนือจากการรู้ว่ามันอยู่ที่ไหนสักแห่งระหว่างO ( 1 )และΘ ( n )หรือไม่Θ ( บันทึกn )Θ(log⁡n)\Theta(\log n)O (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)

3
แสดงการดำเนินการเชิงตรรกะบูลีนในการโปรแกรมเชิงเส้นจำนวนเต็มศูนย์ (ILP)
ฉันมีโปรแกรม linear จำนวนเต็ม (ILP) ซึ่งมีตัวแปรบางตัวxixผมx_iที่มีวัตถุประสงค์เพื่อแสดงค่าบูลีน xixผมx_i 's มีข้อ จำกัด ที่จะเป็นจำนวนเต็มและจะถือ 0 หรือ 1 ( )0≤xi≤10≤xi≤10 \le x_i \le 1 ฉันต้องการแสดงการดำเนินการบูลีนกับตัวแปร 0/1 ที่มีค่าเหล่านี้โดยใช้ข้อ จำกัด เชิงเส้น ฉันจะทำสิ่งนี้ได้อย่างไร โดยเฉพาะอย่างยิ่งฉันต้องการตั้งค่า (บูลีน AND), (บูลีน OR) และ (บูลีน NOT) ฉันใช้การตีความที่ชัดเจนของ 0/1 เป็นค่าบูลีน: 0 = false, 1 = true ฉันจะเขียนข้อ จำกัด ของ ILP ได้อย่างไรเพื่อให้แน่ใจว่านั้นเกี่ยวข้องกับตามที่ต้องการ?y1=x1∧x2Y1=x1∧x2y_1 = x_1 \land …

3
ประเภทที่อ้างถึงเทียบกับประเภทการปรับแต่ง
มีใครอธิบายความแตกต่างระหว่างชนิดพึ่งพาและประเภทการปรับแต่งได้หรือไม่ ตามที่ฉันเข้าใจประเภทการปรับแต่งจะมีค่าทั้งหมดของชนิดที่ทำให้ภาคแสดง มีคุณสมบัติของชนิดพึ่งพาซึ่งแยกแยะพวกเขาหรือไม่ ถ้ามันช่วยได้ฉันเจอประเภทการกลั่นผ่านโครงการ Liquid Haskell และประเภทที่ต้องพึ่งพาผ่าน Coq และ Agda ที่กล่าวว่าฉันกำลังมองหาคำอธิบายว่าทฤษฎีแตกต่างกันอย่างไร

4
ทำไมจึงเป็นการดีที่สุดที่จะใช้หมายเลขเฉพาะเป็น mod ในฟังก์ชัน hashing
ถ้าฉันมีรายการของค่าคีย์จาก 1 ถึง 100 และฉันต้องการจัดระเบียบพวกเขาในอาร์เรย์ 11 ถังฉันได้รับการสอนให้สร้างฟังก์ชั่น mod H=kmod 11H=kmod 11 H = k \bmod \ 11 ตอนนี้ค่าทั้งหมดจะถูกวางทีละแถวใน 9 แถว ยกตัวอย่างเช่นในถังแรกจะมี0,11,22…0,11,22…0, 11, 22 \dots\ ในวินาทีจะมี1,12,23…1,12,23…1, 12, 23 \dotsเป็นต้น สมมติว่าฉันตัดสินใจที่จะเป็นเด็กเลวและใช้ฟังก์ชั่นที่ไม่เฉพาะเจาะจงเป็นฟังก์ชัน hashing ของฉัน - ใช้เวลา 12 ใช้ฟังก์ชั่น Hashing H=kmod 12H=kmod 12 H = k \bmod \ 12 จะส่งผลให้ตารางแฮชที่มีค่า0,12,24…0,12,24…0, 12, 24 \dots ในที่ฝากข้อมูลแรก, …

12
ไบต์มี 8 บิตหรือ 9 หรือไม่
ฉันอ่านในการสอนการเขียนโปรแกรมการชุมนุมนี้ว่า 8 บิตใช้สำหรับข้อมูลในขณะที่ 1 บิตสำหรับพาริตี้ซึ่งใช้สำหรับตรวจจับข้อผิดพลาดพาริตี้ (เกิดจากความผิดพลาดของฮาร์ดแวร์หรือการรบกวนทางไฟฟ้า) มันเป็นเรื่องจริงเหรอ?

6
หากทุกคนเชื่อ P ≠ NP ทำไมทุกคนไม่เชื่อในความพยายามพิสูจน์สำหรับ P ≠ NP?
หลายคนดูเหมือนจะเชื่อว่าแต่หลายคนก็เชื่อว่าเป็นไปได้ยากที่จะได้รับการพิสูจน์ มีอะไรที่ขัดแย้งกันบ้างไหม? หากคุณเชื่อว่าการพิสูจน์ดังกล่าวไม่น่าจะเป็นไปได้คุณควรเชื่อว่าข้อโต้แย้งที่เสียงของP ≠ N Pขาดไป หรือมีข้อโต้แย้งที่ดีสำหรับP ≠ N Pที่ไม่น่าเป็นไปได้ในหลอดเลือดดำที่คล้ายกันที่จะกล่าวว่าสมมติฐาน Riemann ถือเป็นจำนวนมากหรือขอบเขตที่ต่ำมากสูงในจำนวนของ primes ที่มีอยู่ด้วยระยะห่างขนาดเล็กห่างกัน การคาดคะเนของ Twin Prime?P≠ NPP≠NPP\ne NPP≠ NPP≠NPP\ne NPP≠ NPP≠NPP\ne NP

6
มีเกณฑ์ขั้นต่ำสำหรับภาษาการเขียนโปรแกรมที่ทัวริงสมบูรณ์หรือไม่
มีชุดภาษาการเขียนโปรแกรมที่สร้างขึ้นในภาษาการเขียนโปรแกรมเพื่อให้ถือว่าเป็นทัวริงสมบูรณ์หรือไม่ จากสิ่งที่ฉันสามารถบอกได้จากวิกิพีเดียภาษาต้องสนับสนุนการเรียกซ้ำหรือดูเหมือนว่าจะต้องสามารถทำงานได้โดยไม่หยุด ทั้งหมดนี้มีไว้เพื่อมันหรือไม่?

9
สิ่งที่จะเป็นผลกระทบในโลกแห่งความเป็นจริงของการพิสูจน์สร้างสรรค์?
ฉันมีความเข้าใจในระดับสูงเกี่ยวกับปัญหาและฉันเข้าใจว่าหากพิสูจน์ได้ว่า "เป็นจริง" ด้วยวิธีการแก้ปัญหาที่ให้มามันจะเปิดประตูสำหรับการแก้ปัญหาต่าง ๆ ภายในขอบเขตของวิทยาศาสตร์คอมพิวเตอร์P=NPP=NPP=NP คำถามของฉันคือถ้ามีใครบางคนที่จะเผยแพร่หลักฐานที่พิสูจน์ไม่ได้ที่สร้างสรรค์ของสิ่งที่มีผลทันทีที่เราจะเห็นของการค้นพบดังกล่าวคืออะไร? P=NPP=NPP=NP ฉันไม่ได้ขอมุมมองที่มีความเห็นเกี่ยวกับสิ่งที่โลกจะมีลักษณะเช่นนี้ใน 5-10 ปี ฉันเข้าใจว่านี่เป็นปัญหาที่ไม่สามารถแก้ไขได้โดยพื้นฐานซึ่งสามารถเปลี่ยนแปลงวิธีการคำนวณของเราได้อย่างมากมายหลายสิ่ง (ใช่นี่เป็นที่ที่ความไม่รู้ของฉันแสดง ... ) ซึ่งเราไม่สามารถคำนวณได้ง่ายในวันนี้ . ผลกระทบใกล้จะเกิดขึ้นแบบทันทีทันใดชนิดใดที่พิสูจน์ได้อย่างแม่นยำถูกต้องและสร้างสรรค์ของมีต่อโลกแห่งการปฏิบัติ?P=NPP=NPP=NP

9
ภาษาโปรแกรมที่ปลอดภัยคืออะไร
ภาษาโปรแกรมที่ปลอดภัย (PL) กำลังได้รับความนิยม ฉันสงสัยว่าคำจำกัดความที่เป็นทางการของ PL ที่ปลอดภัยคืออะไร ตัวอย่างเช่น C ไม่ปลอดภัย แต่ Java นั้นปลอดภัย ฉันสงสัยว่าคุณสมบัติ "ปลอดภัย" ควรนำไปใช้กับการติดตั้ง PL แทนที่จะเป็น PL ถ้าเป็นเช่นนั้นเรามาพูดถึงคำจำกัดความของการใช้ PL อย่างปลอดภัย ความพยายามของฉันในการทำให้แนวคิดนี้เป็นระเบียบกลายเป็นผลลัพธ์ที่แปลกประหลาดดังนั้นฉันจึงอยากได้ยินความคิดเห็นอื่น โปรดอย่าพูดว่า PL ทุกคนมีคำสั่งที่ไม่ปลอดภัย เราสามารถใช้ชุดย่อยที่ปลอดภัยได้เสมอ

8
อัลกอริธึมการเรียงลำดับที่เร็วที่สุดสำหรับอาเรย์ของจำนวนเต็มคืออะไร?
ฉันเจออัลกอริธึมการเรียงลำดับจำนวนมากในระหว่างที่เรียนอยู่มัธยม อย่างไรก็ตามฉันไม่เคยรู้ว่าอันไหนเร็วที่สุด (สำหรับอาร์เรย์จำนวนเต็มแบบสุ่ม) ดังนั้นคำถามของฉันคือ: อัลกอริทึมการเรียงลำดับที่รู้จักกันเร็วที่สุดในขณะนี้คืออะไร ในทางทฤษฎีมันเป็นไปได้ไหมที่จะมีคนที่เร็วขึ้น? ดังนั้นการเรียงลำดับที่ซับซ้อนน้อยที่สุดคืออะไร?

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