¿Qué es una explicación intuitiva de la estructura de datos del árbol B?

Varios vienen a la mente. Tenga en cuenta que estos son intuitivos como “explicables a una persona que no es CS” y pueden no expresar todas las capacidades / estructura recursiva de un árbol B.

1. Un catálogo de tarjetas de la biblioteca.

Es un índice bastante pequeño sobre lo que hay en la biblioteca, y le permite buscar libros por nombre / autor / tema. Una vez que encuentre la tarjeta para el libro que desea, escriba su ubicación física en una tarjeta temporal y vuelva a colocarla en el catálogo. Luego usa la dirección que anotó en la tarjeta temporal para encontrar el libro. Esto es bastante similar a un índice B-Tree en una base de datos relacional típica (por ejemplo, MySQL, Oracle, SqlServer). El salto intuitivo aquí es que el pequeño catálogo de tarjetas te permite inspeccionarlo fácilmente sin gastar la energía de caminar por la biblioteca, y una vez que te mueves físicamente, sabes exactamente a dónde vas.

El límite de esta explicación es que solo tiene un nivel de profundidad. Para mostrar dos niveles de profundidad, vea la siguiente explicación (tiendas).

2. Tiendas minoristas.
Para mostrar un B-Tree multinivel, piense en la experiencia de compra cuando necesite algún producto especializado. Por ejemplo, supongamos que necesita un fusible de repuesto para su automóvil.

Sin B-Trees o cualquier otro índice, es posible que tenga que visitar cada tienda en su ciudad una por una y caminar por todos los pasillos mirando cuidadosamente hasta encontrar el fusible que necesita. Esto sería increíblemente lento y tedioso, hasta el punto de no ser práctico en absoluto.

El índice B-Tree le permite comenzar con algo que está buscando y reducir rápidamente el área que necesita buscar (p. Ej., Todas las tiendas) a una sola área en el siguiente nivel. Para el ejemplo de fusible automático, la búsqueda de primer nivel podría ser buscar “autopartes” o “auto” en la agenda telefónica.

Una vez que encuentre una tienda de autopartes, puede ir directamente a ella en un solo viaje sin tener que visitar otras tiendas primero.
Una vez que llegue allí, encima de cada pasillo y típicamente visibles desde el frente de la tienda, hay letreros de sección con nombres de categoría como “eléctrico”, “neumático”, “limpieza”, etc. Una vez más, esto le permite caminar al pasillo correcto en un solo caminar sin tener que circunnavegar la tienda.
Si la tienda está bien etiquetada, puede haber letreros dentro de cada pasillo con nombres más específicos como “fusibles”, “cables de audio”, “bujías”, etc. Esto le permitirá caminar a la sección exacta (fusibles), donde solo tendría que buscar visualmente un área pequeña para encontrar el fusible que necesita.

¿Ves un patrón aquí? En cada nivel del árbol, un índice de búsqueda + búsqueda muy pequeño y eficiente le permite limitar su búsqueda por orden de magnitud. En términos prácticos, el trabajo que gasta para encontrar su artículo ahora depende de cuántos niveles hay de su búsqueda en lugar de la cantidad total de todos los artículos que existen en el universo. Para el caso de la tienda anterior, a pesar de que puede haber un millón de productos disponibles en una ciudad, solo se necesitan 3 búsquedas fáciles (directorio telefónico, pasillos de la tienda, sección en el pasillo) para reducir a unas pocas docenas de opciones de fusibles.

Conclusión
Ahora, completando la metáfora para relacionarse más con las computadoras, las operaciones de búsqueda / búsqueda son equivalentes a al menos una operación de E / S (búsqueda de disco + lectura de algunos datos), así como el procesamiento de cada índice para encontrar el siguiente nivel ( nodo) para buscar.

El siguiente enlace lo explica bien e intentaré resumirlo aquí. Ordenar y buscar en la biblioteca
Considere el problema de organizar los libros en la biblioteca para una búsqueda rápida. Las bibliotecas usan múltiples jerarquías / catálogos para organizar los libros. ¿Por qué no organizamos todos los libros en orden alfabético y búsqueda binaria? Después de todo, la búsqueda binaria es el mejor método para encontrar un objeto en la memoria de la computadora.

Hay un problema al extenderlo a nuestra biblioteca. La búsqueda binaria supone que la hora de acceso de cualquier ubicación es la misma. Ignora el hecho de que en una biblioteca física tenemos que caminar para acceder a los libros (y el tiempo de caminata es significativamente costoso en comparación con el costo de verificar si un libro es el candidato de búsqueda).

En nuestra analogía de la biblioteca, el libro que estamos buscando representa la clave que estamos buscando, el catálogo jerárquico de la biblioteca es el B-Tree. El tiempo de caminata es el tiempo de búsqueda cuando los datos se almacenan en el disco. Si el tiempo de caminata es insignificante (digamos que tiene ojos robóticos y puede ver todos los títulos del libro sin tener que caminar), entonces la búsqueda binaria es, de hecho, mejor. Los ojos robóticos significa que el acceso aleatorio a cualquier ubicación es tiempo constante.

Si los datos están en la memoria principal, significa que tenemos ojos robóticos sin la necesidad de caminar y usar la búsqueda binaria. Si los datos están en el disco, significa que tenemos que caminar (buscar la ubicación en el disco) y usar una mejor organización jerárquica para evitar caminar (buscar)

http://jorendorff.github.com/hac
gracias Hastagiri Prakash por el enlace

Los árboles B son muy similares a la búsqueda secuencial indexada.

Imagine que tiene una línea de 100 autobuses, y cada uno de ellos tiene un nombre, y están ordenados secuencialmente. Siempre puede usar la búsqueda binaria para encontrar el autobús correcto que le interesa. Esto le costará como máximo 7 “miradas” en los autobuses. Las apariencias son lo único importante en este modelo , ya que suponemos que pasar de un bus a otro es una operación de tiempo O (1).

Ahora, considere que saca cada 20 autobuses, de modo que tiene 20 juegos de 5 autobuses cada uno. Ahora, podemos llegar al conjunto correcto de 5 autobuses usando solo 5 “miradas” y luego podemos seguir con un máximo de 3 “miradas” para ubicar el autobús en el conjunto de 5 que acabamos de encontrar.

Si cambiamos el modelo para que la única consecuencia sea cuántas veces leemos un bloque (o conjunto de hasta 20 autobuses) a la vez. En el segundo método, solo leemos un conjunto de 20 y luego 5 buses, eso es un total de 2 lecturas de bloque.

Esto se relaciona estrechamente con el número de búsquedas de disco que uno necesita para leer un bloque del disco, que es más costoso que casi cualquier otra operación en discos rotativos. Es por eso que deseamos minimizar este costo dominante cuando hablamos de índices de memoria externa.

El modelo del que estamos hablando aquí es el modelo DAM (o memoria externa), que es diferente del modelo de máquina de acceso aleatorio que usamos para analizar la búsqueda binaria.

Los árboles B son esencialmente ” una matriz de rango distribuido ordenado vinculado con un tamaño de matriz secundaria predefinido que permite búsquedas, acceso secuencial, inserciones y eliminaciones en tiempo logarítmico “. Detalle post aquí: ¡memoria local y la magia de B-Trees! por Pawan Bhadauria sobre Amor por la programación

A partir de ahora, este vino a mi mente:

Búsqueda del tesoro:

Los árboles en informática pueden hacerse análogos a una búsqueda del tesoro. ¿No es emocionante pensar así?

Construir los árboles es como colocar pistas alrededor. El proceso de búsqueda es como ubicar uno del otro y finalmente llegar a nuestro destino previsto. Bueno, me sorprende decir que nos ayuda a incluso (agregar nuevas) / (eliminar) pistas y hacer que el proceso sea más interesante.

En la búsqueda del tesoro real, una pista solo apuntaría a otra pista única. Es porque solo un tesoro está escondido en un laberinto.

Pero en una búsqueda de seguridad de árbol B de orden n, podemos dar una pista de significados diferentes. Esos significados ‘n’ conducirían a otros significados diferentes ‘n’ o al menos ‘n / 2’ diferentes. Finalmente podemos colocar muchos tesoros. La búsqueda del tesoro del árbol B es más inteligente.

Pero, ¿por qué los llamamos ‘árboles’ si encuentro todas las hojas en la parte inferior y su raíz en la parte superior? ¿No debería llamarlo un ‘árbol invertido’? Bueno, ese es un debate que ocurre en mi mente.

utilizar ampliamente para la base de datos

realizar menos operaciones de E / S en comparación con RedBlack Tree

menos altura en comparación con RedBlack Tree

¡cada nodo puede tener más de una entrada!

More Interesting

¿Cuál es el mejor algoritmo para descubrir características bien correlacionadas?

¿Cuáles son algunos de los problemas de aprendizaje automático (nivel introductorio) que un estudiante de economía puede modelar con los datos disponibles para una tesis de licenciatura?

Cómo aprender un pozo bayesiano no paramétrico

¿Cuánto tiempo hasta que tengamos aviones autónomos, particularmente aviones de carga grandes y aviones de pasajeros?

¿Cuáles son los algoritmos para el resumen automático? ¿Alguien puede explicar los pasos en el resumen automático?

El problema de los bandidos armados múltiples discutido en el libro de Sutton y Barto, usa 2000 ensayos y 1000 jugadas. Cuál es la diferencia entre esto?

¿La asignación de Dirichlet latente es un modelo paramétrico o no paramétrico?

¿Qué se sabe sobre la detección de incertidumbre o vacilación en el texto en lenguaje natural (no en el habla)?

¿Necesito un título universitario para trabajar en el aprendizaje automático?

Si pronostico grupos en un conjunto de trenes completo y los uso como características categóricas y realizo CV, ¿sería una fuga?

Cómo aprender a convertirse en un experto en aprendizaje profundo

¿Qué algoritmo usar en la clasificación de la cobertura del suelo?

¿Existe un programa de tipo PageRank para organizar mis canales RSS diarios?

¿Puedo usar el aprendizaje profundo o ANN para un problema de agrupación como KNN?

¿Cuáles son los temas candentes para la investigación en Machine Learning?