Saya cukup akrab dengan B Tree, terutama harus menjaga agar database tetap dialiri oleh listrik, AC, dan ruang harddisk. Saya mengaitkan dengan daftar tertaut ganda (yaitu [mata, mata]?).
Hari ini, salah satu pengembang saat makan siang menyebutkan pohon R.
Saya melompat ke Wikipedia dan mulai membaca. Kedengarannya mengerikan seperti pohon B yang lebih tinggi. Sayangnya, tidak memiliki latar belakang matematika yang mendalam membuatnya sulit untuk memahami apa yang dibicarakan beberapa rekan kerja saya.
Saya berharap jika seseorang dapat mengklarifikasi beberapa perbedaan antara pohon B dan pohon R. Aku mungkin akan berakhir bertanya pada mereka, tapi tidak ada jaminan bahwa mereka akan menjawab pertanyaanku. Kemungkinan besar mereka akan mulai mengoceh tentang apa yang Tuhan tahu. . .
sumber
Jawaban:
R Tree dapat dianggap sebagai generalisasi dari b-tree. Di mana b-tree menyediakan O (log n) akses di atas "rentang terbatas" dari kunci yang dikandungnya, R Tree menyediakan O (log n) akses di atas "wilayah dimensi K" dari kunci yang dikandungnya.
Jika Anda ingin memetakan kode pos ke nama county, Anda bisa menggunakan B-Tree, karena Anda bisa bertanya "Apa semua negara dengan kode pos antara 60000 dan 61000?" Namun, B-Tree akan tidak cocok untuk memetakan koordinat GPS ke nama-nama county untuk pertanyaan seperti "Apa semua kabupaten dalam 100 mil dari Chicago?", Karena itu hanya memesan kuncinya pada dimensi tunggal. R-Tree memecah kuncinya sesuai dengan kotak tumpang tindih yang tumpang tindih, dan itu adalah cara alami untuk menyimpan kunci ketika Anda perlu melakukan query pada berbagai dimensi.
sumber
Sebagian besar struktur pohon dapat direduksi menjadi beberapa bentuk daftar yang ditautkan, selama Anda mengabaikan cara pembuatan daftar (khususnya, bagaimana elemen ditambahkan dan dihapus, dan bagaimana simpul-simpul tersebut disusun kembali, jika ada). Ini pada dasarnya adalah algoritma penyisipan / penghapusan / pengambilan yang membedakan satu struktur data dari yang lain.
Node dalam R-Tree umumnya berisi kotak pembatas, yang memungkinkan Anda untuk mengindeks lokasi secara efisien, seperti yang mungkin Anda perlukan jika Anda ingin mencari catatan "di dekat" lokasi tertentu. Elemen dalam B-Tree memiliki pemesanan yang lebih sederhana; Anda dapat langsung membandingkan apakah sesuatu lebih besar atau sama dengan elemen lain. Dalam R-Tree, tujuan setiap entri adalah untuk menentukan elemen apa yang terkandung dalam kotak pembatas.
B-Tree memungkinkan Anda untuk mencari item yang dapat dipesan secara efisien dalam memori sekunder (seperti hard disk), dan R-Tree memungkinkan Anda untuk mencari elemen-elemen yang "at" atau "dekat" titik atau kotak pembatas tertentu secara efisien, juga dalam memori sekunder.
sumber