Академический Документы
Профессиональный Документы
Культура Документы
Un ejemplo de rbol expandido mnimo. Cada punto representa un vrtice, el cual puede ser
un rbol por s mismo. Se usa el Algoritmo para buscar las distancias ms cortas (rbol
expandido) que conectan todos los puntos o vrtices.
Funciona de la siguiente manera:
se crea un bosque B (un conjunto de rboles), donde cada vrtice del grafo es un
rbol separado
se crea un conjunto C que contenga a todas las aristas del grafo
mientras C es novaco
Al acabar el algoritmo, el bosque tiene una sola componente, la cual forma un rbol de
expansin mnimo del grafo.
Este algoritmo fue publicado por primera vez en Proceedings of the American
Mathematical Society, pp. 4850 en 1956, y fue escrito por Joseph Kruskal.
Tabla de contenidos
[ocultar]
1 Pseudocdigo
2 Complejidad del algoritmo
3 Demostracin de la correccin
4 Ejemplo
5 Referencias
6 Enlaces externos
Pseudocdigo [editar]
1 function Kruskal(G)
2
for each vertex v in G do
3
Define an elementary cluster C(v) {v}.
4
Initialize a priority queue Q to contain all edges in G, using the
weights as keys.
5
Define a tree T
//T will ultimately contain the edges of
the MST
6
// n es el nmero total de vrtices
7
while T has fewer than n-1 edges do
8
// edge u,v is the minimum weighted route from/to v
9
(u,v) Q.removeMin()
10
// previene ciclos en T. suma u,v solo si T no contiene una
arista que una u y v.
11
// Ntese que el cluster contiene ms de un vrtice si una arista
une un par de
12
// vrtices que han sido aadidos al rbol.
13
Let C(v) be the cluster containing v, and let C(u) be the cluster
containing u.
14
if C(v) C(u) then
15
Add edge (v,u) to T.
16
Merge C(v) and C(u) into one cluster, that is, union C(v) and
C(u).
17
return tree T
Se puede conseguir esta complejidad de la siguiente manera: primero se ordenan las aristas
por su peso usando una ordenacin por comparacin (comparison sort) con una
complejidad del orden de O(m log m); esto permite que el paso "eliminar una arista de peso
mnimo de C" se ejecute en tiempo constante. Lo siguiente es usar una estructura de datos
sobre conjuntos disjuntos (disjoint-set data structure) para controlar qu vrtices estn en
qu componentes. Es necesario hacer varias operaciones del orden de O(m), dos
operaciones de bsqueda y posiblemente una unin por cada arista. Incluso una estructura
de datos sobre conjuntos disjuntos simple con uniones por rangos puede ejecutar
operaciones del orden de O(m) en O(m log n). Por tanto, la complejidad total es del orden
de O(m log m) = O(m log n).
Con la condicin de que las aristas estn ordenadas o puedan ser ordenadas en un tiempo
lineal (por ejemplo, mediante el ordenamiento por cuentas o con el ordenamiento Radix), el
algoritmo puede usar estructuras de datos de conjuntos disjuntos ms complejas para
ejecutarse en tiempos del orden de O(m (n)), donde es la inversa (tiene un crecimiento
extremadamente lento) de la funcin de Ackermann.
Ejemplo [editar]
Referencias [editar]
J. B. Kruskal: On the shortest spanning subtree and the traveling salesman problem.
En: Proceedings of the American Mathematical Society. 7 (1956), pp. 4850
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein.
Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001.
ISBN 0262032937. Seccin 23.2: The algorithms of Kruskal and Prim, pp.567574.