คำถามติดแท็ก time-complexity

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


6
อะไรจะทำให้อัลกอริทึมมีความซับซ้อน O (log n)
ความรู้เกี่ยวกับ big-O ของฉันมี จำกัด และเมื่อคำบันทึกปรากฏขึ้นในสมการมันก็ยิ่งทำให้ฉันผิดหวัง ใครช่วยอธิบายให้ฉันเข้าใจง่ายๆว่าO(log n)อัลกอริทึมคืออะไร? ลอการิทึมมาจากไหน? สิ่งนี้เกิดขึ้นโดยเฉพาะเมื่อฉันพยายามแก้คำถามฝึกหัดกลางภาค: ให้ X (1..n) และ Y (1..n) ประกอบด้วยรายการจำนวนเต็มสองรายการโดยแต่ละรายการเรียงลำดับแบบไม่ลดทอน ให้อัลกอริทึม - เวลา O (log n) เพื่อค้นหาค่ามัธยฐาน (หรือจำนวนเต็มน้อยที่สุดที่ n) ขององค์ประกอบที่รวมกัน 2n ทั้งหมด เช่น X = (4, 5, 7, 8, 9) และ Y = (3, 5, 8, 9, 10) จากนั้น 7 คือค่ามัธยฐานของรายการรวม (3, 4, 5, …

2
อะไรจะทำให้อัลกอริทึมมีความซับซ้อน O (log log n)
คำถามก่อนหน้านี้กล่าวถึงปัจจัยบางประการที่อาจทำให้อัลกอริทึมมีความซับซ้อน O (log n) อะไรจะทำให้อัลกอริทึมมีความซับซ้อนของเวลา O (log log n)?

2
อาร์เรย์ JavaScript ขนาดใหญ่
อาร์เรย์ใน JavaScript สามารถแก้ไขได้ง่ายมากโดยการเพิ่มและลบรายการ ค่อนข้างปกปิดข้อเท็จจริงที่ว่าอาร์เรย์ภาษาส่วนใหญ่มีขนาดคงที่และต้องการการดำเนินการที่ซับซ้อนในการปรับขนาด ดูเหมือนว่า JavaScript ทำให้ง่ายต่อการเขียนโค้ดอาร์เรย์ที่มีประสิทธิภาพต่ำ สิ่งนี้นำไปสู่คำถาม: ประสิทธิภาพใด (ในแง่ของความซับซ้อนของเวลา O ขนาดใหญ่) ที่ฉันสามารถคาดหวังได้จากการใช้งาน JavaScript เกี่ยวกับประสิทธิภาพของอาร์เรย์ ฉันคิดว่าการใช้งาน JavaScript ที่สมเหตุสมผลทั้งหมดมี O ขนาดใหญ่ดังต่อไปนี้ การเข้าถึง - O (1) ต่อท้าย - O (n) ล่วงหน้า - O (n) การแทรก - O (n) การลบ - O (n) การแลกเปลี่ยน - O (1) JavaScript ให้คุณเติมอาร์เรย์ล่วงหน้าตามขนาดที่กำหนดโดยใช้new Array(length)ไวยากรณ์ (คำถามโบนัส: การสร้างอาร์เรย์ในลักษณะนี้ O …

11
ความซับซ้อนของเวลาของอัลกอริทึมของ Euclid
ฉันมีปัญหาในการตัดสินใจว่าความซับซ้อนของเวลาของอัลกอริธึมตัวส่วนร่วมที่ยิ่งใหญ่ที่สุดของยูคลิดคืออะไร อัลกอริทึมนี้ในรหัสหลอกคือ: function gcd(a, b) while b ≠ 0 t := b b := a mod b a := t return a มันน่าจะขึ้นอยู่กับและข ความคิดของฉันคือความซับซ้อนของเวลาคือ O (a% b) ถูกต้องหรือไม่ มีวิธีเขียนที่ดีกว่านี้ไหม

2
pseudopolynomial time คืออะไร? แตกต่างจากพหุนามเวลาอย่างไร?
คืออะไรเวลา pseudopolynomial ? แตกต่างจากพหุนามเวลาอย่างไร? อัลกอริทึมบางอย่างที่ทำงานในเวลาหลอกมี runtimes เช่น O (nW) (สำหรับปัญหา 0/1 Knapsack ) หรือ O (√n) (สำหรับการแบ่งการทดลอง ) ทำไมไม่นับว่าเป็นพหุนามเวลา?

4
ความซับซ้อนของเวลาของอัลกอริทึม Sieve of Eratosthenes
จากWikipedia: ความซับซ้อนของอัลกอริทึมคือ O(n(logn)(loglogn))การดำเนินการแบบบิต คุณมาถึงจุดนั้นได้อย่างไร? ความซับซ้อนรวมถึงloglognคำที่บอกฉันว่ามีsqrt(n)ที่ไหนสักแห่ง สมมติว่าฉันใช้ตะแกรงกับตัวเลข 100 ตัวแรก ( n = 100) โดยสมมติว่าการทำเครื่องหมายตัวเลขเป็นแบบผสมต้องใช้เวลาคงที่ (การใช้อาร์เรย์) จำนวนครั้งที่เราใช้mark_composite()จะเป็นดังนี้ n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2) และเพื่อหาตัวเลขที่สำคัญถัดไป (เช่นการกระโดด7ข้ามจากตัวเลขทั้งหมดที่มีหลายรายการ5) O(n)จำนวนของการดำเนินงานจะเป็น O(n^3)ดังนั้นความซับซ้อนจะเป็น คุณเห็นด้วยไหม?


4
ความซับซ้อนของเวลาของสตริงซ้ำต่อท้าย O (n ^ 2) หรือ O (n) จริงหรือไม่?
ฉันกำลังแก้ไขปัญหาจาก CTCI ปัญหาที่สามของบทที่ 1 ให้คุณใช้สตริงเช่น 'Mr John Smith ' และขอให้คุณแทนที่ช่องว่างตัวกลางด้วย%20: 'Mr%20John%20Smith' ผู้เขียนเสนอวิธีแก้ปัญหานี้ใน Python เรียกว่า O (n): def urlify(string, length): '''function replaces single spaces with %20 and removes trailing spaces''' counter = 0 output = '' for char in string: counter += 1 if counter > length: return output elif char …

1
ความซับซ้อนของเวลาของโครงสร้างข้อมูลต่างๆคืออะไร?
ฉันกำลังพยายามแสดงรายการความซับซ้อนของเวลาในการดำเนินการของโครงสร้างข้อมูลทั่วไปเช่น Arrays, Binary Search Tree, Heap, Linked List เป็นต้นและโดยเฉพาะอย่างยิ่งฉันหมายถึง Java เป็นเรื่องธรรมดามาก แต่ฉันเดาว่าพวกเราบางคนไม่มั่นใจ 100% เกี่ยวกับคำตอบที่แน่นอน ความช่วยเหลือใด ๆ โดยเฉพาะการอ้างอิงจะได้รับการชื่นชมอย่างมาก เช่นสำหรับรายการที่เชื่อมโยงแบบเดี่ยว: การเปลี่ยนองค์ประกอบภายในคือ O (1) คุณทำได้อย่างไร? คุณต้องค้นหาองค์ประกอบก่อนที่จะเปลี่ยนแปลง นอกจากนี้สำหรับ Vector การเพิ่มองค์ประกอบภายในจะได้รับเป็น O (n) แต่ทำไมเราไม่สามารถตัดจำหน่ายในเวลาคงที่โดยใช้ดัชนีได้? โปรดแก้ไขฉันหากฉันขาดอะไรไป ฉันกำลังโพสต์สิ่งที่ค้นพบ / การคาดเดาเป็นคำตอบแรก

12
การเรียงลำดับในวิทยาการคอมพิวเตอร์เทียบกับการเรียงลำดับในโลกแห่งความเป็นจริง
ฉันกำลังคิดเกี่ยวกับการจัดเรียงอัลกอริทึมในซอฟต์แวร์และวิธีที่เป็นไปได้ที่เราจะเอาชนะO(nlogn)อุปสรรคได้ ฉันไม่คิดว่าจะเรียงลำดับได้เร็วขึ้นในแง่ที่ใช้งานได้จริงดังนั้นโปรดอย่าคิดว่าฉันทำ จากที่กล่าวมาดูเหมือนว่าอัลกอริทึมการเรียงลำดับเกือบทั้งหมดซอฟต์แวร์จะต้องทราบตำแหน่งของแต่ละองค์ประกอบ ซึ่งสมเหตุสมผลไม่เช่นนั้นจะรู้ได้อย่างไรว่าจะวางแต่ละองค์ประกอบตามเกณฑ์การเรียงลำดับอย่างไร แต่เมื่อฉันก้าวข้ามความคิดนี้กับโลกแห่งความเป็นจริงเครื่องหมุนเหวี่ยงไม่รู้ว่าแต่ละโมเลกุลอยู่ในตำแหน่งใดเมื่อมันจัดเรียงโมเลกุลตามความหนาแน่น ในความเป็นจริงมันไม่สนใจเกี่ยวกับตำแหน่งของแต่ละโมเลกุล อย่างไรก็ตามมันสามารถเรียงลำดับเป็นล้านล้านตามรายการหลายล้านล้านชิ้นในช่วงเวลาสั้น ๆ เนื่องจากแต่ละโมเลกุลเป็นไปตามกฎความหนาแน่นและความโน้มถ่วงซึ่งทำให้ฉันคิดได้ เป็นไปได้หรือไม่ที่ค่าใช้จ่ายบางส่วนในแต่ละโหนด (ค่าหรือวิธีการบางอย่างที่ยึดติดกับแต่ละโหนด) เพื่อ 'บังคับ' ลำดับของรายการ สิ่งที่คล้ายกับเครื่องหมุนเหวี่ยงซึ่งมีเพียงแต่ละองค์ประกอบเท่านั้นที่สนใจเกี่ยวกับตำแหน่งสัมพัทธ์ในอวกาศ (สัมพันธ์กับโหนดอื่น ๆ ) หรือสิ่งนี้ละเมิดกฎบางประการในการคำนวณหรือไม่? ฉันคิดว่าหนึ่งในประเด็นสำคัญที่นำมาสู่ที่นี่คือผลกระทบเชิงกลควอนตัมของธรรมชาติและวิธีที่พวกมันใช้ควบคู่ไปกับอนุภาคทั้งหมดในเวลาเดียวกัน บางทีคอมพิวเตอร์คลาสสิกจะ จำกัด การจัดเรียงเป็นโดเมนโดยเนื้อแท้O(nlogn)ซึ่งเนื่องจากคอมพิวเตอร์ควอนตัมอาจสามารถข้ามขีด จำกัด นั้นไปยังO(logn)อัลกอริทึมที่ทำหน้าที่ควบคู่กันได้ ประเด็นที่ว่าเครื่องหมุนเหวี่ยงที่เป็นฟองแบบขนานนั้นดูเหมือนจะถูกต้องซึ่งมีความซับซ้อนของO(n)เวลา ฉันเดาความคิดต่อไปคือถ้าธรรมชาติสามารถเรียงลำดับได้O(n)ทำไมคอมพิวเตอร์ไม่ได้?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.