Entradas

Mostrando las entradas de 2017

Multicore

Algoritmo de Dijkstra

Algoritmo de Dijkstra Un grafo es un conjunto, no vacío, de objetos llamados vértices (o nodos) y una selección de pares de vértices, llamados aristas (edges en inglés) que pueden ser orientados o no. Típica mente, un grafo se representa mediante una serie de puntos (los vértices) conectados por líneas (las aristas). El algoritmo de Dijkstra, es un algoritmo para la determinación del camino mas corto dado un vértice origen al resto de los vértices en un grafo con pesos en cada arista. Aplicar dicho algoritmo es muy sencillo lo único que se debe hacer es: escoger de los nodos adyacentes aquel que tiene una menor peso en la arista a partir del nodo de inicio, repitiendo dicho paso pero esta vez partiendo del nodo actual, así hasta llegar al nodo destino. En múltiples aplicaciones donde se aplican los grafos, es necesario conocer el camino de menor costo entre dos vértices dados: Distribución de productos a una red de establecimientos comerciales. Distribución de correos pos...

Teoria de grafos

Teoria de grafos En matemáticas y en ciencias de la computación, la teoría de grafos (también llamada teoría de las gráficas) estudia las propiedades de los grafos (también llamadas gráficas). Un grafo es un conjunto, no vacío, de objetos llamados vértices (o nodos) y una selección de pares de vértices, llamados aristas (edges en inglés) que pueden ser orientados o no. Típica mente, un grafo se representa mediante una serie de puntos (los vértices) conectados por líneas (las aristas). Definiciones Vértices:   Son los puntos o nodos con los que esta conformado un grafo. Aristas dirigidas y no dirigidas: Las aristas, son las lineas que unen dos vértices, se clasifican en 2: las dirigidas y las no dirigidas. Las dirigidas son las que solo pueden ser recorridas en la dirección definida por el usuario, las no dirigidas pueden ir de un lado a otro sin ningún impedimento. Ciclos y caminos hamiltonianos: Un ciclo es una sucesión de aristas adyacentes, donde no se recorre ...

Arboles de decisión

Arboles de decisión Un árbol de decisión es una forma gráfica y analítica de representar todos los eventos que pueden surgir a partir de una decisión asumida en cierto momento, como también permite técnicamente analizar decisiones secuenciales basadas en el uso de resultados y probabilidades asociadas. Construcción de un árbol de decisiones: vamos a explicar cómo se construye un árbol de decisiones: Elementos: Los árboles de decisión están formados por nodos, vectores de números, flechas y etiquetas Reglas: en el árbol de decisión se tiene que cumplir una serie de reglas: Al comienzo del juego se da un nodo inicial que no es apuntado por ninguna flecha, es el único del juego con esta característica.  El resto de nodos del juego son apuntados por una única flecha.  De esto se deduce que hay un único camino para llegar del nodo inicial a cada uno de los nodos del juego. No hay varias formas de llegar a la misma solución final, las decisiones son excluyentes. ...

Árbol Rojo-Negro

Imagen
Árbol Rojo-Negro Un árbol es un tipo abstracto de datos que define jerarquías,mediante relaciones entre objetos de tipo nodo este esta compuesto de una raíz, nodos con de tipo padre,hijo o hoja y la unión entre ellos se les llama rama. Un árbol rojo-negro es una árbol binario de búsqueda que con la característica que sus nodos tienen un atributos que puede ser color negro o rojo, este con el fin de poder optimizar los métodos de lectura y escritura. Propiedades Los arboles rojo-negro cumplen las siguientes propiedades: Todo nodo es o bien rojo o bien negro. La raiz siempre sera negra. Todas las hojas nulas son negras. Todo los nodo rojo debe tener dos nodos hijos negros. Cada camio desde un nodo dado a sus hojas descendientes contiene el mismo numero de nodos negros. Usos y Ventajas Este es muy valioso en programación funcional donde son una de las estructuras de datos persistentes mas comunes utilizadas en la construcción de arrays asociativos y conjuntos que...

Árbol de directorio

Imagen
Árbol de directorio Un árbol es un tipo abstracto de datos que define jerarquías,mediante relaciones entre objetos de tipo nodo este esta compuesto de una raíz, nodos con de tipo padre,hijo o hoja y la unión entre ellos se les llama rama.  Un arbol de directorio es una forma de mostrar todos los directorio de una unidad de almacenamiento (como disco duro, un disquete, un disco óptico, etc.) en forma de estructura de arbol. En este arbol la raiz suele ser el directorio raiz, el cual se descompone en nodo, que son los subdirectorios. Si se quiere incluir las hojas del arbol, estas serian los archivos. Agregar o eliminar en un árbol de directorio Cada vez que se abre una carpeta el camino o la dirección de la carpeta se va guardando así hasta llegar a la carpeta de destino, una vez que se llego a la carpeta esperada se procede a crear la nueva carpeta o bien a agregar el archivo, este sera enlazado a la carpeta en que se encuentre actualmente. En caso que se de...

Ordenamiento Burbuja

Ordenamiento Burbuja En computación un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación de la entrada que satisfaga, la relación dada. Los ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos que requieren listas ordenadas para una ejecución rápida. Tambien es útil para poner datos en forma canónica y para generar resultados legibles por humanos. El ordenamiento de burbuja es un algoritmo de ordenamiento sencillo. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten mas intercambios, lo cual significa que la lista esta ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios,...

Pilas y Colas

Imagen
Pilas y Colas Pila: una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se eliminan en el orden inverso al que se insertaron. Debido a esta característica, se le conoce como estructura LIFO(last input, first output). Cola: es una estructura de datos, caracterizada por ser una secuencia de elementos ene la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO(first in first out), debido a que el primer elemento en entrar sera también el primero en salir. Ejemplos de pilas y colas Pila Pila:  Pila de platos Pila de ropa Pila de latas en los supermercados Cola: Cola Cola de automóviles esperando servio en una gasolinera Cola de clientes en una ventanilla del banco Cola de programas en espera de ser ejecutados por una computadora ...

Punteros en programación.

Imagen
Punteros en programación. Un puntero es un objeto del lenguaje de programación, cuyo valor se refiere a (o "apunta a") otro valor almacenado en otra parte de la memoria del ordenador utilizando su dirección. Un puntero referencia a una ubicación en memoria, y a la obtención del valor almacenado en esa ubicación. Ejemplo: la variable llamada 'a', apunta a la dirección de memoria 0002 el cual contiene otra dirección (1008) la cual puede contener el dato que se necesita o bien otra dirección de memoria. Los punteros tienen diversos usos que nos facilitan muchas cosas a la hora de programas entre ellas podemos encontrar: En los lenguajes de programación funcionales que dependen en gran medida de las listas, los punteros y referencias son gestionados de manera abstracta por el lenguaje utilizando construcciones internas como constantes. Cuando se trata de matrices, la crítica operación de búsqueda  suele implicar un calculo de dirección  donde podamos encont...

Tipos Abstractos de datos (TAD)

Imagen
Tipos Abstractos de datos (TAD) Un TAD se define como una estructura algebraica compuesta por un conjunto de objetos abstractos que modelan elementos del mundo real, y un conjunto de operaciones para su manipulación. Existen 3 tipos de aplicaciones de los TAD que son: TAD Estáticos. La creación y mantenimiento de un TAD estático requiere de memoria no dinámica, es decir, el espacio en memoria para almacenar los datos es reservado en tiempo de compilación. TAD Dinámicos. La creación y mantenimiento de estructuras dinámicas de datos, requiere de obtener mas espacio de memoria en tiempo de ejecución para almacenar datos o para almacenar el tipo de clase "Nodo". TAD Pila. Una pila es una secuencia de cero o mas elemento de un mismo tipo, que puede crecer y decrecer por uno de sus extremos. fuente:  http://www.udb.edu.sv/udb/archivo/guia/informatica-ingenieria/programacion-ii/2013/i/guia-12.pdf Ventajas de los TAD.           ...