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

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

16
วิธีการคำนวณมุมจากสามจุด? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ บอกว่าคุณมีสิ่งนี้: P1 = (x=2, y=50) P2 = (x=9, y=40) P3 = (x=5, y=20) สมมติว่าP1เป็นจุดศูนย์กลางของวงกลม มันมักจะเหมือนกัน ฉันต้องการมุมที่ถูกสร้างขึ้นโดยP2และP3หรือในคำอื่น ๆ P1มุมที่อยู่ถัดไป มุมด้านในให้แม่นยำ มันจะเป็นมุมแหลมเสมอดังนั้นน้อยกว่า -90 องศา ฉันคิดว่า: ผู้ชายนั่นคือคณิตศาสตร์เรขาคณิตง่ายๆ แต่ตอนนี้ฉันมองหาสูตรมาประมาณ 6 ชั่วโมงแล้วและพบเพียงคนที่พูดถึงสิ่งที่ซับซ้อนของ NASA เช่น arccos และผลิตภัณฑ์สเกลาร์เวกเตอร์ หัวของฉันรู้สึกเหมือนอยู่ในตู้เย็น กูรูคณิตศาสตร์บางคนที่คิดว่านี่เป็นปัญหาง่ายๆ? ฉันไม่คิดว่าภาษาการเขียนโปรแกรมมีความสำคัญที่นี่ แต่สำหรับผู้ที่คิดว่ามันทำได้: java และ …
120 algorithm  math  geometry 

5
มีการรับประกันอะไรบ้างเกี่ยวกับความซับซ้อนของเวลาทำงาน (Big-O) ของวิธีการ LINQ?
ฉันเพิ่งเริ่มใช้ LINQ ได้ไม่นานและฉันไม่เห็นการกล่าวถึงความซับซ้อนของรันไทม์สำหรับวิธีการใด ๆ ของ LINQ เลย เห็นได้ชัดว่ามีหลายปัจจัยในการเล่นที่นี่ดังนั้นขอ จำกัด การสนทนาเฉพาะIEnumerableผู้ให้บริการ LINQ-to-Objects ธรรมดา นอกจากนี้สมมติว่าสิ่งที่Funcส่งผ่านมาเป็นตัวเลือก / ตัวเปลี่ยน / ฯลฯ เป็นการดำเนินการ O (1) ราคาถูก ดูเหมือนว่าเห็นได้ชัดว่าทุกการดำเนินงานที่ผ่านเดียว ( Select, Where, Count, Take/Skip, Any/Allฯลฯ ) จะ O (n) เนื่องจากพวกเขาจะต้องเดินตามลำดับเมื่อ; แม้ว่าเรื่องนี้จะเป็นเรื่องขี้เกียจก็ตาม สิ่งต่าง ๆ มีความซับซ้อนมากขึ้นสำหรับการดำเนินการที่ซับซ้อนมากขึ้น ชุดเหมือนผู้ประกอบการ ( Union, Distinct, Exceptฯลฯ ) การทำงานโดยใช้GetHashCodeค่าเริ่มต้น (AFAIK) ดังนั้นจึงดูเหมือนว่าเหมาะสมที่จะถือว่าพวกเขากำลังใช้กัญชาตารางภายในทำให้การดำเนินงานเหล่า O (n) เช่นกันโดยทั่วไป สิ่งที่เกี่ยวกับเวอร์ชันที่ใช้IEqualityComparer? …

30
อัลกอริทึมเพื่อสร้างการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดของรายการ?
สมมติว่าฉันมีรายการขององค์ประกอบ n ฉันรู้ว่ามี n! วิธีที่เป็นไปได้ในการจัดลำดับองค์ประกอบเหล่านี้ อัลกอริทึมในการสร้างลำดับที่เป็นไปได้ทั้งหมดของรายการนี้คืออะไร? ตัวอย่างเช่นฉันมีรายการ [a, b, c] อัลกอริทึมจะส่งคืน [[a, b, c], [a, c, b,], [b, a, c], [b, c, a], [c, a, b], [c, b , ก]]. ฉันกำลังอ่านที่นี่ http://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations แต่วิกิพีเดียไม่เคยอธิบายได้ดี ฉันไม่เข้าใจมันมากนัก

27
วิธีใดที่เร็วที่สุด / มีประสิทธิภาพที่สุดในการค้นหาบิตชุดสูงสุด (msb) ในจำนวนเต็มใน C
ถ้าฉันมีจำนวนเต็ม n และฉันต้องการทราบตำแหน่งของบิตที่มีนัยสำคัญที่สุด (นั่นคือถ้าบิตที่มีนัยสำคัญน้อยที่สุดอยู่ทางขวาฉันต้องการทราบตำแหน่งของบิตทางซ้ายที่ไกลที่สุดซึ่งเป็น 1) วิธีใดที่เร็วที่สุด / มีประสิทธิภาพที่สุดในการค้นหา ฉันรู้ว่า POSIX สนับสนุนffs()วิธีการใน strings.h เพื่อค้นหาบิตชุดแรก แต่ดูเหมือนจะไม่มีfls()วิธีที่เกี่ยวข้อง มีวิธีที่ชัดเจนในการทำสิ่งนี้ที่ฉันพลาดไปหรือไม่? แล้วในกรณีที่คุณไม่สามารถใช้ฟังก์ชัน POSIX เพื่อการพกพาได้ล่ะ? แก้ไข: สิ่งที่เกี่ยวกับโซลูชันที่ใช้ได้กับสถาปัตยกรรมทั้ง 32 และ 64 บิต (รายการรหัสหลายรายการดูเหมือนว่าจะใช้ได้เฉพาะกับ 32 บิตเท่านั้น)


6
การคำนวณอย่างง่ายสำหรับการทำงานกับ lat / lon และ km distance?
มีการคำนวณง่ายๆที่ฉันสามารถทำได้หรือไม่ซึ่งจะแปลง km เป็นค่าที่ฉันสามารถเพิ่มลงใน lat หรือ lon เพื่อคำนวณกรอบขอบเขตสำหรับการค้นหาได้หรือไม่ ไม่จำเป็นต้องถูกต้องสมบูรณ์ ตัวอย่างเช่น: ถ้าฉันได้ lat / lon สำหรับลอนดอนประเทศอังกฤษ (51.5001524, -0.1262362) และฉันต้องการคำนวณว่าละติจูดจะอยู่ห่างจากจุดนั้นไปทางตะวันออก / ตะวันตก 25 กม. เท่าใดและพื้นที่จะเท่ากับ 25 กม. เหนือ / ใต้ จุดฉันต้องทำอะไรเพื่อแปลง 25 กม. เป็นทศนิยมเพื่อเพิ่มค่าด้านบน ฉันกำลังมองหากฎทั่วไปเช่น: 1km == +/- 0.XXX แก้ไข: การค้นหา "lat lon" เดิมของฉันไม่ได้ผลลัพธ์นี้: จะคำนวณกล่องขอบเขตสำหรับตำแหน่ง lat / lng ที่กำหนดได้อย่างไร คำตอบที่ยอมรับนั้นเพียงพอสำหรับความต้องการของฉัน

30
ออกแบบสแต็กที่ getMinimum () ควรเป็น O (1)
นี่เป็นหนึ่งในคำถามสัมภาษณ์ คุณต้องออกแบบสแต็กที่เก็บค่าจำนวนเต็มเพื่อให้ฟังก์ชัน getMinimum () ส่งคืนองค์ประกอบต่ำสุดในสแต็ก ตัวอย่างเช่นพิจารณาตัวอย่างด้านล่าง กรณีที่ # 1 5 -> ด้านบน 1 4 6 2 เมื่อเรียกว่า getMinimum () ควรส่งคืน 1 ซึ่งเป็นองค์ประกอบขั้นต่ำ ในกอง กรณีที่ # 2 stack.pop () stack.pop () หมายเหตุ: ทั้ง 5 และ 1 จะดึงออกมาจากสแต็ก ดังนั้นหลังจากนี้กอง ดูเหมือนกับ, 4 -> ด้านบน 6 2 เมื่อเรียก getMinimum () ควรส่งคืน 2 ซึ่งเป็นค่าต่ำสุดใน ซ้อนกัน. …

6
ขั้นตอนวิธีการตัดเล็บเท้าของชาวยิวที่ดีที่สุดคืออะไร?
ฉันกำลังทำงานกับซอฟต์แวร์สำหรับเครื่องที่จะตัดเล็บเท้าโดยอัตโนมัติเพื่อให้ผู้ใช้สามารถสอดเท้าเข้าไปแล้ววิ่งได้แทนที่จะต้องทำด้วยตนเองโดยการกัดหรือใช้กรรไกรตัดเล็บ ฐานผู้ใช้ที่มีศักยภาพของเราจำนวนมากน่าจะเป็นชาวยิวและเห็นได้ชัดว่ามีประเพณีเกี่ยวกับการไม่ตัดเล็บเท้า ( หรือเล็บมือ ) ตามลำดับ ดูเหมือนจะมีความเห็นที่ไม่เห็นด้วยกับการนำประเพณีนี้ไปใช้อย่างถูกต้อง แต่เราคิดว่ากฎต่อไปนี้เพียงพอที่จะรองรับผู้ที่ปฏิบัติทางศาสนาห้ามไม่ให้ตัดเล็บเท้าตามลำดับ: ไม่ควรตัดเล็บเท้า 2 ข้างติดกัน ลำดับการตัดที่เท้าซ้ายไม่ควรตรงกับลำดับที่เท้าขวา ลำดับการตัดของการวิ่งสองครั้งติดต่อกันไม่ควรเหมือนกัน ลำดับไม่ควรคาดเดาได้ง่ายดังนั้นการเข้ารหัสลำดับแบบสลับจึงไม่ทำงาน นี่คือวิธีที่เราตัดสินใจที่จะนับนิ้วเท้า: 5 4 3 2 1 1 2 3 4 5 Left foot Right foot ฉันได้เขียนรหัสในการแก้ปัญหา แต่อัลกอริทึมที่ใช้ย่อยที่ดีที่สุด: ในความเป็นจริงการปฏิบัติงานในกรณีที่เลวร้ายที่สุดคือO (∞) วิธีการทำงานก็เปรียบได้กับbogosort นี่คือการลดความซับซ้อนของรหัสเทียมของรหัสจริงที่ใช้: function GenerateRandomSequence sequence = Array[5] foreach (item in sequence) item = RandomNumberBetween(1,5) return sequence function …

9
Cache Invalidation - มีวิธีแก้ปัญหาทั่วไปหรือไม่?
"มีปัญหาหนักเพียงสองประการในวิทยาการคอมพิวเตอร์: การทำให้แคชไม่ถูกต้องและการตั้งชื่อสิ่งต่างๆ" ฟิลคาร์ลตัน มีวิธีแก้ปัญหาหรือวิธีการทั่วไปในการทำให้แคชเป็นโมฆะหรือไม่ หากต้องการทราบว่ารายการค้างดังนั้นคุณจึงรับประกันได้ว่าจะได้รับข้อมูลใหม่เสมอ? ตัวอย่างเช่นพิจารณาฟังก์ชันgetData()ที่รับข้อมูลจากไฟล์ มันจะแคชตามเวลาที่แก้ไขล่าสุดของไฟล์ซึ่งจะตรวจสอบทุกครั้งที่เรียก จากนั้นคุณเพิ่มฟังก์ชันที่สองtransformData()ซึ่งจะแปลงข้อมูลและเก็บผลลัพธ์ไว้สำหรับครั้งต่อไปที่เรียกใช้ฟังก์ชัน ไม่มีความรู้เกี่ยวกับไฟล์ - คุณจะเพิ่มการอ้างอิงได้อย่างไรว่าหากไฟล์ถูกเปลี่ยนแคชนี้จะไม่ถูกต้อง? คุณสามารถโทรgetData()ทุกครั้งที่transformData()มีการเรียกและเปรียบเทียบกับค่าที่ใช้ในการสร้างแคช แต่อาจมีค่าใช้จ่ายสูงมาก

15
เทคนิคนี้เป็นอัลกอริทึม O (1) สำหรับ“ Hello World” หรือไม่
นี่จะจัดเป็นอัลกอริทึม O (1) สำหรับ "Hello, World!" หรือไม่ ?? public class Hello1 { public static void Main() { DateTime TwentyYearsLater = new DateTime(2035,01,01); while ( DateTime.Now < TwentyYearsLater ) { System.Console.WriteLine("It's still not time to print the hello ..."); } System.Console.WriteLine("Hello, World!"); } } ฉันกำลังคิดว่าจะใช้ไฟล์ DateTime TwentyYearsLater = new DateTime(2035,01,01); while …
117 c#  .net  algorithm  big-o 

16
อัลกอริทึมกราฟเพื่อค้นหาการเชื่อมต่อทั้งหมดระหว่างจุดยอดสองจุดตามอำเภอใจ
ฉันกำลังพยายามกำหนดอัลกอริทึมด้านเวลาที่มีประสิทธิภาพสูงสุดเพื่อทำงานที่อธิบายไว้ด้านล่างนี้ ฉันมีชุดบันทึก สำหรับชุดระเบียนนี้ฉันมีข้อมูลการเชื่อมต่อซึ่งระบุว่าคู่ของระเบียนจากชุดนี้เชื่อมต่อกันอย่างไร โดยทั่วไปแล้วสิ่งนี้แสดงถึงกราฟที่ไม่ได้กำหนดทิศทางโดยบันทึกเป็นจุดยอดและข้อมูลการเชื่อมต่อที่ขอบ ระเบียนทั้งหมดในชุดมีข้อมูลการเชื่อมต่อ (เช่นไม่มีระเบียนเด็กกำพร้าอยู่แต่ละระเบียนในชุดจะเชื่อมต่อกับระเบียนอื่น ๆ ในชุด) ฉันต้องการเลือกสองระเบียนจากชุดและสามารถแสดงเส้นทางแบบง่ายทั้งหมดระหว่างระเบียนที่เลือกได้ โดย "เส้นทางธรรมดา" ฉันหมายถึงเส้นทางที่ไม่มีการบันทึกซ้ำในเส้นทาง (เช่นเส้นทาง จำกัด เท่านั้น) หมายเหตุ: ทั้งสองระเบียนที่เลือกจะแตกต่างกันเสมอ (เช่นจุดเริ่มต้นและจุดสิ้นสุดจะไม่เหมือนกันไม่มีรอบ) ตัวอย่างเช่น: หากฉันมีบันทึกต่อไปนี้: A, B, C, D, E. และสิ่งต่อไปนี้แสดงถึงการเชื่อมต่อ: (A, B), (A, C), (B, A) (B, D), (B, E), (B, F) (C, A), (C, E) (C, F) (D, B), (E, C), (E, F), …


1
ฉันจะหาวิธีแก้ไข "คู่มือการออกแบบอัลกอริทึม" ได้ที่ไหน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน7 ปีที่ผ่านมา ปรับปรุงคำถามนี้ หนังสือเล่มนี้เต็มไปด้วยคำถามที่น่าสนใจ แต่เนื่องจากฉันกำลังเรียนรู้ด้วยตัวเองมันจะช่วยได้มากหากฉันสามารถหาคำตอบสำหรับคำถามบางข้อได้ ใครรู้อะไรเกี่ยวกับเรื่องนี้
116 algorithm 

6
ต้นไม้สีแดงดำเหนือต้นไม้ avl
ต้นไม้ AVL และ Red black มีความสมดุลในตัวเองยกเว้นสีแดงและสีดำในโหนด อะไรคือเหตุผลหลักในการเลือกต้นไม้สีแดงดำแทนต้นไม้ AVL? ต้นไม้ดำแดงใช้งานอะไรได้บ้าง?

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

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