Anda di halaman 1dari 22

REPUBLICA BOLIVARIANA DE VENEZUELA

UNIVERSIDAD BICENTENARIA DE ARAGUA


ESCUELA DE INGENIERIA DE SISTEMAS
NUCLEO - APURE

PROFESORA:

ALUMNA:

Ana Virginia Padrino.

Rodriguez Yudesky.
C. I 19.816.752.
III Semestre K.

BIRUACA, FEBRERO DE 2008.


TABLA DE CONTENIDO

INTRODUCCIN.

Grafos.

Composicin de los grafos.

Grafos no dirigibles.

Trminos bsicos de los grafos no dirigibles: adyacente, ciclo, rbol libre,


camino, grafos conectados.

Grafos dirigibles

Mtodos para representar un grafo como una estructura de datos

Representacin en conjunto

Tablas de adyacencias

Aplicaciones de grafos

rboles generales

rboles binarios

Formas de almacenamiento de un rbol binario

Recorrido de rboles

Tipos de recorridos: post-orden, pre-orden

rboles de bsqueda binaria

Ejemplo de bsqueda de un elemento

Aplicaciones de rboles

rbol binario heap

CONCLUSIN.

BIBLIOGRAFIA.

INTRODUCCIN
Hoy en da podemos ver muchas cosas que nos pueden parecer de lo mas
cotidianas, carreteras, lneas telefnicas, lneas de televisin por cable, el transporte
colectivo metro, circuitos elctricos de nuestras casas, automviles, y tantas cosas mas;
lo que no pensamos frecuentemente es que estos forman parte de algo que en
matemticas se denomina como grafos.
En este trabajo se tratar de explicar lo que son los grafos, sus tipos, y algunas
derivaciones de ellos, as como su representacin grfica y en algunos casos, su
representacin en algn programa informtico, as como en la memoria. Tambin
estudiaremos los rboles, tipos, sus aplicaciones, entre otros.
En el mismo, se ha explicando de manera muy sencilla los conceptos y algunas
metodologas con un lenguaje no tan rebuscado para su mayor entendimiento.

GRAFOS
Un grafo es un objeto matemtico que se utiliza para representar circuitos, redes,
etc. Los grafos son muy utilizados en computacin, ya que permiten resolver problemas
muy complejos.
Tambin se puede decir que son la representacin natural de las redes, en las que
estamos cada vez ms incluidos.
Ejemplo:

En la figura, V = {a, b, c, d, e, f}, y A = {ab, ac, ae, bc, bd, df, ef}.
Un grafo es una pareja de conjuntos G = (V,A), donde V es el conjunto de
vrtices, y A es el conjunto de aristas, este ltimo es un conjunto de subconjuntos de la
forma (u,v) tal que

, tal que

. Para simplificar, notaremos la arista

{a,b} como ab.


COMPOSICION DE LOS GRAFOS
Un grafo est compuesto por dos conjuntos:

Un conjunto V de puntos llamados vrtices o nodos.

Un conjunto de pares de vrtices que se llaman aristas o arcos y que indican qu


nodos estn relacionados.

De una manera ms informal podemos decir que un grafo es un conjunto de nodos


con enlaces entre ellos, denominados aristas o arcos.

GRAFOS NO DIRIGIBLES
Un grafo no dirigido de define como un grafo donde los pares de vrtices estn
desordenados. Por desordenados, se entiende que las aristas en un grafo no dirigido no
tienen un vrtice origen ni un vrtice destino.
Grafos no dirigidos En estos grafos, las aristas que comunican dos nodos tienen dos
sentidos. Si una arista va de x a y, la misma arista va de y a x. Se expresa grficamente
por lneas. La representacin grfica de un grafo se define con un crculo o rectngulo
para los nodos y las relaciones con lneas o flechas segn sea un grafo no dirigido o un
dgrafo, respectivamente.
GRAFOS DIRIGIBLES
Un grafo dirigido es definido como aquel donde los pares de vrtices son ordenados.
Por ordenados, se entiende que cada arista en un grafo dirigido tiene un vrtice origen y
un vrtice destino.
Ejemplos:

{v1,v2,v3,v4,v5}

{v1,v2,v3,v4}

E = { {v1,v2}, {v1,v3}, {v1,v5}, {v2,v3}, E = { (v1,v2), (v2,v2), (v2,v3), (v3,v1),


{v3,v4}, {v4,v5} }

(v3,v4), (v4,v3) }

Adems de esto, los grafos pueden ser extendidos mediante la adicin de rtulos
(labels) a los arcos. Estos rtulos pueden representar costos, longitudes, distancias,
pesos, etc.
TERMINOS BASICOS DE LOS GRAFOS NO DIRIGIBLES:

Adyacente: Si existe una arista entre dos vrtices, por ejemplo, p y q, entonces
se dice que son vrtices adyacentes.

Ciclo: un ciclo se define como un camino que contiene un nmero n de vrtices,


colocados de forma que el vrtice 1 es adyacente al vrtice 2, el vrtice 2 es
adyacente al vrtice 3, el vrtice n-1 es adyacente al vrtice n y finalmente el
vrtice n es adyacente al vrtice 1.

rbol libre: un rbol libre es grafo no dirigido que no tiene ciclos.

Camino: un camino es un conjunto de una secuencia de vrtices adyacentes


distintos.

Grafos conectados: un grafo conectado es aquel donde existe un camino de


cualquier vrtice en el grafo hacia cualquier otro vrtice.
LOS METODOS PARA REPRESENTAR UN GRAFO COMO UNA
ESTRUCTURA DE DATOS

Existen diferentes formas de almacenar grafos en una computadora. La estructura de


datos usada depende de las caractersticas del grafo y el algoritmo usado para
manipularlo. Tericamente se pueden distinguir las estructuras de listas y las de
matrices, pero usualmente, lo mejor es una combinacin de ambas. Las listas son
preferidas en grafos dispersos porque tienen un eficiente uso de la memoria. Por otro
lado, las matrices proveen acceso rpido, pero pueden consumir grandes cantidades de
memoria.
Estructura de lista:

Lista de incidencia - Las aristas son representadas con un vector de pares


(ordenados, si el grafo es dirigido) de vrtices que conecta esa arista.

Lista de adyacencia - Cada vrtice tiene una lista de vrtices los cuales son
adyacentes a l. Esto causa redundancia en un grafo no dirigido (ya que A existe
en la lista de adyacencia de B y viceversa), pero las bsquedas son ms rpidas,
al costo de almacenamiento extra.

Estructuras matriciales:

Matriz de incidencia - El grafo est representado por una matriz de A (aristas)


por V (vrtices), donde [arista, vrtice] contiene la informacin de la arista (1 conectado, 0 - no conectado)

Matriz de adyacencia - El grafo est representado por una matriz cuadrada M


de tamao n, donde n es el nmero de vrtices. Si hay una arista entre un vrtice
x y un vrtice y, entonces el elemento mx,y es 1, de lo contrario, es 0.
DENTRO DE LO METODOS (mas comunes)
Representacin en conjunto: Un mtodo para representar un grafo es usando

conjuntos, es mantener dos conjuntos diferentes., como ya se menciono


anteriormente. Otro mtodo es tener solo un conjunto, que en efecto, proporciona la
misma informacin que los dos conjuntos diferentes.
Tablas de adyacencias: La primera forma es por medio de una matriz de
adyacencias tambin llamada listas de adyacencias, con este mtodo se tiene una matriz
de tamao nxn, donde n es el numero de vrtices o nodos en el grafo. Una forma simple
de ver la informacin guardada en dicha matriz es que los renglones de las mismas
representan el origen y las columnas el destino de cada arista o arco en el grafo. Si el
grafo es no ponderado se acostumbra poner un cero en el (rengln i, columna j) de la
matriz cuando no existe dicho arco y un uno cuando dicho arco existe en el grafo. En el
caso de grafos ponderados, se acostumbra poner una bandera (normalmente el valor de
infinito) en las posiciones donde no existe un arco y el peso correspondiente en las
posiciones donde si existe.
Ejemplos:

APLICACIONES
DE

GRAFOS
Los

grafos se pueden usar

para

representar redes de

camino.

En general, se pueden

usar para representar cualquier ruta de viaje, ya sea por tierra, mar, o aire. Los
algoritmos de grafos se pueden usar para determinar si un camino de viaje existe desde
un origen a un destino, Adems, se puede calcular el camino mas corto desde un origen
a un destino usando algoritmos grafos.
RBOLES GENERALES
Un rbol general (a veces es llamado rbol) se define como un conjunto, finito no
vaci T de elementos, llamados nodos, tales que:
1. T contiene un elemento distinguido R, llamado raz de T.
2. Los restantes elementos de T forman una coleccin ordenada de cero o mas
rboles disjuntos T1, T2,.., Tm...
Ejemplo:

RBOLES BINARIOS
Un rbol binario es un rbol con raz en el que cada nodo tiene como mximo
dos hijos.
En ciencias de la computacin, un rbol binario es una estructura de datos en el
cual cada nodo:

No tiene hijos (hoja).

Tiene un hijo izquierdo y un hijo derecho.

Tambin se puede decir que Un rbol binario es una estructura recursiva. Cada nodo
es la raz de su propio subrbol y tiene hijos, que son races de rboles llamados los
subrboles derecho e izquierdo del nodo, respectivamente. Un rbol binario se divide en
tres subconjuntos disjuntos:
{R}
{I1, I2,. . ., IN}

Nodo raiz.
Subrbol izquierdo de R.

{D1, D2,. . ., DN}

Subrbol derecho de R.

Un rbol binario sencillo de tamao 9 y altura 3, con un nodo raz cuyo valor es 2.

Ventajas:
Se necesita uso de pilas para el recorrido.
Sencillez de mantenibilidad y reusabilidad.
Desventajas:
Es difcil construir un rbol binario de bsqueda perfectamente equilibrado.
El nmero de consultas aumenta rpidamente con el nmero de registros a ordenar
FORMA DE ALMACENAMIENTO DE UN ARBOL BINARIO
Los rboles binarios pueden ser construidos a partir de lenguajes de
programacin de varias formas. En un lenguaje con registros y referencias, los rboles
binarios son construidos tpicamente con una estructura de nodos Y punteros en la cual
se almacenan datos, cada uno de estos nodos tienen una referencia o puntero a un nodo

izquierdo y a un nodo derecho denominados hijos. En ocasiones, tambin contiene un


puntero a un nico nodo. Si un nodo tiene menos de dos hijos, algunos de los punteros
de los hijos pueden ser definidos como nulos para indicar que no dispone de dicho
nodo.
RECORRIDO DE RBOLES
En todos estos casos deben hacerse cdigo para imprimir por pantalla el contenido
de los nodos y para guardarlo en una lista, que ser impresa posteriormente. En el
ltimo caso los elementos de la lista deben corresponder, secuencialmente, al recorrido
del rbol.

Realizar recorridos en preorden, inorden y postorden de un rbol

Realizar un recorrido en anchura (por niveles) de un rbol, empezando por el


nivel superior.

Realizar un recorrido en anchura (por niveles) de un rbol, empezando por el


nivel inferior.
TIPOS DE RECORRIDO: inorden, pos orden, preorden, ejemplos de cada
uno:

El recorrido en preorden, tambin llamado orden previo consiste en recorrer en


primer lugar la raz y luego cada uno de los hijos

en orden

previo.

El recorrido en inorden, tambin llamado orden simtrico (aunque este nombre


slo cobra significado en los rboles binarios) consiste en recorrer en primer
lugar A1, luego la raz y luego cada uno de los hijos
simtrico.

en orden

El recorrido en postorden, tambin llamado orden posterior consiste en recorrer


en primer cada uno de los hijos

en orden posterior y por ltimo

la raz.
Se consideran dos tipos de recorrido: recorrido en profundidad y recorrido en
anchura o a nivel. Puesto que los rboles no son secuenciales como las listas, hay que
buscar estrategias alternativas para visitar todos los nodos.
- Recorridos en profundidad:
* Recorrido en preorden: consiste en visitar el nodo actual (visitar puede ser
simplemente mostrar la clave del nodo por pantalla), y despus visitar el subrbol
izquierdo

una

vez

visitado,

visitar

el

subrbol

derecho.

Si se hace el recorrido en preorden del rbol de la figura 1 las visitas seran en el orden
siguiente: a,b,d,c,e,f.
void preorden(tarbol *a)
{
if (a != NULL) {
Visitar(a);
Preorden(a->izq);
Preorden(a->der);
}
}
* Recorrido en inorden u orden central: se visita el subrbol izquierdo, el nodo actual, y
despus se visita el subrbol derecho. En el ejemplo de la figura 1 las visitas seran en
este orden: b,d,a,e,c,f.
void inorden(tarbol *a)
{

if (a != NULL) {
Inorden(a->izq);
Visitar(a);
Inorden(a->der);
}
}
* Recorrido en postorden: se visitan primero el subrbol izquierdo, despus el subrbol
derecho, y por ltimo el nodo actual. En el ejemplo de la figura 1 el recorrido quedara
as: d,b,e,f,c,a.
void postorden(arbol *a)
{
if (a != NULL) {
Postorden(a->izq);
Postorden(a->der);
Visitar(a);
}
}
La ventaja del recorrido en postorden es que permite borrar el rbol de forma
consistente. Es decir, si visitar se traduce por borrar el nodo actual, al ejecutar este
recorrido se borrar el rbol o subrbol que se pasa como parmetro. La razn para
hacer esto es que no se debe borrar un nodo y despus sus subrboles, porque al borrarlo
se pueden perder los enlaces, y aunque no se perdieran se rompe con la regla de
manipular una estructura de datos inexistente. Una alternativa es utilizar una variable
auxiliar, pero es innecesario aplicando este recorrido.

RBOLES DE BUSQUEDA BINARIA

Definicin:
Un rbol es una estructura de datos recursiva que se puede caracterizar en forma
inductiva:

El rbol vaco es un rbol.

Un nodo del cual cuelgan uno ms rboles es un rbol.

Esta seccin discute una de las estructuras de datos ms importantes de la


informtica, el rbol binario de bsqueda. Esta estructura permite buscar y encontrar un
elemento con una media de tiempo de ejecucin f (n) = 0 ( log2 n), tambin permite
insertar y borrar elementos fcilmente. Esta estructura contrasta con las siguientes
estructuras:
a. Array lineal ordenado. Aqu se puede buscar y encontrar un elemento con un
tiempo de ejecucin f(n) = (log2n), pero es costoso el insertar y borrar
elementos.
b. Lista enlazada. Aqu se puede insertar y borrar elementos fcilmente, pero es
costoso el buscar y encontrar un elemento, ya que se debe usar una bsqueda
secuencial.
Aunque cada nodo de un rbol binario de bsqueda puede contener un registroentero
de datos, la definicin del rbol binario depende de un campo dado cuyos valores son
distintos y deben estar ordenados.
Supongamos que T es un rbol binario. Entonces T se dice que es un rbol binario de
bsqueda ( o rbol binario ordenado) si cada nodo N de T tiene la siguiente propiedad:

el valor de N es mayor que cualquier valor del subrbol izquierdo de N y es menor que
cualquier valor del subrbol derecho de N. ( no es difcil ver que esta propiedad
garantiza el recorrido inorden de T dar una lista ordenada de los elementos de T) .

EJEMPLO DE BUSQUEDA DE UN ELEMENTO


La bsqueda binaria es un algoritmo de bsqueda.
Para realizarla, es necesario contar con un array o vector ordenado. Luego tomamos
un elemento central, normalmente el elemento que se encuentra a la mitad del arreglo, y
lo comparamos con el elemento buscado. Si el elemento buscado es menor, tomamos el
intervalo que va desde el elemento central al principio, en caso contrario, tomamos el
intervalo que va desde el elemento central hasta el final del intervalo.
Procedemos de esta manera con intervalos cada vez menores hasta que lleguemos a
un intervalo indivisible, en cuyo caso el elemento no est en el vector, o el elemento
central sea nuestro elemento.
De esta forma la complejidad computacional se reduce a O (ln N).
El algoritmo se puede implementar con o sin recursin, a continuacin se presenta
una versin iterativa en Lenguaje C:
) Inicio = medio+1; else final = medio-1;}return -1;}
Y aqu mostramos una versin recursiva del mismo algoritmo:
) Return bbin (dato, v, medio+1, final) ;}.
APLICACIONES DE RBOLES

Supongamos que tenemos un arreglo en donde queremos encontrar todos los


duplicados. Esta situacin es bastante til en el manejo de las bases de datos, para evitar
un problema que se llama redundancia.
Una manera de encontrar los elementos duplicados en un arreglo es recorrer todo
el arreglo y comparar con cada uno de los elementos del arreglo. Esto implica que si el
arreglo tiene
problema si
medida que

elementos, se deben hacer

comparaciones, claro, no es mucho

es un nmero pequeo, pero el problema se va complicando ms a


aumenta.

Si usamos un rbol binario, el nmero de comparaciones se reduce bastante,


veamos cmo.
El primer nmero del arreglo se coloca en la raz del rbol (como en este ejemplo
siempre vamos a trabajar con rboles binarios, simplemente diremos rbol, para
referirnos a un rbol binario) con sus subrboles izquierdo y derecho vacos. Luego,
cada elemento del arreglo se compara son la informacin del nodo raz y se crean los
nuevos hijos con el siguiente criterio:

Si el elemento del arreglo es igual que la informacin del nodo raz, entonces
notificar duplicidad.

Si el elemento del arreglo es menor que la informacin del nodo raz, entonces
se crea un hijo izquierdo.

Si el elemento del arreglo es mayor que la informacin del nodo raz, entonces
se crea un hijo derecho.

Una vez que ya est creado el rbol, se pueden buscar los elementos repetidos. Si x
el elemento buscado, se debe recorrer el rbol del siguiente modo:

Sea k la informacin del nodo actual p. Si


right(p), en caso contrario, en caso de que
en caso de que

Leer numero buscado >> n


tree=makeTree(n)
while(hay numeros en el arreglo){
leeSiguienteNumero >> k
p=q=tree;
while(k!=info(p)&&q!=NULL){
p=q
if(k<info(p))
q=left(p)
else
q=right(p)
}
if(k==info(p))
Despliega<<" el numero es duplicado";
if (k<info(p))
setLeft(p,k)
else
setRight(p,k)
}

informar una ocurrencia duplicada y

cambiar el nodo actual a left(p).

El siguiente algoritmo

else

entonces cambiar el nodo actual a

rbol binario para encontrar nmeros duplicados

Para saber el contenido de todos los nodos en un rbol es necesario recorrer el


rbol. Esto es debido a que solo tenemos conocimiento del contenido de la direccin de
un nodo a la vez. Al recorrer el rbol es necesario tener la direccin de cada nodo, no
necesariamente todos al mismo tiempo, de hecho normalmente se tiene la direccin de
uno o dos nodos a la vez; de manera que cuando se tiene la direccin de un nodo, se
dice que se visita ese nodo.
Aunque hay un orden preestablecido (la enumeracin de los nodos) no siempre
es bueno recorrer el rbol en ese orden, porque el manejo de los apuntadores se vuelve
ms complejo. En su lugar se han adoptado tres criterios principales para recorrer un
rbol binario, sin que de omita cualquier otro criterio diferente.
RBOL BINARIO HEAP, definicion y aplicaciones.
Un Heap es un rbol binario completo a izquierda, que permite implementar una
cola con prioridad, y donde los elementos se almacenan cumpliendo la propiedad de que
la clave de un nodo siempre es mayor que la clave de cualquiera de sus hijos. Lo que
nos asegura que la raz del rbol, en un Heap, siempre es el elemento mayor de la
estructura.

Un Heap tiene la propiedad de poder ser almacenado en un vector sin ocasionar


inconvenientes en el manejo de la estructura, evitando el uso de punteros. El Heap se
almacena en un arreglo A[1..n], y utiliza una variable m que indica cuantos elementos
tiene el Heap.
Un Heap se almacena en un vector copindolo nivel por nivel:

El acceso a los elementos del Heap en un arreglo, se hace a travs de algunas


operaciones aritmticas bsicas:

Left(i)

: return 2*i

Right(i) : return 2*i +1

.- Obtiene el hijo izquierdo del elemento i.


.- Obtiene el hijo derecho del elemento i.

Parent(i): return floor(i/2) .- Obtiene el padre del elemento i.

Para mantener la propiedad de que la clave de un nodo siempre es mayor que la


clave de sus hijos, debe realizarse una operacin shift que, dado un elemento del Heap
que no est en orden y suponiendo que el resto del Heap si lo est, se procede a colocar
el elemento en cuestin en su posicin correspondiente realizando intercambios con sus
hijos si fuese necesario y luego invocando el procedimiento en forma recursiva.

CONCLUSIN

Un grafo es un objeto matemtico que se utiliza para representar circuitos, redes,


etc. Los grafos son muy utilizados en computacin, ya que permiten resolver problemas
muy complejos.
De este trabajo se podra decir tambin que un rbol binario se define como un
conjunto finito de elementos llamados nodos. En estos casos se puede usar terminologa
de relaciones familiares para descubrir las relaciones entre los nodos de un rbol; y que
un rbol puede ser implementado fcilmente en una computadora.
Es bueno hacer nfasis en esto ya que se puede saber mucho sobre lo que tiene
que ver con los rboles; entre las cosas que podemos mencionar se encuentra la raz, los
nodos de un rbol y la diferencia entre nodos sucesores y nodos terminales, como se
muestran en el contenido del trabajo.

BIBLIOGRAFIA

Textos:

Estructura de datos y algoritmos Afred V. Aho. John E. Hopcroft


Primera edicin, en espaol 1992.

Paginas Web:

www.google.co.ve
www.wikipedia.com
www.lawebdelprogramador.com

Anda mungkin juga menyukai