Вы находитесь на странице: 1из 7

El algoritmo de Prim es un algoritmo perteneciente a la teoría de los grafos para

encontrar un árbol recubridor mínimo en un grafo conexo, no dirigido y cuyas aristas


están etiquetadas. Es decir, converger un subconjunto de las aristas que formen un árbol
que englobe todos los vértices del grafo inicial, done el peso total de las aristas del árbol
es el mínimo posible.

GRAFOS

Un grafo es un conjunto de puntos (vértices) en el espacio, que están conectados por un


conjunto de líneas (aristas).

Tipos de Grafos
Existen dos tipos de grafos los dirigidos y los no dirigidos.
● Dirigidos: Son aquellos en los cuales los lados están orientados (flechas). Cada
lado se representa entre ángulos, separando sus vértices por comas y teniendo en
cuenta <Vi ,Vj>!=<Vj ,Vi>, <Vi,Vj> nos expresa que Vi es el padre de Vj o que
Vj es hijo de Vi por tanto son diferentes. En grafos dirigidos, para cada lado
<A,B>, A, el cual es el vértice origen, se conoce como la cola del lado y B, el
cual es el vértice destino, se conoce como cabeza del lado.
● No dirigidos: Son aquellos en los cuales los lados no están orientados (No son
flechas). Cada lado se representa entre paréntesis, separando sus vértices por
comas, y teniendo en cuenta (Vi,Vj)=(Vj,Vi).

ÁRBOLES DE EXPANSIÓN MÍNIMOS

Es aquel que obtenemos en un grafo conexo y sin ciclos. Árbol de máximo alcance cuyo
valor es mínimo, es decir, la suma de sus aristas es mínima.
Árbol es un grafo en el que existe un único nodo desde el que se puede acceder a todos
los demás y cada nodo tiene un único predecesor, excepto el primero, que no tiene
ninguno.
También podemos definir un árbol como:
 Un grafo conexo y sin ciclos.
 Un grafo sin ciclos y con n-1 aristas, siendo n el número de vértices.
Grado de un nodo en un árbol es el número de subárboles de aquel nodo. Denominamos
hojas en un árbol a los nodos finales (v3, v5 y v6). Un árbol de máximo alcance.
ALGORITMO DE PRIM

Objetivo de Algoritmo Prim: Encontrar el árbol recubridor más corto.


El algoritmo fue diseñado en 1930 por el matemático Vojtech Jarnik y luego de manera
independiente por el científico computacional Robert C. Prim en 1957, y redescubierto
por Dijkstra en 1959. Por esta razón, el algoritmo es también conocido como algoritmo
DJP o algoritmo de Jarnik.

El algoritmo localiza un subconjunto de aristas el cual forman un árbol con todos los
vértices, donde el peso total de todas las aristas en el árbol es el mínimo posible. Si el
grafo no es conexo es decir, que para cada par de vértices no están conectados por al
menos dos caminos disjuntos, entonces el algoritmo encontrará el árbol recubridor
mínimo para uno de los componentes conexos que forman dicho grafo no conexo.
El algoritmo incrementa de manera continua el tamaño de un árbol, primero se
comienza con un vértice inicial en el se agregan sucesivamente vértices cuya distancia
a las anteriores es mínima. Es decir, que, en cada paso, las aristas a considerar son
aquellas que inciden en vértices que ya pertenecen al árbol.
El árbol recubridor mínimo está completamente construido cuando no quedan más
vértices por agregar.

Requisitos
● Ser un grafo conexo
● Ser un grafo sin ciclos
● Tener todos los arcos etiquetados.

Pseudocódigo
1. Asociar con cada vértice v del grafo un número C[v] (el mínimo coste de conexión
a v) y a un lado E[v] (el lado que provee esa conexión de mínimo coste). Para
inicializar esos valores, se establecen todos los valores de C[v] a +∞ (o a cualquier
número más grande que el máximo tamaño de lado) y establecemos cada E[v] a
un valor "flag"(bandera) que indica que no hay ningún lado que conecte v a
vértices más cercanos.
2. Inicializar un bosque vacío F y establecer Q vértices que aún no han sido incluidos
en F (inicialmente, todos los vértices).
3. Repetir los siguientes pasos hasta que Q esté vacío:
a. Encontrar y eliminar un vértice v de Q teniendo el mínimo valor de C[v]
b. Añadir v a F y, si E[v] no tiene el valor especial de "flag", añadir también
E[v] a F
c. Hacer un bucle sobre los lados vw conectando v a otros vértices w. Para cada
lado, si w todavía pertenece a Q y vw tiene tamaño más pequeño que C[w],
realizar los siguientes pasos:
i. Establecer C[w] al coste del lado vw
ii. Establecer E[w] apuntando al lado vw
4. Devolver F

El bucle principal se ejecuta n- 1 veces, en cada iteración cada bucle interior toma O(n),
por lo tanto el tiempo de ejecución del algoritmo Prim toma O(n2) .

ALGORITMO DE PRIM Y ALGORITMO KRUSKAL


Diferencias
 El algoritmo de Prim, va creando un solo árbol en todo el proceso de las
iteraciones, en cambio el algoritmo de Kruskal, crea uno o varios árboles en cada
iteración, finalizando con un solo árbol de expansión mínimo o máximo.
 El algoritmo de Prim, se inicia desde un vértice cualquiera, en cambio el
algoritmo de Kruskal, se inicia desde el arco o arista de menor o mayor peso
según corresponda a una maximización o minimización.

Similitudes
 Ambos algoritmos son del tipo ávidos (greedy).
 Ambos algoritmos pueden generar más de un árbol de expansión mínimo o
máximo según corresponda a una maximización o minimización, en el caso los
pesos fueran todos diferentes se genera como solución un único árbol, pero si
hubiera al menos dos arcos con pesos iguales existe la posibilidad que se generen
dos soluciones óptimas.
 Las soluciones halladas por ambos algoritmos son óptimos e iguales siempre, es
decir al final tienen el mismo peso total máximo o mínimo según corresponda a
una maximización o minimización.

Complejidad
La complejidad del algoritmo de Prim es 𝑂(𝑛2 ), en cambio la complejidad del
algoritmo de Kruskal es 𝑂(𝑎 log 𝑛); donde n es el número de vértices y a es el número
de arcos.

𝑛(𝑛−1)
Como 𝑛 − 1 ≤ 𝑎 ≤ se cumple, entonces:
2
 Si 𝑎 ≈ 𝑛 conviene utilizar Kruskal
 Si 𝑎 ≈ 𝑛2 conviene utilizar Prim

CONCLUSIONES
El algoritmo de Prim es eficiente para ahorrar recursos y existe un campo basto para
su aplicación tales como los servidores, redes, postes de luz y demás.
Todo esto está a nuestro alrededor; en nuestra colonia tenemos postes de luz, en ellos
se encuentran los cables para nuestros servicios (TV de paga), el cual debemos
optimizar nuestros recursos para llevar TV de paga a los clientes, en cada calle, y
posteriormente en cada casa, obteniendo la ruta más adecuada.

EJEMPLO
EJERCICIO
Encontrar el árbol recubridor mínimo para el siguiente grafo, comenzando por el nodo
A, y calcular el peso total de las aristas del árbol resultante.

SOLUCIÓN

Вам также может понравиться