กลับไปหน้าบทความ

อ่าน 2 นาที

ฮีปเรดิกซ์

ฮีป (โครงสร้างข้อมูล)

เรดิกซ์ฮีป (Radix Heap)เป็นโครงสร้างข้อมูลที่ใช้ในการดำเนินการของคิวลำดับความสำคัญแบบโมโนโทน (Monotone Priority Queue)โดยสามารถจัดการชุดขององค์ประกอบที่กำหนดคีย์ให้

ฮีปเรดิกซ์

เรดิกซ์ฮีป (Radix Heap)เป็นโครงสร้างข้อมูลที่ใช้ในการดำเนินการของคิวลำดับความสำคัญแบบโมโนโทน (Monotone Priority Queue)โดยสามารถจัดการชุดขององค์ประกอบที่กำหนดคีย์ให้ เวลาในการทำงานของการดำเนินการขึ้นอยู่กับความแตกต่างระหว่างคีย์ที่ใหญ่ที่สุดและคีย์ที่เล็กที่สุด หรือค่าคงที่ โครงสร้างข้อมูลนี้ประกอบด้วยบัคเก็ต (Bucket) จำนวนมาก ซึ่งขนาดของบัคเก็ตจะเพิ่มขึ้นแบบทวีคูณ

ข้อกำหนดเบื้องต้น

  1. คีย์ทั้งหมดเป็นจำนวนธรรมชาติ ;
  2. ปุ่มสูงสุด - ปุ่มต่ำสุด{\displaystyle \leq }C สำหรับค่าคงที่ C;
  3. การดำเนินการ extract -minเป็นแบบโมโนโทนิก กล่าวคือ ค่าที่ส่งคืนโดย การเรียกใช้ extract-min ครั้งต่อๆ ไป จะเพิ่มขึ้นอย่างต่อเนื่อง

คำอธิบายโครงสร้างข้อมูล

สามสาขา ที่สำคัญที่สุด ได้แก่:

  1. อาร์เรย์{\displaystyle b}ขนาดบี:=โอจี(ซี+1)+1{\displaystyle B:=\lfloor log(C+1)\rfloor +1}โดยมี 0 เป็นดัชนีต่ำสุด จะใช้เก็บกลุ่มข้อมูล (buckets);
  2. อาร์เรย์คุณ{\displaystyle u}ขนาดบี+1{\displaystyle B+1}โดยกำหนดให้ 0 เป็นดัชนีต่ำสุด ใช้สำหรับจัดเก็บขอบเขต (ล่าง) ของกลุ่มข้อมูล
  3. เอ็นคุณ{\displaystyle bNum}ใช้ได้กับแต่ละองค์ประกอบx{\displaystyle x}ในกองนั้นก็คือถังที่ใช้เก็บมัน

แผนภาพด้านบนแสดงโครงสร้างข้อมูล โดยมีเงื่อนไขคงที่ดังต่อไปนี้:

  1. คุณ[ฉัน]{\displaystyle u[i]\leq }กุญแจใน[ฉัน]<คุณ[ฉัน+1]{\displaystyle b[i]<u[i+1]}: กุญแจใน[ฉัน]{\displaystyle b[i]}ขึ้นหรือลงผ่านค่าในคุณ[ฉัน+1]{\displaystyle u[i+1]}หรือคุณ[ฉัน]{\displaystyle u[i]}จำกัด
  2. คุณ[0]=0,คุณ[1]=คุณ[0]+1,คุณ[บี]={\displaystyle u[0]=0,u[1]=u[0]+1,u[B]=\infty }และ0คุณ[ฉัน+1]คุณ[ฉัน]2ฉัน1{\displaystyle 0\leq u[i+1]-u[i]\leq 2^{i-1}}สำหรับฉัน=1,,บี1{\displaystyle i=1,\ldots ,B-1}ขนาดของถังจะเพิ่มขึ้นแบบทวีคูณ

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

การดำเนินงาน

ในระหว่างการเริ่มต้นระบบจะมีการสร้างถังว่างเปล่าและขอบเขตล่างขึ้นมาคุณ{\displaystyle u}ถูกสร้างขึ้น (ตามเงื่อนไขคงที่ข้อที่ 2); เวลาในการทำงานโอ(บี){\displaystyle O(B)}.

ระหว่างการแทรกองค์ประกอบใหม่x{\displaystyle x}เคลื่อนที่เชิงเส้นจากขวาไปซ้ายผ่านถังและองค์ประกอบใหม่ด้วยเค(x){\displaystyle k(x)}ถูกจัดเก็บไว้ในถังด้านซ้ายสำหรับสิ่งนั้นคุณ[ฉัน]เค(x){\displaystyle u[i]\geq k(x)}เวลาในการทำงานโอ(บี){\displaystyle O(B)}.

สำหรับdecrease-keyขั้นแรกค่าของคีย์จะถูกลดลง (โดยตรวจสอบว่าสอดคล้องกับเงื่อนไขคงที่หรือไม่) จากนั้น...เอ็นคุณ{\displaystyle bNum}ฟิลด์นี้ใช้สำหรับระบุตำแหน่งขององค์ประกอบ และจะวนซ้ำไปทางซ้ายหากจำเป็น ในลักษณะเดียวกับ การดำเนินการแทรก เวลาในการ ทำงานคือโอ(1){\displaystyle O(1)}(คิดค่าเสื่อมราคา)

การ ดำเนินการ extract-minจะลบองค์ประกอบออกจากบัคเก็ต[0]{\displaystyle b[0]}และส่งคืน หากถัง[0]{\displaystyle b[0]}หากถังเก็บข้อมูลยังไม่ว่างเปล่า การดำเนินการจะสิ้นสุดลง แต่ถ้าหากถังเก็บข้อมูลว่างเปล่าแล้ว ระบบจะค้นหาถังเก็บข้อมูลขนาดใหญ่ถัดไปที่ไม่ว่างเปล่า โดยพิจารณาจากองค์ประกอบที่เล็กที่สุดในถังเก็บข้อมูลนั้นเค{\displaystyle k}ติดตามและคุณ[0]{\displaystyle u[0]}กำหนดให้เป็น k (จำเป็นต้องมีคุณสมบัติความเป็นเอกรูป) จากนั้น ตามเงื่อนไขคงที่ ขอบเขตของถังจะถูกกำหนดใหม่และองค์ประกอบจะถูกลบออก[ฉัน]{\displaystyle b[i]}ไปยังถังที่ก่อตัวขึ้นใหม่; เวลาในการทำงานโอ(1){\displaystyle O(1)}(คิดค่าเสื่อมราคา)

หากแสดงผล ฟิลด์นั้นเอ็นคุณ{\displaystyle bNum}ได้รับการอัปเดตแล้ว

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Radix_heap&oldid=1341271690 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ฮีปเรดิกซ์

เรดิกซ์ฮีป (Radix Heap)เป็นโครงสร้างข้อมูลที่ใช้ในการดำเนินการของคิวลำดับความสำคัญแบบโมโนโทน (Monotone Priority Queue)โดยสามารถจัดการชุดขององค์ประกอบที่กำหนดคีย์ให้

ข้อกำหนดเบื้องต้น

คีย์ทั้งหมดเป็น จำนวนธรรมชาติ ; ปุ่มสูงสุด - ปุ่มต่ำสุด ≤ {\displaystyle \leq } C สำหรับค่าคงที่ C; การดำเนินการ extract -min เป็นแบบโมโนโทนิก กล่าวคือ ค่าที่ส่งคืนโดย การเรียกใช้ extract-min ครั้งต่อๆ ไป จะ เพิ่มขึ้นอย่างต่อ เนื่อง

การดำเนินงาน

ในระหว่าง การเริ่มต้นระบบ จะมีการสร้างถังว่างเปล่าและขอบเขตล่างขึ้นมา คุณ {\displaystyle u} ถูกสร้างขึ้น (ตามเงื่อนไขคงที่ข้อที่ 2); เวลาในการทำงาน โอ ( บี ) {\displaystyle O(B)} .