Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


grafos, Apuntes de Administración de Empresas

Asignatura: Adam Smith, Profesor: , Carrera: Administración y Dirección de Empresas, Universidad: URJC

Tipo: Apuntes

2014/2015

Subido el 09/06/2015

martacf-2
martacf-2 🇪🇸

3.7

(29)

10 documentos

1 / 23

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Contenidos
1. Árboles
1. Introducción
2. Árboles binarios
3. Árboles binarios de búsqueda
4. Árboles equilibrados
5. Árboles generales
2. Conjuntos
3. Grafos
1. Definiciones
2. Representación
3. Recorridos sobre grafos
2
Grafos
Definiciones
Con los árboles se modelan jerarquías.
Ejemplos: caminos entre ciudades, redes de
ordenadores, tráfico urbano, optimización de viajes,
planificación de tareas,…
Alcorcón
Leganés
Fuenlabrada
Móstoles
Getafe
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Vista previa parcial del texto

¡Descarga grafos y más Apuntes en PDF de Administración de Empresas solo en Docsity!

1

Contenidos

  1. Árboles
    1. Introducción
    2. Árboles binarios
    3. Árboles binarios de búsqueda
    4. Árboles equilibrados
    5. Árboles generales
  2. Conjuntos
  3. Grafos
    1. Definiciones
    2. Representación
    3. Recorridos sobre grafos

Grafos

Definiciones

 Con los árboles se modelan jerarquías.

 Ejemplos: caminos entre ciudades, redes de ordenadores, tráfico urbano, optimización de viajes, planificación de tareas,…

Alcorcón Leganés

Fuenlabrada

Móstoles Getafe

3

Definiciones

 Grafo: G = (V, A)  V: conjunto finito, no vacío, de vértices ( nodos)  A: conjunto de pares de elementos de V , denominados aristas. ( arcos )

Grafos

Definiciones

 Grafo dirigido o Digrafo : Cuando los arcos son ordenados (v1,v2) != (v2,v1), <v1,v2>.

 Grafo valorado o ponderado : Grafo cuyos arcos tienen asociados un peso o coste. A

B M

C Y R G

3 5

11 3 8 1

7

Definiciones

 Ciclo o bucle : posible camino de “v” a “v”  (A, B, Y, R, A)

 Camino simple : camino con vértices diferentes

A

B M

C Y R G

Grafos

Definiciones

 Grafo completo : si existe una arista entre cada par de vértices

v2 v

v

v1 (^) v

v2 v

v

9

Definiciones

 Grafo conexo : Para grafo no dirigido si existe un camino desde un vértice a cualquier otro. Para grafo dirigido si existe una cadena de arcos que une cualquier par de vértices.

B A

R

Y

C

v2 v

v

v1 (^) v

Grafos

Definiciones

 Grafo fuertemente conexo : si, para un grafo dirigido, existe un camino desde un vértice a cualquier otro.

 Un grafo dirigido puede ser conexo (si lo es sin considerarlo dirigido) o fuertemente conexo.

v2 v

v

v1 (^) v

13

Especificación formal

Tipo : Grafo (elemento) Sintaxis : CREARGRAFOVACIO → Grafo ESGRAFOVACIO (Grafo)→ Booleano INSERTANODO(vertice, Grafo) → Grafo INSERTARARISTA(vertice, vertice, Grafo) → Grafo BORRARNODO(vertice, Grafo) → Grafo BORRARARISTA(vertice, vertice, Grafo) → Grafo ESTA-VERTICE(vertice, Grafo) → Booleano ESTA-ARISTA(vertice, vertice, Grafo) → Booleano ADYACENTES(vertice, Grafo) → conjunto[vertice] Semántica : ∀ G ∈ Grafo, ∀ n ∈ Vertice: ESVACIO (CREARGRAFOVACIO) ⇒ cierto … EL-VERTICE (CREARGRAFOVACIO) ⇒ error EL-ARISTA (CREARGRAFOVACIO) ⇒ error

Grafos

Realización en Pascal

UNIT grafosM; {Definición de Grafo no ponderado con matriz de adyacencia} INTERFACE USES ...; CONST MAX_NUM = ...; TYPE TipoInfo = ...;{Se puede importar de otra unidad} TipoIndice = 1..MAX_NUM; TipoNodos = ARRAY[TipoIndice] OF TipoInfo; TipoMatriz = ARRAY[TipoIndice, TipoIndice] OF BOOLEAN; TipoGrafo = RECORD matriz: TipoMatriz; nodos: TipoNodos; num_nodos: 0..MAX_NUM; END;

15

Realización en Pascal

PROCEDURE crearGrafoVacio(VAR g:TipoGrafo); {Construye un grafo inicial sin nodos ni arcos} FUNCTION EsGrafoVacio(g: TipoGrafo):BOOLEAN; {Nos dice si el grafo es vacío o no} FUNCTION EstaVertice(n:TipoIndice; g:TipoGrafo):BOOLEAN; {Nos dice si el nodo n pertenece al grafo} FUNCTION EstaArista(o,d:TipoIndice; g:TipoGrafo):BOOLEAN; {Nos dice si existe arista entre los nodos o y d} PROCEDURE InsertaNodo(n:TipoInfo; VAR g:TipoGrafo); {Inserta el nodo n} PROCEDURE InsertaArista(o,d:TipoIndice; VAR g: TipoGrafo); {Inserta el arco entre o y d} PROCEDURE BorrarNodo(n: TipoIndice; VAR TipoGrafo); {Elimina el nodo n y todas sus aristas} PROCEDURE BorraArista(o,d: TipoIndice;VAR g:TipoGrafo); {Elimina la arista existente entre los nodos o y d}

Grafos

Realización en Pascal

PROCEDURE crearGrafoVacio(VAR g:TipoGrafo); (* Construye un grafo inicial sin nodos ni arcos *) VAR i,j: tipoIndice; BEGIN g.numnodos:= 0; FOR i:= 1 TO MAX_NUM DO BEGIN g.nodos[i]:= InfoVacia;{operación de TipoInfo} FOR j:= 1 TO MAX_NUM DO g.matriz[i,j] := FALSE; END; END;

FUNCTION EsGrafoVacio(g: TipoGrafo):BOOLEAN; {Nos dice si el grafo es vacío o no} BEGIN EsVacio := (g.numnodos = 0); END;

19

Realización en Pascal

PROCEDURE InsertaArista(o,d:TipoIndice; VAR g: TipoGrafo); (* Inserta el arco entre o y d *) BEGIN IF EstaVertice(o,g) AND EstaVertice(d,g) THEN BEGIN g.matriz[o,d]:= TRUE; g.matriz[d,o]:= TRUE END END;

Grafos

Realización en Pascal

PROCEDURE BorrarNodo(n: TipoIndice; VAR TipoGrafo); (* Elimina el nodo n y todas sus aristas *) VAR i, j: 1..succ(MAX_NUM); BEGIN IF EstaVertice(n,g) THEN BEGIN FOR i:= succ(n) TO g.numnodos DO g.nodos[pred(i)]:= g.nodos[i]; FOR j:= 1 TO g.numnodos DO FOR i:= succ(n) TO g.numnodos DO BEGIN g.matriz[j, pred(i)]:= g.matriz[j,i]; g.matriz[pred(i),j]:= g.matriz[i,j]; END; g.numnodos:= pred(g.numnodos) END END;

21

Realización en Pascal

PROCEDURE BorraArista(o,d: TipoIndice;VAR g:TipoGrafo); (* Elimina la arista existente entre los nodos o y d *) VAR i,j:1..MAXNUM; BEGIN IF EstaArista(o,d) THEN BEGIN g.matriz[o,d] := FALSE; g.matriz[d,o] := FALSE END END;

Contenidos

  1. Árboles
    1. Introducción
    2. Árboles binarios
    3. Árboles binarios de búsqueda
    4. Árboles equilibrados
    5. Árboles generales
  2. Conjuntos
  3. Grafos
    1. Definiciones
    2. Representación
    3. Recorridos sobre grafos

25

Recorrido en Profundidad

PROCEDURE RecorreProfundidad (g: grafo); VAR i: TipoIndice; marca: Tipovisitado; BEGIN FOR i:= 1 TO g.numnodos DO marca[i]:= FALSE; FOR i:= 1 TO g.numnodos DO IF NOT marca[i] THEN rp(g, i, marca) END; PROCEDURE rp(g: grafo; n: TipoIndice; VAR marca: TipoVisitado); {El nodo n no ha sido visitado anteriormente} VAR i: TipoIndice; BEGIN marca[n]:= TRUE; FOR i:= 1 TO g.numnodos DO IF EstaArista(n,i) AND NOT marca[i] THEN rp(g, marca, i) END;

Grafos

Recorrido en Profundidad

27

Recorrido en Profundidad

Adyacentes a 1: 2, 4, 8

Recorrido: 1, 2

Grafos

Recorrido en Profundidad

Adyacentes a 2: 1, 3, 4

Recorrido: 1, 2, 3

31

Recorrido en Profundidad

Adyacentes a 7: 4, 6, 9

Recorrido: 1, 2, 3, 4, 7, 6

Grafos

Recorrido en Profundidad

Adyacentes a 6: 5, 7

Recorrido: 1, 2, 3, 4, 7, 6, 5

33

Recorrido en Profundidad

Adyacentes a 5: 3, 6

Recorrido: 1, 2, 3, 4, 7, 6, 5

Grafos

Recorrido en Profundidad

Adyacentes a 6: 5, 7

Recorrido: 1, 2, 3, 4, 7, 6, 5

37

Grafos

Recorrido en Anchura

PROCEDURE RecorridoAnchura(g: TipoGrafo); VAR n: TipoIndice; marca: TipoVisitado; BEGIN FOR n:= 1 TO g.numnodos DO marca[n] := FALSE; FOR n:= 1 TO g.numnodos DO IF NOT marca[n] THEN ra(n) END;

39

Recorrido en Anchura

PROCEDURE ra(g:TipoGrafo; n:TipoIndice; VAR marca:TipoVisitado); VAR q: TipoCola; w,i: TipoIndice; BEGIN colaVacia(q); marca[n]:= TRUE; encolar(q,n); WHILE NOT esVacia(q) DO BEGIN frente (q, w); quitar(q); FOR i:= 1 TO g.numnodos DO IF EstaArista(w,i) AND NOT marca[i] THEN BEGIN marca[i]:= TRUE; encolar(q,i) END END END;

Grafos

Recorrido en Anchura

Adyacentes a 1: 2, 4, 8

Recorrido: 1, 2, 4, 8