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

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

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

2
โปรแกรมนี้จะยุติสำหรับ Integer ทุกคนหรือไม่
ในการทดสอบชิ้นส่วนสำหรับการเตรียม GATE มีคำถาม: f(n): if n is even: f(n) = n/2 else f(n) = f(f(n-1)) ผมตอบว่า "มันจะยุติสำหรับจำนวนเต็มทุกคน" เพราะแม้สำหรับจำนวนเต็มเชิงลบบางอย่างก็จะยุติการเป็นข้อผิดพลาดกองมากเกิน แต่เพื่อนของฉันไม่เห็นด้วยที่บอกว่าเนื่องจากนี่ไม่ใช่โค้ดที่นำมาใช้และเป็นรหัสเทียมก็จะเรียกซ้ำไม่สิ้นสุดในกรณีที่มีจำนวนเต็มลบ คำตอบใดถูกต้องและทำไม

3
แชนนอนเอนโทรปีของ 0.922, 3 ค่าที่แตกต่าง
กำหนดสตริงของค่าB C , นอนส์เอนโทรปีในฐานล็อก 2มาถึง0.922 จากสิ่งที่ฉันเข้าใจในฐาน 2 Shannon Entropy ได้ปัดเศษขึ้นเป็นจำนวนบิตขั้นต่ำในไบนารีเพื่อแสดงค่าเดียวAAAAAAAABCAAAAAAAABCAAAAAAAABC2220.9220.9220.922222 นำมาจากการแนะนำในหน้าวิกิพีเดียนี้: https://en.wikipedia.org/wiki/Entropy_%28information_theory%29 ดังนั้นค่าสามค่าสามารถแทนด้วยหนึ่งบิตได้อย่างไร AAA อาจเท่ากับ 111 , BBB อาจเป็น 000 ; แต่คุณจะเป็นตัวแทนของ CCCอย่างไร? ขอบคุณล่วงหน้า.

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

5
วิธีการพิสูจน์การมีอยู่ของตัวเลขที่ไม่สามารถเขียนด้วยอัลกอริทึมใด ๆ
ฉันมีปัญหา: แสดงให้เห็นว่ามีจำนวนจริงซึ่งไม่มีโปรแกรมใดที่ทำงานได้นานอย่างไม่มีขีด จำกัด และเขียนเลขฐานสิบของตัวเลขนั้น ฉันคิดว่ามันสามารถแก้ไขได้โดยการลดปัญหา Halting แต่ฉันไม่รู้ว่าจะทำอย่างไร ฉันขอขอบคุณลิงก์ไปยังปัญหาที่คล้ายกันสำหรับการปฏิบัติต่อไป

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

2
การแก้สมการเชิงฟังก์ชันสำหรับฟังก์ชันที่ไม่รู้จักในแลมบ์ดาแคลคูลัส
มีเทคนิคใดบ้างในการแก้สมการการทำงานสำหรับฟังก์ชันที่ไม่รู้จักในแคลคูลัสแลมบ์ดา? สมมติว่าฉันมีฟังก์ชั่นระบุตัวตนที่ขยายเพิ่มเติมเช่น: Ix=xIx=xI x = x (นั่นคือโดยการเขียนสมการสำหรับพฤติกรรมที่คาดหวังของฟังก์ชันนั้น) และตอนนี้ฉันต้องการแก้มันสำหรับโดยทำการแปลงพีชคณิตบางอย่างเพื่อให้ได้สูตร intensional สำหรับฟังก์ชันนั้น:III I=λx.xI=λx.xI = \lambda x.x ที่บอกว่าฟังก์ชั่นทำสิ่งที่คาดหวังได้อย่างไร (นั่นคือวิธีการนำไปใช้ในแลมบ์ดาแคลคูลัส) แน่นอนฟังก์ชั่นตัวตนที่ใช้เป็นเพียงตัวอย่าง ฉันสนใจวิธีการทั่วไปในการแก้สมการดังกล่าว โดยเฉพาะฉันต้องการค้นหาฟังก์ชันที่ตรงตามข้อกำหนดต่อไปนี้:BBB Bf(λx.M)=(λx.fM)Bf(λx.M)=(λx.fM)B\;f\;(\lambda x.M) = (\lambda x.f M) นั่นคือ "injects" ฟังก์ชั่นที่กำหนดลงในฟังก์ชั่นแลมบ์ดาต่อหน้า "ร่างกาย" (ซึ่งเป็นนิพจน์แลมบ์ดาโดยพลการ) ซึ่งอาจแยกออกจากกันและสร้างใหม่ขึ้นมา พารามิเตอร์ของฟังก์ชันที่ถูกนำไปใช้fff(λx.M)(λx.M)(\lambda x.M)MMMfff

1
มันพิสูจน์แล้วว่าการคำนวณควอนตัมนั้นไม่ได้ดีกว่าในการแก้ปัญหาที่สมบูรณ์ของ NP มากกว่าการคำนวณแบบดั้งเดิม?
มันพิสูจน์แล้วว่าการคำนวณควอนตัมนั้นไม่ได้ดีกว่าในการแก้ปัญหาที่สมบูรณ์ของ NP มากกว่าการคำนวณแบบดั้งเดิมหรือเชื่อว่าเป็นเพียงแค่?

1
หัวข้อคณิตศาสตร์หรือสาขาที่เพิ่มความสามารถในการเขียนโปรแกรมคอมพิวเตอร์? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา โดยทั่วไปโปรแกรมเมอร์คอมพิวเตอร์ที่เป็นนักคณิตศาสตร์หรือมีพื้นฐานคณิตศาสตร์ดีมากในด้านอัลกอริธึมและการเขียนโปรแกรมคอมพิวเตอร์โดยทั่วไป สิ่งที่ฉันไม่ได้พูด: คณิตศาสตร์จำเป็นต้องเป็นโปรแกรมเมอร์คอมพิวเตอร์ที่ดี คณิตศาสตร์เป็นสิ่งจำเป็นสำหรับการเขียนโปรแกรม นักคณิตศาสตร์ที่ดีเป็นโปรแกรมเมอร์ที่ดีและในทางกลับกัน สิ่งที่ฉันพูด ฉันต้องการเรียนรู้คณิตศาสตร์เพราะฉันเชื่อว่ามันจะทำให้ฉันเป็นโปรแกรมเมอร์ที่ดีขึ้น หัวข้อ / หัวข้อทางคณิตศาสตร์ใดบ้างที่จะช่วยให้ฉันเป็นโปรแกรมเมอร์ที่ดีขึ้น คำตอบของแบบฟอร์มmath topic - corresponding cs areaจะได้รับการชื่นชม NB:ฉันถามสิ่งนี้ใน StackOverflow ว่ามีการประกาศที่ไหน ฉันต้องการที่จะเรียนรู้มันในเวลาว่างในแบบที่ฉันได้ทำกับการเขียนโปรแกรมคอมพิวเตอร์ ขอบคุณล่วงหน้า.

2
ข้อเสียใดที่อนุญาตให้กำจัดหางแบบโมดูโลแบบเรียกซ้ำแบบหางได้?
ฉันคุ้นเคยกับแนวคิดของการกำจัดการเรียกซ้ำแบบหางพื้นฐานซึ่งฟังก์ชันที่ส่งคืนผลลัพธ์โดยตรงของการโทรหาตัวเองสามารถเขียนใหม่ได้เป็นลูปวนซ้ำ foo(...): # ... return foo(...) ฉันยังเข้าใจว่าเป็นกรณีพิเศษฟังก์ชั่นยังสามารถเขียนใหม่ถ้าโทร recursive consถูกห่อในการเรียกไปยัง foo(...): # ... return (..., foo(...)) คุณสมบัติอะไรที่consอนุญาตให้ทำเช่นนี้? ฟังก์ชั่นอื่นใดนอกจากconsสามารถตัดหางเรียกซ้ำโดยไม่ทำลายความสามารถของเราในการเขียนซ้ำซ้ำ? GCC (แต่ไม่ใช่เสียงดังกราว) สามารถเพิ่มประสิทธิภาพตัวอย่างนี้ของ "การคูณแบบโมดูโลแบบเรียกซ้ำหาง" แต่ก็ไม่มีความชัดเจนว่ากลไกใดที่อนุญาตให้ค้นพบสิ่งนี้หรือวิธีทำให้เกิดการเปลี่ยนแปลง pow(x, n): if n == 0: return 1 else if n == 1: return x else: return x * pow(x, n-1)

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

2
ต้นกำเนิดของλสำหรับสตริงว่างคืออะไร
ฉันมักจะใช้สัญลักษณ์สำหรับสตริงที่ว่างเปล่า (คำที่ว่างเปล่าหรือสตริงที่ว่าง) แต่ฉันรู้ว่าบางคนใช้λแทนεεε\varepsilonλλ\lambdaεε\varepsilon ฉันคิดว่ามาจากคำว่า "Empty" อย่างไรก็ตามฉันไม่รู้ว่าต้นกำเนิดของλคืออะไรεε\varepsilonλλ\lambda ในทฤษฎีออโตมาตะมีการเปลี่ยนเอปไซลอนของออโตมาตาและมันก็บอกว่าเป็นการเปลี่ยนแลมบ์ดา ตัวอย่างเช่นซอฟต์แวร์JFLAPใช้สำหรับป้ายกำกับของการเปลี่ยนเอปไซลอนตามค่าเริ่มต้นλλ\lambda ฉันไปที่ต้นทางและค้นหา cs.stackexchange แต่หาไม่เจอ ไม่มีใครรู้อ้างอิงที่อธิบายสิ่งนี้หรือไม่

7
ทำไม NFA จึงถูกเรียกว่า Non-deterministic?
ฉันมีคำถามแบบนี้อยู่ในใจ ทำไมหุ่นยนต์ จำกัด แบบไม่ จำกัด ตัวเรียกว่าnon-deterministicในขณะที่เรากำหนดช่วงการเปลี่ยนภาพสำหรับอินพุต ถึงแม้ว่าจะมีการเปลี่ยนแบบหลายครั้งและแบบเอปไซลอนแต่ก็มีการกำหนดไว้ซึ่งหมายความว่าเครื่องสามารถกำหนดช่วงการเปลี่ยนภาพได้ ซึ่งหมายความว่ามันไม่แน่นอน

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

5
วิธีการค้นหาชุดสูงสุดขององค์ประกอบของอาร์เรย์เช่นว่าทุกองค์ประกอบในมากกว่าหรือเท่ากับ cardinality ของ ?
ฉันมีปัญหาเกี่ยวกับอัลกอริทึม รับอาร์เรย์ (หรือชุด)ของจำนวนเต็มไม่ติดลบ ค้นหาชุดสูงสุดของซึ่งสำหรับ , a \ geqslant | S | .n S T a ∈ S a ⩾ | S |TTTnnnSSSTTTa∈Sa∈Sa\in Sa ⩾ | S|a⩾|S|a\geqslant |S| ตัวอย่างเช่น: ถ้าTTT = [1, 3, 4, 1, 3, 6] ดังนั้นSSSสามารถเป็น [3, 3, 6] หรือ [3, 4, 6] หรือ [4, 3, 6] ใน = …

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