You are on page 1of 43

|  


 



Algoritmos para grafos


m


M Algoritmos para grafos


‡ Definiciones
‡ Orden topológico
‡ Ruta mas corta
‡ Flujo en redes
‡ Árbol de mínima expansión
‡ Aplicaciones de búsqueda en
profundidad
‡ Problemas NP
NP--completos

 


Alguien dejó pescado podrido en todas las casas. ¿Dónde está?


© 
½ rtice o nodo
M |l recorrido comenzó
en una de las casas Arista o arco
adyacente a la
laguna. 
M |l vándalo recorrió m
cada uno de los
caminos exactamente
una vez. |
M |l malhechor sigue
en el complejo y esta
escondido en una de  
las casas

|uler


M n grafo G=(½| consiste de un conjunto
de v rtices ½ y un conjunto de aristas |.
M Cada arista es un par (v donde v Œ ½.
Si el par es ordenado entonces el grafo es
dirigido.
M n camino o recorrido es una secuencia de
v rtices n tal que (ii+ Π|.
M n ciclo es un recorrido que vuelve al
punto de partida.
 
 

Aplicacion ½ertices Aristas


Redes de Computadoras y Medios de
computadoras equipos de comunicación
telecomunicaciones
Sistemas de Ciudades puertos Autopistas rutas
transporte aeropuertos etc. de navegación etc.
Redes el ctricas Subestaciones Conductores

Red telefónica Centrales Troncales


telefónicas
Distribución de |staciones de Tuberías
fluidos bombeo
Ú 


- A 

  -   
m
 C -  
3 D   
| 4 |   
 F  
  6 G  
¬




|structuras de Prog. Orientada


Datos y alg. a objetos

Matemáticas p.
la computación

Análisis y mode-
mode-
Optimización
lado de datos

T cnicas de
programación

Modelos
Lógica difusa
estocásticos

M todos
estadísticos

Redes neuronales Modelos sustitutos


¬




½    
   

 
½ 
  
 

 
 

!"# 
 
 #$$ 
 
 % 
&&  
  
'
 !()*+½",-. "/

     
'
Ú 

M Dado un grafo G=(½| y un v rtice s
encuentre el camino más corto desde s a
todos los demás nodos en ½
M |xisten dos variantes:
‡ Los arcos no tienen distancia. |n este caso la
longitud de una ruta es simplemente la
cantidad de aristas incluidas en el camino.
‡ Los arcos tienen asociada una medida de
distancia. |ste caso es mas complicado en
particular si se permiten distancias negativas.
|n caso de ciclos con costo negativo no existe
solución
Ú 
 


   



 
  
 

!"#  

 
 
 % 
 .(.(.-0

$1


  
'
'
'
Ú 
 


 




 %2

 

 

#2 

32
2 
 
 % 
! 2 
$ 4 

  $ 


'
'
'
Ú 




   



 
  
 

!"#  

 
 
 % 
$ 4 

$ 


   
  
'
'
'
|
 


M |l algoritmo de ruta mas corta sin costos


es O( ||| + |½| .
M |l costo del algoritmo de Dijkstra depende
de cómo se implemente la lista de
v rtices:
‡ Si se recorre la lista de v rtices en secuencia
cada vez que se busca el v.dist mínimo el
algortimo es O(|||+|½|
‡ Si se use una cola de prioridad el algoritmo es
O(|||log |½| o O(|½|log |½|.
M Si se permiten costos negativos el
algoritmo es O(|||·|½|
Ú 

 

M |n el caso de grafos sin ciclos el algoritmo


de Dijkstra se puede simplificar si los
v rtices se procesan en orden topológico.
M Se puede hacer el calculo en un paso en la
medida en que se produce el ordenamiento
ya que una vez calculada la distancia a un
nodo esta no cambia.
M La eficiencia del algoritmo modificado es
O(|||+|½|.
M La aplicación mas común es en la
determinación de rutas criticas (mas larga
en proyectos de actividades (P|RT/CPM
©
   

M |n los problemas de flujo se asocia a cada
arista una capacidad de flujo y/o un costo.
Además algunos v rtices tienen flujos
entrantes o salientes. Algunos problemas
típicos son:
‡ Flujo máximo: determinar la máxima cantidad
de flujo que puede circular desde un nodo
inicial Y hasta un nodo final .
‡ Flujo a costo mínimo: determinar el flujo en
los arcos para satisfacer los flujos entrantes y
salientes en los v rtices con un mínimo costo.
 
 !

M Se tiene un grafo dirigido G=(½| en donde


cv es capacidad de la arista v.
M Se usará un grafo auxiliar R=(½|R llamado el
grafo residual. Inicialmente R=G.
M |n la etapa 6 se escoge una ruta entre Y y ; se
determina el máximo flujo 6 que puede pasar
por ella.
M Se resta 6 de la capacidad todos los arcos de R
que van en el sentido de la ruta y se suma 6 a
los que van en sentido contrario (si estos no
existen se agregan a R.
M Si no existe ninguna ruta de Y a termina el
algoritmo. |l flujo máximo es > .
    
!

M |l m todo para seleccionar la ruta en cada etapa


determina el tiempo de ejecución del algoritmo.
M Si el flujo total es f y cada ruta aumenta el flujo
en al menos  entonces el algoritmo es O(f·|||
M Si siempre se selecciona la ruta con el mayor
flujo (esto puede lograrse modificando una línea
del algoritmo de Dijkstra entonces flujo maximo
es O(||| log |½| log capmax.
M Si siempre se escoge la ruta con el menor
número de arcos entonces el algoritmo es
O(|||·|½|
M Se han encontrado algoritmos de orden
O(||||½|log(|½|/| y O(||||½|+|½|+A

 "! 
M Dado un grafo no dirigido G=(½| se
debe encontrar |½||½|-- arcos que conecten
todos los nodos con un costo mínimo.
M |l algoritmo de Prim es similar al de
Dijkstra excepto que la distancia a cada
nodo es solo la del arco que conduce a el.
|l análisis es id ntico al de Dijkstra.
M |l algoritmo de Kruskal mantiene un
bosque y selecciona en cada iteración el
arco más corto y lo acepta si sus nodos
inicial y final pertenecen a diferentes
árboles. |ste algoritmo es O(|||log |||.


# 
 22
  5
6%/7  

" /-  

8
. 95  

39 
 6%/()*+½",-. "/ 

 54()*+½",-. "/: 1 


* 


!  

 5$$
  
'
'
$ %

M |s una generalización de los recorridos en
preorden.
M Según el grafo el algoritmo de abajo podría
no visitar todos los nodos. |n ese caso se
inicia una nueva búsqueda en algun nodo no
visitado.
M |l algoritmo es O(|½| + |||.
 ½

½ 

 
 % 
! 
  
'
 
 $ %


M Grafos no dirigidos:
‡ n grafo no dirigido es conexo si 
partiendo de cualquier nodo los visita
todos.
‡ i
i--conectividad: un grafo no dirigido es
bi-
bi-conexo si es posible remover
cualquier v rtice sin que el grafo deje
de ser conexo.
‡ Circuitos de |uler: recorridos en un
grafo que transitan todos los arcos
solamente una vez.
$ %


Arcos de
retorno


 |
m

|
m
Árbol generado por 5
&
&


Los nodos C y D son articulaciones
(/


m (/
(4/

m (3/


(6/4 (7/7

  | (/4

|
lo(v es el minimo de:
- num(v
(num/lo
- min(num( para arcos (v hacia atrás.
3- min(lo( para todos las arcos (v.
&
&

 5½

½ 

 # $$;; 1
 
 % 

! 


5  
  <#
/ # $=>? 
 #   ;; @
'

! 
 #  # ;; A
'
'
m
| 
M |uler resolvió el problema en 736.
M n circuito de |uler solo es posible si
todos los nodos tienen paridad par.
M n camino de |uler solo es posible si a lo
sumo dos v rtices tienen paridad impar.


a f
b
e

d
g
c
m
Pescado
m
| 
-

' * , 0

) /

( + -. --

-'

 4 - 
 4  3 7 4  - 7 9 3 4
4 - 
 4  3  8 9 6 3 7 4  - 7 9 3 4 - 
 4  3  8 9  - 9
9 6 3 7 4  - 7 9 3 4 - 
 
 $ %


M Grafos dirigidos:
‡ Si el grafo no es fuertemente conexo el
algoritmo puede no visitar todos los
nodos.
‡ Se puede determinar si un grafo es
acíclico.
‡ Se puede determinar los componentes
fuertemente conexos.
$ %




   3 

m 

m  3 2

1
|
Cross edges
2 1
ack edges
|
La búsqueda comienza en  Forard edges
Se reinicia en H y luego en G.
$ %




M |n un grafo dirigido la búsqueda en profundidad


generalmente resulta en un bosque.
M n grafo dirigido es acíclico si y solo si no tiene
arcos de retorno.
M Dado un grafo dirigido G se puede saber si es
fuertemente conexo o si no lo es encontrar sus
componentes fuertemente conexos:
‡ |jecutar una dfs(G.
‡ Numerar los v rtices recorriendo en post
post--orden el bosque
resultante.
‡ Formar Gr invirtiendo los arcos de G.
‡ |jecutar dfs(Gr iniciando (y re-
re-iniciando a partir del
v rtice con mayor numero.
m

 
!

4* 4) 4-.  3  |

4' m4, 40 34+ 2 m


|4-
24( 14/

Componentes: {G} {H I J} { A C F} {D} {|}


1
 
" 


M Hacia 9-- David Hilbert intentó
encontrar un algoritmo general para
probar la validez de proposiciones
matemáticas.
M |n 93 Kurt Gödel demostro su teorema
de incompletitud el cual prueba que no
existe tal procedimiento efectivo.
M |n 936 Alan Turing introdujo un modelo
para describir procedimientos efectivos.
Dicho modelo se conoce como máquina de
Turing.
 %5
M n procedimiento efectivo tiene ciertas
propiedades:
‡ Debe poderse describir en forma finita.
‡ Debe consistir en pasos discretos que pueden
ser ejecutados mecánicamente.
M na máquina de Turing consta de:
‡ na cinta semi-
semi-infinita dividida en celdas. Cada
celda puede contener solo uno de un conjunto
finito de símbolos.
‡ n cabezal de lectura/escritura.
‡ n control finito.
 %5
M Las primeras n V - celdas de la cinta contienen la
entrada. Las demás contienen el símbolo especial
.
6 .
M |n cada movimiento la máquina de Turing
puede dependiendo del símbolo bajo el cabezal y
del estado del control finito:
‡ Cambiar de estado
‡ Imprimir un símbolo en la cinta reemplazando al
existente y
‡ Mover el cabezal a la izquierda o derecha una celda.
M na máquina de Turing tiene el mismo poder de
computación que un computador digital tal como
lo conocemos.
 %5

„Ñ „  „  „    

Control
finito
 %5
" 

M Para cada estado dado y un símbolo leído


de la cinta una máquina de Turing no
determinística tiene un número finito de
opciones para el siguiente movimiento.
Cada opción consiste de un nuevo estado
símbolo a imprimir y dirección de
movimiento.
M La falta de determinismo no resulta en
una máquina mas poderosa.
5
" 
 
M Considere la clase de funciones que
transforman los enteros no negativos al
intervalo {-}. |stas funciones se
pueden hacer corresponder uno a uno con
los números reales.
M Por otra parte si los procedimientos
efectivos tienen descripciones finitas
estos se pueden hacer corresponder uno a
uno con los números enteros.
M Los números enteros no se corresponden
uno a uno con los reales. |n consecuencia
no todas las funciones son computables.
©
  À

M La complejidad de un problema es una medida
del tiempo y espacio requerido para resolverlo.
M Casi todos los algoritmos presentados hasta
ahora pertenecen a la clase o polinomial O(Nm.
|stos son ³faciles´
M |l siguiente escalafón son los problemas de clase
À o   . |stos
 Y   .
problemas pueden resolverse en un tiempo y
espacio polinomial en un computador no
determinístico.
M n problema pertenece a À  si es posible
determinar que una solución es correcta en un
tiempo polinomial.
À -completos
©
  À
M Son un subconjunto de À que contiene los
problemas más difíciles.
M n problema es À -completo si todos los
problemas en À se pueden reducir a l en un
tiempo/espacio polinomial.
M Si un problema À -Completo pudiera resolverse
en un tiempo/espacio polinomial todos los
problemas en À pertenecerían a .
M A pesar de todos los esfuerzos no ha sido posible
encontrar una solución polinomial para ningún
problema À -completo. Los algoritmos que se
han encontrado son de orden exponencial.
À -completos
©
  À
M Circuito de Hamilton: n recorrido que
pase por todos los nodos de un grafo una
sola vez.
M Problema del agente viajero: hallar el
circuito de Hamilton de menor costo.
M Programación lineal entera
M Satisfabilidad: dada una expresión
conteniendo variables parentesis y
operadores lógicos ¿existe una
combinación de valores de las variables
que la satisfacen?
À -completos
©
  À
M Coloreado de grafos: dado un grafo G y un
entero k ¿puede colorearse G de modo
que no existan dos v rtices adyacentes
del mismo color?
M Problema de la partición: dada una lista
de enteros i i ... ik ¿existe un
subconjunto cuya suma sea exactamente
½(i + i+ ... +ik?
M Problema de la maleta: dada una maleta
con capacidad C y un conjunto de artículos
con volumen pi y utilidad ui ¿qu articulos
deben empacarse para maximizar la
utilidad?
Ú 
M Los grafos son útiles para modelar
muchos problemas de la vida real.
M Típicamente los grafos que ocurren
son dispersos ( ||| << |½|  por lo
deben seleccionarse adecuadamente
las estructuras de datos.
M |xisten problemas que no tienen
soluciones eficientes y otros que
simplemente no son computables.

You might also like