คำถามติดแท็ก big-o

สัญกรณ์ Big-O ใช้เพื่อแสดงขอบเขตด้านบนที่ไม่แสดงอาการ อธิบายถึงเวลาที่เกี่ยวข้องหรือความซับซ้อนของพื้นที่ของอัลกอริทึม การวิเคราะห์ Big-O ให้การประมาณความยากของปัญหาอย่างคร่าวๆและง่ายขึ้น

9
Big O คำถามเกี่ยวกับอัลกอริทึมที่มีอัตราการขยายตัว (n ^ 2 + n) / 2
ฉันถามคำถามนี้เพราะฉันสับสนในแง่มุมหนึ่งเกี่ยวกับสัญกรณ์ O ใหญ่ ฉันใช้หนังสือโครงสร้างข้อมูลและบทคัดย่อกับ Javaโดย Frank Carrano ในบทเกี่ยวกับ "ประสิทธิภาพของอัลกอริทึม" เขาแสดงอัลกอริทึมต่อไปนี้: int sum = 0, i = 1, j = 1 for (i = 1 to n) { for (j = 1 to i) sum = sum + 1 } สมัยก่อนเขาอธิบายขั้นตอนวิธีนี้มีอัตราการเติบโต(n 2 + n) / 2 ซึ่งดูง่าย อย่างไรก็ตามมีการระบุไว้ว่า(n 2 + n) …
16 algorithms  big-o 

6
ฉันจะกำหนดรันไทม์ของฟังก์ชันเรียกซ้ำสองครั้งได้อย่างไร
ด้วยฟังก์ชั่นซ้ำสองโดยพลการหนึ่งจะคำนวณเวลาการทำงานของมันได้อย่างไร ตัวอย่าง (ใน pseudocode): int a(int x){ if (x < = 0) return 1010; else return b(x-1) + a(x-1); } int b(int y){ if (y <= -5) return -2; else return b(a(y-1)); } หรือบางสิ่งบางอย่างตามเส้นเหล่านั้น วิธีการใดที่สามารถหรือควรใช้เพื่อกำหนดสิ่งนี้

7
สัญกรณ์บิ๊กโอ้ไม่ได้พูดถึงค่าคงที่
ฉันเป็นโปรแกรมเมอร์และเพิ่งเริ่มอ่านอัลกอริทึม ฉันไม่มั่นใจอย่างสมบูรณ์กับสัญลักษณ์คือ Bog Oh, Big Omega และ Big Theta เหตุผลก็คือโดยนิยามของบิ๊กโอ้มันระบุว่าควรมีฟังก์ชั่น g (x) เพื่อให้มันมากกว่าหรือเท่ากับ f (x) เสมอ หรือ f (x) <= cn สำหรับค่าทั้งหมดของ n> n0 ทำไมเราไม่พูดถึงค่าคงที่ในคำนิยาม? ตัวอย่างเช่นสมมุติว่าฟังก์ชัน 6n + 4 เราแสดงว่าเป็น O (n) แต่มันไม่เป็นความจริงที่คำจำกัดความนั้นดีสำหรับค่าคงที่ทั้งหมด สิ่งนี้จะถือว่าดีเมื่อ c> = 10 และ n> = 1 สำหรับค่าที่น้อยกว่าของ c มากกว่า 6 ค่าของ n0 จะเพิ่มขึ้น ดังนั้นทำไมเราไม่พูดถึงค่าคงที่เป็นส่วนหนึ่งของคำนิยาม?

3
โปรดอธิบายข้อความที่ฟังก์ชั่น + b เป็นของ O (n ^ 2) และΘ (n)?
สมมติว่าฉันมีฟังก์ชั่นเชิงเส้นf(n)= an+bวิธีที่ดีที่สุดที่จะพิสูจน์ว่าฟังก์ชันนี้เป็นของ O (n 2 ) และΘ(n)อะไร ฉันไม่ต้องการความแม่นยำทางคณิตศาสตร์ที่นี่ ฉันต้องการโปรแกรมเมอร์ตอบ บางวิธีตรรกะในการอธิบาย นี่คือเหตุผลที่ฉันไม่ได้โพสต์คำถามในวิชาถาม - ตอบทางคณิตศาสตร์และแทนที่ในคำถามคำตอบโปรแกรมเมอร์

2
ความซับซ้อนของเวลา 2 ^ sqrt (n)
ฉันกำลังแก้ไขคำถามอัลกอริทึมและการวิเคราะห์ของฉันคือมันจะทำงานบน O (2 ^ sqrt (n)) มันใหญ่แค่ไหน? มันเท่ากับ O (2 ^ n) หรือไม่? มันยังเป็นเวลาที่ไม่ใช่พหุนามหรือไม่?

5
โดยทางโปรแกรมแล้วการหาสัญกรณ์กุ๊บ (สัญกรณ์ Big O หรือ Theta) ของอัลกอริทึม?
ฉันเคยค้นหาสัญกรณ์ Landau (Big O, Theta ... ) ของอัลกอริทึมของฉันด้วยมือเพื่อให้แน่ใจว่าพวกเขาได้รับการปรับให้เหมาะสมที่สุดเท่าที่จะเป็นไปได้ แต่เมื่อฟังก์ชั่นมีขนาดใหญ่และซับซ้อนจริงๆ เวลามากเกินไปที่จะทำด้วยมือ นอกจากนี้ยังมีแนวโน้มที่จะเกิดข้อผิดพลาดของมนุษย์ ฉันใช้เวลากับ Codility (แบบฝึกหัดการเข้ารหัส / อัลโก) และสังเกตว่าพวกเขาจะให้สัญกรณ์ Landau สำหรับการแก้ปัญหาที่คุณส่ง (ทั้งในเวลาและการใช้หน่วยความจำ) ฉันสงสัยว่าพวกเขาทำได้อย่างไร ... คุณจะทำอย่างไร มีวิธีอื่นนอกเหนือจากการวิเคราะห์คำศัพท์หรือการแยกรหัส? คำถามนี้เกี่ยวกับ PHP และหรือ JavaScript เป็นหลัก แต่ฉันเปิดรับทุกภาษาและทุกทฤษฎี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.