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

อัลกอริทึมเป็นลำดับขั้นตอนที่กำหนดไว้อย่างดีซึ่งกำหนดวิธีแก้ปัญหาแบบนามธรรมให้กับปัญหา ใช้แท็กนี้เมื่อปัญหาของคุณเกี่ยวข้องกับการออกแบบอัลกอริทึม

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

30
การเรียงลำดับตัวเลข 1 หลัก 8 หลัก 8 หลักพร้อม RAM 1 MB
ฉันมีคอมพิวเตอร์ที่มี RAM ขนาด 1 MB และไม่มีที่เก็บในตัวเครื่องอื่น ฉันต้องใช้มันเพื่อรับ 1 ล้าน 8 หลักเลขทศนิยมผ่านการเชื่อมต่อ TCP เรียงลำดับแล้วส่งรายการที่เรียงลำดับออกไปผ่านการเชื่อมต่อ TCP อื่น รายการตัวเลขอาจมีซ้ำซึ่งฉันต้องไม่ทิ้ง รหัสจะถูกวางใน ROM ดังนั้นฉันไม่จำเป็นต้องลบขนาดของรหัสของฉันจาก 1 MB ฉันมีรหัสเพื่อขับเคลื่อนพอร์ต Ethernet และจัดการการเชื่อมต่อ TCP / IP และต้องใช้ 2 KB สำหรับข้อมูลสถานะรวมถึงบัฟเฟอร์ 1 KB ผ่านที่รหัสจะอ่านและเขียนข้อมูล มีวิธีแก้ไขปัญหานี้หรือไม่? แหล่งที่มาของคำถามและคำตอบ: slashdot.org cleaton.net

30
ขยายช่วงแบบสุ่มจาก 1-5 เป็น 1–7
รับฟังก์ชั่นที่สร้างจำนวนเต็มแบบสุ่มในช่วง 1 ถึง 5 ให้เขียนฟังก์ชันที่สร้างจำนวนเต็มแบบสุ่มในช่วง 1 ถึง 7 ทางออกที่ง่ายคืออะไร? โซลูชั่นที่มีประสิทธิภาพในการลดการใช้หน่วยความจำหรือรันบน CPU ที่ช้ากว่าคืออะไร
693 algorithm  random  puzzle 

30
สร้างจำนวนเต็มที่ไม่ใช่หนึ่งในสี่พันล้านที่ได้รับ
ฉันได้รับคำถามสัมภาษณ์นี้: ให้อินพุตไฟล์ที่มีจำนวนเต็มสี่พันล้านชุดให้อัลกอริทึมในการสร้างจำนวนเต็มซึ่งไม่ได้อยู่ในไฟล์ สมมติว่าคุณมีหน่วยความจำ 1 GB ติดตามสิ่งที่คุณจะทำถ้าคุณมีหน่วยความจำเพียง 10 MB การวิเคราะห์ของฉัน: ขนาดของไฟล์คือ 4 × 10 9 × 4 ไบต์ = 16 GB เราสามารถทำการจัดเรียงภายนอกได้ดังนั้นจึงแจ้งให้เราทราบช่วงของจำนวนเต็ม คำถามของฉันคือวิธีที่ดีที่สุดในการตรวจจับจำนวนเต็มหายไปในชุดจำนวนเต็มเรียงลำดับขนาดใหญ่? ความเข้าใจของฉัน (หลังจากอ่านคำตอบทั้งหมด): สมมติว่าเรากำลังพูดถึงจำนวนเต็ม 32 บิตมี 2 32 = 4 * 10 9จำนวนเต็มชัดเจน กรณีที่ 1: เรามี 1 GB = 1 * 10 9 * 8 บิต = หน่วยความจำ 8 …

30
ฉันจะสร้างตัวย่อ URL ได้อย่างไร
ฉันต้องการสร้างบริการตัวย่อ URL ที่คุณสามารถเขียน URL แบบยาวลงในช่องป้อนข้อมูลและบริการจะย่อ URL ให้เป็น " http://www.example.org/abcdef" แทนที่จะเป็น " abcdef" จะมีสตริงอื่นที่มีอักขระหกตัวที่บรรจุa-z, A-Z and 0-9อยู่ นั่นทำให้สตริงที่เป็นไปได้ 56 ~ 57 พันล้าน แนวทางของฉัน: ฉันมีตารางฐานข้อมูลที่มีสามคอลัมน์: id, จำนวนเต็ม, การเพิ่มอัตโนมัติ long, string, URL แบบยาวที่ผู้ใช้ป้อน สั้น, สตริง, URL ที่ย่อ (หรือเพียงแค่หกตัวอักษร) ฉันจะแทรก URL ที่มีความยาวลงในตาราง จากนั้นฉันจะเลือกค่าการเพิ่มอัตโนมัติสำหรับ " id" และสร้างแฮชของมัน ควรแทรกแฮชนี้เป็น " short" แต่ควรจะสร้างแฮชแบบไหน อัลกอริธึมแฮเช่น MD5 สร้างสายยาวเกินไป ฉันไม่ได้ใช้อัลกอริทึมเหล่านี้ฉันคิดว่า …
667 algorithm  url 

30
วิธีสร้างพีชคณิตทั้งหมดของรายการ?
คุณจะสร้างพีชคณิตทั้งหมดของรายการใน Python โดยไม่ขึ้นกับประเภทขององค์ประกอบในรายการได้อย่างไร ตัวอย่างเช่น: permutations([]) [] permutations([1]) [1] permutations([1, 2]) [1, 2] [2, 1] permutations([1, 2, 3]) [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1]

13
ความแตกต่างระหว่างอัลกอริทึมกำเนิดและการเลือกปฏิบัติคืออะไร?
ได้โปรดช่วยฉันเข้าใจความแตกต่างระหว่างอัลกอริธึมกำเนิดและการ แบ่งแยกโดยคำนึงถึงว่าฉันเป็นแค่มือใหม่

24
วิธีตรวจสอบว่าตัวเลขนั้นมีค่าเป็น 2 หรือไม่
วันนี้ฉันต้องการอัลกอริทึมอย่างง่ายสำหรับการตรวจสอบว่าตัวเลขมีค่าเป็น 2 หรือไม่ อัลกอริทึมจะต้อง: ง่าย ถูกต้องสำหรับulongค่าใด ๆ ฉันมากับอัลกอริทึมง่าย ๆ นี้: private bool IsPowerOfTwo(ulong number) { if (number == 0) return false; for (ulong power = 1; power > 0; power = power << 1) { // This for loop used shifting for powers of 2, meaning // that the value …
584 c#  algorithm  math 

30
อัลกอริทึมเพื่อส่งคืนการรวมกันทั้งหมดขององค์ประกอบ k จาก n
ฉันต้องการเขียนฟังก์ชั่นที่ใช้อาร์เรย์ของตัวอักษรเป็นอาร์กิวเมนต์และเลือกตัวอักษรเหล่านั้นจำนวนหนึ่ง สมมติว่าคุณมีอาร์เรย์ 8 ตัวอักษรและต้องการเลือก 3 ตัวอักษรจากนั้น จากนั้นคุณควรจะได้รับ: 8! / ((8 - 3)! * 3!) = 56 อาร์เรย์ (หรือคำ) ในทางกลับกันประกอบด้วย 3 ตัวอักษรแต่ละตัว

5
คำอธิบายอย่างง่ายของการจำแนก Naive Bayes
ฉันพบว่ามันยากที่จะเข้าใจกระบวนการของ Naive Bayes และฉันสงสัยว่ามีคนอธิบายได้ด้วยขั้นตอนง่าย ๆ เป็นภาษาอังกฤษ ฉันเข้าใจว่าต้องใช้การเปรียบเทียบตามเวลาที่เกิดขึ้นเป็นความน่าจะเป็น แต่ฉันไม่รู้ว่าข้อมูลการฝึกอบรมนั้นเกี่ยวข้องกับชุดข้อมูลจริงอย่างไร โปรดอธิบายให้ฉันฟังว่าชุดฝึกอบรมมีบทบาทอย่างไร ฉันให้ตัวอย่างง่ายๆสำหรับผลไม้ที่นี่เช่นกล้วยเป็นต้น training set--- round-red round-orange oblong-yellow round-red dataset---- round-red round-orange round-red round-orange oblong-yellow round-red round-orange oblong-yellow oblong-yellow round-red

18
ขั้นตอนวิธีใดที่คำนวณทิศทางจากจุด A ไปยังจุด B บนแผนที่
ผู้ให้บริการแผนที่ (เช่น Google หรือ Yahoo! Maps) จะแนะนำเส้นทางอย่างไร ฉันหมายถึงพวกเขาอาจมีข้อมูลจริงในบางรูปแบบรวมถึงระยะทาง แต่บางทีสิ่งต่าง ๆ เช่นความเร็วในการขับขี่การปรากฏตัวของทางเท้าตารางรถไฟเป็นต้น แต่สมมติว่าข้อมูลอยู่ในรูปแบบที่ง่ายกว่าพูดกราฟที่มีขนาดใหญ่มาก ด้วยน้ำหนักที่ขอบซึ่งสะท้อนระยะทาง ฉันต้องการคำนวณทิศทางจากจุดหนึ่งไปยังอีกจุดหนึ่งอย่างรวดเร็ว บางครั้งจุดเหล่านี้จะอยู่ติดกัน (ภายในเมืองเดียว) ในขณะที่บางครั้งมันจะอยู่ห่างกัน (ข้ามประเทศ) อัลกอริทึมกราฟเช่นอัลกอริธึมของ Dijkstra จะไม่ทำงานเพราะกราฟมีขนาดใหญ่มาก โชคดีที่อัลกอริทึมแบบฮิวริสติกเช่น A * อาจใช้งานได้ อย่างไรก็ตามข้อมูลของเรามีโครงสร้างมากและบางทีวิธีการทำเป็นชั้นบางอย่างอาจใช้งานได้? (ตัวอย่างเช่นจัดเก็บเส้นทางที่คำนวณล่วงหน้าระหว่างจุด "คีย์" บางจุดที่อยู่ไกลกันรวมถึงเส้นทางท้องถิ่นบางแห่งจากนั้นเส้นทางสำหรับจุดที่อยู่ห่างไกลสองแห่งจะเกี่ยวข้องกับเส้นทางในท้องถิ่นไปยังจุดสำคัญเส้นทางโลกไปยังจุดสำคัญอื่น ๆ เส้นทางอีกครั้ง) จริง ๆ แล้วอัลกอริทึมที่ใช้ในทางปฏิบัติคืออะไร? PS คำถามนี้มีแรงจูงใจจากการค้นหานิสัยใจคอในทิศทางการทำแผนที่ออนไลน์ ขัดกับความไม่เท่าเทียมกันสามเหลี่ยมบางครั้ง Google Maps คิดว่าXZใช้เวลานานและเป็นที่ไกลออกไปกว่าการใช้จุดกลางในขณะที่XYZ แต่บางทีเส้นทางการเดินของพวกเขาอาจปรับพารามิเตอร์อื่นให้เหมาะสม PPS นี่คือการละเมิดความไม่เท่าเทียมกันรูปสามเหลี่ยมที่แสดงให้เห็น (ให้ฉัน) ที่พวกเขาใช้ประเภทของวิธีการบางฉัตรอื่น: XZเมื่อเทียบกับXYZ อดีตดูเหมือนว่าจะใช้ Boulevard de Sebastopol …

30
วิธีที่มีประสิทธิภาพมากที่สุดสำหรับการเปรียบเทียบแบบลอยและแบบคู่คืออะไร
อะไรจะเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการเปรียบเทียบค่าdoubleสองหรือสองfloatค่า การทำเช่นนี้ไม่ถูกต้อง: bool CompareDoubles1 (double A, double B) { return A == B; } แต่สิ่งที่ชอบ: bool CompareDoubles2 (double A, double B) { diff = A - B; return (diff < EPSILON) && (-diff < EPSILON); } ดูเหมือนว่าการแปรรูปขยะ ไม่มีใครรู้ว่าเครื่องมือเปรียบเทียบที่ชาญฉลาดกว่านี้คือใคร?

14
วิธีที่มีประสิทธิภาพ / สง่างามที่สุดในการวิเคราะห์ตารางแบนเป็นต้นไม้คืออะไร?
สมมติว่าคุณมีตารางแบนที่จัดเก็บลำดับชั้นต้นไม้ที่สั่งซื้อ: Id Name ParentId Order 1 'Node 1' 0 10 2 'Node 1.1' 1 10 3 'Node 2' 0 20 4 'Node 1.1.1' 2 10 5 'Node 2.1' 3 10 6 'Node 1.2' 1 20 [id] Nameนี่คือแผนภาพที่เรามี รูตโหนด 0 เป็นแบบสมมติ [0] รูท / \ [1] โหนด 1 [3] โหนด 2 …

27
คุณตรวจจับประเภทบัตรเครดิตตามหมายเลขได้อย่างไร
ฉันกำลังพยายามหาวิธีตรวจสอบประเภทของบัตรเครดิตตามหมายเลขอย่างหมดจด ไม่มีใครรู้วิธีที่ชัดเจนและเชื่อถือได้ในการค้นหาสิ่งนี้?

17
การสร้าง heap จะเป็นความซับซ้อนของเวลา O (n) ได้อย่างไร
ใครช่วยอธิบายได้ว่าการสร้างกองเป็นความซับซ้อน O (n) ได้อย่างไร การแทรกรายการลงในกองคือO(log n)และแทรกซ้ำแล้วซ้ำอีก n / 2 ครั้ง (ส่วนที่เหลือเป็นใบไม้และไม่สามารถละเมิดคุณสมบัติกองได้) ดังนั้นนี่หมายถึงความซับซ้อนที่O(n log n)ฉันควรจะคิด กล่าวอีกนัยหนึ่งสำหรับแต่ละรายการที่เรา "heapify" มีความเป็นไปได้ที่จะกรองลงหนึ่งครั้งสำหรับแต่ละระดับสำหรับ heap จนถึงตอนนี้ (ซึ่งเป็นระดับ log n) ฉันพลาดอะไรไป

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