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


nfgxc, Apuntes de Cálculo

Asignatura: calculo, Profesor: manuel manuel, Carrera: Ingeniería en Informática, Universidad: UC3M

Tipo: Apuntes

2014/2015

Subido el 04/06/2015

le_sisu
le_sisu 🇪🇸

3 documentos

1 / 15

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Exploración de grafosExploración de grafos
Análisis y Diseño de AlgoritmosAnálisis y Diseño de Algoritmos
Exploración de grafosExploración de grafos
GrafosGrafos
Recorridos sobre grafosRecorridos sobre grafos
Búsqueda primero en profundidadBúsqueda primero en profundidad
Búsqueda primero en anchuraBúsqueda primero en anchura
BacktrackingBacktracking
(“vuelta atrás”)(“vuelta atrás”)
BacktrackingBacktracking
(vuelta atrás)(vuelta atrás)
Descripción generalDescripción general
Espacio de solucionesEspacio de soluciones
ImplementaciónImplementación
EjemplosEjemplos
BranchBranch & & BoundBound (“ramificación y poda”)(“ramificación y poda”)
Descripción generalDescripción general
Estrategias de ramificaciónEstrategias de ramificación
ImplementaciónImplementación
EjemplosEjemplos
11
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Vista previa parcial del texto

¡Descarga nfgxc y más Apuntes en PDF de Cálculo solo en Docsity!

Exploración de grafosExploración de grafos

Análisis y Diseño de AlgoritmosAnálisis y Diseño de Algoritmos

Exploración de grafosExploración de grafos

 GrafosGrafos  Recorridos sobre grafosRecorridos sobre grafos  Búsqueda primero en profundidadBúsqueda primero en profundidad  Búsqueda primero en anchuraBúsqueda primero en anchura  BacktrackingBacktrackingBacktrackingBacktracking (“vuelta atrás”)(“vuelta atrás”)(“vuelta atrás”)(“vuelta atrás”)  Descripción generalDescripción general  Espacio de solucionesEspacio de soluciones  ImplementaciónImplementación  EjemplosEjemplos  BranchBranch && BoundBound (“ramificación y poda”)(“ramificación y poda”)  Descripción generalDescripción general  Estrategias de ramificaciónEstrategias de ramificación  ImplementaciónImplementación  EjemplosEjemplos

11

GrafosGrafos

Grafo G = (V,E)Grafo G = (V,E)

 V: Conjunto de vértices o nodos del grafo.V: Conjunto de vértices o nodos del grafo.  EE ⊆⊆ VxVVxV: Conjunto de aristas o arcos.: Conjunto de aristas o arcos.

Tipos de grafosTipos de grafosTipos de grafosTipos de grafos

 GGrafos no dirigidosrafos no dirigidos : Aristas (no orientadas).Aristas (no orientadas). ((v,wv,w) = () = (w,vw,v))

 GGrafos dirigidosrafos dirigidos : Arcos (con dirección).: Arcos (con dirección). ((v,wv,w)) ≠≠≠≠≠≠≠≠ ((w,vw,v))

22

v w

v w

GrafosGrafos

Ejemplo: USEjemplo: US BiotechBiotech IndustryIndustry

GrafosGrafos -- DefinicionesDefiniciones

 CaminoCamino [[pathpath]:]: Sucesión de arcos adyacentes tal que el vértice final deSucesión de arcos adyacentes tal que el vértice final de cada arco coincide con el inicial del siguiente.cada arco coincide con el inicial del siguiente.

Secuencia (wSecuencia (wSecuencia (wSecuencia (w 11 , w, w, w, w 22 , ...,, ...,, ...,, ..., wwww (^) kk))))∈∈∈∈ VVVV tal quetal que (w(w 11 , w, w 22 ), (w), (w 22 , w, w 33 ), ..., (w), ..., (wkk--1 1 , w, wkk)) ∈∈ E.E.

 Longitud del caminoLongitud del camino:: Número de arcos del camino (kNúmero de arcos del camino (k--1).1).

 CircuitoCircuito (o ciclo):(o ciclo): Camino que empieza y acaba en el mismo vértice.Camino que empieza y acaba en el mismo vértice. (^) 66

GrafosGrafos -- DefinicionesDefiniciones

 Grafo conexoGrafo conexo :: Un grafo no dirigido es un grafo conexo si para todo parUn grafo no dirigido es un grafo conexo si para todo par de nodos u y v existe unade nodos u y v existe una camidocamido de u a v.de u a v.

 Componentes conexasComponentes conexas :: Cada uno de los conjuntosCada uno de los conjuntos maximalesmaximales conexos.conexos.

GrafosGrafos -- DefinicionesDefiniciones

Tipos de grafosTipos de grafos

 Grafo etiquetadoGrafo etiquetado :: Cada arista y/o vértice tiene asociada una etiqueta/valor.Cada arista y/o vértice tiene asociada una etiqueta/valor.

 Grafo ponderadoGrafo ponderado = Grafo con pesos:= Grafo con pesos: Grafo etiquetado en el que existe un valor numéricoGrafo etiquetado en el que existe un valor numérico asociado a cada arista o arco.asociado a cada arista o arco.

 MultigrafoMultigrafo :: Grafo en el que se permite que entre dos vérticesGrafo en el que se permite que entre dos vértices exista más de una arista o arco.exista más de una arista o arco. 88

GrafosGrafos -- DefinicionesDefiniciones

 ÁrbolÁrbol :: Grafo conexo que no contiene ciclos.Grafo conexo que no contiene ciclos.

TeoremaTeoremaTeoremaTeorema Sea G un grafo de n nodos. Cualquier pareja de lasSea G un grafo de n nodos. Cualquier pareja de las siguientes afirmaciones implica la tercera:siguientes afirmaciones implica la tercera:  G es conexo.G es conexo.  G no contiene ciclos.G no contiene ciclos.  G tiene nG tiene n--1 aristas.1 aristas.

GrafosGrafos -- RepresentaciónRepresentación

Representación mediante listas de adyacencia

1 2 3 2 3 4 2 5

1 3 4 5 1 2 5 7 8

Array de listas enlazadas de nodos adyacentes.

1212

5 6 7 3 8 8

2 3 4 6 5

3 7

Representación mediante listas de adyacencia

Ventajas:Ventajas:

 Espacio proporcional a |V|+|E|. (representación adecuada para grafos poco densos).

GrafosGrafos -- RepresentaciónRepresentación

 ΘΘ(|V|+|E|)(|V|+|E|) en identificar todas las aristas.en identificar todas las aristas.

Inconvenientes:Inconvenientes:

 Se tarda O(grado(u)) en comprobar si (u,v)∈E.

 Ineficiente para encontrar los arcos que llegan a un nodo (solución: usar estructuras de listas múltiples).

Recorridos sobre grafosRecorridos sobre grafos

Se parte de un nodo dado y se visitan los vértices delSe parte de un nodo dado y se visitan los vértices del grafo de manera ordenada y sistemática, pasando de ungrafo de manera ordenada y sistemática, pasando de un vértice a otro a través de las aristas del grafo.vértice a otro a través de las aristas del grafo.

Tipos de recorridos:Tipos de recorridos:

 Búsqueda primero en profundidad:Búsqueda primero en profundidad: Equivalente al recorrido enEquivalente al recorrido en preordenpreorden de un árbol.de un árbol.

 Búsqueda primero en anchura:Búsqueda primero en anchura: Equivalente al recorrido de un árbol por niveles.Equivalente al recorrido de un árbol por niveles. 1414

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en profundidadBúsqueda primero en profundidad

[DFS:[DFS: DepthDepth--FirstFirst SearchSearch]]

r s t u Pila S={}Pila S={} v w x y

s

Pila S={s}Pila S={s}

Pila S={Pila S={r,sr,s}}

1515

v w x y

r s t u v w x y

r s^ t u v w x y

r

s w

v

r

s w

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en profundidadBúsqueda primero en profundidad

[DFS:[DFS: DepthDepth--FirstFirst SearchSearch]]

 Es necesario llevar la cuenta de los nodos visitadosEs necesario llevar la cuenta de los nodos visitados (y no visitados).(y no visitados).(y no visitados).(y no visitados).

 El recorridoEl recorrido no es únicono es único : depende del vértice inicial y: depende del vértice inicial y del orden de visita de los vértices adyacentes.del orden de visita de los vértices adyacentes.

 El orden de visita de unos nodos puede interpretarseEl orden de visita de unos nodos puede interpretarse como un árbol:como un árbol: árbol de expansión en profundidadárbol de expansión en profundidad asociado al grafo.asociado al grafo.

1818

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en profundidadBúsqueda primero en profundidad

[DFS:[DFS: DepthDepth--FirstFirst SearchSearch]]

función DFS (Grafo G(V,E))función DFS (Grafo G(V,E)) {{ forfor (i=0; i<(i=0; i<V.lengthV.length; i++); i++) visitado[i] = false;visitado[i] = false;

forfor (i=0; i<(i=0; i<V.lengthV.length; i++); i++) ifif (!visitado[i])(!visitado[i]) DFS(DFS(G,iG,i);); }}

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en profundidadBúsqueda primero en profundidad

[DFS:[DFS: DepthDepth--FirstFirst SearchSearch]]

función DFS (Grafo G(V,E),función DFS (Grafo G(V,E), intint i)i) {{ visitado[i] = true;visitado[i] = true;

foreachforeach (v[j] adyacente a v[i])(v[j] adyacente a v[i]) ifif (!visitado[j])(!visitado[j]) DFS(DFS(G,jG,j);); }}

O(|V|+|E|)O(|V|+|E|)

si usamos la representación basada en listas de adyacencia.si usamos la representación basada en listas de adyacencia. (^) 2020

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en anchuraBúsqueda primero en anchura

[BFS:[BFS: BreadthBreadth--FirstFirst SearchSearch]]

Exploración desde s por niveles:Exploración desde s por niveles:

s (^) L 1 L 2 L (^) n-

Exploración desde s por niveles:Exploración desde s por niveles:  LL 00 = { s }.= { s }.  LL 11 == NodosNodos adyacentesadyacentes a La L 00 ..  LL 22 == NodosNodos adyacentesadyacentes a La L 11 queque nono pertenecenpertenecen nini a La L 00 nini a La L 11 ..  LLi+1i+1 == NodosNodos queque, sin, sin pertenecerpertenecer aa ningúnningún nivelnivel anterior,anterior, estánestán conectadosconectados con Lcon Lii aa travéstravés dede unauna aristaarista..

TeoremaTeorema::

LLii contienecontiene todostodos loslos nodosnodos queque estánestán aa distanciadistancia ii de s.de s.^2121

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en anchuraBúsqueda primero en anchura

[BFS:[BFS: BreadthBreadth--FirstFirst SearchSearch]]

r s^ t u Cola Q={Cola Q={u,yu,y}} v w x y r

s r w

s r w

s w

Cola Q={y}Cola Q={y}

Cola Q={}Cola Q={}

2424

v w x y

r s^ t u v w x y

r s t u v w x y

v

r w t x u y

v

r w t x u y

v

r w t x u y

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en anchuraBúsqueda primero en anchura

[BFS:[BFS: BreadthBreadth--FirstFirst SearchSearch]]

 Empezando en un nodo v:Empezando en un nodo v:

 Primero se visita v.Primero se visita v.Primero se visita v.Primero se visita v.  Luego se visitan todos sus vértices adyacentes.Luego se visitan todos sus vértices adyacentes.  A continuación, los adyacentes a éstos…A continuación, los adyacentes a éstos… y así sucesivamente.y así sucesivamente.

 El algoritmo utiliza unaEl algoritmo utiliza una cola de vértices.cola de vértices.

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en anchuraBúsqueda primero en anchura

[BFS:[BFS: BreadthBreadth--FirstFirst SearchSearch]]

función BFS (Grafo G(V,E))función BFS (Grafo G(V,E)) {{ forforforfor (i=0; i<(i=0; i<(i=0; i<(i=0; i<V.lengthV.lengthV.lengthV.length; i++); i++); i++); i++) visitado[i] = false;visitado[i] = false;

forfor (i=0; i<(i=0; i<V.lengthV.length; i++); i++) ifif (!visitado[i])(!visitado[i]) BFS(BFS(G,iG,i);); }}

2626

Recorridos sobre grafosRecorridos sobre grafos

Búsqueda primero en anchuraBúsqueda primero en anchura

[BFS:[BFS: BreadthBreadth--FirstFirst SearchSearch]]

función BFS (Grafo G(V,E),función BFS (Grafo G(V,E), intint v)v) {{ Cola Q;Cola Q;

O(|V|+|E|)

si usamos la representación basada en listas de adyacencia

Cola Q;Cola Q; visitado[v]=true; Q.add(v);visitado[v]=true; Q.add(v); whilewhile (!(!Q.emptyQ.empty()) {()) { x =x = Q.extractQ.extract();(); foreachforeach (v[y] adyacente a v[x])(v[y] adyacente a v[x]) ifif (!visitado[y]) {(!visitado[y]) { visitado[y]=true; Q.add(y);visitado[y]=true; Q.add(y); }} }} }}

2727