หน่วยความจำΘ (1) หมายถึงอะไร


13

ฉันมีคำจำกัดความของอัลกอริทึมแบบ in-situ จากอาจารย์ แต่ฉันไม่เข้าใจ

อัลกอริธึมในแหล่งกำเนิดอ้างถึงอัลกอริธึมที่ทำงานกับหน่วยความจำΘ (1)

นั่นหมายความว่าอย่างไร?


3
คุณคุ้นเคยกับสัญกรณ์ Landauหรือไม่?
David Richerby

4
"อัลกอริทึมถูกกล่าวว่าเป็นอัลกอริธึมในสถานการณ์หรืออัลกอริธึมในสถานที่ถ้าจำนวนหน่วยความจำเพิ่มเติมที่จำเป็นในการดำเนินการอัลกอริทึมคือ O (1) นั่นคือ[หน่วยความจำ] ไม่เกินค่าคงที่ อินพุตตัวอย่างเช่น heapsort เป็นอัลกอริทึมการเรียงลำดับแบบ in situ " en.wikipedia.org/wiki/In_situ#Computer_science
Auberon

@ ออเบรอนมันควรจะเพิ่มว่ากำหนดความต้องการเพิ่มเติมนอกเหนือจาก : ว่าหน่วยความจำทั้งหมดที่ใช้ในการเรียกใช้ใด ๆ ไม่ได้ต่ำกว่าค่าคงที่ไม่ว่าจะมีขนาดเท่าใดก็ตาม O ( 1 )Θ(1)O(1)
โอเลเท

1
@Olathe ฉันยังไม่ได้เห็นอัลกอริทึมที่ใช้มากกว่าศูนย์ แต่น้อยกว่าค่าคงที่ของทรัพยากรใด ๆ
adrianN

@adrianN การเข้ารหัส AES ของไฟล์เสร็จสิ้นด้วยการใช้ RAM ภายใต้ขอบเขตบนคงที่ คุณประมวลผลบล็อกในแต่ละครั้งแต่ละบล็อกต้องการจำนวน RAM เท่ากันในการประมวลผลและ RAM สามารถนำกลับมาใช้ใหม่ได้จากบล็อกหนึ่งไปยังบล็อกถัดไป ตัวอย่างที่ง่ายกว่าคือการแปลงตัวอักษรทั้งหมดในไฟล์ที่เข้ารหัส ASCII เป็นตัวพิมพ์ใหญ่ คุณสามารถอ่านในบล็อกขนาด 4096 ไบต์ของไฟล์ประมวลผล 4096 ไบต์เขียนผลลัพธ์ของบล็อกนั้นและนำ RAM เดียวกันกลับมาใช้ใหม่สำหรับบล็อกถัดไป
โอเลเท

คำตอบ:


13

ก่อนอื่นให้แกะสิ่งที่หมายถึงΘ(1)

Bigและ bigเป็นคลาสของฟังก์ชัน มีความหมายอย่างเป็นทางการเป็นที่นี่แต่สำหรับวัตถุประสงค์ของคำถามนี้เราบอกว่าฟังก์ชั่นอยู่ในถ้ามีคงที่ที่สำหรับทุก ,C นั่นคือเติบโตเร็วที่สุดเท่ากับฟังก์ชันคงที่Θ f O ( 1 ) c x f ( x ) C fOΘfO(1)cxf(x)Cf

Big-ไม่ได้มีความหมายมากสำหรับฟังก์ชั่นคงที่เพราะเมื่ออธิบายถึงอัลกอริธึมเวลาหรือการใช้พื้นที่ แต่การที่จะอธิบายสิ่งที่มันหมายถึงถ้ามีบางคงดังกล่าวว่าสำหรับทุก ,ค นั่นคือเติบโตอย่างน้อยเร็วและเร็วที่สุดเท่าที่ฟังก์ชั่นคงที่Θ ( 1 ) , d x d F ( x ) ΘfΘ(1)c,dxdf(x)cf

ตอนนี้สิ่งนี้เกี่ยวกับการใช้หน่วยความจำ? พิจารณาขั้นตอนวิธีการบาง มีบาง (คณิตศาสตร์) ฟังก์ชั่นที่ได้รับการป้อนข้อมูลเป็นจะช่วยให้การใช้งานหน่วยความจำสูงสุดของอัลกอริทึมของคุณกับการป้อนข้อมูลที่มีขนาดใดnขอเรียกฟังก์ชันนี้ข่าวn A n m e mAnAnmem

ดังนั้นตอนนี้เรารวมสองแนวคิดของเรา หากขั้นตอนวิธีการใช้งานหน่วยความจำแล้วฟังก์ชั่นการใช้งานหน่วยความจำที่อยู่ในมีความหมายว่ามีอยู่บางดังกล่าวว่าสำหรับการป้อนข้อมูลใด ๆ หน่วยความจำที่ใช้อยู่ระหว่างและคΘ ( 1 ) d , c d cΘ(1)Θ(1)d,cdc

กล่าวโดยย่อนั่นหมายความว่าการใช้หน่วยความจำของอัลกอริทึมอยู่ในช่วงค่าคงที่บางค่าโดยไม่คำนึงถึงอินพุต

โดยปกติการทำงานของหน่วยความจำไม่บัญชีสำหรับหน่วยความจำที่ใช้ในการจัดเก็บการป้อนข้อมูลเพื่ออัลกอริทึมเพราะมิฉะนั้นจะใช้หน่วยความจำมักจะมีอย่างน้อย(N)Θ(n)


"ไม่ขึ้นกับอินพุตของมันอย่างมีประสิทธิภาพ" - คำจำกัดความของ "ประสิทธิผล" ใด?
Raphael

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

ฉันไม่คิดว่าจะมีถ้อยคำที่ดีไปกว่า "หน่วยความจำที่ใช้อยู่ระหว่างถึงสำหรับอินพุตใด ๆ " ไม่จำเป็นต้องมีอย่างใดอย่างหนึ่ง dc
Raphael

ตัวอย่างเช่นตัวอย่างง่าย (s) จะเป็นประโยชน์
vzn

8

ความซับซ้อนของพื้นที่คงที่ของอัลกอริทึม

จำนวนหน่วยความจำที่อัลกอริทึมของคุณใช้เป็นอิสระจากอินพุต

อัลกอริทึมถูกกล่าวว่ามีความซับซ้อนของพื้นที่คงที่หากใช้ประโยชน์จากจำนวนพื้นที่คงที่ สามารถเป็นตัวแปรหรืออาร์เรย์ขององค์ประกอบประการ101010

อย่างไรก็ตามอัลกอริธึมในแหล่งกำเนิดทำหน้าที่ตามที่ตั้งใจไว้ในอินพุตนั้นจึงต้องใช้พื้นที่น้อยมากหรือไม่มีเลย โดยทั่วไปอินพุตจะถูกเขียนทับโดยเอาต์พุตเมื่ออัลกอริทึมทำงาน ( อ้างอิง )

อัลกอริธึมในแหล่งกำเนิดไม่ได้พิจารณาพื้นที่ที่มีอยู่ของอินพุตและพิจารณาเฉพาะพื้นที่พิเศษในขณะที่คำนวณความซับซ้อนของพื้นที่


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

@Olathe Space ครอบครองโดยอินพุตแต่ละตัวในรูปของไบต์และจำนวนอินพุตในแง่ของการนับไม่ใช่แนวคิดที่แตกต่างกันสองข้อใช่หรือไม่
Prateek

0

นั่นหมายความว่าจำนวนหน่วยความจำเพิ่มเติมที่จำเป็นสำหรับอัลกอริทึมไม่มากกว่าจำนวนคงที่ที่ไม่ได้ขึ้นอยู่กับขนาดอินพุตสำหรับอินพุตใหญ่เพียงพอ


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