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

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

4
แสดงว่าปัญหาใน X ไม่สมบูรณ์ X
ทฤษฎีอัตถิภาวนิยมของรีอัลอยู่ในPSPACEแต่ผมไม่ทราบว่ามันเป็น PSPACE สมบูรณ์ หากฉันเชื่อว่าไม่ใช่ในกรณีนี้ฉันจะพิสูจน์ได้อย่างไร โดยทั่วไปได้รับปัญหาความซับซ้อนในบางชั้นเรียนX , ฉันจะแสดงให้เห็นว่ามันเป็นสิ่งที่ไม่ได้ X-สมบูรณ์ ? ยกตัวอย่างเช่นXอาจจะNP , PSPACE , EXPTIME

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

1
การเกิดขึ้นตามธรรมชาติของพระที่ใช้ประโยชน์จากกรอบหมวดหมู่ตามทฤษฎี
วันนี้คำปราศรัยของ Henning Kerstan ("ร่องรอยความหมายสำหรับระบบการเปลี่ยนผ่านน่าจะเป็น") เผชิญหน้ากับฉันด้วยทฤษฎีหมวดหมู่เป็นครั้งแรก เขาได้สร้างกรอบทางทฤษฎีสำหรับการอธิบายระบบการเปลี่ยนแปลงที่น่าจะเป็นไปได้และพฤติกรรมของพวกเขาในลักษณะทั่วไปคือด้วยชุดของรัฐที่ไม่มีที่สิ้นสุดนับไม่ถ้วนและความคิดที่แตกต่างกันของร่องรอย ด้วยเหตุนี้เขาจะไปผ่านหลายชั้นของนามธรรมไปจนจบลงด้วยความคิดของmonadsซึ่งเขารวมกับทฤษฎีการวัดในการสร้างรูปแบบที่เขาต้องการ ในที่สุดเขาใช้เวลา 45 นาทีในการสร้างกรอบเพื่ออธิบายแนวคิดที่เขาอธิบายไว้ใน 5 นาที ฉันซาบซึ้งกับความงามของวิธีการ (มันใช้งานได้ดีกับความคิดที่แตกต่างกันของร่องรอย) แต่มันก็ทำให้ฉันรู้สึกเหมือนเป็นความสมดุลที่แปลกประหลาด ฉันต่อสู้เพื่อดูว่า monad คืออะไรจริง ๆและแนวคิดทั่วไปมีประโยชน์อย่างไรในแอปพลิเคชัน (ทั้งในทางทฤษฎีและปฏิบัติ) มันคุ้มค่ากับความพยายามหรือไม่ผลที่ตามมาคืออะไร? ดังนั้นคำถามนี้: มีปัญหาที่เกิดขึ้นตามธรรมชาติ (ในแง่ของ CS) หรือไม่ซึ่งความคิดเชิงนามธรรมของพระสงฆ์สามารถนำไปใช้และช่วย (หรือเป็นเครื่องมือ) เพื่อให้ได้ผลลัพธ์ที่ต้องการ (ไม่ว่าจะด้วยวิธีใดก็ตาม

3
ปัญหาการใช้งานการปิดในการตั้งค่าที่ไม่ทำงาน
ในภาษาการเขียนโปรแกรมการปิดเป็นคุณสมบัติที่นิยมและมักต้องการ Wikipediaพูดว่า (เหมืองที่เน้น): ในวิทยาการคอมพิวเตอร์การปิด (... ) คือฟังก์ชั่นร่วมกับสภาพแวดล้อมอ้างอิงสำหรับตัวแปรที่ไม่ใช่ท้องถิ่นของฟังก์ชั่นนั้น การปิดช่วยให้ฟังก์ชั่นเข้าถึงตัวแปรนอกขอบเขตศัพท์ได้ทันที ดังนั้นการปิดจึงเป็นค่าฟังก์ชัน (ไม่ระบุชื่อ) ซึ่งสามารถใช้ตัวแปรที่อยู่นอกขอบเขตของตัวเอง จากประสบการณ์ของฉันนี่หมายความว่ามันสามารถเข้าถึงตัวแปรที่อยู่ในขอบเขตที่จุดนิยามได้ ในทางปฏิบัติแนวคิดนี้ดูเหมือนจะเบี่ยงเบนไป แต่อย่างน้อยก็อยู่นอกการโปรแกรมเชิงปฏิบัติ ภาษาที่แตกต่างกันใช้ความหมายที่แตกต่างกันแม้ดูเหมือนว่าจะมีสงครามของ Verifyons โปรแกรมเมอร์หลายคนดูเหมือนจะไม่รู้ว่าการปิดคืออะไรดูพวกเขาน้อยกว่าฟังก์ชั่นที่ไม่ระบุชื่อ นอกจากนี้ดูเหมือนว่าจะมีอุปสรรคสำคัญเมื่อดำเนินการปิด สิ่งที่น่าสังเกตมากที่สุดคือ Java 7 น่าจะรวมเอาไว้ แต่ฟีเจอร์ดังกล่าวจะถูกส่งกลับไปยังรีลีสในอนาคต เหตุใดการปิดจึงยากที่จะเข้าใจ คำถามนี้กว้างเกินไปและคลุมเครือดังนั้นขอให้ฉันมุ่งเน้นไปที่คำถามที่เชื่อมต่อกันเหล่านี้มากขึ้น: มีปัญหาเกี่ยวกับการแสดงการปิดในพิธีการทางความหมายทั่วไป (ขั้นตอนเล็ก ๆ ขั้นตอนที่ใหญ่ ... )? ระบบชนิดที่มีอยู่ไม่เหมาะสำหรับการปิดและไม่สามารถขยายได้อย่างง่ายดายหรือไม่? เป็นปัญหาหรือไม่ที่จะนำการปิดให้สอดคล้องกับการแปลขั้นตอนแบบดั้งเดิม โปรดทราบว่าคำถามส่วนใหญ่เกี่ยวข้องกับภาษาเชิงโพรซีเดอร์เชิงวัตถุและสคริปต์ เท่าที่ฉันรู้ภาษาการทำงานไม่มีปัญหาใด ๆ

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

4
การเกิดซ้ำและฟังก์ชันสร้างในอัลกอริทึม
Combinatorics มีบทบาทสำคัญในวิทยาการคอมพิวเตอร์ เราใช้วิธี combinatorial ในการวิเคราะห์และการออกแบบอัลกอริทึมบ่อยครั้ง ตัวอย่างเช่นวิธีหนึ่งสำหรับการค้นหาชุดkkk -vertex ในกราฟอาจตรวจสอบชุดย่อย(nk)(nk)\binom{n}{k}เป็นไปได้ทั้งหมด ในขณะที่ฟังก์ชั่นทวินามเติบโตขึ้นแบบทวีคูณถ้าkkkเป็นค่าคงที่ที่แน่นอนเราจะสิ้นสุดด้วยอัลกอริธึมเวลาพหุนามโดยการวิเคราะห์เชิงเส้นกำกับ บ่อยครั้งที่ปัญหาในชีวิตจริงต้องการกลไกการผสมผสานที่ซับซ้อนมากขึ้นซึ่งเราอาจนิยามในแง่ของการเกิดซ้ำ ตัวอย่างที่มีชื่อเสียงอย่างหนึ่งคือลำดับฟีโบนักชี (ไร้เดียงสา) ที่นิยามเป็น: f(n)=⎧⎩⎨10f(n−1)+f(n−2)if n=1if n=0otherwisef(n)={1if n=10if n=0f(n−1)+f(n−2)otherwisef(n) = \begin{cases} 1 & \text{if } n = 1 \\ 0 & \text{if } n = 0 \\ f(n-1) + f(n-2) & \text{otherwise} \end{cases} ขณะนี้การคำนวณมูลค่าของคำศัพท์ที่nnnเพิ่มขึ้นแบบทวีคูณโดยใช้การเกิดซ้ำนี้ แต่ด้วยการเขียนโปรแกรมแบบไดนามิกเราอาจคำนวณในเวลาเชิงเส้น ทีนี้ไม่ใช่การเกิดซ้ำทั้งหมดให้ตัวเองกับ DP (ฟังก์ชั่นแฟกทอเรียล) แต่มันเป็นคุณสมบัติที่สามารถเอาเปรียบได้เมื่อกำหนดบางอย่างว่าเป็นการเกิดซ้ำมากกว่าฟังก์ชั่นการสร้าง ฟังก์ชั่นการสร้างเป็นวิธีที่สง่างามในการทำให้เป็นรูปเป็นร่างสำหรับโครงสร้างที่กำหนด บางทีที่มีชื่อเสียงที่สุดคือฟังก์ชันการสร้างทวินามที่กำหนดเป็น: …

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

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

5
การแก้ไขความสัมพันธ์ที่เกิดซ้ำกับ√nเป็นพารามิเตอร์
พิจารณาการเกิดซ้ำ T(n)=n−−√⋅T(n−−√)+cnT(n)=n⋅T(n)+cn\qquad\displaystyle T(n) = \sqrt{n} \cdot T\bigl(\sqrt{n}\bigr) + c\,n สำหรับn>2n>2n \gt 2ที่มีอย่างต่อเนื่องในเชิงบวกบางcccและT(2)=1T(2)=1T(2) = 1 1 ฉันรู้ทฤษฎีต้นแบบสำหรับการแก้ไขการเกิดซ้ำ แต่ฉันไม่แน่ใจว่าเราจะแก้ปัญหาความสัมพันธ์นี้ได้อย่างไรโดยใช้ คุณเข้าใกล้พารามิเตอร์รากที่สองได้อย่างไร

4
คุณจะตรวจสอบว่าสองอัลกอริทึมส่งคืนผลลัพธ์เดียวกันสำหรับอินพุตใด ๆ ได้อย่างไร
คุณจะตรวจสอบได้อย่างไรว่าอัลกอริธึมสองตัว (เช่นการเรียงแบบผสานและเรียงแบบไร้เดียงสา) ส่งคืนผลลัพธ์เดียวกันสำหรับอินพุตใด ๆ หรือไม่เมื่อชุดของอินพุตทั้งหมดไม่มีที่สิ้นสุด ปรับปรุง:ขอขอบคุณคุณเบ็นที่อธิบายว่าเป็นไปไม่ได้ที่จะทำอัลกอริทึมในกรณีทั่วไป คำตอบของเดฟเป็นบทสรุปที่ยอดเยี่ยมของวิธีการอัลกอริธึมและแมนนวล (ขึ้นอยู่กับวิธีการของมนุษย์และการเปรียบเทียบ) ที่ไม่ได้ผลเสมอไป แต่มีประสิทธิภาพมาก

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

8
เหตุใดเราจึงคิดว่าอัลกอริทึมสามารถแสดงเป็นบิตสตริงได้
ฉันเริ่มอ่านหนังสือเกี่ยวกับความซับซ้อนในการคำนวณและเครื่องทัวริง นี่คือคำพูด: อัลกอริทึม (เช่นเครื่อง) สามารถแสดงเป็นบิตสตริงเมื่อเราตัดสินใจเกี่ยวกับการเข้ารหัสแบบบัญญัติ การยืนยันนี้มีให้ในความเป็นจริง แต่ฉันไม่สามารถเข้าใจได้ ตัวอย่างเช่นถ้าฉันมีอัลกอริทึมซึ่งใช้เป็นอินพุตและคำนวณ( x + 1 ) 2หรือ:xxx(x+1)2(x+1)2(x+1)^2 int function (int x){ x = x + 1; return x**2; } สิ่งนี้สามารถแสดงเป็นสตริงโดยใช้ตัวอักษรอย่างไร?{0,1}∗{0,1}∗\{0, 1\}^*

4
การเข้ารหัส Huffman: ทำไมถึงไม่มีความจำเป็นสำหรับตัวคั่น
Char Code ==== ==== E 0000 i 0001 y 0010 l 0011 k 0100 . 0101 space 011 e 10 r 1100 s 1101 n 1110 a 1111 ข้อความต้นฉบับ: ตาน่าขนลุกเห็นใกล้ทะเลสาบ เข้ารหัส: 0000101100000110011100010101101101001111101011111111111111111111111111111111100100101 เข้ารหัส เหตุใดจึงไม่จำเป็นต้องมีตัวคั่นในการเข้ารหัส Huffman


4
สามารถบีบอัดข้อมูลให้มีขนาดเล็กกว่าขีด จำกัด การบีบอัดข้อมูลของแชนนอนได้หรือไม่?
ฉันอ่านเกี่ยวกับอัลกอริธึมการบีบอัดข้อมูลและขีด จำกัด ทางทฤษฎีสำหรับการบีบอัดข้อมูล เมื่อเร็ว ๆ นี้ฉันพบวิธีการบีบอัดที่เรียกว่า "Combinatorial Entropy Encoding" แนวคิดหลักของวิธีนี้คือการเข้ารหัสไฟล์เป็นอักขระที่แสดงในไฟล์ความถี่และดัชนีของการเปลี่ยนแปลงอักขระของไฟล์เหล่านี้ เอกสารเหล่านี้อาจช่วยอธิบายวิธีการนี้: https://arxiv.org/pdf/1703.08127 http://www-video.eecs.berkeley.edu/papers/vdai/dcc2003.pdf https://www.thinkmind.org/download.php?articleid=ctrq_2014_2_10_70019 อย่างไรก็ตามในเอกสารแรกฉันได้อ่านว่าโดยใช้วิธีนี้พวกเขาสามารถบีบอัดข้อความบางส่วนให้น้อยกว่าขีด จำกัด แชนนอน (พวกเขาไม่ได้พิจารณาพื้นที่ที่จำเป็นในการบันทึกความถี่ของตัวละครและพื้นที่ที่จำเป็นในการบันทึกเมตาดาต้า ข้อมูลของไฟล์) ฉันคิดเกี่ยวกับมันและฉันพบว่าวิธีนี้จะไม่มีประสิทธิภาพมากสำหรับไฟล์ที่มีขนาดเล็กมาก แต่ในทางกลับกันมันอาจทำงานได้ดีกับไฟล์ขนาดใหญ่ ที่จริงฉันไม่เข้าใจอัลกอริธึมนี้หรือขีด จำกัด แชนนอนดีมากฉันแค่รู้ว่ามันคือผลรวมของความน่าจะเป็นของตัวละครแต่ละตัวคูณด้วยของความน่าจะเป็นแบบกลับกันlog2log2log_2 ดังนั้นฉันมีคำถาม: วิธีการบีบอัดนี้บีบอัดไฟล์ให้เล็กกว่าขีด จำกัด ของแชนนอนจริงๆหรือไม่? มีอัลกอริทึมการบีบอัดใด ๆ ที่บีบอัดไฟล์ให้น้อยกว่าขีด จำกัด แชนนอนหรือไม่ (คำตอบของคำถามนี้เท่าที่ฉันรู้คือไม่มี) วิธีการบีบอัดที่บีบอัดไฟล์ให้เล็กกว่าขีด จำกัด Shannon เคยมีอยู่หรือไม่? หากการเข้ารหัส combinatorial บีบอัดไฟล์เกินขีด จำกัด ของแชนนอนจริงๆแล้วมันเป็นไปไม่ได้ที่จะบีบอัดไฟล์ซ้ำแล้วซ้ำอีกจนกว่าจะถึงขนาดที่เราต้องการ?

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