Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Actividad fundamental 1
Actividad fundamental 2
Actividad fundamental 3
Colas
Estructura lineal de datos compuesta por un conjunto de elementos en la que la
adición de nuevos elementos se hará por un extremo de la cola, final (rear), y la
salida de elementos por el contrario, principio (front). Estructura de datos de tipo
FIFO (first in-first out), es decir el primer elemento en entrar es el primero en salir.
En aplicaciones informáticas se utiliza para controlar procesos que tengan que
realizarse en un cierto orden (colas de impresión, colas de prioridades, etc.)
Actividad fundamental 4
PANTALLAZO DE CÓDIGO
PANTALLAZO DE CORRIDA
UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN
FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Actividad fundamental 5
Características:
Una tabla hash se construye con tres elementos básicos:
Un array capaz de almacenar “m” elementos
Función Hash o de dispersiónque permita a partir de
los datos (llamados clave) obtener el índice donde
estará el dato en el arreglo
Una función de resolución de colisiones
Función Hash: Una función hash es método para generar
claves o llaves que representen de manera casi unívoca a
un documento o conjunto de datos. Es una operación
matemática que se realiza sobre este conjunto de datos de
cualquier longitud, y su salida es una huella digital, de
tamaño fijo e independiente de la dimensión del documento original. El contenido
es ilegible
Las operaciones básicas implementadas en las tablas hash son:
inserción(llave, valor)
búsqueda(llave) que devuelve valor
Es claro, que el hashing tiene sus desventajas como cualquier algoritmo, y una de
ellas es lo que se le conoce como colisiones (la operación matemática definida por
la función de dispersión para calcular la posición que ocupa pueda pertenecer a un
campo mas) y la otra, el uso innecesario de memoria en declaraciones de
estructuras amplias intentando evitar dichas colisiones. Por muy buena que sea la
distribución que se realice en la tabla siempre hay posibilidad de que colisiones dos
claves, por ello el estudio del direccionamiento disperso se divide en dos partes:
búsqueda de funciones hash y resolución de colisiones. Existen métodos para
intentar evitar en su mayoría las colisiones, pero no son totalmente perfectos y fijos,
pero los más populares son exploración de direcciones y hashing enlazado
La eficacia de una tabla hash va de acuerdo a como se tratan las colisiones y la
lógica de un algoritmo que permita un rápido acceso e inserción de datos a la
estructura sin ninguna fuga de datos.
Una de las aplicaciones de las tablas hash esta en los compiladores de lenguajes
de programación. La tabla donde se guardan los identificadores del programa, tabla
de símbolos, se implementa como una tabla hash. La clave es el símbolo que se
transforma en un valor entero para aplicar alguna de las funciones hash.
Se pretende con este trabajo de investigación descubrir esta importante y rápida
herramienta y de a ello describir y utilizar las funciones hash como algoritmo más
eficaz que los arrays
Existen dos tipos de tablas hash, en función de cómo resuelven las colisiones:
Encadenamiento separado: Las coliciones se resuelven insertándolas en una
lista. De esa forma tendríamos como estructura un vector de listas. Al número medio
de claves por lista se le llama factor de carga y habría que intentar que esté próximo
a 1.
Direccionamiento abierto: Utilizamos un vector como representación y cuando se
produzca una colisión la resolvemos reasignándole otro valor hash a la clave hasta
que encontremos un hueco.
Inserción:
1. Para almacenar un elemento en la tabla hash se ha de convertir su clave a un
número.
Esto se consigue aplicando la función resumen a la clave del elemento.
2. El resultado de la función resumen ha de mapearse al espacio de direcciones del
arreglo que se emplea como soporte, lo cual se consigue con la función módulo.
Tras este paso se obtiene un índice válido para la tabla.
3. El elemento se almacena en la posición de la tabla, obtenido en el paso anterior.
a. Si en la posición de la tabla ya había otro elemento, se ha producido una colisión.
Este problema se puede solucionar asociando una lista a cada posición de la tabla,
aplicando otra función o buscando el siguiente elemento libre. Estas posibilidades
han de considerarse a la hora de recuperar los datos.
Búsqueda:
1. Para recuperar los datos, es necesario únicamente conocer la clave del elemento,
a la cual se le aplica la función resumen.
2. El valor obtenido se mapea al espacio de direcciones de la tabla.
3. Si el elemento existente en la posición indicada en el paso anterior tiene la misma
clave que la empleada, entonces es el deseado. Si la clave es distinta, se ha de
buscar el elemento según la técnica empleada para resolver el problema de las
colisiones al almacenar el elemento.
Para utilizar las tablas hash en C# necesitamos el nombre de espacio Collections;
El cual lo invocamos de la siguiente forma
using System.Collections;
Sintaxis de métodos que utiliza las tablas hash en C#
• Para crear la tabla hash:
o Hashtable nombretable = new Hashtable()
• Para agregar valores.
o Nombretable.Add(clave, valor);
• Para accedes a los valores por medio de la clave.
o Nombretable [clave]
• Quitar un par llave/valor de la colección.
o Nombretable.Remove(clave)
• Saber si la colección contiene un par cuya clave sea la que se le pasa como
parámetro.
o Nombretable.ContainsKey(clave)
• Contiene un par cuyo valor sea el que se le pasa como parámetro.
o Nombretable.ContainsValue (valor)
UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN
FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Actividad fundamental 6
Iterativo Recursivo
Es más fácil de implementar, por esto es Es más eficiente por reducir el tiempo de
más común búsqueda
UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN
FACULTAD DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Actividad fundamental 7
Tipos de búsqueda
Actividad fundamental 8
Actividad fundamental 9
Grafos
Historia
El trabajo de Leonhard Euler, en 1736, sobre el problema de los puentes de
Königsberg es considerado el primer resultado de la teoría de grafos.
También se considera uno de los primeros resultados topológicos en
geometría (que no depende de ninguna medida). Este ejemplo ilustra la
profunda relación entre la teoría de grafos y la topología. En 1845 Gustav
Kirchhoff publicó sus leyes de los circuitos para calcular el voltaje y la
corriente en los circuitos eléctricos. En 1852 Francis Guthrie planteó el
problema de los cuatro colores que plantea si es posible, utilizando solamente
cuatro colores, colorear cualquier mapa de países de tal forma que dos países
vecinos nunca tengan el mismo color. Este problema, que no fue resuelto
hasta un siglo después por Kenneth Appel y Wolfgang Haken, puede ser
considerado como el nacimiento de la teoría de grafos. Al tratar de resolverlo,
los matemáticos definieron términos y conceptos teóricos fundamentales de
los grafos.
Teoría de grafos
La Teoría de grafos es una mezcla impresionante de cultura, historia,
soluciones matemáticas y retos que llevaron un buen tiempo para ser
resueltos con fórmulas matemáticas.
La teoría de grafos nació con la finalidad de representar de forma visual
conjuntos abstractos de datos que se encuentran en el mundo real para ser
útiles en soluciones de problemas de complejidad.
Notación y conceptos
Un grafo G es un conjunto en el que hay definida una relación binaria,es decir,
G=(V,A) tal que V es un conjunto de objetos a los que denominaremos vértices o
nodos y
A Í V x V es una relación binaria a cuyos elementos denominaremos arcos o aristas.
Si las aristas tienen asociada una dirección (las aristas (x,y) y (y,x) no son
equivalentes) diremos que el grafo es dirigido, en otro caso ((x,y)=(y,x)) diremos que
el grafo es no dirigido.
Matriz de adyacencia
Un grafo se puede representar mediante una matriz A tal que A[i,j]=1 si hay
un arco que conecta vi con vj, y 0 si no. La matriz de adyacencia de un grafo
no dirigido es simétrica.
Recorridos de Grafos
Encontrar ciclos
Encontrar componentes conexas
Encontrar árboles cobertores