ผู้ใช้:KLadarat/ไบโนเมียล ฮีฟ
หน้าตา
ไบโนเมียล ฮีฟ
[แก้]ไบโนเมียล ฮีฟ มีคุณสมบัติของการเป็น ไบโนเมียลทรี แต่ละต้นไม้จะมีองค์ประกอบที่เรียกว่าดีกรี
- ไบโนเมียลทรี ดีกรี 0 หรือ B0 จะมีโหนดจำนวน 1 โหนด
- ไบโนเมียลทรี ดีกรี 1 หรือ B1 จะมีโหนดจำนวน 2 โหนด
- ไบโนเมียลทรี ดีกรี 2 หรือ B2 จะมีโหนดจำนวน 4 โหนด
…
- ไบโนเมียลทรี ดีกรี k หรือ Bk จะมีโหนดจำนวน 2k โหนด
![ลักษณะของต้นไม้ไบโนเมียลหรือไบโนเมียลทรี](http://upload.wikimedia.org/wikipedia/commons/3/31/%E0%B8%95%E0%B9%89%E0%B8%99%E0%B9%84%E0%B8%A1%E0%B9%89%E0%B9%84%E0%B8%9A%E0%B9%82%E0%B8%99%E0%B9%80%E0%B8%A1%E0%B8%B5%E0%B8%A2%E0%B8%A5.png)
โดยไบโนเมียลทรี Bk = Bk-1 + Bk-1 นั่นคือ ไบโนเมียลทรี ดีกรี k จะประกอบด้วย 2 ไบโนเมียลทรี ดีกรี k-1
![คุณสมบัติการเป็นต้นไม้ไบโนเมียลของไบโนเมียล ฮีฟ](http://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Bk_%3D_Bk-1_%2B_Bk-1.png/600px-Bk_%3D_Bk-1_%2B_Bk-1.png)
การปฏิบัติการ
[แก้]การเพิ่ม
[แก้]มีขั้นตอนดังนี้
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/16/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1.png/300px-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%A1.png)
- สร้างโหนดใหม่จากค่าที่เพิ่มเข้ามา
- หากโหนดที่เพิ่มเข้ามามีดีกรีเท่ากับโหนดที่มีอยู่ให้รวมเข้ากับโหนดที่มีอยู่โดยหากโหนดที่เพิ่มเข้ามามีค่าน้อยกว่าให้โหนดนั้นเป็นราก แต่หากโหนดที่เพิ่มเข้ามามีค่ามากกว่าให้โหนดนั้นเป็นโหนดลูก โดยมีโหนดที่มีค่าน้อยกว่านั้นเป็นราก ซึ่งในขั้นตอนนี้ ถูกเรียกว่าการรวมซึ่งจะกล่าวต่อไป
การหาค่าน้อยที่สุด
[แก้]คือการหาค่าน้อยที่สุดที่อยู่ในไบโนเมียล ฮีฟ
![การหาค่าน้อยที่สุดหลังจากมีการเพิ่มค่าเข้ามาทีละค่า](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c7/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AB%E0%B8%B2%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%99%E0%B9%89%E0%B8%AD%E0%B8%A2%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%AA%E0%B8%B8%E0%B8%94.png/400px-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AB%E0%B8%B2%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%99%E0%B9%89%E0%B8%AD%E0%B8%A2%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%AA%E0%B8%B8%E0%B8%94.png)
การลบค่าน้อยที่สุด
[แก้]คือลบค่าที่เป็นค่าน้อยที่สุดในไบโนเมียล ฮีฟ ออก โดยมีขั้นตอนดังนี้
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/63/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%A5%E0%B8%9A%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%99%E0%B9%89%E0%B8%AD%E0%B8%A2%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%AA%E0%B8%B8%E0%B8%94.png/300px-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%A5%E0%B8%9A%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%99%E0%B9%89%E0%B8%AD%E0%B8%A2%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%AA%E0%B8%B8%E0%B8%94.png)
- ลบค่าที่น้อยที่สุดในไบโนเมียล ฮีฟ
- หากโหนดที่ถูกลบออกไปมีโหนดลูก ให้โหนดลูกนั้นขึ้นมาเป็นราก
- หากมีต้นไม่ที่มีขนาดดีกรีเท่ากันเกิดขึ้นจากการลบ ให้ทำการรวม ไม่ให้มีต้นไม้ที่มีขนาดดีกรีเท่ากัน
การรวม
[แก้]มีขั้นตอนดังนี้
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%A5%E0%B8%9A%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%99%E0%B9%89%E0%B8%AD%E0%B8%A2.png/300px-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%A5%E0%B8%9A%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%99%E0%B9%89%E0%B8%AD%E0%B8%A2.png)
- รวมเอาต้นไม้ที่มีขนาดดีกรีเท่ากันรวมเข้าด้วยกันเป็นต้นไม้เดียว
- หากรากของต้นไม้ใดมีค่าน้อยกว่าให้โหนดนั้นเป็นรากเมื่อมีการรวมเกิดขึ้น
- โดยการรวมนี้จะทำจนกว่าไม่มีต้นไม้ที่มีขนาดดีกรีเท่ากัน
การลดคีย์
[แก้]คือการลำดับข้อมูลให้ถูกต้องตามคุณสมบัติของไบโนเมียล ฮีฟ หากค่าน้อยที่สุดไม่ได้เป็นราก ให้สลับขึ้นมาจนกว่าค่าน้อยสุดนั้นจะเป็นรากของต้นไม้
![เป็นนำค่าน้อยที่สุดขึ้นมาเป็นรูท](http://upload.wikimedia.org/wikipedia/commons/thumb/3/37/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%A5%E0%B8%94%E0%B8%84%E0%B8%B5%E0%B8%A2%E0%B9%8C.png/300px-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%A5%E0%B8%94%E0%B8%84%E0%B8%B5%E0%B8%A2%E0%B9%8C.png)