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

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

2
อัลกอริทึมที่มีประสิทธิภาพสำหรับ 'unsumming' ชุดจำนวนเงิน
รับชุดของตัวเลขธรรมชาติ X พิจารณาชุดของผลรวมที่เป็นไปได้ทั้งหมด: จำนวนเงิน (X) = { ∑ฉัน∈ผม|A ⊆ X}sums(X)={∑i∈Ai|A⊆X}\textrm{sums}(X)= \left\{ \sum_{i \in A} i \,|\, A \subseteq X \right\} ยกตัวอย่างเช่นผลรวม ( { 1 , 5 } )= { 0 ,1,5,6}sums({1,5})={0,1,5,6}\textrm{sums}(\left\{1,5\right\}) = \left\{0, 1, 5, 6\right\}ในขณะที่ sums({1,1})={0,1,2}sums({1,1})={0,1,2}\textrm{sums}(\left\{1,1\right\}) = \left\{0, 1, 2\right\} } อัลกอริธึมที่มีประสิทธิภาพมากที่สุดสำหรับการคำนวณการดำเนินการผกผันคืออะไร โดยเฉพาะมันเป็นไปได้ที่จะคำนวณอย่างมีประสิทธิภาพต่อไปนี้: ไม่ว่าจะเป็นชุดที่กำหนดเป็นชุดผลรวมที่ถูกต้อง (ตัวอย่างเช่น{0,1,2}{0,1,2}\left\{0,1,2\right\}ถูกต้อง แต่{0,1,3}{0,1,3}\left\{0,1,3\right\}ไม่ถูกต้อง) เซ็ตมัลติเซตที่รวมกับเซ็ตที่กำหนด ชุดมัลติเซ็ตที่เล็กที่สุดที่รวมกับเซ็ตที่กำหนด (ตัวอย่างเช่น{1,2}{1,2}\left\{1,2\right\}และ{1,1,1}{1,1,1}\left\{1,1,1\right\}ทั้งผลรวมเป็น{0,1,2,3}{0,1,2,3}\left\{0,1,2,3\right\}แต่ตัวเก่ามีขนาดเล็กลง)

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

4
ภาษาที่ไม่สามารถตัดสินใจได้มีอยู่ในตรรกะเชิงคอนสตรัคติวิสต์หรือไม่?
คอนสตรัคติวิสต์ลอจิกเป็นระบบที่เอากฎของคนที่ได้รับการยกเว้นกลางเช่นเดียวกับการปฏิเสธคู่เช่นสัจพจน์ มีคำอธิบายเกี่ยวกับวิกิพีเดียที่นี่และที่นี่ โดยเฉพาะอย่างยิ่งระบบไม่อนุญาตให้มีการพิสูจน์ด้วยความขัดแย้ง ฉันสงสัยว่ามีใครบ้างที่คุ้นเคยกับสิ่งนี้ที่มีผลต่อผลลัพธ์เกี่ยวกับทัวริง Machines และภาษาทางการ ฉันสังเกตเห็นว่าเกือบทุกข้อพิสูจน์ว่าภาษานั้นไม่สามารถตัดสินใจได้โดยอาศัยการพิสูจน์จากความขัดแย้ง ทั้งอาร์กิวเมนต์ Diagonalization และแนวคิดของการลดทำงานด้วยวิธีนี้ จะมีหลักฐานที่ "สร้างสรรค์" ของการมีอยู่ของภาษาที่ไม่สามารถตัดสินใจได้หรือไม่และถ้าเป็นเช่นนั้นจะมีลักษณะอย่างไร แก้ไข: เพื่อความชัดเจนความเข้าใจของฉันพิสูจน์โดยความขัดแย้งในตรรกะ constructivist ผิดและคำตอบได้ชี้แจงนี้

3
อะไรคือความสัมพันธ์ระหว่างหน้าที่ใน SML และทฤษฎีหมวดหมู่?
ตามความคิดเดียวกันกับคำกล่าวนี้โดยAndrej Bauerในคำตอบนี้ ชุมชน Haskell ได้มีการพัฒนาเทคนิคจำนวนหนึ่งแรงบันดาลใจจากทฤษฎีประเภทที่monadsเป็นที่รู้จักกันดีที่สุด แต่ไม่ควรจะสับสนกับmonads อะไรคือความสัมพันธ์ระหว่างfunctorsใน SML และfunctorsในทฤษฎีหมวดหมู่? เนื่องจากฉันไม่รู้เกี่ยวกับรายละเอียดของฟังก์ชั่นในภาษาอื่นเช่น Haskell หรือ OCaml หากมีข้อมูลที่มีค่ากรุณาเพิ่มหัวข้อสำหรับภาษาอื่นด้วย

2
ปัญหาการปรับให้เหมาะสม "สมบูรณ์ NP"
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Computer Science Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันสับสนเล็กน้อยโดยคำศัพท์บางอย่างที่ฉันพบเกี่ยวกับความซับซ้อนของปัญหาการเพิ่มประสิทธิภาพ ในคลาสอัลกอริทึมฉันมีปัญหาparsimony ขนาดใหญ่ที่อธิบายว่า NP-complete อย่างไรก็ตามฉันไม่แน่ใจว่าคำว่า NP-complete หมายถึงอะไรในบริบทของปัญหาการปรับให้เหมาะสม นี่หมายถึงว่าปัญหาการตัดสินใจที่สอดคล้องกันนั้นทำให้ NP สมบูรณ์หรือไม่ และนั่นหมายความว่าในความเป็นจริงแล้วปัญหาการปรับให้เหมาะสมนั้นอาจจะยากกว่า (อาจจะนอก NP) โดยเฉพาะอย่างยิ่งฉันกังวลเกี่ยวกับความจริงที่ว่าในขณะที่ปัญหาการตัดสินใจที่สมบูรณ์แบบ NP เป็นเวลาที่ตรวจสอบได้พหุนามวิธีแก้ปัญหาการเพิ่มประสิทธิภาพที่สอดคล้องกันไม่ปรากฏว่าเป็นเวลาพหุนามตรวจสอบได้ นั่นหมายความว่าปัญหาไม่ได้อยู่ใน NP จริงๆหรือเป็นพหุนามเวลาตรวจสอบได้เพียงลักษณะของปัญหาการตัดสินใจ NP?

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

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

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

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

3
ได้รับ RSA แล้วทำไมเราไม่ทราบว่าการเข้ารหัสคีย์สาธารณะเป็นไปได้หรือไม่
ฉันอยู่ในวิกิพีเดียในรายการปัญหาวิทยาศาสตร์คอมพิวเตอร์ที่ยังไม่ได้แก้ไขและพบสิ่งนี้: การเข้ารหัสรหัสสาธารณะเป็นไปได้หรือไม่ ฉันคิดว่าการเข้ารหัส RSA เป็นรูปแบบของการเข้ารหัสคีย์สาธารณะหรือไม่ เหตุใดจึงเป็นปัญหา

1
เป็นไปได้ที่จะพิสูจน์ความลังเลของปัญหาการหยุดพักใน Coq หรือไม่?
ฉันกำลังดู " ห้าขั้นตอนของการยอมรับคณิตศาสตร์เชิงสร้างสรรค์ " โดย Andrej Bauer และเขาบอกว่ามีการพิสูจน์สองแบบด้วยความขัดแย้ง (หรือสองสิ่งที่นักคณิตศาสตร์เรียกการพิสูจน์ด้วยความขัดแย้ง): สมมติว่าเป็นเท็จ ... blah blah blah, ความขัดแย้ง ดังนั้นPจึงเป็นจริงPPPPPP สมมติว่าเป็นจริง ... blah blah blah, ความขัดแย้ง ดังนั้นPจึง เป็นเท็จPPPPPP คนแรกเทียบเท่ากับกฎหมายว่าด้วยการแยกคนกลาง (LEM) และคนที่สองคือวิธีพิสูจน์การปฏิเสธ การพิสูจน์ความลังเลของปัญหา Halting (HP) เป็นข้อพิสูจน์จากความขัดแย้ง: สมมติว่ามีเครื่องที่สามารถตัดสินใจ HP ... blah blah blah, ความขัดแย้ง ดังนั้นDไม่มีอยู่DDDDDD ดังนั้นให้เป็น " Dอยู่และสามารถตัดสินใจ HP" สมมติว่าPเป็นจริง ... blah blah blah, ความขัดแย้ง ดังนั้นPจึงเป็นเท็จPPPDDDPPPPPP …

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

7
ด้วยระบบคอมพิวเตอร์ที่เฉพาะเจาะจงเป็นไปได้หรือไม่ที่จะประเมินเวลาการทำงานที่แม่นยำของชิ้นส่วนรหัส
นี่คือรหัสชุดประกอบ section .text global _start ;must be declared for using gcc _start: ;tell linker entry point mov edx, len ;message length mov ecx, msg ;message to write mov ebx, 1 ;file descriptor (stdout) mov eax, 4 ;system call number (sys_write) int 0x80 ;call kernel mov eax, 1 ;system call number …
23 assembly 

8
ภาษาการเขียนโปรแกรมที่ทุกการแสดงออกเหมาะสม
ต่อคำแนะนำของฉันกำลัง reposting นี้จากกองมากเกิน เมื่อเร็ว ๆ นี้ฉันกำลังคิดเกี่ยวกับปัญหาต่อไปนี้ พิจารณารหัสสำหรับมาตรฐาน "Hello world!" โปรแกรม: main() { printf("Hello World"); } ตอนนี้การเปลี่ยนแปลงใด ๆ ในรหัสนี้จะทำให้ไร้ประโยชน์อย่างสมบูรณ์ในความเป็นจริงการเปลี่ยนแปลงเกือบทุกครั้งจะป้องกันโค้ดจากการรวบรวม ตัวอย่างเช่น: main(5 { printf("Hello World"); } ตอนนี้กับคำถามจริง มีภาษาการเขียนโปรแกรมหรือไม่ที่มีการรวมกันของสัญลักษณ์ต่าง ๆ ซึ่งก็คือทุก ๆ นิพจน์มีเหตุผลหรือไม่? ฉันลองคิดถึงวิธีแก้ปัญหาบางอย่างแล้วคิดหาสองวิธี: Postfix ที่มีจำนวนตัวแปร จำกัด โดยพื้นฐานแล้วตัวแปรทั้งหมดจะถูกกำหนดไว้แล้วก่อนที่คุณจะเขียนโค้ดใด ๆ และคุณต้องทำงานกับมัน ในทางทฤษฎีคุณสามารถดำเนินการตามอำเภอใจได้โดยสร้างห่วงโซ่ของโปรแกรมง่าย ๆ โดยแต่ละโปรแกรมจะให้ผลลัพธ์แก่ผู้อื่น รหัสสามารถเขียนเป็นชุดอักขระในเครื่องหมาย postfix; "Postfix" พร้อมกับสแต็กของตัวแปร ตัวแปรจะถูกเก็บไว้ในสแต็ก ทุกการดำเนินการใช้สองตัวแปรจากด้านบนและวางผลลัพธ์ไว้ในตำแหน่งของพวกเขา โปรแกรมจะสิ้นสุดลงเมื่อถึงการดำเนินการหรือตัวแปรสุดท้าย ส่วนตัวฉันเกลียดทั้งสองอย่างนี้ ไม่เพียง แต่จะถูก …

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

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