ผลต่างระหว่างรุ่นของ "ต้นไม้แบบบี"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Ponpan (คุย | ส่วนร่วม)
แจ้งต้องการอ้างอิงด้วยสจห.
Ponpan (คุย | ส่วนร่วม)
เก็บกวาด
บรรทัด 1:
[[ไฟล์:B-tree.svg|thumb|400px|right|ต้นไม้แบบบี อันดับ 2 {{Harv|Bayer|McCreight|1972}} หรืออันดับ 5 {{Harv|Knuth|1998}}.]]
{{ต้องการอ้างอิง}}
ในศาสตร์[[วิทยาการคอมพิวเตอร์]] '''ต้นไม้แบแบบบี''' ({{lang-en|B-tree}}) เป็น[[ต้นไม้(โครงสร้างข้อมูล)|โครงสร้างข้อมูลแบบต้นไม้]] ซึ่งเก็บข้อมูลที่จัดเรียงแล้ว และพร้อมใช้งานสำหรับการค้นหา การเข้าถึงแบบลำดับ การแทรกข้อมูล การลบข้อมูล ซึ่งประสิทธิภาพการทำงานของมันจะใช้เวลาลอการิทึม (logarithmic time) ต้นไม้แบบบีเป็นโครงสร้างต้นไม้ที่มีลักษณะทั่วไปเหมือนกับ[[ต้นไม้ทวิภาค]] คือ แต่ละปมมีปมลูกได้ไม่เกิน 2 ปม ต้นไม้แบบบีเป็นโครงสร้างข้อมูลที่เหมาะสมที่สุดสำหรับระบบที่มีการอ่านและเขียนบล็อกข้อมูลขนาดใหญ่ ดังนั้นมันจึงมักใช้ในงาน[[ฐานข้อมูล]]และ[[ระบบแฟ้ม]]
 
==ภาพรวม==
In B-trees, ปมภายในต้นไม้แบบบี (ปมที่ไม่ใช่ปมใบ) สามารถมีจำนวนแตกต่างกันอยู่ภายในช่วงที่กำหนดไว้ เมื่อมีการแทรกหรือลบข้อมูลจะทำให้จำนวนปมลูกเปลี่ยนแปลงไป ดังนั้นเมื่อต้องการให้จำนวนของปมลูกอยู่ในช่วงที่กำหนดไว้ ปมภายในอาจจะเชื่อมต่อ หรืออยกออกไป เนื่องจากช่วงของปมลูกได้ถูกกำหนดไว้แล้ว ดังนั้นมันจึงไม่จำเป็นต้องจัดสมดุลใหม่บ่อย ๆ เหมือนกับ[[ต้นไม้ค้นหาแบบสมดุลตนเอง]]ชนิดอื่น ๆ แต่อาจจะยอมให้เสียพื้นที่ว่างบางส่วนภายในต้นไม้ได้ ถ้ามีบางปมที่มีปมลูกไม่ครบ 2 โดยปกติขอบบนและขอบล่างของจำนวนปมลูกจะถูกตรึงไว้เพื่อการทำงานโดยเฉพาะ ตัวอย่างเช่น ต้นไม้แบบ 2-3 บี ปมภายในแต่ละปมสามารถมีปมลูกได้ 2 หรือ 3 ปม
 
ปมภายในแต่ละปมของต้นไม้แบบบีจะเก็บคีย์ไว้จำนวนหนึ่ง โดยปกติ จำนวนคีย์ถูกเลือกระหว่าง <var>d</var> และ <var>2d</var> ในทางปฏิบัติคีน์กินที่ส่วนใหญ่ในปม เลข 2 ซึ่งเป็นตัวคูณ เป็นตัวรับประกันว่าปมนั้นสามารถแบ่งแยก หรือรวมได้ ถ้าปมภายในมี <var>2d</var> คีย์ การเพิ่มคีย์ให้ปมนั้นสามารถทำด้โดยการแบ่งปมที่มี <var>2d</var> คีย์ ออกเป็นปมที่มีคีย์ <var>d</var> 2 ปม และเพิ่มคีย์ให้กับปมพ่อแม่ ปมที่แบ่งแยกออกไปแต่ละปมมีจำนวนที่ต้องการน้อยที่สุดของคีย์ ในทำนองเดียวกัน ถ้าปมภายในและปมข้างเคียงของมันต่างก็มีคีย์เท่ากับ <var>d</var> คีย์ คีย์อาจถูกลบจากปมภายในโดยการรวมคีย์เข้ากับปมข้างเคียงของมัน การลบคีย์ทำให้ปมภายในมีคีย์เท่ากับ <var>2d - 1 </var> คีย์ ส่วนการรวมกับปมข้างเคียงจะเพิ่มคีย์ให้กับมัน <var>d</var> คีย์ บวกกับอีก 1 คีย์จากปมพ่อแม่ของปมข้างเคียง ผลที่ได้จะทำให้มันเป็นปมเต็มที่มี <var>2d</var> คีย์
 
จำนวนกิ่ง(หรือปมลูก) จากปมนั้นจะมีมากกว่าจำนวนคีย์ในปมอยู่ 1 ในต้นไม้แบบ 2-3 ปมภายในอาจเก็บหนึ่งคีย์ (โดยมีปมลูก 2 ปม) หรือมี 2 คีย์ (โดยมีปมลูก 3 ปม) บางครั้งต้นไม้แบบีถูกอธิบายโดยใช้พารามิเตอร์ <var>(d + 1) - (2d+1)</var> หรือโดยใช้ลำดับกิ่งที่สูงที่สุด (<var>(2d + 1)</var>
 
ต้นไม้แบบบีรักษาสถานะสมดุลโดยความต้องการที่[[ปมใบ]]ทุกปมอยู่มีความลึกเท่ากัน ความลึกนี้จะเพิ่มอย่างช้า ๆ เมื่ออิลีเมนต์ถูกเพิ่มเข้าไปในต้นไม้ และเป็นผลทำให้มีปมๆ หนึ่งอยู่ไกลจากปมราก
 
ต้นไม้แบบบีมีข้อได้เปรียบมากกว่าการทำงานด้วยวิธีอื่นๆ เมื่อเวลาที่ใช้สำหรับการเข้าถึงปมมากกว่าเวลาที่เข้าถึงภายในปม เนื่องจากความสูญเสียที่ใช้ไปสำหรับการเข้าถึงปม อาจทำให้ลดลงไปด้วยการดทำงานหลายอย่างภายในปม สิ่งนี้มักเกิดขึ้นเมื่อปมเก็บใน[[หน่วยความจำสำรอง]] เช่น [[ตัวขับดิสก์]] การทำให้จำนวนของ[[ปมลูก]]ของแต่ละ[[ปมภายใน]]มีจำนวนมากที่สุด ทำให้ความสูงของต้นไม้ลดลง และจำนวนการเข้าถึงปมที่ทำให้สูญเสียประสิทธิภาพการทำงานลดลง การทำให้ต้นไม้กลับสู่สภาวะสมดุลใหม่จึงเกิดขึ้นไม่บ่อยครั้ง จำนวนปมลูกที่มากที่สุดขึ้นกับสารสนเทศที่เก็บสำหรับปมลูกแต่ละปม และขนาดของ[[บล็อกดิสก์]]ที่เต็ม หรือขนาดที่คล้ายคลึงกันในหน่วยความจำสำรอง ในขณะที่ต้นไม้แบบบี 2-3 อธิบายได้ง่ายกว่า ต้นไม้แบบบีในทางปฏิบัติที่ใช้หน่วยความจำสำรองต้องการจำนวนปมลูกในการปรับปรุงประสิทธิภาพ
 
==บรรณานุกรม==
* {{Citation
| last = Bayer
| first = R.
| author-link = Rudolf Bayer
| last2 = McCreight
| first2 = E.
| author2-link = Edward M. McCreight
| title = Organization and Maintenance of Large Ordered Indexes
| journal = Acta Informatica
| volume = 1
| issue = 3
| pages = 173–189
| date =
| year = 1972
| url = http://www.minet.uni-jena.de/dbis/lehre/ws2005/dbs1/Bayer_hist.pdf
| doi =
| ref = harv}}
* {{Citation
| last = Comer
| first = Douglas
| author-link = Douglas Comer
| title = The Ubiquitous B-Tree
| journal = Computing Surveys
| volume = 11
| issue = 2
| pages = 123–137
| date = มิถุนายน 1979
| issn = 0360-0300
| url =
| doi = 10.1145/356770.356776
| ref = harv}}.
 
==แหล่งข้อมูลอื่น==
* [http://slady.net/java/bt/view.php B-Tree animation applet] โดย slady
 
[[หมวดหมู่:ต้นไม้ (โครงสร้าง)]]