Vous êtes sur la page 1sur 8

ProgramacinIII

ALGORITMOS DE BSQUEDA Y CAMINOS


MINIMOS
Boyac A. Mary Yuliana

Correo-e: mary.boyaca@uptc.edu.co

Abstract This document contains the Actualmente nos encontramos con numerosos y
information corresponding to the description, distintos problemas que son formulados por medio
operation, complexity, advantages and de los grafos, esta estructura consiste en almacenar
disadvantages and some of the uses of the search datos con algn tipo de relacin, los grafos no son
algorithms and minimum paths implemented in
the graph data structure, such as Dijkstra, ms que la versin general de un rbol, es decir,
Bellman-Ford and Boruvka. cualquier nodo de un grafo puede apuntar a
cualquier otro nodo de ste (incluso a l mismo).
ResumenEste documento contiene la se emplean para situaciones o problemas como lo
informacin correspondiente a la descripcin, son: La planificacin de tareas que completan un
funcionamiento, complejidad, ventajas y proyecto, encontrar las rutas de menor longitud
desventajas y algunos de los usos de los
entre dos puntos geogrficos, calcular el camino
algoritmos de bsqueda y caminos mnimos
implementados en la estructura de datos grafos, ms corto en un transporte, determinar el flujo
como lo son los algoritmos de Dijkstra, Bellman- mximo que puede llegar de una fuente a otra,
Ford y Boruvka. entre otras.

Palabras clavesrecursividad, grafos. La resolucin de estos problemas requiere


examinar todos los nodos o todas las aristas del
I. INTRODUCCIN grafo que representa al problema; sin embargo,
existen ocasiones en que la estructura del problema
es tal que se necesita visitar algunos de los nodos o
bien algunas de las aristas. De ah surgen los
algoritmos que imponen implcitamente un orden
en estos recorridos: visitar el nodo ms prximo o
las aristas ms cortas, y as sucesivamente; otros
algoritmos no requieren ningn orden en el
recorrido.

Los algoritmos que facilitan las bsquedas o que


nos permiten hallar el camino ms corto en un
grafo son varios, en esta ocasin los que vamos a
analizar son tres: el algoritmo de Dijkstra, el
algoritmo de Bellman-Ford y el algoritmo de
Boruvka.

II. DESCRIPCIN
ProgramacinIII

A. Algoritmo de Dijkstra: El algoritmo de Boruvka es un algoritmo para


Es un algoritmo para determinar el camino ms encontrar el mnimo rbol de expansin en un grafo en
corto dado un vrtice origen al resto de los vrtices el que todos sus arcos tienen distinto peso. Fue
en un grafo con pesos en cada arista. Su nombre se publicado por primera vez en 1926 por Otakar Boruvka
refiere a Edsger Dijkstra, quien lo describi por como un mtodo eficiente para construir la red
primera vez en el ao de 1959. La idea subyacente elctrica de Moravia. El algoritmo fue redescubierto
en este algoritmo consiste en ir explorando todos por Croquet en 1938, de nuevo por Florek,
los caminos ms cortos que parten del vrtice Lukasiewicz, Perkal, Steinhaus y Zubrzycki en 1951; y
origen y que llevan a todos los dems vrtices; de nuevo por sollin a principio de la dcada de 1960.
cuando se obtiene el camino ms corto desde el Debido a que Sollin fue el nico de ellos que era
vrtice origen, al resto de vrtices que componen cientfico en computacin, este algoritmo es
un grafo, el algoritmo se detiene. El algoritmo es frecuentemente llamado algoritmo de Sollin,
una especializacin de la bsqueda de costo especialmente en la literatura sobre computacin
uniforme, y como tal, no funciona en aristas de paralela.[2]
coste negativo. [1] II. FUNCIONAMIENTO

B. Algoritmo de Bellman-Ford: A. Algoritmo de Dijkstra:


Primero se marcan todos los vrtices como no
El algoritmo de Bellman Ford genera el camino ms utilizados. El algoritmo parte de un vrtice origen
corto en un grafo dirigido ponderado. (en el que el peso que ser ingresado, a partir de esos vrtices se
de algunas aristas puede ser negativo). El algoritmo de evalan sus adyacentes, luego se busca el que est
Dijkstra resuelve este mismo problema en un tiempo ms cerca de nuestro punto origen, se toma como
menor, pero requiere que los pesos de las aristas no punto intermedio y se observa si se puede llegar
sean negativos, salvo que el grafo sea dirigido y sin ms rpido a travs de este vrtice a los dems.
ciclos. Por lo que el algoritmo de Bellman Ford Despus se escoge al siguiente ms cercano (con
normalmente se utiliza cuando hay aristas de peso las distancias ya actualizadas) y se repite el
negativo. Este algoritmo fue desarrollado por Richard proceso. Esto se hace hasta que el vrtice no
Bellman, Samuel End y Lester Ford. Segn utilizado ms cercano sea el destino. Al proceso de
Sedgewick, los pesos negativos no son simplemente actualizar las distancias tomando como punto
una oscuridad matemtica; surgen de una manera intermedio al nuevo vrtice se le conoce
natural en la reduccin a problemas de caminos ms como relajacin.
cortos, y son un ejemplo de una reduccin al problema
del camino hamiltoneano que es NP completos hasta el Dijkstra una Cola de Prioridad o Heap, este Heap
problema de caminos ms cortos con pesos generales. debe tener la propiedad de Min-Heap es decir cada
Si un grafo contiene un ciclo de un coste total negativo, vez que extraiga un elemento del Heap me debe
entonces este grafo no tiene solucin. El algoritmo es devolver el de menor valor, en nuestro caso dicho
capaz de detectar este caso. Si el grafo contiene un valor ser el peso acumulado en los nodos.
ciclo de coste negativo, el algoritmo lo detectar, pero Ejemplo:
no encontrar el camino ms corto que no repite
ningn vrtice. A continuacin, se observa el funcionamiento del
algoritmo de Dijkstra mediante el siguiente grafo
no dirigido, el cual vamos a obtener todos los
B. Algoritmo de Boruvka: caminos mnimos desde el vrtice A:
ProgramacinIII

https://www.youtube.com/watch?v=18RaYWoqoLo&t=12s

https://www.youtube.com/watch?v=18RaYWoqoLo&t=12s Ahora se evalan los nodos adyacentes de este,


actualizando las etiquetas con el valor mnimo del
peso acumulado, se vuelve a marcar nuevamente el
Primero se pone la etiqueta de los nodos mnimo y luego se evalan sus adyacentes.
adyacentes al nodo origen, cada etiqueta est
compuesta por el peso acumulado y el vrtice de
donde viene, como se muestra a continuacin:

El paso anterior se repite hasta que todos los nodos


sean marcados o visitados, el grafo quedara de la
siguiente manera:

https://www.youtube.com/watch?v=18RaYWoqoLo&t=12s

Se marca el nodo que tenga la etiqueta con el peso


mnimo.

https://www.youtube.com/watch?v=18RaYWoqoLo&t=12s
ProgramacinIII

En la imagen anterior se puede observar todas las


etiquetas finales, ahora se puede observar mejor los
caminos mnimos desde el vrtice A a cualquier
otro nodo, solo se necesita seguir las etiquetas. Por
ejemplo, el camino mnimo para llegar de A a F es
el siguiente:

F-D = 5;
D-C = 3;
C-A = 1;

Se puede observar que el camino mnimo de A-F


tiene un peso de 9.
https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s

B. Algoritmo de Bellman-Ford: Paso 3: al


haber ya una distancia mnima acumulada
desde los nodos o vrtices B y C hasta A, se puede
El Algoritmo de Bellman Ford es, en su actualizar las distancias mnimas de los otros
estructura bsica muy parecido al algoritmo de nodos, teniendo en cuenta todas las entradas que
Dijkstra, pero en vez de seleccionar vorazmente el puede tener.
nodo de peso mnimo an sin procesar para
relajarlo, simplemente relaja todas las aristas, y lo
hace |V|-1 veces, siendo |V| el nmero de vrtices
en el grafo. Las repeticiones permiten a las
distancias mnimas recorrer el rbol, ya que la
ausencia de ciclos negativos, el camino ms corto
slo visita cada vrtice una vez a diferencia de la
solucin voraz la cual depende de la suposicin de
que los pesos sean positivos, esta solucin se
aproxima ms al caso general.

Ejemplo:

A continuacin, se muestra un grafo como


ejemplo, el cual se va a determinar el camino ms
corto a todos los vrtices desde el vrtice A.

https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s

Paso1: se inicializa las distancias o costos mnimos


a infinito.

Paso 2: se actualiza el paso anterior. En este caso


ponemos la distancia de los nodos que tienen
accesos directos al vrtice A y se la sumamos a la
distancia mnima acumulada que hay hasta el
vrtice, como se muestra a continuacin.
ProgramacinIII

https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s

En los pasos sucesivos, se van actualizando las


distancias mnimas acumuladas de los distintos
vrtices, como se muestra a continuacin.

https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s

como se ve en la imagen anterior hay unas


etiquetas que se repiten, en el cdigo para evitar
esto se marcan estos nodos como nodos visitados.

A continuacin, se muestra la solucin de la


distancia mnima desde el vrtice (A) a todos los
otros nodos.
ProgramacinIII

Como se puede observar en la siguiente


imagen, es como si se tuvieran varios sub-
arboles, en este caso son tres:

https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s

https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s
C. Algoritmo de Boruvka:
El algoritmo de Boruvka consiste en elegir desde
luego se procede a unir cada sub-arbol
cada vrtice la arista de menor peso que sale de l,
y as formar al inicio un conjunto de componentes teniendo en cuenta el peso mnimo, por lo
de vrtices unidos por dichas aristas es decir el que el resultado final es el siguiente:
algoritmo comienza examinando cada vrtice y
aadiendo el arco de menor peso desde ese vrtice
a otro en el grafo, sin tener en cuenta los arcos ya
agregados, y contina uniendo estos grupos de la
misma manera hasta que se completa un rbol que
cubra todos los vrtices. Si denominamos a cada
vrtice o conjunto de vrtices conectados como
"componente", A continuacin se muestra un
ejemplo, donde se inicio por el vertice de origen en
este caso es 0 y se marco el camino mas corto de https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s
este, luego se hizo lo mismo con los siguientes
vertices sin tener en cuenta si son adyacentes o no.
III. COMPLEJIDAD

A. Algoritmo de Dijkstra:

La complejidad que maneja el algoritmo de Dijkstra


se expresa mediante la siguiente formula: O(n^2)
operaciones (sumas y comparaciones), eso es lo que
gasta para determinar la longitud del camino ms
https://www.youtube.com/watch?v=18RaRWoqoJo&t=12s
corto entre dos vrtices de un grafo ponderado
simple, conexo y no dirigido con n vrtices.

B. Algoritmo de Bellman-Ford:
ProgramacinIII

La complejidad de este algoritmo se Una de sus aplicaciones ms importantes se


denota como: O(N A) esa es lo que tarda encuentra en el campo de la telemtica, gracias a ste
en determinar el camino mnimo entre un algoritmo, se puede resolver grafos con muchos
vrtice a los otros. nodos, los cuales seran muy complicaos de hacer sin
dicho algoritmo, encontrando as las rutas ms cortas
entre un origen y todos los destinos de una red.
C. Algoritmo de Boruvka:
B. Algoritmo de Bellman-Ford:
La complejidad que tiene el algoritmo de
Boruvka se puede denotar como: O(log(V)) El algoritmo de Bellman Ford se usa en
iteraciones en el bucle externo antes de terminar, protocolo de encaminamiento basado en vector de
por lo tanto, su complejidad temporal se expresa distancia por ejemplo el protocolo de
como: 0(E log(V)), donde E es el nmero de arcos, encaminamiento de informacin tambin es usado
y V es el nmero de vrtices de G. en conjuntos de redes y dispositivos router pc
administrados tpicamente por un proveedor de
servicios web.
IV. VENTAJAS Y DESVENTAJAS

VI. CONCLUSIONES
A. Algoritmo de Dijkstra:

Los tres algoritmos estudiados nos resuelven el


Una de sus desventajas es que no trabaja
problema de hallar el camino mnimo pero el que
con aristas que tengan peso negativo.
tarda menos tiempo es el algoritmo de Dijkstra
pero esto no quiere decir que siempre va a ser el
B. Algoritmo de Bellman-Ford: ms eficiente, debido a que si dentro del grafo
existen aristas con peso negativo, este algoritmo no
va a funcionar, para este tipo de casos se utiliza el
Alguna de las ventajas de este algoritmo es que algoritmo de Bellman-Ford, pero es un algoritmo
trabaja en orden, redacta en orden paso a paso lo que que tarda ms que el algoritmo de Dijkstra, por
hay que hacer y disminuye sensiblemente el riesgo de esto es uno de los algoritmos ms utilizado en la
errores, adems que permite hallar el camino mnimo vida real.
con aristas negativos.

REFERENCIAS
Alguna de sus desventajas es que los cambios en la
topologa de red no se reflejan rpidamente ya que las [1].https://es.wikipedia.org/wiki/Algoritmo_de_
actualizaciones se distribuyen nodo por nodo, adems Dijkstra
de esto presenta algunos problemas con respecto a la
[2].https://www.ecured.cu/Algoritmo_de_Boruv
escala,
ka

https://prezi.com/nhwwdrqhp6e4/algoritmos-
V. USOS RECOMENDADOS O APLICACIONES bellman-ford/

A. Algoritmo de Dijkstra:
ProgramacinIII

Vous aimerez peut-être aussi