คำถามติดแท็ก algorithms

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

9
ทำไมมันเป็นไปไม่ได้ที่จะสร้างตัวเลขสุ่มอย่างแท้จริง?
ฉันพยายามแก้ปัญหางานอดิเรกที่ต้องสร้างตัวเลขสุ่มนับล้าน แต่ฉันก็รู้ได้อย่างรวดเร็วว่ามันยากที่จะทำให้มันไม่เหมือนใคร ฉันหยิบคู่มือการออกแบบอัลกอริทึมขึ้นมาเพื่ออ่านเกี่ยวกับการสร้างตัวเลขสุ่ม มีย่อหน้าต่อไปนี้ที่ฉันไม่สามารถเข้าใจได้อย่างเต็มที่ น่าเสียดายที่การสร้างตัวเลขสุ่มดูง่ายกว่าที่เป็นจริงมาก อันที่จริงแล้วมันเป็นไปไม่ได้ที่จะไม่สามารถสร้างตัวเลขสุ่มอย่างแท้จริงบนอุปกรณ์ที่กำหนดค่าได้ Von Neumann [Neu63] กล่าวอย่างดีที่สุด:“ ใครก็ตามที่คิดว่าวิธีการเกี่ยวกับเลขคณิตในการสร้างตัวเลขสุ่มนั้นแน่นอนว่าอยู่ในสภาพบาป” สิ่งที่ดีที่สุดที่เราหวังคือตัวเลขสุ่มหลอกลำธารที่ปรากฏเป็น ถ้าพวกเขาถูกสร้างแบบสุ่ม ทำไมจึงเป็นไปไม่ได้ที่จะสร้างตัวเลขสุ่มอย่างแท้จริงในอุปกรณ์กำหนดค่าใด ๆ ประโยคนี้หมายความว่าอย่างไร

8
มีวิธีใดบ้างที่จะหลีกเลี่ยงการโอเวอร์โฟลว์สแต็กในอัลกอริทึมแบบเรียกซ้ำได้
คำถาม มีวิธีใดที่เป็นไปได้ในการแก้ปัญหาการล้นสแต็กที่เกิดจากอัลกอริทึมแบบเรียกซ้ำ ตัวอย่าง ฉันกำลังพยายามแก้ปัญหาProject Euler 14และตัดสินใจลองใช้อัลกอริทึมแบบเรียกซ้ำ อย่างไรก็ตามโปรแกรมหยุดทำงานด้วย java.lang.StackOverflowError เข้าใจได้. อัลกอริทึมโอเวอร์โฟลว์สแต็คจริง ๆ เพราะฉันพยายามสร้างลำดับ Collatz สำหรับจำนวนมาก โซลูชั่น ดังนั้นฉันจึงสงสัยว่า: วิธีการมาตรฐานแบบใดที่จะแก้ปัญหาสแต็คโอเวอร์โฟลว์โดยสมมติว่าอัลกอริธึมวนซ้ำของคุณเขียนอย่างถูกต้องและจะจบลงด้วยการล้นสแต็กเสมอ แนวคิดสองประการที่อยู่ในใจคือ: หางเรียกซ้ำ การย้ำ แนวคิด (1) และ (2) ถูกต้องหรือไม่ มีตัวเลือกอื่น ๆ อีกไหม? แก้ไข มันจะช่วยให้เห็นบางรหัสโดยเฉพาะอย่างยิ่งใน Java, C #, Groovy หรือ Scala อาจจะไม่ใช้ปัญหา Project Euler ที่กล่าวมาข้างต้นดังนั้นมันจะไม่ทำให้ผู้อื่นเสีย แต่ใช้อัลกอริทึมอื่น ๆ แฟกทอเรียลอาจหรือสิ่งที่คล้ายกัน

6
สามารถจดสิทธิบัตรอัลกอริทึมได้หรือไม่ [ปิด]
ดังนั้นอัลกอริทึมจะสามารถจดสิทธิบัตร? ฉันเห็นข้อความนี้ซึ่งทำให้ฉันคิดว่า: ทุกคนจะงดเว้นจากการจดสิทธิบัตรการปรับปรุงจุดเส้นขอบรูปแบบเป็นเวลาอย่างน้อยหลายปีพูดจนถึง 2021 เพื่อให้นักพัฒนาโครงการ Outliner รู้สึกอิสระที่จะใช้ความคิดของพวกเขา นำมาจากโครงการcodeplexนี้

2
คุณจะใช้ Google Search อย่างไร [ปิด]
สมมติว่าคุณถูกถามในการสัมภาษณ์ "คุณจะใช้ Google Search อย่างไร" คุณจะตอบคำถามนี้อย่างไร อาจมีแหล่งข้อมูลที่อธิบายว่ามีการใช้งานชิ้นส่วนบางอย่างใน Google ได้อย่างไร (BigTable, MapReduce, PageRank, ... ) แต่ไม่เหมาะสำหรับการสัมภาษณ์ คุณจะใช้สถาปัตยกรรมใดโดยรวมและคุณจะอธิบายสิ่งนี้อย่างไรในช่วงเวลา 15-30 นาที ฉันจะเริ่มต้นด้วยการอธิบายวิธีสร้างเครื่องมือค้นหาที่จัดการกับเอกสาร ~ 100k แล้วขยายสิ่งนี้ด้วยการส่งผ่านเอกสารประมาณ 50 ล้านเอกสารจากนั้นอาจก้าวกระโดดทางสถาปัตยกรรม / ทางเทคนิคอื่น นี่คือมุมมอง 20,000 ฟุต สิ่งที่ฉันต้องการคือรายละเอียด - คุณจะตอบอย่างไรในการสัมภาษณ์ โครงสร้างข้อมูลใดที่คุณจะใช้ สถาปัตยกรรมของคุณประกอบด้วยบริการ / เครื่องจักรใด เวลาแฝงของแบบสอบถามทั่วไปจะเป็นอย่างไร สิ่งที่เกี่ยวกับปัญหา failover / split brain? ฯลฯ ...

14
การทดสอบหน่วยของอัลกอริทึมแบบสุ่ม / ไม่กำหนด
โครงการปัจจุบันของฉันรวบรัดเกี่ยวข้องกับการสร้าง "เหตุการณ์แบบสุ่ม - จำกัด " ฉันกำลังสร้างตารางการตรวจสอบ บางคนขึ้นอยู่กับข้อ จำกัด ของตารางที่เข้มงวด คุณทำการตรวจสอบสัปดาห์ละครั้งในวันศุกร์เวลา 10:00 น. การตรวจสอบอื่น ๆ คือ "สุ่ม"; มีข้อกำหนดขั้นพื้นฐานที่กำหนดค่าได้เช่น "การตรวจสอบจะต้องเกิดขึ้น 3 ครั้งต่อสัปดาห์", "การตรวจสอบจะต้องเกิดขึ้นระหว่างเวลา 9.00 น. - 21.00 น." และ "ไม่ควรมีการตรวจสอบสองครั้งภายในระยะเวลา 8 ชั่วโมงเดียวกัน" แต่ ภายในข้อ จำกัด ใดก็ตามที่กำหนดค่าไว้สำหรับชุดการตรวจสอบเฉพาะวันที่และเวลาที่เกิดขึ้นไม่ควรคาดเดาได้ การทดสอบหน่วยและ TDD, IMO มีคุณค่าอย่างมากในระบบนี้เนื่องจากสามารถใช้ในการสร้างแบบเพิ่มหน่วยในขณะที่ข้อกำหนดทั้งหมดยังไม่สมบูรณ์และทำให้แน่ใจว่าฉันไม่ได้ "ทำวิศวกรรมมากเกินไป" เพื่อทำสิ่งที่ฉันทำ ตอนนี้ฉันรู้ว่าฉันต้องการ ตารางงานที่เข้มงวดเป็นงานชิ้นเอกสำหรับ TDD อย่างไรก็ตามฉันพบว่ามันยากที่จะกำหนดสิ่งที่ฉันกำลังทดสอบเมื่อฉันเขียนการทดสอบสำหรับส่วนที่สุ่มของระบบ ฉันสามารถยืนยันได้ว่าเวลาทั้งหมดที่ผลิตโดยตัวจัดตารางเวลาจะต้องตกอยู่ภายใต้ข้อ จำกัด แต่ฉันสามารถใช้อัลกอริทึมที่ผ่านการทดสอบดังกล่าวทั้งหมดโดยไม่มีเวลาที่แท้จริง "สุ่ม" มาก ในความเป็นจริงนั้นเป็นสิ่งที่เกิดขึ้นจริง …

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

28
อัลกอริทึมที่สำคัญสำหรับมนุษย์ในทศวรรษที่ผ่านมาคืออะไร? [ปิด]
อัลกอริทึมที่สำคัญที่สุดในโลกใดที่มีส่วนช่วยมนุษย์ในทศวรรษที่ผ่านมามากที่สุด? ฉันคิดว่านี่เป็นความรู้ทั่วไปที่ดีสำหรับนักพัฒนาที่จะรู้ ปรับปรุง: ถ้าเป็นไปได้โปรดเก็บคำตอบของอัลกอริทึมการเขียนโปรแกรมเฉพาะไว้ ฉันต้องการได้รับรายชื่อของสิ่งที่สำคัญที่สุดเพียงหนึ่งอัลกอริทึมต่อคำตอบ โปรดพิจารณาว่าทำไมอัลกอริทึมจึงสำคัญและสำคัญ ...

20
มีอัลกอริธึมในโลกแห่งความเป็นจริงที่มีประสิทธิภาพสูงกว่าในชั้นเรียนด้านล่างหรือไม่? [ปิด]
เมื่อคืนฉันพูดคุยกับโปรแกรมเมอร์คนอื่นว่าถึงแม้บางอย่างอาจเป็น O (1) การดำเนินการที่เป็น O (n) อาจเหนือกว่าถ้ามีค่าคงที่ขนาดใหญ่ในอัลกอริทึม O (1) เขาไม่เห็นด้วยดังนั้นฉันจึงนำมันมาที่นี่ มีตัวอย่างของอัลกอริทึมที่มีประสิทธิภาพสูงกว่าในคลาสด้านล่างหรือไม่? ตัวอย่างเช่น O (n) เร็วกว่า O (1) หรือ O (n 2 ) เร็วกว่า O (n) ศาสตร์นี้สามารถแสดงให้เห็นถึงฟังก์ชั่นที่มีขอบเขตบนซีมโทติคเมื่อคุณมองข้ามปัจจัยคงที่ แต่อัลกอริทึมดังกล่าวมีอยู่ในป่าหรือไม่? และฉันจะหาตัวอย่างของพวกเขาได้ที่ไหน พวกเขาใช้สถานการณ์ประเภทใด
39 algorithms  big-o 

10
ฉันจะเรียนรู้อัลกอริทึมและโครงสร้างข้อมูลได้อย่างไร [ปิด]
นี่คือความต่อเนื่องของคำถามก่อนหน้าของฉันที่ฉันถามมันจำเป็นต้องเรียนรู้อัลกอริทึมและโครงสร้างข้อมูล ฉันรู้สึกว่าใช่ ตอนนี้ฉันทำงานในสภาพแวดล้อมที่ฉันจะไม่ได้รับโอกาสที่จะเรียนรู้มันโดยการทดลองหรือปฏิบัติหรือในการมอบหมายใด ๆ อะไรคือแนวทางที่ถูกต้องเช่นหนังสือที่ถูกต้องปัญหาที่เหมาะสมประเภทของทรัพยากรที่ฉันสามารถผ่านเพื่อให้เวลาหกเดือนหรือหนึ่งปีหรือสองปีเพื่อเรียนรู้อัลกอริทึมและโครงสร้างข้อมูล และสร้างความคิดของฉันในแบบที่มันสามารถเชื่อมโยงปัญหากับโครงสร้างข้อมูลและอัลกอริทึม

8
ควรใช้ DAG (Directed Acyclic Graph) ในการเขียนโปรแกรมเมื่อใด
ฉันเพิ่งพบกรอบชื่อecto ในเฟรมเวิร์กนี้ส่วนประกอบพื้นฐานที่ชื่อว่า"พลาสม่า"ซึ่งเป็นกราฟเชิงเส้นกำกับของ ecto ใน ecto พลาสซึมสามารถดำเนินการได้โดยตัวจัดตารางเวลาของ ecto ฉันสงสัยว่ากลไกนี้มีประโยชน์อย่างไรและในสถานการณ์อื่นใดที่เราสามารถใช้ประโยชน์จากแนวคิดของ DAG ได้?

11
อัลกอริธึมการสร้างตัวเลขสุ่มสำหรับสมองมนุษย์? [ปิด]
คุณรู้หรือไม่หรือคุณคิดว่ามีอัลกอริทึม "in-head" ที่เป็นประโยชน์และเรียนรู้ได้ง่าย ๆ ที่ให้มนุษย์สร้างตัวเลขสุ่ม (ค่อนข้าง "จริง") หรือไม่? โดย "in-head" ฉันหมายถึง .. โดยเฉพาะอย่างยิ่งไม่มีเครื่องมือหรืออุปกรณ์ภายนอกใด ๆ นอกจากนี้ยังต้องการการส่งออกสูง (ตัวเลขสุ่มหลายต่อนาที) ถามในเรื่องนี้ แต่มันก็ไม่ได้รับความสนใจมากนัก บางทีนี่อาจจะเหมาะสำหรับโปรแกรมเมอร์

12
ฉันจำเป็นต้องเข้าใจอัลกอริทึมและโครงสร้างข้อมูลเพื่อที่จะเรียกว่าโปรแกรมเมอร์หรือไม่? [ปิด]
หกปีแล้วที่ฉันเขียนโปรแกรม การเขียนโค้ดลงในทุกสิ่งเช่น ActionScript, JavaScript, Java, PHP, Ajax, XML HTML, ASP และอื่น ๆ ฉันใช้อาร์เรย์, แผนที่, รายการที่เชื่อมโยง, ชุด, ฯลฯ ทุกที่ที่ฉันทำงานคนเช่นฉัน แต่เมื่อใดก็ตามที่ฉันสัมภาษณ์มันมีโอกาสมากที่ผู้คนจะถามฉันเกี่ยวกับแฮชต้นไม้กองและคิว คำถามบางข้อเกี่ยวกับการเล่นกลอัลกอริทึมการเรียงลำดับ ฉันไม่รู้ว่าควรจะรู้จักพวกเขาจริง ๆ หรือฉันควรหยุดเรียกตัวเองว่าเป็นโปรแกรมเมอร์ มีบางอย่างในตัวฉันที่บอกฉันด้วยถึงแม้ว่าคนที่ถามคำถามเหล่านี้ทั้งหมดจะเลือกฉันพวกเขาจะไม่ทำให้ฉันทำงานกับสิ่งเหล่านี้ ฉันจำเป็นต้องรู้ทั้งหมดนี้จริง ๆ หรือไม่

10
จะตรวจสอบว่า 4 คะแนนเป็นสี่เหลี่ยมได้อย่างไร?
สมมติว่าฉันมี 4 คะแนน (เป็น 2 มิติ) ซึ่งแตกต่างจากกันและฉันต้องการทราบว่าพวกเขาเป็นรูปสี่เหลี่ยมจัตุรัสหรือไม่ ทำอย่างไร? (ให้กระบวนการง่ายที่สุดเท่าที่จะทำได้)

9
อัลกอริทึมสำคัญกว่าภาษาโปรแกรมหรือไม่
ในระหว่างการประกวดGoogle Code Jamปัจจุบัน (2013) มีปัญหาที่เกิดขึ้นกับคน C ++ และ Java มากกว่า 200 บรรทัดเมื่อเทียบกับคน Python ที่แก้ไขปัญหาเดียวกันโดยใช้รหัส 40 บรรทัดเท่านั้น Python ไม่สามารถเทียบเคียงได้โดยตรงกับ C ++ และ Java แต่ความแตกต่างของคำฟุ่มเฟื่อยที่ฉันคิดว่าอาจมีอิทธิพลต่อประสิทธิภาพของอัลกอริทึม การรู้อัลกอริทึมที่ถูกต้องสำคัญอย่างไรเมื่อเทียบกับการเลือกภาษา สามารถใช้โปรแกรม Python ที่ใช้งานได้ดีใน C ++ หรือ Java ในวิธีที่ดีกว่า (ใช้อัลกอริทึมเดียวกัน) และสิ่งนี้มีความสัมพันธ์กับการใช้คำฟุ่มเฟื่อยตามธรรมชาติของภาษาโปรแกรมบางภาษาหรือไม่?
35 java  c++  algorithms  python 

4
โครงสร้างข้อมูลเบื้องหลังสเปรดชีตคืออะไร
ฉันต้องการเข้าใจว่าสเปรดชีต (กลุ่มของเซลล์ที่ระบุชื่อหรือที่ระบุไว้เป็นอย่างอื่นที่มีค่าหรือสูตรที่อ้างอิงเซลล์อื่น ๆ ) ได้รับการแก้ไขอย่างไร ฉันลองดูโครงการที่มีอยู่แล้ว แต่มีมากขึ้นกับ GUI, การทำให้เป็นอนุกรม, กิจกรรม, ฯลฯ ที่ฉันไม่พบสเปรดชีต ที่ง่ายที่สุดมันทำงานอย่างไร

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