









Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: calculo, Profesor: manuel manuel, Carrera: Ingeniería en Informática, Universidad: UC3M
Tipo: Apuntes
1 / 15
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!










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
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
Ejemplo: USEjemplo: US BiotechBiotech IndustryIndustry
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
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.
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
Á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.
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).
ΘΘ(|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).
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
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
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
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);); }}
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);); }}
si usamos la representación basada en listas de adyacencia.si usamos la representación basada en listas de adyacencia. (^) 2020
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
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
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.
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
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;
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