SlideShare una empresa de Scribd logo
Casos de uso reales
Estructuras de
datos avanzadas
Ingeniero de Software en Creditas
Nelson González Peñate
nelsonglez1991@gmail.com
“...una estructura de datos
es una colección de
valores de datos, las
relaciones entre ellos y las
funciones u operaciones
que se pueden aplicar a
los datos.”
Enciclopedia de Ciencias de la ComputaciónEstructura de datos
¿Qué hace que una herramienta sea eficaz?
¿Qué nos puede ayudar a elegir la herramienta adecuada?
Índices en las bases de datos
Un índice de base de datos es una estructura de datos que mejora la velocidad
de las operaciones de recuperación de datos en una tabla a costa de escrituras y
espacio de almacenamiento adicionales.
CREATE INDEX index_name ON table_name (column_name) USING HASH;
CREATE INDEX index_name ON table_name (column_name) USING BTREE;
Índices en las bases de datos
Un índice de base de datos es una estructura de datos que mejora la velocidad
de las operaciones de recuperación de datos en una tabla a costa de escrituras y
espacio de almacenamiento adicionales para mantener la estructura del índice.
Sistemas hash B-tree (y variantes)
Las dos estructuras más utilizadas para organizar grandes bases de datos
almacenadas en disco son:
Sistema hash
tabla hash
(llave, valor)
función hash
hash
0 1 2 … m - 1
slot
resolución
de colisiones lista<llave, valor>
Inserción
Borrado
Búsqueda
operaciones
Sistema hash
No son buenos cuando
● Se permiten varios registros con
la misma llave
● Se pretende buscar por rangos
● Se pretende buscar mínimos o
máximos
● Se pretende recorrer en un orden
Sistema hash
Son buenos cuando
● Se pretende responder ¿Qué
registro, si lo hay, tiene llave K?
Para estos casos, el hash debe ser la
elección porque cuando se implementa
correctamente lleva a cabo sus
operaciones en tiempo constante.
B-Tree
Sus variantes B+
-Tree y B*-Tree
Los árboles B-Trees, o alguna de sus
variantes, son la estructura de datos
estándar para la organización de
archivos en aplicaciones que
requieren inserción, eliminación y
búsquedas de rango de claves.
El B-tree es una generalización del 2-3-Tree
https://en.wikipedia.org/wiki/2-3_tree
B-Tree
Características
● Las operaciones de actualización y
búsqueda afectan solo a unos
pocos bloques de disco
● Mantienen registros relacionados
en el mismo bloque de disco
● Garantizan que todos los nodos del
árbol estarán llenos al menos hasta
un cierto porcentaje mínimo. Esto
mejora la eficiencia del espacio
B-Tree
Características
● Cada nodo representa un rango de
elementos
B-Tree
Propiedades de un B-Tree de
orden m
La raíz es una hoja o tiene al menos
dos hijos.
24 24 49 24 4936
36
24 49 67
a) b) c)
d)
B-Tree
Propiedades de un B-Tree de
orden m
Todas las hojas están al mismo nivel
en el árbol, por lo que el árbol siempre
está equilibrado en altura.
24 24 49 24 4936
36
24 49 67
a) b) c)
d)
B-Tree
Búsqueda
● Realice una búsqueda binaria en
los elementos del nodo actual.
○ Si se encuentra un elemento con la
clave de búsqueda, devuelva ese
registro.
○ Si el nodo actual es un nodo hoja y
no se encuentra la clave, es una
búsqueda fallida.
● De lo contrario, siga la rama
adecuada y repita el proceso.
B-Tree
Búsqueda
Se examina la raíz en búsqueda del primer
elemento mayor o igual a la clave
Ejemplo de búsqueda de la clave 47
Al no encontrarse el elemento, la rama de la
derecha es seleccionada
En el hijo derecho no se encuentra el elemento y
se selecciona la rama adecuada para descender
Se analiza el nodo hoja correspondiente y se
encuentra la clave
B-Tree
Inserción
● Encontrar el nodo hoja que debe
contener la clave a insertar
○ Si tiene espacio para insertar la
clave, se inserta manteniendo el
orden.
○ Si no tiene espacio se divide el nodo
en dos y se promueve la clave del
medio al padre, manteniendo el
orden. Insertando el elemento en uno
de los dos nodos resultantes.
■ Si el padre no tiene espacio, se
divide también y se aplica la
misma operación.
24 24 49 24 4936
36
24 49 67
a) b) c)
d)
B-Tree
Generalidades
Generalmente el orden del B-Tree (m)
es igual o mayor a 100 porque con
cada nodo se intenta llenar un bloque
de disco, intentando reducir las
operaciones de lectura y escritura y a
su vez la altura del árbol.
B+
-Tree
La diferencia más significativa con
el B-Tree es que el B+
-Tree solo
almacena registros en los nodos
hojas.
Los nodos internos solo almacenan
las claves y sirven únicamente para
guiar la búsqueda.
Los nodos hojas están enlazados
entre sí para formar una lista
doblemente enlazada.
B+
-Tree
Búsqueda
Es similar que en el B-Tree con la
diferencia que siempre debe
descender obligatoriamente hasta
el nodo hoja correspondiente.
B+
-Tree
Inserción
Es similar que en el B-Tree con la
diferencia que si se necesita dividir
un nodo hoja en dos, lo que se
promueve hacia el nodo padre es
una copia y no se retira la clave de
su lugar.
Insertar registro
con clave 30
B+
-Tree
Observación
Requiere que todos los nodos estén
al menos medio llenos (excepto la
raíz). Por tanto, la utilización del
almacenamiento debe ser al menos
del 50%.
Es similar al B+
-Tree, excepto por
las reglas utilizadas para dividir y
fusionar nodos. En lugar de dividir
un nodo por la mitad cuando se
llena, el B*-Tree le da algunos
registros a su hermano vecino, si es
posible. Si el hermano también está
lleno, estos dos nodos se dividen
en tres.
B*
-Tree
B-Trees
Análisis
El costo asintótico de búsqueda,
inserción y eliminación de registros
de B-Trees, B+
-Trees y B*-Trees es Θ
(log n) donde n es el número total de
registros en el árbol. Sin embargo, la
base del logaritmo es el factor de
ramificación (promedio) del árbol.
B-Tree
Análisis
En la práctica los B-trees y sus
variantes son extremadamente poco
profundos.
B-Tree
Análisis
Como ilustración consideremos un
B+
-Tree de orden 100 y nodos hojas
de hasta 100 registros. Cuando el
árbol tenga altura:
1: puede tener hasta 100 registros
2: hasta 10 000 registros
3: hasta 1 000 000 de registros
4: hasta 100 000 000 de registros
Índices en las bases de datos
Un índice de base de datos es una estructura de datos que mejora la velocidad
de las operaciones de recuperación de datos en una tabla a costa de escrituras y
espacio de almacenamiento adicionales para mantener la estructura del índice.
CREATE INDEX index_name ON table_name (column_name) USING HASH;
CREATE INDEX index_name ON table_name (column_name) USING BTREE;
Trie
Un Trie nos permite buscar palabras que tienen un simple caracter diferente, un
prefijo en común, un caracter faltante, etc.
Pueden insertar y encontrar cadenas en tiempo O (L) (siendo L la longitud de la
cadena). Esto es mucho más rápido que un set, pero es solo un poco más rápido
que una tabla hash.
Trie
Aplicaciones en ingeniería de
software
Los navegadores pueden auto
completar tu texto o sugerir
posibilidades de lo que puedes estar
escribiendo.
El corrector ortográfico puede buscar
si cada palabra que escribes está en
el diccionario.
Trie
Aplicaciones en ingeniería de
software
También se pueden sugerir
correcciones de palabras que están
en el texto pero no en el diccionario.
Se pueden sugerir palabras que
comienzan con el texto que estás
escribiendo.
Trie
¿Qué es?
Es un árbol donde cada nodo
representa una palabra o un prefijo.
El nodo raíz representa una cadena
vacía (“”).
Cada nodo puede tener hasta tantos
hijos como el tamaño del alfabeto que
se quiere usar.
Trie
¿Qué es?
Los nodos que son hijos directos de
la raíz, representan prefijos de
longitud 1, los que están a 2 aristas
de distancia de la raíz son prefijos de
longitud 2 y así sucesivamente.
Trie
Ejemplo
c p
a
s
a c
o
u
e
b
l
o
r
t
o
a
o
oo
s
Trie
Funcionalidades que
implementaremos
● Buscar si una palabra está en el
diccionario
● Contar la cantidad de palabras
que tienen un prefijo
Trie
Métodos a implementar
add_word: Agrega una palabra al
diccionario.
count_possible_words: Cuenta el
número de palabras que tienen una
cadena como prefijo.
count_words: Cuenta el número de
palabras que coincide exactamente
con una palabra dada.
Trie
Estructura de un nodo
1 class trie {
2 int prefixes;
3 int ending_words;
4 trie* nodes[ 27];
5
6 public:
7 trie(){
8 prefixes = 0;
9 ending_words = 0;
10 for(int i = 0; i < 27; i++){
11 nodes[i] = NULL;
12 }
13 }
Trie
Método para agregar una
palabra
1 void add_word(string word) {
2 trie* current = this;
3 for(int i=0; i < word.size(); i++){
4 int pos = word[i]-'a';
5 if(current->nodes[pos] == NULL){
6 current->nodes[pos] = new trie();
7 }
8 current->prefixes++;
9 current = current->nodes[pos];
10 }
11 current->ending_words++;
12 }
Trie
Método para saber la cantidad
de palabras que que son
exactas a una palabra dada
1 int search_word(string word){
2 trie* current = this;
3 for(int i=0; i < word.size(); i++){
4 int pos = word[i]-'a';
5 if(current->nodes[pos] == NULL){
6 return 0;
7 }
8 current = current->nodes[pos];
9 }
10 return current->ending_words;
11 }
Trie
Método para saber la cantidad
de palabras que se pueden
sugerir dado un prefijo
1 int search_possible_words(string prefix){
2 trie* current = this;
3 for(int i=0; i < prefix.size(); i++){
4 int pos = prefix[i]-'a';
5 if(current->nodes[pos] == NULL){
6 return 0;
7 }
8 current = current->nodes[pos];
9 }
10 return current->prefixes;
11 }
Trie
Repositorio con el ejemplo
anterior
https://github.com/npenate/advanced-
data-structures
Trie
Jueces en línea
Sphere Online Judge:
https://www.spoj.com/problems/tag/trie-1
Un problema clásico donde se debe
usar la estructura de datos Trie.
Suffix Tree
Es un Trie comprimido que contiene
todos los sufijos de un texto como sus
claves y las posiciones en el texto
como sus valores.
Tiene aplicaciones en el campo de la
Bioinformática buscando patrones de
ADN o secuencias de proteínas.
https://www.spoj.com/problems/NEXTLEX/
https://www.spoj.com/problems/LCS/https://
www.spoj.com/problems/DISUBSTR/
Casos de uso reales
Estructuras de
datos avanzadas

Más contenido relacionado

La actualidad más candente

Unidad 3 administracion de la memoria
Unidad 3 administracion de la memoriaUnidad 3 administracion de la memoria
Unidad 3 administracion de la memoriacaredimaria
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Algoritmos de gestión de memoria
Algoritmos de gestión de memoriaAlgoritmos de gestión de memoria
Algoritmos de gestión de memoriaadolfoahumada94
 
Forma normal de boyce codd y algoritmos de descomposición
Forma normal de boyce codd y algoritmos de descomposiciónForma normal de boyce codd y algoritmos de descomposición
Forma normal de boyce codd y algoritmos de descomposiciónJuan Anaya
 
Insertar elementos en una cola
Insertar elementos en una colaInsertar elementos en una cola
Insertar elementos en una colajeffersoncenteno
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosVannesa Salazar
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srtCarlos Solano
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLLuiS YmAY
 
Cuestionario
CuestionarioCuestionario
CuestionarioJose Nava
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencialiras loca
 
Base de Datos: introduccion a sistemas de base de datos
Base de Datos: introduccion a  sistemas de base de datosBase de Datos: introduccion a  sistemas de base de datos
Base de Datos: introduccion a sistemas de base de datosYefri Altamirano
 
Desnormalizacion bases datos 2
Desnormalizacion bases datos 2Desnormalizacion bases datos 2
Desnormalizacion bases datos 2Velmuz Buzz
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelaspineda2
 

La actualidad más candente (20)

Unidad 3 administracion de la memoria
Unidad 3 administracion de la memoriaUnidad 3 administracion de la memoria
Unidad 3 administracion de la memoria
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Algoritmos de gestión de memoria
Algoritmos de gestión de memoriaAlgoritmos de gestión de memoria
Algoritmos de gestión de memoria
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Forma normal de boyce codd y algoritmos de descomposición
Forma normal de boyce codd y algoritmos de descomposiciónForma normal de boyce codd y algoritmos de descomposición
Forma normal de boyce codd y algoritmos de descomposición
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Insertar elementos en una cola
Insertar elementos en una colaInsertar elementos en una cola
Insertar elementos en una cola
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Algoritmo de planificación srt
Algoritmo de planificación srtAlgoritmo de planificación srt
Algoritmo de planificación srt
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
3. Modelo ER - Relacional
3. Modelo ER - Relacional3. Modelo ER - Relacional
3. Modelo ER - Relacional
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
BD. control de concurrencia
BD. control de concurrenciaBD. control de concurrencia
BD. control de concurrencia
 
Base de Datos: introduccion a sistemas de base de datos
Base de Datos: introduccion a  sistemas de base de datosBase de Datos: introduccion a  sistemas de base de datos
Base de Datos: introduccion a sistemas de base de datos
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Oracle
OracleOracle
Oracle
 
Desnormalizacion bases datos 2
Desnormalizacion bases datos 2Desnormalizacion bases datos 2
Desnormalizacion bases datos 2
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelas
 

Similar a Estructuras de datos avanzadas: Casos de uso reales

Diapositivas base de datos
Diapositivas base de datosDiapositivas base de datos
Diapositivas base de datoscatherine4ad
 
Clase06 25-06-12
Clase06 25-06-12Clase06 25-06-12
Clase06 25-06-12Free TIC
 
En los recursos de la semana se pueden leer las reglas para planificar una ba...
En los recursos de la semana se pueden leer las reglas para planificar una ba...En los recursos de la semana se pueden leer las reglas para planificar una ba...
En los recursos de la semana se pueden leer las reglas para planificar una ba...Monytha Roman
 
4 4 Bases De Datos
4 4 Bases De Datos4 4 Bases De Datos
4 4 Bases De DatosUVM
 
Campos daniel presentacion de base de datos
Campos daniel presentacion de base de datosCampos daniel presentacion de base de datos
Campos daniel presentacion de base de datosDaniel Campos
 
Diseño de Archivos y Base de Datos
Diseño de Archivos y Base de DatosDiseño de Archivos y Base de Datos
Diseño de Archivos y Base de DatosGuadalupeOsorio9
 
Base de datos
Base de datosBase de datos
Base de datosdanicerv
 
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptxPresentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptxCarlosEspaa16
 
Base de datos (.net)
Base de datos (.net)Base de datos (.net)
Base de datos (.net)7891089671
 
Clases BASE DE DATOS 2022.pptx
Clases BASE DE DATOS  2022.pptxClases BASE DE DATOS  2022.pptx
Clases BASE DE DATOS 2022.pptxMegaComputer2
 
Tarea tatiana
Tarea tatianaTarea tatiana
Tarea tatiananrj11
 

Similar a Estructuras de datos avanzadas: Casos de uso reales (20)

Diapositivas base de datos
Diapositivas base de datosDiapositivas base de datos
Diapositivas base de datos
 
Clase06 25-06-12
Clase06 25-06-12Clase06 25-06-12
Clase06 25-06-12
 
En los recursos de la semana se pueden leer las reglas para planificar una ba...
En los recursos de la semana se pueden leer las reglas para planificar una ba...En los recursos de la semana se pueden leer las reglas para planificar una ba...
En los recursos de la semana se pueden leer las reglas para planificar una ba...
 
Jose osorio
Jose osorioJose osorio
Jose osorio
 
4 4 Bases De Datos
4 4 Bases De Datos4 4 Bases De Datos
4 4 Bases De Datos
 
Concepto de base de datos
Concepto de base de datosConcepto de base de datos
Concepto de base de datos
 
Concepto de base de datos
Concepto de base de datosConcepto de base de datos
Concepto de base de datos
 
Campos daniel presentacion de base de datos
Campos daniel presentacion de base de datosCampos daniel presentacion de base de datos
Campos daniel presentacion de base de datos
 
Bases de datos de informatica
Bases de datos de informaticaBases de datos de informatica
Bases de datos de informatica
 
Diseño de Archivos y Base de Datos
Diseño de Archivos y Base de DatosDiseño de Archivos y Base de Datos
Diseño de Archivos y Base de Datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 
Access
AccessAccess
Access
 
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptxPresentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
Presentación Estructuras de Datos Y Estructuras de Almacenamiento.pptx
 
Base de datos (.net)
Base de datos (.net)Base de datos (.net)
Base de datos (.net)
 
Clases BASE DE DATOS 2022.pptx
Clases BASE DE DATOS  2022.pptxClases BASE DE DATOS  2022.pptx
Clases BASE DE DATOS 2022.pptx
 
documento
documentodocumento
documento
 
documento
documentodocumento
documento
 
n
nn
n
 
Tarea tatiana
Tarea tatianaTarea tatiana
Tarea tatiana
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 
La importancia de crear User Personas y Escenarios
La importancia de crear User Personas y EscenariosLa importancia de crear User Personas y Escenarios
La importancia de crear User Personas y EscenariosSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 
La importancia de crear User Personas y Escenarios
La importancia de crear User Personas y EscenariosLa importancia de crear User Personas y Escenarios
La importancia de crear User Personas y Escenarios
 

Último

proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALGuadalinfoHuscarGuad
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerRobertoCarrancioFern
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxencinasm992
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docxssusere34b451
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialEducática
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfjjfch3110
 

Último (20)

proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 

Estructuras de datos avanzadas: Casos de uso reales

  • 1. Casos de uso reales Estructuras de datos avanzadas
  • 2. Ingeniero de Software en Creditas Nelson González Peñate nelsonglez1991@gmail.com
  • 3. “...una estructura de datos es una colección de valores de datos, las relaciones entre ellos y las funciones u operaciones que se pueden aplicar a los datos.” Enciclopedia de Ciencias de la ComputaciónEstructura de datos
  • 4. ¿Qué hace que una herramienta sea eficaz? ¿Qué nos puede ayudar a elegir la herramienta adecuada?
  • 5. Índices en las bases de datos Un índice de base de datos es una estructura de datos que mejora la velocidad de las operaciones de recuperación de datos en una tabla a costa de escrituras y espacio de almacenamiento adicionales. CREATE INDEX index_name ON table_name (column_name) USING HASH; CREATE INDEX index_name ON table_name (column_name) USING BTREE;
  • 6. Índices en las bases de datos Un índice de base de datos es una estructura de datos que mejora la velocidad de las operaciones de recuperación de datos en una tabla a costa de escrituras y espacio de almacenamiento adicionales para mantener la estructura del índice. Sistemas hash B-tree (y variantes) Las dos estructuras más utilizadas para organizar grandes bases de datos almacenadas en disco son:
  • 7. Sistema hash tabla hash (llave, valor) función hash hash 0 1 2 … m - 1 slot resolución de colisiones lista<llave, valor> Inserción Borrado Búsqueda operaciones
  • 8. Sistema hash No son buenos cuando ● Se permiten varios registros con la misma llave ● Se pretende buscar por rangos ● Se pretende buscar mínimos o máximos ● Se pretende recorrer en un orden
  • 9. Sistema hash Son buenos cuando ● Se pretende responder ¿Qué registro, si lo hay, tiene llave K? Para estos casos, el hash debe ser la elección porque cuando se implementa correctamente lleva a cabo sus operaciones en tiempo constante.
  • 10. B-Tree Sus variantes B+ -Tree y B*-Tree Los árboles B-Trees, o alguna de sus variantes, son la estructura de datos estándar para la organización de archivos en aplicaciones que requieren inserción, eliminación y búsquedas de rango de claves. El B-tree es una generalización del 2-3-Tree https://en.wikipedia.org/wiki/2-3_tree
  • 11. B-Tree Características ● Las operaciones de actualización y búsqueda afectan solo a unos pocos bloques de disco ● Mantienen registros relacionados en el mismo bloque de disco ● Garantizan que todos los nodos del árbol estarán llenos al menos hasta un cierto porcentaje mínimo. Esto mejora la eficiencia del espacio
  • 12. B-Tree Características ● Cada nodo representa un rango de elementos
  • 13. B-Tree Propiedades de un B-Tree de orden m La raíz es una hoja o tiene al menos dos hijos. 24 24 49 24 4936 36 24 49 67 a) b) c) d)
  • 14. B-Tree Propiedades de un B-Tree de orden m Todas las hojas están al mismo nivel en el árbol, por lo que el árbol siempre está equilibrado en altura. 24 24 49 24 4936 36 24 49 67 a) b) c) d)
  • 15. B-Tree Búsqueda ● Realice una búsqueda binaria en los elementos del nodo actual. ○ Si se encuentra un elemento con la clave de búsqueda, devuelva ese registro. ○ Si el nodo actual es un nodo hoja y no se encuentra la clave, es una búsqueda fallida. ● De lo contrario, siga la rama adecuada y repita el proceso.
  • 16. B-Tree Búsqueda Se examina la raíz en búsqueda del primer elemento mayor o igual a la clave Ejemplo de búsqueda de la clave 47 Al no encontrarse el elemento, la rama de la derecha es seleccionada En el hijo derecho no se encuentra el elemento y se selecciona la rama adecuada para descender Se analiza el nodo hoja correspondiente y se encuentra la clave
  • 17. B-Tree Inserción ● Encontrar el nodo hoja que debe contener la clave a insertar ○ Si tiene espacio para insertar la clave, se inserta manteniendo el orden. ○ Si no tiene espacio se divide el nodo en dos y se promueve la clave del medio al padre, manteniendo el orden. Insertando el elemento en uno de los dos nodos resultantes. ■ Si el padre no tiene espacio, se divide también y se aplica la misma operación. 24 24 49 24 4936 36 24 49 67 a) b) c) d)
  • 18. B-Tree Generalidades Generalmente el orden del B-Tree (m) es igual o mayor a 100 porque con cada nodo se intenta llenar un bloque de disco, intentando reducir las operaciones de lectura y escritura y a su vez la altura del árbol.
  • 19. B+ -Tree La diferencia más significativa con el B-Tree es que el B+ -Tree solo almacena registros en los nodos hojas. Los nodos internos solo almacenan las claves y sirven únicamente para guiar la búsqueda. Los nodos hojas están enlazados entre sí para formar una lista doblemente enlazada.
  • 20. B+ -Tree Búsqueda Es similar que en el B-Tree con la diferencia que siempre debe descender obligatoriamente hasta el nodo hoja correspondiente.
  • 21. B+ -Tree Inserción Es similar que en el B-Tree con la diferencia que si se necesita dividir un nodo hoja en dos, lo que se promueve hacia el nodo padre es una copia y no se retira la clave de su lugar. Insertar registro con clave 30
  • 22. B+ -Tree Observación Requiere que todos los nodos estén al menos medio llenos (excepto la raíz). Por tanto, la utilización del almacenamiento debe ser al menos del 50%.
  • 23. Es similar al B+ -Tree, excepto por las reglas utilizadas para dividir y fusionar nodos. En lugar de dividir un nodo por la mitad cuando se llena, el B*-Tree le da algunos registros a su hermano vecino, si es posible. Si el hermano también está lleno, estos dos nodos se dividen en tres. B* -Tree
  • 24. B-Trees Análisis El costo asintótico de búsqueda, inserción y eliminación de registros de B-Trees, B+ -Trees y B*-Trees es Θ (log n) donde n es el número total de registros en el árbol. Sin embargo, la base del logaritmo es el factor de ramificación (promedio) del árbol.
  • 25. B-Tree Análisis En la práctica los B-trees y sus variantes son extremadamente poco profundos.
  • 26. B-Tree Análisis Como ilustración consideremos un B+ -Tree de orden 100 y nodos hojas de hasta 100 registros. Cuando el árbol tenga altura: 1: puede tener hasta 100 registros 2: hasta 10 000 registros 3: hasta 1 000 000 de registros 4: hasta 100 000 000 de registros
  • 27. Índices en las bases de datos Un índice de base de datos es una estructura de datos que mejora la velocidad de las operaciones de recuperación de datos en una tabla a costa de escrituras y espacio de almacenamiento adicionales para mantener la estructura del índice. CREATE INDEX index_name ON table_name (column_name) USING HASH; CREATE INDEX index_name ON table_name (column_name) USING BTREE;
  • 28.
  • 29. Trie Un Trie nos permite buscar palabras que tienen un simple caracter diferente, un prefijo en común, un caracter faltante, etc. Pueden insertar y encontrar cadenas en tiempo O (L) (siendo L la longitud de la cadena). Esto es mucho más rápido que un set, pero es solo un poco más rápido que una tabla hash.
  • 30. Trie Aplicaciones en ingeniería de software Los navegadores pueden auto completar tu texto o sugerir posibilidades de lo que puedes estar escribiendo. El corrector ortográfico puede buscar si cada palabra que escribes está en el diccionario.
  • 31. Trie Aplicaciones en ingeniería de software También se pueden sugerir correcciones de palabras que están en el texto pero no en el diccionario. Se pueden sugerir palabras que comienzan con el texto que estás escribiendo.
  • 32. Trie ¿Qué es? Es un árbol donde cada nodo representa una palabra o un prefijo. El nodo raíz representa una cadena vacía (“”). Cada nodo puede tener hasta tantos hijos como el tamaño del alfabeto que se quiere usar.
  • 33. Trie ¿Qué es? Los nodos que son hijos directos de la raíz, representan prefijos de longitud 1, los que están a 2 aristas de distancia de la raíz son prefijos de longitud 2 y así sucesivamente.
  • 35. Trie Funcionalidades que implementaremos ● Buscar si una palabra está en el diccionario ● Contar la cantidad de palabras que tienen un prefijo
  • 36. Trie Métodos a implementar add_word: Agrega una palabra al diccionario. count_possible_words: Cuenta el número de palabras que tienen una cadena como prefijo. count_words: Cuenta el número de palabras que coincide exactamente con una palabra dada.
  • 37. Trie Estructura de un nodo 1 class trie { 2 int prefixes; 3 int ending_words; 4 trie* nodes[ 27]; 5 6 public: 7 trie(){ 8 prefixes = 0; 9 ending_words = 0; 10 for(int i = 0; i < 27; i++){ 11 nodes[i] = NULL; 12 } 13 }
  • 38. Trie Método para agregar una palabra 1 void add_word(string word) { 2 trie* current = this; 3 for(int i=0; i < word.size(); i++){ 4 int pos = word[i]-'a'; 5 if(current->nodes[pos] == NULL){ 6 current->nodes[pos] = new trie(); 7 } 8 current->prefixes++; 9 current = current->nodes[pos]; 10 } 11 current->ending_words++; 12 }
  • 39. Trie Método para saber la cantidad de palabras que que son exactas a una palabra dada 1 int search_word(string word){ 2 trie* current = this; 3 for(int i=0; i < word.size(); i++){ 4 int pos = word[i]-'a'; 5 if(current->nodes[pos] == NULL){ 6 return 0; 7 } 8 current = current->nodes[pos]; 9 } 10 return current->ending_words; 11 }
  • 40. Trie Método para saber la cantidad de palabras que se pueden sugerir dado un prefijo 1 int search_possible_words(string prefix){ 2 trie* current = this; 3 for(int i=0; i < prefix.size(); i++){ 4 int pos = prefix[i]-'a'; 5 if(current->nodes[pos] == NULL){ 6 return 0; 7 } 8 current = current->nodes[pos]; 9 } 10 return current->prefixes; 11 }
  • 41. Trie Repositorio con el ejemplo anterior https://github.com/npenate/advanced- data-structures
  • 42. Trie Jueces en línea Sphere Online Judge: https://www.spoj.com/problems/tag/trie-1 Un problema clásico donde se debe usar la estructura de datos Trie.
  • 43. Suffix Tree Es un Trie comprimido que contiene todos los sufijos de un texto como sus claves y las posiciones en el texto como sus valores. Tiene aplicaciones en el campo de la Bioinformática buscando patrones de ADN o secuencias de proteínas. https://www.spoj.com/problems/NEXTLEX/ https://www.spoj.com/problems/LCS/https:// www.spoj.com/problems/DISUBSTR/
  • 44. Casos de uso reales Estructuras de datos avanzadas