คิวลำดับความสำคัญในโครงสร้างข้อมูล: ทุกสิ่งที่คุณต้องรู้

เผยแพร่แล้ว: 2021-04-07

สารบัญ

บทนำ

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

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

ผู้เชี่ยวชาญคาดการณ์ว่าภายในปี 2025 ข้อมูลทั่วโลกทั้งหมดอาจเกิน 175 เซตตะไบต์ ในการจัดการข้อมูลจำนวนมาก โครงสร้างข้อมูลถูกใช้เพื่อจัดการฐานข้อมูลขนาดใหญ่และวัตถุประสงค์ในการจัดทำดัชนีอย่างมีประสิทธิภาพ โครงสร้างข้อมูลประเภทต่างๆ เช่น สแต็ค คิว อาร์เรย์ ฮีป ฯลฯ ถูกใช้ในระหว่างขั้นตอนการเขียนโปรแกรม สแต็คและคิวเป็นรูปแบบเชิงเส้นของโครงสร้างข้อมูล เนื่องจากข้อมูลจะถูกจัดเก็บตามลำดับทีละรายการ ไม่มีกิ่งก้าน และแต่ละองค์ประกอบ/ค่าข้อมูลจะต้องจัดเรียงเป็นเส้นตรง

การจัดเรียงกองและคิว

สแต็กเป็นไปตามแนวทาง LIFO (เข้าก่อนออกก่อน) สำหรับการจัดเรียงพื้นที่เก็บข้อมูล ในขณะที่คิวเป็นไปตามการจัดเรียง FIFO (เข้าก่อนออกก่อน) นี่เป็นปัจจัยสำคัญในการแยกความแตกต่างระหว่างโครงสร้างข้อมูลเชิงเส้นทั้งสองนี้ แอปพลิเคชันของพวกเขาได้รับการพิจารณาตามแนวทาง LIFO / FIFO เนื่องจากขึ้นอยู่กับการใช้งานคอมพิวเตอร์ที่เป็นเอกลักษณ์

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิทยาศาสตร์ข้อมูลและตัวอย่างโครงสร้างข้อมูล ลงทะเบียนใน PG Diploma in Big Data ซึ่ง โฮสต์ โดย upGrad.com

สำหรับคิว FIFO กำหนดว่าเมื่อมีการเพิ่มหลายรายการลงในระบบ รายการแรกที่เพิ่มเข้ามาจะเป็นรายการแรกที่เข้าถึง/นำออก

5 ปฏิบัติการพื้นฐานที่สามารถทำได้ในคิว

1. Enqueue: การดำเนินการนี้จะดำเนินการเมื่อเราต้องการเพิ่มองค์ประกอบในคิว

2. Dequeue: ตัวดำเนินการนี้ใช้เพื่อลบองค์ประกอบออกจากคิว

3. IsEmpty: การดำเนินการนี้ใช้เพื่อตรวจสอบว่าคิวว่างหรือไม่ และไม่สามารถดีคิวเพิ่มเติมได้อีก

4. IsFull: โอเปอเรเตอร์นี้จะตรวจสอบว่าคิวเต็มหรือไม่และไม่สามารถจัดการกับการเพิ่มในคิวเพิ่มเติมได้

5. Peek: ตัวดำเนินการ Peek จะเรียกคืน/แสดงค่า/องค์ประกอบข้อมูลที่คาดหวังจากคิวโดยไม่ต้องลบออกจากลำดับที่จัดสรร

เรียนรู้ว่าเหตุใด Data Science จึงมีความสำคัญและเพิ่มมูลค่าให้กับธุรกิจผ่าน บล็อกข้อมูลนี้โดย upGrad.com

คิวลำดับความสำคัญในโครงสร้างข้อมูล

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

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

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

แอปพลิเคชันของ คิวลำดับความสำคัญในโครงสร้างข้อมูล มักจะเกี่ยวข้องกับการรวมกันกับโครงสร้างข้อมูลที่ไม่เรียงลำดับอื่นๆ เช่น ฮีป อาร์เรย์ รายการที่เชื่อมโยง หรือ BST ฮีปให้รูปแบบการรวมกันที่มีประสิทธิภาพมากที่สุดเนื่องจากการจัดเตรียมสำหรับการนำคิวลำดับความสำคัญไปใช้อย่างมีประสิทธิภาพ

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Data Science สาขาที่กำลังเติบโตและการใช้งานในอุตสาหกรรมการผลิต โปรด ดูที่ บล็อกโดยละเอียดนี้โดย upGrad.com

การดำเนินงานที่รองรับในคิวลำดับความสำคัญ

การดำเนินการในคิวลำดับความสำคัญช่วยในการประมวลผลข้อมูลที่ป้อน ลบ ดู และแก้ไข การดำเนินการเหล่านี้ยังมีประโยชน์สำหรับการสำรวจระหว่างองค์ประกอบของคิว มีดังนี้

1. Is_empty : is_empty operation ตรวจสอบว่าคิวมีองค์ประกอบอยู่หรือไม่

2. Insert_with_priority: การดำเนินการนี้จะเพิ่มองค์ประกอบลงในคิว พร้อมด้วยค่าลำดับความสำคัญที่ต้องเชื่อมโยงกับคิว

3. Pull_highest_priority_element: การดำเนินการนี้จะลบองค์ประกอบที่มีลำดับความสำคัญสูงสุดออกจากคิวในขณะที่คืนค่าขององค์ประกอบนั้น

4. Peek: การดำเนินการ Peek ใช้เพื่อ 'find-max' หรือ 'find-min' ขึ้นอยู่กับผลลัพธ์ที่คาดหวัง การดำเนินการนี้ไม่ได้ลบองค์ประกอบ max/min และส่งคืนเท่านั้น

ประโยชน์ของการใช้ Heaps สำหรับ P riority Queue ในโครงสร้างข้อมูล

สังเกตประสิทธิภาพ O(log n) สำหรับการแทรกและการเอาออกเมื่อคิวลำดับความสำคัญอิงตามฮีป สิ่งนี้ช่วยปรับปรุงประสิทธิภาพ และฟังก์ชัน O(n) สร้างขึ้นจากชุดองค์ประกอบ 'n' การจับคู่ฮีปและฮีป Fibonacci ให้ขอบเขตที่ดีกว่าสำหรับการดำเนินการคิวลำดับความสำคัญ

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

คิวลำดับความสำคัญและองค์ประกอบการเรียงลำดับ

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

จากนั้น หากเราลบองค์ประกอบตามลำดับ ผลลัพธ์จะเป็นการเรียงลำดับขององค์ประกอบ Heapsort, Smoothsort, Selection Sort, Insertion Sort และ Tree sort เป็นชื่อของอัลกอริธึมการเรียงลำดับบางตัวที่มีความสัมพันธ์เทียบเท่ากับ คิวลำดับความสำคัญในโครงสร้างข้อมูล

แอพพลิเคชั่นของ Priority Queues

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

  • การจัดการแบนด์วิดธ์
  • การจำลองเหตุการณ์แบบไม่ต่อเนื่อง
  • อัลกอริทึมของ Dijkstra
  • Huffman Coding
  • อัลกอริธึมการค้นหาอันดับแรกที่ดีที่สุด
  • อัลกอริธึมสามเหลี่ยม ROAM
  • อัลกอริธึมของ Prim สำหรับต้นไม้ที่ทอดข้ามขั้นต่ำ

บทสรุป

ณ วันนี้ ผู้บริโภคประมาณ 5 พันล้านรายเชื่อมต่อกับข้อมูลโดยตรงและโดยอ้อม ภายในปี 2025 ผู้คนมากกว่า 6 พันล้านคนจะเชื่อมต่อกับข้อมูลขนาดใหญ่ IDC คาดการณ์ว่าข้อมูลจะเพิ่มขึ้น 10 เท่า และคาดการณ์ความต้องการที่สูงสำหรับนักวิทยาศาสตร์ด้านข้อมูล คิวลำดับความสำคัญในโครงสร้างข้อมูล เป็น แนวคิดที่สำคัญสำหรับโปรแกรมเมอร์และนักวิทยาศาสตร์ข้อมูล เนื่องจากมีความสัมพันธ์อย่างใกล้ชิดและการประยุกต์ใช้กับโครงสร้างข้อมูลแบบฮีป

หากคุณอยากเรียนรู้เกี่ยวกับวิทยาศาสตร์ข้อมูล ให้ลองดูประกาศนียบัตร PG ด้านวิทยาศาสตร์ข้อมูลของ IIIT-B และ upGrad ซึ่งสร้างขึ้นสำหรับมืออาชีพด้านการทำงานและเสนอกรณีศึกษาและโครงการมากกว่า 10 รายการ เวิร์กช็อปภาคปฏิบัติจริง การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม 1- on-1 กับที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

การลงทะเบียนใน หลักสูตรปริญญาโทนานาชาติออนไลน์ในสาขาวิทยาการคอมพิวเตอร์จากมหาวิทยาลัย Liverpool John Moores หรือ หลักสูตร PGD ในหลักสูตรการพัฒนาซอฟต์แวร์ Full Stack , DevOps ฯลฯ สามารถปรับปรุงโอกาสในการจ้างงานของคุณในฐานะโปรแกรมเมอร์

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

อธิบายการใช้งาน Priority Queue?

คิวลำดับความสำคัญถูกนำไปใช้ในอัลกอริธึมจำนวนมากรวมถึงแอพพลิเคชั่นในชีวิตจริงหลายรายการ บางส่วนของสิ่งเหล่านี้ได้อธิบายไว้ด้านล่าง:
1. อัลกอริธึม Huffman: แผนผัง Huffman ที่สร้างขึ้นในอัลกอริทึม Huffman ของการบีบอัดข้อมูล ใช้คิวที่มีลำดับความสำคัญในการปรับใช้แผนผัง
2. อัลกอริธึมของ Prim : อัลกอริธึมนี้ใช้ลำดับความสำคัญของคิวเพื่อเพิ่มความเร็วในกระบวนการของฟังก์ชันขั้นต่ำที่แน่นอน
3. Dijkstra's Algorithm: อัลกอริธึมนี้ใช้ฮีปหรือคิวลำดับความสำคัญเพื่อดึงค่าต่ำสุด คิวลำดับความสำคัญทำให้กระบวนการรับขั้นต่ำค่อนข้างมีประสิทธิภาพ
4. ระบบปฏิบัติการ: คิวลำดับความสำคัญถูกใช้ในกระบวนการต่างๆ ของระบบปฏิบัติการ เช่น การจัดการโหลดบาลานซ์และการจัดการการหยุดชะงัก

แยกความแตกต่างระหว่าง Stack และ Queue?

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

ลำดับความสำคัญของคิวสามารถนำมาใช้โดยใช้อาร์เรย์ได้อย่างไร?

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