Estructuras de datos
Una
estructura de datos es la forma en la que se organiza un conjunto de
datos con el objetivo de facilitar su manipulación. Las estructuras de
datos muestran la manera lógica y congruente de como relacionar los
datos, la forma en la que se organiza la información y que sera
almacenada y procesada por el software.
Arreglos
Un
arreglo es un un grupo o colección finita de elementos que se
encuentran ubicados en forma consecutiva. Hay 3 tipos de arreglos: de
una dimensión, bidimensionales y de 3 o mas dimensiones.
A continuacion un ejemplo:
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; int main () { srand(time (0)); for (int i=0; i<=1; i ++); { cout << 1+(rand()%6) << endl; } system("PAUSE"); return 0; } |
Cadena
Es una secuencia ordenada de longitud finita de elementos, la cual es una sucesion de caracters letras, numeros u otros signos.
A continuacion un ejemplo:
| #include <stdio.h>
#include <string.h> #include <windows.h> main() { char nombre[20]; printf( "Introduzca su nombre (20 letras maximo): " ); scanf( "%s", nombre ); int longitud; longitud = strlen(nombre); printf( "Su nombre \"%s\" tiene %i caracteres.\n", nombre, longitud ); system("PAUSE"); } |
LISTA
Es una colección de elementos
dispuestos uno detrás del otro, en la que cada elemento se conecta
al siguiente por un "Enlace" o "Puntero".
Como se observa en la imagen,
los nodos de las listas al igual que las colas y pilas, está
compuesta por una parte de información y
el puntero que mantiene el enlace entre un nodo y otro.
Existen varios tipos de Listas, pero
para efectos de comprensión y sintetización, hablaremos de cuatro
tipos esenciales de listas:
- Lista Simplemente enlazada
- Listas doblemente enlazadas
- Listas Circulares
- Lista circular doblemente enlazada
|
#include
<stdlib.h>
struct
lista
{
int
clave;
struct
lista *sig;
};
int
main(void)
{
struct
lista *L;
struct
lista *p;
int
i;
L
= NULL; /* Crea una lista vacia */
for (i = 4; i >= 1;
i--)
{
/* Reserva memoria
para un nodo */
p = (struct lista *)
malloc(sizeof(struct lista));
p->clave = i; /*
Introduce la informacion */
p->sig = L; /*
reorganiza */
L = p; /* los
enlaces */
}
return 0;
}
|
Pila
La
pila
que permite almacenar datos en el orden
LIFO
(Last In First Out) en español, último en entrar, primero en
salir).La
recuperación de los datos es hecha en el orden inverso de su
inserción.
Para
la implementación he elegido una lista enlazada simple, presentada
sobre la vertical. Ya que la inserción es siempre hecha al
inicio de la lista, el 1er elemento de la lista será el ultimo
elemento ingresado, por lo tanto estará en la cabeza de la pila.
Lo interesante es que el ultimo elemento ingresado, será el 1er elemento recuperado.
A continuacion un ejemplo:
Árbol
Un arbol es una estructura de datos se llama asi por que imita la forma de un arbol. Un nodo es la unidad sobre la que se construye el arbol y puede tener cero mas nodos hijos conectados a el.
![]() | |
| Un Ejemplo de un Arbol |
A continuacion veremos un ejemplo en codigo:
Tabla de dispercion
las
tablas de dispersión tienen como
finalidad realizar la búsqueda o eliminación de un registro con una
complejidad constante. La organización ideal de una tabla es aquella
en la cual el campo clave de los elementos se corresponde
directamente con el índice de la tabla.
A contnuacion un ejemplo:
A contnuacion un ejemplo:
public
struct SampHashKey
{
public int a { set; get; }
public int b { set; get; }
public int c { set; get; }
public int d { set; get; }
}
public
override int GetHashCode()
{
MessageBox.Show("llamando a GetHashCode");
return base.GetHashCode();
}
public
void Test()
{
Dictionary<SampHashKey, string> oD = new
Dictionary<SampHashKey, string>();
oD.Add(sSHK1, "s");
}
|
Tipos de tabla
- Hash de division
- Hasta de multiplicacion
Big Data
Se
refiere a la tendencia en el avance de la tecnologia que ha abierto
nuevas puertas hacia un enfoque de entendimeinto y toma de deisiones, la
cual se utiliza para describir enormes cantidades de datos que tomar
demaciado tiempo y seria costoso cargarlos a una base de datos
relacional para su analizsis. De tal modo que Big Data se aplica para
aquella informacion que no puede ser procesada o analizada utilizando
procesos o herramientas tradicionales. Sin embargo no refiere a ninguna
cantidad en especifico, ya que sse utilia cuando se habla en terminos de
petabytes (Petabyte = 1015 = 1,000,000,000,000,000) y exabytes (Exabyte = 1018 = 1,000,000,000,000,000,000) de datos.
Componentes:
Hadoop
es una plataforma de codigo abierto que se utuliza para analizar
enormes cantidades de informacion, esta insipirada en el proyecto de
Google File System y en el pardigma de MapReduce.Hadoop está compuesto de tres
piezas: Hadoop Distributed File System (HDFS), Hadoop MapReduce y Hadoop Common.
Map Reduce
Es
el nucleo de Hadoop, se refiere a dos procesos separados que Hadoop
ejecuta, el primero es un proceso "map" el cual toma un conjunto de
datos y lo convierte en otro conjunto, donde los elementos individuales
son separados en tuplas (pares de llave o valor.
El
proceso de reduce obtiene la salida de "map" como datos de entras y
combina las tuplas en un conjunto mas pequeño. Una fase intermedia
"shuffle" la cual obtiene las tuplas del proceso "map" determna que nodo
procesara estos datos dirigiendo la salida a una tarea de "reduce" en
especifico.
El siguiente ejemplo es un flujo de datos de un proceso sencillo de MapRaduce









0 comentarios:
Publicar un comentario