5. estructuras no lineales estáticas y dinámicas dra. maría lucía barrón estrada

77
5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Upload: benedicto-gato

Post on 16-Feb-2015

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

5. Estructuras no lineales estáticas y dinámicas

Dra. María Lucía Barrón Estrada

Page 2: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

1. Conceptos de árbol1. Árboles binarios2. Árboles generales

2. Operaciones básicas sobre árboles binarios1. Creación2. Inserción, eliminación y búsqueda3. Recorridos sistemáticos4. Balanceo

3. Conceptos de grafos1. Grafos simples2. Grafos dirigidos3. Representación de grafos

4. Operaciones básicas sobre grafos1. Creación2. Inserción, eliminación y búsqueda3. El camino mas corto

Page 3: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Conceptos de Árboles• Un árbol es una estructura de datos no lineal que

representa una relación jerárquica de sus elementos.• Los árboles se utilizan para representar información

ordenada, relaciones estructurales y para modelar situaciones que se expresan en términos de jerarquías.

• Tipos de árboles– Generales – Binarios– Binarios de búsqueda– AVL, Rojo y Negro, B+, etc.

Page 4: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Árboles binarios• Un árbol binario T es un conjunto finito de elementos

llamados nodos, tal que:– T es vacío (árbol nulo o vacío): No contiene elementos.– T contiene un nodo llamado Raíz de T y los nodos restantes

de T forman un par ordenado de árboles binarios disjuntos T1 y T2.

Si T contiene una raíz R los 2 árboles T1 y T2 se llaman respectivamente subárbol izquierdo y derecho de la raíz R.

-

5 1

-

5

-

1

-raíz

Subárbol izquierdo

Subárbol derecho

Page 5: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejemplo de estructuras que NO son árboles binarios

+

* -

/ 2 1

12 4

+

* -

/ 2 5 1

12 4

Page 6: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

TERMINOLOGIA DE ÁRBOLES

• Hijo: Nodo que desciende de otro nodo.• Padre: Nodo que tiene hijos (descendientes).• Raíz: Único nodo que no tiene padre y tiene nivel 0. • Hoja (Terminal): Nodo que sus árboles izquierdo y

derecho están vacíos.• Camino: Un camino entre dos elementos e1 y e2 de

un árbol binario es una secuencia <x1,x2,..,xn> donde x1 es e1 y xn es e2 y cada elemento xi es padre de xi+1.

• La longitud de un camino <x1,x2,..,xn> es n-1• Rama: Camino que termina en una hoja.• Subárbol: es un árbol que depende de otro árbol.

Page 7: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

• Arista: Línea que une a 2 nodos.• Nivel: Es el número de aristas entre ese nodo y la

raíz.• Profundidad (Altura): Máximo número de nodos de

una rama desde la raíz ( Máximo Nivel + 1 ).• Generación: Todos los nodos que tienen el mismo

número de nivel.• Ancestro de X: Cualquier nodo del cuál X es

descendiente.• Descendiente de X: Cualquier nodo que se encuentre

en el subárbol donde X es raíz.• Peso: es el numero de elementos de un árbol.• Número de Sucesores de cualquier nodo en un árbol

binario = 0, 1, 2.

Page 8: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejemplo de Árbol y Sus Componentes.

Pedro

Juan Maria

Ana Raúl

Silvia Sofía

Tito Eli

hoja

raíz

arista

hermanos

Nivel 0

Nivel 1

Nivel 2

Ancestro?Descendiente?# de nodos?Altura?Generación?

Subárbol derecho de Pedro

Page 9: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

• Árboles Similares: Son aquellos que tienen la misma estructura.

• Árboles Copia: Aquellos que son similares y tienen el mismo contenido en sus correspondientes nodos.

A

B C

D G

*

* 5

4 3

A

B C

D G

Árbol A1 Árbol A2 Árbol A3

A1 similar a A2 A3 copia de A1

Page 10: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Aplicaciones de árboles

Estatuto if de un LP

Page 11: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Aplicaciones de árboles

+

* -

/ 2 5 1

12 4

/

- +

a b * e

c d

(a-b)/((c*d)+e)12/4*2 + (5-1)

Page 12: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Representación Gráfica de AB

1) Diagrama de Venn

3) Grafo no dirigido

4)Notación Identada2) Notación Decimal Dewey1A

1.1B

1.1.1D

1.1.1.1H

1.1.2E

1. 2C

1.2.1 F

1.2.1.1I

1.2.1.2 J

1.2.2G

5) Anidación de paréntesis

( A ( B ( D ( H ),E ), C ( F ( I, J), G ) ) )

Page 13: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Árbol Binario de BúsquedaUn árbol binario de búsqueda (ABB) es un árbol binario creado de

manera especial para facilitar la localización de sus elementos.Se pueden realizar eficientemente operaciones de:• Inserción• Eliminación• Búsqueda• Recorrido

Un ABB cumple con las siguientes reglas para todo nodo T del árbol:

• Todos los valores de los nodos del subárbol izquierdo son menor o igual al valor del nodo T.

• Todo los valores de los nodos del subárbol derecho son mayor o igual al valor del nodo T.

Page 14: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Inserción en un Árbol Binario de Búsqueda.

• Si el árbol esta vacío, el elemento se inserta en la raíz.

• Si el árbol no esta vacío el elemento se compara con la raíz si es menor se inserta en el subárbol izquierdo, si es mayor se inserta en el subárbol derecho.

El proceso de insertar un elemento es recursivo, ya que la inserción en el subárbol izquierdo o derecho sigue la misma filosofía.

Page 15: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Insertar elementos

Insertar 45Insertar 23Insertar 2Insertar 7Insertar 65Insertar 38Insertar 96Insertar 52Insertar 48

45

23 65

7

2 38 9652

48

raíz

Page 16: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Eliminación de un Árbol Binario de Búsqueda.

Casos: N- Nodo a eliminar:

• Si N es hoja (no tiene hijos) entonces N se elimina haciendo nulo el enlace del padre de N hacia N.

• Si N tiene exactamente un hijo, N se elimina reemplazando el enlace del padre de N con el enlace del hijo de N.

• Si N tiene 2 hijos, sustituir por el nodo que se encuentra mas a la izquierda en el subárbol derecho de N o por el nodo que esta mas a la derecha en el subárbol izquierdo.

Page 17: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Eliminación de un Árbol BB.

45

23 65

7

2 38 9652

48

raízCaso 1: Eliminar 48 (enlace padre n = null)

45

23 65

7

2 38 9652

raíz

Caso 2: Eliminar 2 (enlace padre n = enlace hijo n)

45

23 65

7

2 38 9652

48

raíz 45

23 65

7 38 9652

48

raíz

Page 18: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Eliminación de un Árbol BB.

Caso 3: Eliminar 65 (sustituir nodo por uno de: nodo +Izq de subárbol derecho nodo +Der de subárbol izquierdo )

45

23 65

7

2 38 9652

48

raíz

45

23 52

7

2 38 9648

raíz 45

23 96

7

2 38 52

48

raíz

Page 19: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Árboles Binarios

• Cuales son los elementos necesarios para definir un árbol binario?

• Cuales son las operaciones asociadas a un árbol binario?

• Será posible usar la misma implementación de las operaciones para todas las aplicaciones?

Page 20: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Interfase de un árbol binariopublic interface IBinaryTree {

public boolean buscar(int d); public void insertar(int d); public int tamaño(); public void remover(int d); public boolean vacio(); … // recorridos public void inorden(); public void postorden(); public void preorden(); …}

Page 21: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

public class SBinaryTree implements IBinaryTree{     private Nodo raiz;  // constructor para un arbol vacio   public void BinaryTree() {     raiz = null;   } public boolean busca(int d) {…} public void inserta(int d) {…} public int tamaño() {..} public void remover(int d){…} public boolean vacio(){…}

// recorridos public void inorden(){…} public void postorden(){…} public void preorden(){…} …}

class Nodo {     Nodo izquierdo;     Nodo derecho;     int dato;     Nodo(int d) {       izquierdo = null;       derecho = null;       dato = d;     }   }

Page 22: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Implementación usando recursión• Los árboles binarios son estructuras definidas

recursivamente con dos reglas:– Una raíz nula– Una raíz no nula que contiene dos subárboles que a

su vez son también árboles binarios.

• Cual es el caso base?

• Como se podría definir el progreso de los métodos?

Page 23: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Implementación usando recursión

• Las operaciones sobre un árbol inician siempre en la raíz.

• Pero, el campo raíz de la clase esta declarado como privado, lo que indica que no esta disponible fuera de la clase.

• Los métodos de la interfase sirven para establecer la forma de ejecución para los usuarios de la clase.

• En la clase se pueden definir métodos recursivos que inicien el procesamiento desde la raíz.

Page 24: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Buscar un elemento en un ABB// método para el usuario public boolean busca(int d) {     return busca(raiz, d);   }

// metodo auxiliar para el procesamiento   private boolean busca(Nodo nodo, int d) {     if (nodo==null)      return false;     if (d==nodo.dato)       return true;     else if (d<nodo.dato)      return busca(nodo.izquierdo, d);        else       return busca(nodo.derecho, d); }

Page 25: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Obtener el número de elementos

// método para el usuariopublic int tamaño(){ return tamaño(raiz);}

// metodo auxiliar para el procesamiento private int tamaño(Nodo raiz){ if (raiz == null) return 0; else return 1+ tamaño(raiz.izquierdo)+ tamaño(raiz.derecho);}

Page 26: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Insertar elementos en un ABB

public void insertar(int n){ raiz = insertar(raiz, n);}

//método auxiliarprivate Nodo insertar(Nodo r, int n){ if (r == null) r = new Nodo(n); else if (n<=r.dato) r.izquierda = insertar(r.izquierda, n); else r.derecha = insertar(r.derecha, n); return r;}

Page 27: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Recorridos de un AB• Inorden = 2,7,23,38,45,48,52,65,96

– Visitar el subarbol izquieredo en inorden– Visitar el nodo raiz– Visitar el subarbol derecho en inorden

• Preorden= 45,23,2,7,38,65,52,48,96– Visitar el nodo raiz– Visitar el subarbol izquieredo en preorden– Visitar el subarbol derecho en preorden

• Postorden= 7,2,38,23,48,52,96,65,45– Visitar el subarbol izquieredo en postorden– Visitar el subarbol derecho en postorden– Visitar el nodo raiz

45

23 65

7

2 38 9652

48

raíz

Page 28: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Recorridos de un AB

A

B C

G

D

I

FE

H

raíz• Inorden = D,G,B,A,H,E,I,C,F

– Visitar el subarbol izquieredo en inorden– Visitar el nodo raiz– Visitar el subarbol derecho en inorden

• Preorden= A,B,D,G,C,E,H,I,F– Visitar el nodo raiz– Visitar el subarbol izquieredo en preorden– Visitar el subarbol derecho en preorden

• Postorden= G,D,B,H,I,E,F,C,A– Visitar el subarbol izquieredo en postorden– Visitar el subarbol derecho en postorden– Visitar el nodo raiz

Page 29: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Implementación de Inordenpublic void inorden(){

inorden(raiz);System.out.println();

}

public void inorden(Nodo r){if (r!=null) {

inorden(r.izquierda);System.out.print (r.dato+" ");inorden(r.derecha);

}}

Page 30: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Implementación de Preordenpublic void preorden(Nodo r){

if (r!=null) {System.out.print (r.dato+" ");preorden(r.izquierda);preorden(r.derecha);

}}

public void preorden(){preorden(raiz);System.out.println();

}

Page 31: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Implementación de Postordenpublic void postorden(){

postorden(raiz);System.out.println();

}

public void postorden(Nodo r){if (r!=null) {

postorden(r. izquierda);postorden(r.derecha);System.out.print (r.info+" ");

}}

Page 32: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejercicios para ABB

• Escribe un método que regrese el número de hijos de n

• Escribe un método que obtenga el padre de n• Escribe un método que obtenga para cada nodo su balance

(#nodos subárbol izquierdo - #nodos subárbol derecho)

• Escribe un método para Obtener los nodos de una generación

• Escribe un método para Buscar el elemento mayor de un árbol binario

• Escribe un método para encontrar el promedio de los elementos de un árbol que contiene datos enteros.

Page 33: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Arboles Generales

Un árbol general, es un conjunto finito no vacío T de elementos llamados nodos, tales que:

1.T contiene un elemento R, llamado Raíz de T.

2. Los restantes elementos de T forman una colección ordenada de 0 o más a árboles disjuntos T1, T2, … Tm.

Los árboles T1,T2,…Tm son llamados subárboles de R.

Page 34: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Árboles binarios Vs Generales:

Un AB puede estar vacío y el AG no.

En un AB un nodo distingue entre sus hijos como izquierdo y derecho; en un AG no hay distinción para hijos.

Ejemplo: Suponer que existen 2 árboles:

A

B

DC

A

B

DC

•Si los 2 son AB son diferentes.

•Si los 2 son AG son iguales.

Page 35: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Árboles Generales

Terminología:

• Padre: Nodo del cual dependen otros nodos.

• Hijo: Nodo sucesor de otro nodo.

• Grado de un árbol: Máximo número de sucesores de un nodo.

• Hermanos: Nodos con el mismo padre.

• Generación: Todos los nodos de un mismo nivel.

• Bosque: es una colección de 0 o mas árboles distintos.

Page 36: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Bosque:

Es una colección de 0 o más árboles distintos.

Ejemplo:

Si se elimina la raíz R de un árbol general T se obtiene un bosque que consiste en los subárboles de R.

A

M

E

N

F H

B

G

C

I

D

J LK

Page 37: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Conversión de un árbol en bosque

M

E

N

F H

B

G

C

I

D

J LK

Arbol 1 Arbol 2 Arbol 3

Page 38: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Conversión de Árboles Generales a Árboles Binarios.

1.-Enlazar los hijos de cada nodo de forma horizontal de izquierda a derecha.

2.-Enlazar de forma vertical el nodo padre con el hijo que se encuentra mas a la izquierda.

3.-Eliminar los vínculos viejos entre hijos y padres.

4.-Rotar el diagrama 45º.

A

B C D

A

B C D

A

B

C

D

A

B C D

Page 39: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejemplo 2.

A

C

L

XHG

B

D E F

J KI

Raiz

A

E

D

I

F

G

B

C

K

J

H

L X

Raiz

Page 40: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Convertir un bosque a AB:

1) Enlazar en forma horizontal las raíces de los distintos árboles generales.

2) Enlazar los hijos de cada nodo en forma horizontal.

3) Enlazar en forma vertical el nodo padre con el hijo mas a la izquierda.

4) Eliminar los vínculos del padre con los hijos.

5) Rotar el diagrama resultante.

M

E

N

F H

B

G

C

I

D

J LK

Arbol 1 Arbol 2 Arbol 3

Page 41: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

L

M

E

N

F H

B

G

C

I

D

J LK

Arbol 1 Arbol 2 Arbol 3

M

E

N

F

H

B

G

C

ID

J

K

Arbol General

Page 42: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Convertir un bosque a AB:

A

BC D

GFE

H

I J

K ML

P

SRQ

T

XU

Page 43: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

A

B

E

F

C

D

G

H

I P

QJ

K

L

M

T R

X

JS

AB:

Page 44: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Representación en memoria de Árboles generales.

• Los hijos de un nodo se pueden representar de diversas formas:– Cada nodo contiene un campo de liga para cada

hijo.– Cada nodo contiene un arreglo de hijos.– Cada nodo contiene un vector de hijos.– Cada nodo contiene una lista de hijos.

Page 45: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Representación gráficaCada nodo contiene un arreglo o vector de hijos

Cada nodo contiene un campo de liga para cada hijo.

Info h1 h2 ... hn

Info hijos

Info hijos

Cada nodo contiene una lista de hijos

Info hijos

Info hijos

Page 46: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Aplicaciones de árboles generales

• Directorio de archivos

• Organigrama de una empresa

• Contenido de un documento.

• Diseño por componentes.

• Juegos

• Estructuras de un lenguaje de programación.

Page 47: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Recorridos de un arbol general• Inorden.Inorden.

– Recorrer en Inorden T1Recorrer en Inorden T1– Visitar la RaizVisitar la Raiz– Recorrer en Inorden T2Recorrer en Inorden T2– ……– Recorrer en Inorden TnRecorrer en Inorden Tn

Preorden.Preorden. Visitar la RaizVisitar la Raiz Recorrer en Preorden T1Recorrer en Preorden T1 Recorrer en Preorden T2Recorrer en Preorden T2 …… Recorrer en Preorden TnRecorrer en Preorden Tn

Postorden.Postorden. Recorrer en Postorden Recorrer en Postorden

T1T1 Visitar la RaizVisitar la Raiz Recorrer en Postorden Recorrer en Postorden

T2T2 …… Recorrer en Postorden Recorrer en Postorden

TnTn

Page 48: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Otros árboles

• Árboles balanceados– Por altura (AVL)– Por peso (perfectamente balanceados)– Rojinegros

Page 49: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Árboles Balanceados

• Árboles balanceados son aquellos ABB que cumplen con una condición de equilibrio (que sus subárboles izquierdo y derecho tengan la misma profundidad)

• Los árboles balanceados optimizan la búsqueda de elementos.

• Árboles AVL (1962- Adelson, Velskii y Landis) la altura de los subárboles asociados a cada elemento no pueden diferir en más de 1 y los dos subárboles son también AVL.

Page 50: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejemplos de árboles AVL

15

185

Altura = 2

Altura = 1 Altura = 1

20

15

185

30

Altura = 1 Altura = 1

Altura = 1Altura = 2

Altura = 3

Page 51: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Inserción en árboles balanceados

35

20

2515

40

Insertar 10,18,27

35

20

2515

40

1810 27

Insertar 37,45 35

20

2515

4020

4537

Page 52: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Inserción en árboles balanceados

35

20 40

Caso 1. Las ramas izquierda y derecha del árbol tienen la misma altura. (HRI = HRD )

15

35

20 40

Caso 1.1 Inserta elemento en rama izquierda (RI)

50

35

20 40

Caso 1.2 Inserta elemento en rama derecha (RD)

Page 53: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Inserción en árboles balanceadosCaso 2. Las ramas izquierda y derecha del árbol tienen altura diferente. (HRI ≠ HRD )

Caso 2.1 suponer HRI < HRD

50

35

20 40

15

35

20 40

Caso 2.1.1 Inserta en RI

50

Caso 2.1.2 Inserta en RD

50

35

20 40

75

Page 54: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Inserción en árboles balanceadosCaso 2. (continuación) Las ramas izquierda y derecha del árbol tienen altura diferente. (HRI ≠ HRD )

Caso 2.2 suponer HRI > HRD

15

35

20 40

15

35

20 40

Caso 2.2.1 Inserta en RI

5 Caso 2.1.2 Inserta en RD

15

35

20 40

50

Page 55: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Reestructuración • Factor de equilibrio: Es la

diferencia entre la altura de la rama derecha y la altura de la rama izquierda. FE = HRD - HRI

• Cada nodo tiene asociado un factor de equilibrio que se calcula para todos los elementos de la rama donde se realizó la inserción. Este se utiliza para saber si el árbol esta balanceado o debe reestructurarse.

65

45

5433

70

50

68

0

-10 0

-1

-1

1

Page 56: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

RotacionesCaso 1 Rotación simple por la rama izquierda

15

35

20

0

-1

-2

20

15 350

0

0

Caso 2 Rotación simple por la rama derecha

75

35

50

0

1

2

50

35 750

0

0

padre.fe = -2hijo.fe = -1

padre.fe = 2hijo.fe = 1

padre.izq = hijo.derhijo.der = padrepadre = hijo

padre.der = hijo.izqhijo.izq = padrepadre = hijo

Page 57: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

RotacionesCaso 3 Rotación compuesta Derecha Izquierda

25

45

35 500

0

0

35

200

1

-2

Caso 4 Rotación compuesta Izquierda Derecha

45

35

50

0

-1

2

25

20 350

0

0

padre.fe = 2hijo.fe = -1

padre.fe = -2hijo.fe = 1

hijo.der = n.izq n.izq= hijopadre.izq = n.dern.der = padrepadre = n

p

hn

Page 58: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

5.3 Grafos

Un grafo es una estructura de datos no lineal que consta de:

1) Un conjunto finito V de elementos llamados vértices (Nodos, Puntos).

2) Un conjunto E de aristas tales que cada arista e ε E esta identificada por un único par (desordenado) [u,v] de nodos de V denotado como e = [u,v].

Page 59: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Un grafo se denota como G = (V, E).NODOS VECINOS O ADYACENTES: Dos nodos son vecinos si existe una arista que los una.

E = (u, v) los vértices u, v son vecinos.

EL GRADO DE UN NODO U: es el número de aristas que contienen a u.

NODO AISLADO: Son aquellos nodos que tienen grado 0.

GRAFO ETIQUETADO: Es un grafo donde cada arista tiene un valor asignado.

Page 60: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejemplo de grafos:

MiamiLas Vegas

Los Ángeles

Portland Chicago

New York

V(G)= Los Ángeles, Portland, Chicago, New York, Las Vegas, Miami.

E(G)={(Los ángeles, Chicago),(Los ángeles, New York), (Chicago, New York), (Chicago, Las Vegas), (Las vegas, New York), (Las Vegas, Miami)}

Page 61: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Las aristas no están ordenadas lo que significa que:

( Los Ángeles, Chicago) = ( Chicago, Los Ángeles)

( u1, v2) = (u2, v1)

Grado (Los Ángeles) = 2

Grado (Chicago) = 3

Grado de Portland = 0

Page 62: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Grafo dirigidoUn grafo dirigido es una estructura de datos no lineal

que consta de:

• Un conjunto finito de elementos llamados vértices.

• Un conjunto E de aristas con orientación (flechas) que conectan a 2 nodos.

Las Vegas

MiamiLos Ángeles

Portland Chicago

New York

Page 63: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Terminología:

Un camino P de longitud n desde U hasta V es una secuencia de n+1 nodos escrita como: P (V0,V1,…,Vn).

Donde:

•U = V0

•Vi es adyacente a Vi-1 para toda i = 1, 2, …, n

•V = Vn

Bucle: Conexión de un vértice consigo mismo.

Camino Cerrado: Es un camino donde V0 = Vn , el vértice inicial y el final son el mismo.

Camino Simple: Es aquel donde todos los vértices son distintos (Solo V0 puede ser = a Vn).

Page 64: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ciclo: Camino simple cerrado de longitud 3 o mayor.

K-Ciclo: Es un ciclo de longitud K.

Grafo Convexo: Grafo donde existe un camino entre cualesquiera dos de sus nodos.

Grafo Completo: Un grafo es completo si cada nodo U de G es adyacente a todos los demás nodos de G.

Multigrafo: Es una generalización de un grafo que:

1)Contiene bucles y /o

2)Contiene aristas múltiples que conectan a los mismos extremos.

Page 65: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

G1 G2 Grafo Completo

G3

Grafo Completo Dirigido

G4

Page 66: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Máximo Numero De Aristas:

•GRAFO:

Gn = n ( n - 1 ) G3 = 4(3) = 12 = 6

2 2 2

•GRAFO DIRIGIDO:

GDn = n ( n – 1 ) G4 = 4 (3) = 12

G1: CICLO A, B, C, A•GRAFO ACICLICO: Es un grafo que no contiene ciclos.

(Un árbol es un grafo aciclico).F

E

A B

C

D

Page 67: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Un Subgrafo S1 de un grafo G se define como:

V (S1) Є V (G)

E (S1) Є E (G)

S1 es un subconjunto de G si y solo si V (S1) Є V (G) y E (S1) Є E (G).

Ejemplo:

Grafo G Subgrafo S1 Subgrafo S2 Subgrafo S3

Page 68: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Grafo débilmente conectado:

Para cada par de vértices (u,v) existe un camino de u a v tal que vo = u y vn= v y para cada componente de la ruta (vi, vi+1) existe en E(G) el componente (vi, vi+1) o (vi+1,vi).

El camino quizá no puede recorrerse debido a la orientación de sus aristas.

Page 69: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Representación secuencial de grafos:

•Se basa en una matriz de adyacencia.

•Suponga que G es un grafo dirigido simple de m nodos y que los nodos de G han sido ordenados y llamados V1, V2, … , Vn. La matriz de adyacencia para G es de tamaño m x m definiendo cada elemento como:

aij = 1 : si Vi es adyacente a vj. Existe e = (vi, vj)

0 : en caso contrario.

Ejemplo 1: X

WZ

YV1 = X

V2 = Y

V3 = Z

V4 = W

0 0 0 1

1 0 1 1

1 0 0 1

0 0 1 0

A =

V1 V2 V3 V4

V1

V2

V3

V4

X

Y

Z

W

X Y Z W

= A1

Page 70: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Para un grafo no dirigido, la matriz de adyacencia es una matriz simétrica: ai,j = aj,i

X

WZ

Y0 1 1

1

1 0 1 1

1 1 0 2

1 1 2 0

X

Y

Z

W

X Y Z W

Page 71: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Considere las potencias A1, A2, A3 … de la matriz de adyacencia ak(i,j) = la entrada i,j de la matriz Ak.

A1 – Representa el número de caminos de longitud 1 desde el nodo vi hasta vj.

Ak – Representa el número de caminos de longitud k desde el nodo vi hasta el nodo vj.

0 0 0 1

1 0 1 2

0 0 1 1

1 0 0 1

A2

=

1 0 0 1

1 0 2 2

1 0 1 1

0 0 1 1

A3

=

0 0 1 1

2 0 2 3

1 0 1 2

1 0 1 1

A4

=

Caminos de long. 2

Caminos de long. 3

Caminos de long. 4

Page 72: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Representación en memoria dinámica:

Un grafo se puede representar con una LISTA DE ADYACENCIA.

Una lista de adyacencia para un vértice a es una lista ordenada de todos los vértices adyacentes a a.

• Si el Número de nodos es fijo se pueden almacenar en un arreglo.

Ejemplo:a

dc

b

Arreglo de nodos

Lista de nodos adyacentes a cada nodo.bca

b

c

d

a

d

b

Page 73: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

* Si el número de nodos puede variar, se deben almacenar en una lista.

Lista de Nodos

a b c

b a

c d

d b

a

dc

b

Page 74: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

1)Buscar un vértice/arista.

2)Insertar un vértice/arista.

3)Eliminar un vértice/arista.

4)Recorrer el grafo.

5)Número de vértices

6)Vacío.

• Los vértices se mantienen en una lista de vértices. No pueden existir vertices repetidos.

• Los aristas se mantienen en una lista ordenada para cada vértice.

Operaciones sobre grafos:

Page 75: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Búsqueda de el camino más corto:

Encontrar el camino más corto desde A (nodo inicial) hasta I (nodo final):

1) Marcar todos los nodos con infinito, y seleccionar nodo inicial (iniciar con 0) como nodo actual

2) Calcular los caminos del nodo actual a los nodos adyacentes, reemplazar el camino actual por el nuevo solo si este es menor.

3) Marcar el nodo actual como “visitado”.

4) Seleccionar como nodo actual el nodo con camino de valor mínimo.

5) Repetir para el nodo actual seleccionado los pasos 2, 3, 4 hasta llegar al nodo final o hasta agotar todos los nodos.

Page 76: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejemplo:

A

B E

C

FD

H

I

3

5

4

1

2

1

7

2

2

∞∞

G

2

∞3

1

*

*

*

* *

*

*

*

*

(3,A)

(5,A)

(4,A)∞

(5,A, B)

(7,A, B, E)

(5,A, D)(8, A, B, E, G)

(10,A, D, H)

(8, A, B, E, G)

5

Page 77: 5. Estructuras no lineales estáticas y dinámicas Dra. María Lucía Barrón Estrada

Ejemplo 2. Encontrar el camino mas corto de A a Z