fbpx
วิกิพีเดีย

ฮีปสคิว

สคิวฮีพ (อังกฤษ: Skew Heap) หรือ Self-adjusting Heap เป็นฮีปแบบมีลำดับอย่างหนึ่ง ซึ่งอิมพลีเมนต์มาจาก ต้นไม้แบบทวิภาค ไม่มีข้อจำกัดด้านโครงสร้าง ทำให้ความสูงของต้นไม้อาจจะไม่เท่ากับ log n เสมอไป แต่มีประสิทธิภาพเป็น O(log n) ในแบบถัวเฉลี่ย สคิวฮีพมีข้อดีกว่าฮีพแบบทวิภาคหรือ ต้นไม้แบบทวิภาค ตรงที่การดำเนินการรวมฮีพ (merge) ทำได้เร็วกว่า จึงมีการนำการดำเนินการรวมฮีพมาใช้ในการดำเนินการอื่นๆของสคิวฮีพด้วย

การดำเนินการของสคิวฮีพ

การรวมฮีพ

แบบใช้ความสัมพันธ์เวียนเกิด

  1. เปรียบเทียบรากของฮีพทั้งสอง โดยถ้ารากของ H2 มีขนาดเล็กกว่า H1 ทำการสลับ H1 กับ H2 เราจะได้ว่า รากของ H1 มีขนาดเล็กกว่ารากของ H2
  2. ถ้าลูกทางขวาของ H1 เป็น null เราจะให้ H2 เป็นลูกทางขวาของ H1 แต่ถ้า H1 ยังมีลูกทางขวาอยู่ ให้ลูกทางขวาของ H1 เกิดจากการรวม H2 กับต้นไม้ย่อยที่เป็นลูกทางขวาของ H1 โดยใช้ความสัมพันธ์เวียนเกิด
  3. ทำการสลับลูกทางซ้ายและลูกทางขวาของ H1
  4. ผลจากการรวมฮีพจะอยู่ใน H1

ขั้นตอนวิธีในการรวมฮีพแบบเวียนเกิด

 MERGE (H1, H2) // H1 and H2 are skew heaps // Merge returns the merged heap, destroying H1 and H2 if H1 is empty then return H2 else if H2 is empty then return H1 if the root of H2 < the root of H1 then swap H1 and H2 // now root(H1) < root(H2) if right(H1) = nil then right(H1) <-- (H2) else right(H1) <-- Merge(right(H1), H2) swap left and right children of H1 return H1 

แบบไม่ใช้ความสัมพันธ์เวียนเกิด

  • แยกแต่ละฮีพออกเป็นต้นไม้ย่อยโดยการตัดทุกเส้นทางด้านขวาสุด (จากโหนดราก, ตัดโหนดทางขวาและทำให้ทำเช่นนี้กับลูกทางขวาของต้นไม้ย่อยที่เกิดขึ้นไปเรื่อยๆ) ซึ่งจะส่งผลให้เกิดเซตของต้นไม้ย่อยมีรากได้แบบใดแบบหนึ่ง คือมีแต่ลูกทางซ้ายหรือไม่มีลูก
  • เรียงลำดับของต้นไม้ย่อยตามของโหนดรากของแต่ละต้นไม้ย่อย
  • ในขณะที่ยังคงมีหลายต้นไม้ย่อยนั้น เราจะทำการรวมต้นไม้ย่อยทีละสองต้นไม้ย่อย (จากขวาไปซ้าย)
- หากรากของต้นไม้ย่อยที่สองจากขวาสุดมีลูกทางซ้ายสลับไปเป็นลูกทางขวา
- เชื่อมโยงรากของต้นไม้ย่อยขวาสุดเป็นลูกซ้ายต้นไม้ย่อยที่สองจากขวาสุด

 

 

 

 

 

 

 

การเพิ่ม

จะทำการรวมฮีพที่เราต้องการเพิ่มโหนดกับฮีพที่มีโหนดตัวที่เราต้องการเพิ่มอยู่เพียงโหนดเดียว

การลบโหนดที่มีค่าน้อยที่สุด

จะทำการลบตัวที่น้อยทีสุดออกไป แล้วทำการรวามต้นไม้ย่อยของลูกทางซ้ายและต้นไม้ย่อยของลูกทางขวาเข้าด้วยกัน

อ้างอิง

  1. . คลังข้อมูลเก่า เก็บจาก แหล่งเดิม เมื่อ 2010-10-02. สืบค้นเมื่อ 2011-02-12.

แหล่งข้อมูลอื่น

  • CSE 4101 lecture notes, York University

ปสค, บทความน, อาจต, องเข, ยนใหม, งหมดเพ, อให, เป, นไปตามมาตรฐานค, ณภาพของว, เด, หร, อกำล, งดำเน, นการอย, ณช, วยเราได, หน, าอภ, ปรายอาจม, อเสนอแนะสค, วฮ, งกฤษ, skew, heap, หร, self, adjusting, heap, เป, นฮ, ปแบบม, ลำด, บอย, างหน, งอ, มพล, เมนต, มาจาก, นไม, แบบท. bthkhwamnixactxngekhiynihmthnghmdephuxihepniptammatrthankhunphaphkhxngwikiphiediy hruxkalngdaeninkarxyu khunchwyeraid hnaxphiprayxacmikhxesnxaenaskhiwhiph xngkvs Skew Heap hrux Self adjusting Heap epnhipaebbmiladbxyanghnung sungximphliemntmacak tnimaebbthwiphakh immikhxcakddanokhrngsrang thaihkhwamsungkhxngtnimxaccaimethakb log n esmxip aetmiprasiththiphaphepn O log n inaebbthwechliy skhiwhiphmikhxdikwahiphaebbthwiphakhhrux tnimaebbthwiphakh trngthikardaeninkarrwmhiph merge thaiderwkwa cungmikarnakardaeninkarrwmhiphmaichinkardaeninkarxunkhxngskhiwhiphdwy enuxha 1 kardaeninkarkhxngskhiwhiph 1 1 karrwmhiph 1 1 1 aebbichkhwamsmphnthewiynekid 1 1 2 aebbimichkhwamsmphnthewiynekid 1 2 karephim 1 3 karlbohndthimikhanxythisud 2 xangxing 3 aehlngkhxmulxunkardaeninkarkhxngskhiwhiph aekikhkarrwmhiph aekikh aebbichkhwamsmphnthewiynekid aekikh epriybethiybrakkhxnghiphthngsxng odytharakkhxng H2 mikhnadelkkwa H1 thakarslb H1 kb H2 eracaidwa rakkhxng H1 mikhnadelkkwarakkhxng H2 thalukthangkhwakhxng H1 epn null eracaih H2 epnlukthangkhwakhxng H1 aettha H1 yngmilukthangkhwaxyu ihlukthangkhwakhxng H1 ekidcakkarrwm H2 kbtnimyxythiepnlukthangkhwakhxng H1 odyichkhwamsmphnthewiynekid thakarslblukthangsayaelalukthangkhwakhxng H1 phlcakkarrwmhiphcaxyuin H1khntxnwithiinkarrwmhiphaebbewiynekid 1 MERGE H1 H2 H1 and H2 are skew heaps Merge returns the merged heap destroying H1 and H2 if H1 is empty then return H2 else if H2 is empty then return H1 if the root of H2 lt the root of H1 then swap H1 and H2 now root H1 lt root H2 if right H1 nil then right H1 lt H2 else right H1 lt Merge right H1 H2 swap left and right children of H1 return H1 aebbimichkhwamsmphnthewiynekid aekikh aeykaetlahiphxxkepntnimyxyodykartdthukesnthangdankhwasud cakohndrak tdohndthangkhwaaelathaihthaechnnikblukthangkhwakhxngtnimyxythiekidkhuniperuxy sungcasngphlihekidestkhxngtnimyxymirakidaebbidaebbhnung khuxmiaetlukthangsayhruximmiluk eriyngladbkhxngtnimyxytamkhxngohndrakkhxngaetlatnimyxy inkhnathiyngkhngmihlaytnimyxynn eracathakarrwmtnimyxythilasxngtnimyxy cakkhwaipsay hakrakkhxngtnimyxythisxngcakkhwasudmilukthangsayslbipepnlukthangkhwa echuxmoyngrakkhxngtnimyxykhwasudepnluksaytnimyxythisxngcakkhwasud karephim aekikh cathakarrwmhiphthieratxngkarephimohndkbhiphthimiohndtwthieratxngkarephimxyuephiyngohndediywkarlbohndthimikhanxythisud aekikh cathakarlbtwthinxythisudxxkip aelwthakarrwamtnimyxykhxnglukthangsayaelatnimyxykhxnglukthangkhwaekhadwyknxangxing aekikh saenathiekbthawr khlngkhxmuleka ekbcak aehlngedim emux 2010 10 02 subkhnemux 2011 02 12 aehlngkhxmulxun aekikhCSE 4101 lecture notes York University ekhathungcak https th wikipedia org w index php title hipskhiw amp oldid 9676617, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม