Sei sulla pagina 1di 5

ARBOLES BINARIOS COMO SON USADOS EN EL

MUNDO REAL
Resumen-

Palabras claves-

Abstract–

Keywords–.

1. Introducción Se trata de árboles de orden 2 en los que se cumple para


cada nodo, el valor de la clave de la raíz del subárbol
Este articulo tiene como finalidad la intención de
comprender las aplicaciones de la teoría arboles binarios en izquierdo es menor que el valor de la clave del nodo y que
el mundo real, gracias a esto descubrimos que son muchos el valor de la clave raíz del subárbol derecho es mayor que
los campo donde se puede aplicar esta teoría la mayoría de el de la clave del nodo. [2]
estos relacionados con la resolución de problemas mediante 2.2 conceptos
computación.  Raíz: Es nodo especial el cual posee un árbol el
cual es el punto de entrada a la estructura.
Al estudiar esta teoría surgen en el camino nuevas teorías la  Subárbol: Es un nodo con todos sus
cuales resuelven problemas similares mediante otros descendientes.
métodos en concreto el algoritmo de dijkstra el cual es  Hoja: En nodo sin descendientes
utilizado en la teoría de grafos, lo que nos hizo plantearnos
la pregunta ¿Pude la teoría de árboles binarios resolver de 2.3. Características
manera eficiente problemas en los cuales la teoría de grafos  La clave de los nodos del subárbol izquierdo es
es mayormente la utilizada? mayor a la clave de la raíz. [1]
 La clave de los nodos del subárbol derecho debe
Mediante la investigación observamos que ambas teorías
se mayor a la clave de la raíz. [1]
comparten ciertas similitudes, pero a la vez tienen muchas
diferencias. Pues una tiene reglas preestablecidas para el
comportamiento de la estructura utilizada a la hora de
resolver problemas mientras que la otro no posee reglas
planteadas para ello.

Este documento ha sido estructurado de tal manera de en su


inicio se explican brevemente los conceptos básicos de los
árboles de búsqueda binarios y el algoritmo dijkstra para
logra una mejor visión de estos temas.

Figura 1 Árbol Binario de Búsqueda[2]

2.4. Operaciones En Arboles Binarios de Búsqueda


 Buscar un elemento.
 Insertar un elemento.
 Borrar un elemento.
2.Arboles Binarios de búsqueda y  Movimientos a través del árbol [2]
Algoritmo de Dijkstra
2.5. Algoritmo de Dijkstra.

2.1 Árbol binario de búsqueda


El algoritmo de dijkstra también llamado algoritmo de  Un grafo ponderado (G,w) representado mediante
caminos mínimos es un modelo que es clasificado dentro de una lista de adyacencias. G representa el conjunto de
los algoritmos de búsqueda. Su objetivo, es determinar la vértices y w (u, v) el peso del arco (u,v)
ruta más corta, desde el nodo origen, hasta cualquier nodo  Un conjunto U de los vértices que se han visitado,
de la red. [4] en el orden en el que se ha hecho.
2.6. Características del algoritmo.  Una tabla de distancias, dist(・), indexada por los
 Es un algoritmo greddy. vértices de G, que registra la distancia del vértice inicial
 Trabaja por etapas, y toma en cada etapa la mejor a los vértices que se van visitando.
solución sin considerar consecuencias en las  Al final, la tabla dist(・) registra la distancia desde
siguientes etapas. el vértice inicial al resto de los vértices.
 El Optimo encontrado en una etapa puede
modificarse posteriormente si surge una solución
mejor. [3]
2.7. Algoritmo en pseudocódigo 3.4 búsqueda binaria
 Considerar distancia [i] como la distancia más
corta del vértice origen ingresado al vértice i.[5] La búsqueda binaria se basó en Ir del nodo raíz hasta
cualquier pasando por sus nodos anteriores y siguientes
2. Materiales y métodos nodo, calculando el tiempo y distancia entre nodos así saber
Diferentes autores han considerado los siguientes métodos: cual es la ruta más corta.
3.1. Hashing Por Residuo
Consiste en tomar el residuo de la división de la clave entre Hash Por Medio Cuadrado:
el número de componentes del arreglo.  Este método no puede ser implementado en
La función hash queda definida por la siguiente fórmula; arreglos pequeños.
 Al aplicarlo se necesitó de muchos procesos, ya
que consta de especificaciones como: seleccionar
dos de los dígitos centrales de la cadena de
números. Esto implica que el valor numérico que
salía de la conversión tenía que pasarse de nuevo a
una variable de tipo String (Cadena de caracteres)
para poder determinar sólo los dos números que se
iban a usar.
Figura 2 pseudocódigo del Algoritmo de Dijkstra[5] Ambos métodos indicaban errores que se evidenciaron en
los ensayos, al intentar solucionar una colisión de una
colisión; ambos tenían desventajas:
 No contaban de un método propio para evitar las
colisiones y hacer búsquedas de llaves.
 Son estáticos, al punto de no poder responder a
colisiones continuas.
H(K)= (K mod N) +1 (2)
Considerando la experiencia descrita y todo el análisis
Para mejor manejo se pide que N sea un número primo
teórico planteado, creamos el método que denominamos el
inferior al número total de elementos [5]. Ejemplo:
Método del Módulo de la Cadena.

Figura 4. Gráfica del funcionamiento Método del Módulo


de la Cadena.

En resumen el programa trabaja de la siguiente manera:


Paso1: Se ingresa la cadena que se desea guardar.
Figura 2. Diagrama del Hashing por Residuo [1]. Paso2: Se hace una sumatoria de códigos ASCII de cada
caracter de la cadena para que al final quede una sola
3.2. Método del Algoritmo de Dijkstra variable.
Paso3: Generar la llave mediante la fórmula:
El algoritmo de Dijkstra se basa en las siguientes llave = ( (Sumatoria ASCII / ASCII del Carácter de la
estructuras:
Cadena) mod Tope) +1
Básicamente consiste en:
 Tomar el valor resultante de la sumatoria ASCII.
 Dividir el resultado anterior entre el valor ASCII
del primer carácter y tomar el cociente.
 Dividir el cociente entre el tope o tamaño total del
arreglo.
 Extraer sólo el módulo de la operación anterior y
sumarle uno “1”.
Paso Auxiliar: si se produjera una colisión después de la
búsqueda de la llave y si está ocupado el registro, se pasa a
la fórmula auxiliar que se muestra:

sumaASCII= sumaASCII + (llave^2) + ((ASCIIcaracter(i))^3 )


Figura 6. Diagrama donde se ejecuta una colisión [1]
Nota: este ciclo se repetirá hasta que ya no ocurra ninguna
En la imagen anterior se observa que el dato Jirafa es
colisión. Además, se incluye una variable contador que
insertado y se le asigna una llave (02).
tiene como tope el tamaño de la cadena que se ingresó para
Al momento de insertar el dato Tigre se le sitúa en la misma
que no resulte ningún error.
llave (02); esto provoca la pérdida de datos.
Paso 4: almacenamiento del elemento en el registro que
indica la llave.
4.1. Métodos para Evitar Colisiones
 Propagar los registros: Distribuyendo de manera
Concretamente, las fórmulas del Método del Módulo de la
aleatoria los registros podemos evitar
Cadena son las siguientes:
llave= ((Sumatoria ASCII / ASCII del Carácter de la Cadena)
“agrupaciones” de llaves que produzcan las
mod Tope) +1 (4) mismas direcciones.
sumaASCII= sumaASCII + (llave^2) + ((ASCIIcaracter(i))^3 )  Usar memoria adicional: Dispone de almacenar
(5) un espacio de direcciones mayor que el número de
registros a usar, de modo que, si vamos a insertar
El siguiente Diagrama ilustra el Método del Módulo de la 100 registros, tener un espacio de 500 direcciones,
Cadena: evita errores de almacenamiento.
 Colocar registros adicionales en una dirección:
A diferencia de los anteriores donde cada dirección
almacena únicamente un registro, como si fueran
casilleros; este método coloca los registros que
colisionan en un único registro, de manera que al
hacer la búsqueda debemos recuperar el casillero
entero y entonces buscar el registro deseado.

4.2. Comparación de los Métodos para búsqueda de


registros.
 Búsqueda Secuencial: Busca un elemento
comparándolos secuencialmente con cada uno de
los elementos existentes en algún tipo de arreglo,
hasta que lo encuentre. Se utiliza ya cuando el
vector no se encuentra ordenado o no se pueda
ordenar debido a ciertas condiciones. [3]
 Búsqueda Binaria: Se divide y se compara con el
elemento central, si el elemento es menor se busca
en la izquierda y si es mayor hacia la derecha. El
Figura 5. Diagrama del Método del Módulo de la Cadena Arreglo debe estar ordenado para poder trabajar
este método. [3]

4. Colisiones
Errores causados por la asignación de múltiples de datos
5. Usos de Hash
que van dirigidos a una misma llave.  Cuidar la confidencialidad de las contraseñas. [8]
 Respaldar la seguridad de los datos.
 Autentificación de los documentos, textos,
imágenes entre otros tipos de archivos [6].
 Este método se utiliza en informática forense para
confirmar la autenticidad de los datos extraídos
con los datos a procesar. Esto nos daba la
seguridad que los datos no habían sido alterados.
 Las funciones Hash están inmersas en el protocolo discriminar entre los mecanismos Hash más eficientes en
Bitcoin en dos importantes áreas: direcciones y base a la particular confidencialidad que se demanda.
minería, relacionadas directamente con la Casos reales en informática forense demuestran cómo los
generación de las claves públicas y privadas datos, principalmente cuentas de banco, son atacados en
usadas en esta tecnología. secreto, cometiendo delitos informáticos donde se
 Para descifrar datos almacenados en medios modifican documentos, imágenes, tablas con fines
volátiles o RAM, utilizábamos Rainbows Tables o deshonestos. En este contexto cobran importancia los
tablas conjuntas de hash para acceder a esos datos. métodos que evitan colisiones y salvaguardan información.
Las Rainbows Tables es un bloque de tablas hash que Opinamos que por el método Binario se maneja mejor la
asemejan la combinación de una clave de datos cifrados. búsqueda de datos, por el hecho de ser fácil y da la
confianza de que no tendremos problemas al comparar
elementos del arreglo. Sin embargo, los datos almacenados
tienen que estar ordenados, lo cual puede asumirse como
desventaja.
En cambio, la búsqueda secuencial no necesita estar
ordenada, pero requiere un mayor tiempo de búsqueda en
muchos casos; debido a que tiene que analizar todo el
arreglo para poder encontrar el elemento.
Figura 7. Uso de una Rainbow Table. Finalmente, con el método del hash el problema que ocurre
es que si se dan casos de valores o datos muy largos puede
6. Resultados ser un poco inestable, sin mencionar el problema de las
colisiones que presentan.
El equipo tomó la información y los datos que recabó en
Por otro lado, el Método de Transformación de Llaves
esta investigación y los llevó a un plano físico con
considera un enfoque de seguridad de datos, pues no solo
limitaciones, como un espacio de almacenamiento de cien
comprueba ficheros, si no también verifica que la integridad
registros. Como resultado se comprobó que uno de los
no haya sido modificada.
métodos (Hash Medio Cuadrado) que investigamos no
Al aplicar todos estos conocimientos nos percatamos de que
podría ser utilizado en estos casos ya que las llaves que
el hash es necesario para ver errores de almacenamiento y
generaban estaban fuera del rango del arreglo.
colisiones de información, por ello sugerimos que el Hash
El otro método (Hash por Residuo) evidenció resultados
se implemente en todo tipo de procesos que manipulen
buenos, llaves precisas, fáciles de manejar y utilizar.
información y así evitar que sean plagiados o almacenados
Sin embargo, los dos métodos tenían un pequeño problema
de una forma inadecuada en la que se pueda perder
que no solucionaban: si ellos al generar una llave podrían
información.
ocasionar una colisión no tendrían métodos para
Como trabajos futuros se tiene contemplado mejorar el
contrarrestar este problema.
código desarrollado en Java para el Método del Módulo de
Es la oportunidad de innovar, por lo cual nosotros
la Cadena y programarlo en otros lenguajes, además de
decidimos desarrollar un método que denominamos “El
probarlo en diversos DBMS.
Método del Módulo de la Cadena” el cual contiene dos
También deseamos explorar la relación de Hash con el
fórmulas:
soporte para sistemas embebidos y de clúster. Y siendo más
- Fórmula Generadora de Llaves (llave= ((sumaASCII /
audaces, sería interesante la posibilidad de implementar
ASCIIcaracter(i)) mod TOPE) +1): esta fórmula es
versiones más recientes del kernel (4.9.9), que incluye el
capaz de generar llaves de forma precisa teniendo
soporte a OrangeFS y USB 3.1.
como entrada sólo la cadena que se va a procesar. De
manera automática se ejecutan los cálculos que crean
la llave. REFERENCIAS
- Fórmula Auxiliar Contrarrestradora de Colisiones [1] Osvaldo Cairo, Silvia Guardati,”Estructura de
(sumaASCII=sumaASCII + (llave^2) + Datos”, tercera edición, fecha de consulta:
( ASCIIcaracter(i)^3)): es utilizada para los problemas 2/05/2017.
de colisiones que pueden ocurrir después de la
generación de una llave. [2] N. Wirth 1985, "Algorithms and Data Structures",
Oberon version: August 2004), fecha de consulta:
7. Conclusiones 3/05/2017.
La información genera conocimiento y éste es a su vez
poder. En la medida que la información esté asegurada [3] Ana Castro, “función Hash”, URL:
mediante técnicas Hash como las contempladas en este https://es.slideshare.net/analivecastrovargas/funcio
documento, las empresas obtendrán competitividad al n-hash-metodos-de-divisi , 2014, fecha de
ofrecerles a sus clientes la garantía de la protección de la consulta: 3/05/2017.
información. Sin embargo, ser conscientes de que algunas
técnicas revelan algunos vacíos también es importante para
[4] Autor Anónimo “Búsqueda por Hash”, URL:
https://es.slideshare.net/sykrayo/busqueda-por-
hash, 2011.

[5] Edgar Blake, “Hash”, URL:


https://prezi.com/p4rvhh_hmf9b/hash-residuo-de-
division/, 2012, fecha de consulta: 12/05/2017.

[6] Diego García Ordás, Laura Fernández Robles,


María Teresa García Ordás, Óscar García-Olalla,
Enrique Alegre Gutiérrez, “Comprobar
modificación de Imagenes”, URL:
http://www.asasec.eu/docs/results/result3/ASASE
C_Articulo_Encontrar_imagen_modificada.pdf,
fecha de consulta: 7/05/2017.

[7] Jesper M Johansson, Josh D. Benaloh, “Password


protection’’,URL:
https://www.google.com/patents/US7602910,
2009, fecha de consulta: 8/05/2017.

[8] Anyi Bernal, “Algoritmos de Búsqueda Hash”,


URL:https://prezi.com/ghlikcvrek1o/algoritmos-
de-busqueda-hash, Fecha de creación: 18/05/2016,
Fecha de consulta: 6/06/2017.

[9] Paulaila Toledo, “Búsqueda mediante


transformación de claves”, URL:
https://paulailatoledo.wordpress.com/2012/06/15/b
usqueda-mediante-transformacion-de-claves-
hashing/, fecha de consulta: 6/6/2017.

[10]Autor Anónimo, “El Código ASCII”, URL:


http://www.elcodigoascii.com.ar/, fecha de
consulta: 1/9/2017.

Potrebbero piacerti anche