Sei sulla pagina 1di 8

UNIVERSIDAD

DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

Tercera Parte Prueba 2


Matemtica Discreta.
Grafos

Gonzalo Galaz Zambrano


Ingeniera Civil Industrial m. Informtica
Departamento de Ingeneria Matemtica
Facultad de Ingeniera, Ciencias y Administracin
Prof: Julio Lopez Fenner
Universidad de La Frontera
Temuco - Chile

UNIVERSIDAD DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

Introduccin
En el presente informe trataremos de aplicar un algoritmo para
alcanzar la solucin del problema presentado, se trata del
algoritmo de Sollin, algoritmo que fue descubierto en 1926 por
Otakar Boruvka, algoritmo que permite encontrar el rbol mnimo
de expansin en un grafo ponderado. Luego este fue
redescubierto por Choquet en 1938, luego por Florek, Steinhaus,
Zubrzycki en 1951 y finalmente por Sollin alrededor de 1960, pero
este al ser el nico de ellos que era cientfico en computacin,
este algoritmo suelle llamarse algoritmo de Sollin.
En este caso nuestro grafo posee pesos y podemos hacer uso de
este algoritmo de tal manera de poder encontrar un rbol minimo
de manera tal que los costos de mantenimiento de esta empresa
pueda disminuir mediante el uso de esta teora.
Paralelamente intentaremos implementar un pseudocdigo que
sea capaz de llevar a cabo este algoritmo de Sollin.

UNIVERSIDAD DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

Marco terico.
Algoritmo: Conjunto ordenado y finito de operaciones que permite
hallar la solucin de un problema.
Grafo: Un grafo es un conjunto de objetos llamados vrtices o
nodos unidos por enlaces llamados aristas, que permiten
representar relaciones binarias entre elementos de un conjunto.
Son objeto de estudio de la teora de grafos.
Vrtice: un vrtice o nodo es la unidad fundamental de la que
estn formados los grafos.
Arista: Una arista o arco es una relacin matemtica que conecta
dos vrtices. Una arista dirigida es una arista de un digrafo y
tiene una direccin asociada consigo, esto es, posee un vrtice
inicial y un vrtice final. Una arista no dirigida es una donde no
se distingue un vrtice inicial ni uno final.
rbol: Un rbol es un grafo conexo simple acclico

UNIVERSIDAD DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

Algoritmo de Sollin.
El 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 continua 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, el pseudocdigo del Algoritmo de
Sollin es:
Comenzamos con un grafo conexo G, debe ser conexo, sino no
se podra utilizar, en el que todos sus arcos tengan distinto
peso, y un conjunto vaco de arcos T.
Mientras los vrtices de G conectados por T sean disjuntos:
Crear un conjunto vaco de arcos S
Para cada componente:
Crear un conjunto vaco de arcos S
Para cada vrtice v en el componente:
Agregar el arco de menor peso desde el vrtice v a
otro vrtice en un componente disjunto a S
Aadir el arco de menor peso en S a E
Aadir el conjunto resultante E a T.
El conjunto de aristas resultante T es el rbol de expansin mnimo de
G.

class GraphMST
{ private UF uf;
private Edge[] a, b, mst;
GraphMST(Graph G)
{ Edge z = new Edge(0, 0, maxWT);
uf = new UF(G.V());
a = GraphUtilities.edges(G);
b = new Edge[G.V()]; mst = new Edge[G.V()+1];
int N, k = 1;

UNIVERSIDAD DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

for (int E = G.E(); E != 0; E = N)


{ int h, i, j;
for (int t = 0; t < G.V(); t++) b[t] = z;
for (h = 0, N = 0; h < E; h++)
{ Edge e = a[h];
i = uf.find(e.v()); j = uf.find(e.w());
if (i == j) continue;
if (e.wt() < b[i].wt()) b[i] = e;
if (e.wt() < b[j].wt()) b[j] = e;
a[N++] = e;
}
for (h = 0; h < G.V(); h++)
if (b[h] != z)
if (!uf.find(i = b[h].v(), j = b[h].w()))
{ uf.unite(i, j); mst[k++] = b[h]; }
}
}
}
Este algoritmo puede volverse mucho mas rpido y eficiente si se
combina con el algoritmo de Prim, de momento esto no nos
interesa, y solo nos enfocamos al algoritmo de Sollin.

UNIVERSIDAD DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

Tenemos la siguiente tabla de adyacencia:


1
2
3
4
5
6
7
8

1
0
13
21
9
7
18
20
15

2
13
0
9
18
12
26
23
11

3
21
9
0
26
17
25
19
10

4
9
18
26
0
7
16
15
9

5
7
12
17
7
0
9
11
8

6
18
26
25
16
9
0
6
10

7
20
23
19
15
11
6
0
5

8
15
11
10
9
8
10
5
0

La que nos indica la distancias (en km) entre cada par de zonas,
nos interesa poder reducir los costos de mantencin de estas
rutas, por lo que bajo el supuesto que para todas las rutas es el
mismo costo de mantencin por km, es por esto que el algoritmo
de Sollin no nos puede ser de ayuda ya que los pesos deben ser
distintos para poder ocupar este algoritmo.

UNIVERSIDAD DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

Conclusin
Este algoritmo puede ser de gran ayuda, pero posee ciertas
condiciones que nos pueden perjudicar como en este caso, como
es que todas sus aristas tengan distinto peso, como nos pudimos
dar cuenta, en la tabla hay al menos dos aristas que tienen el
mismo peso, en este instante el algoritmo no puede ser utilizado.
Es importante conocer las condiciones de estos algoritmos dado
que si no poseemos un dominio de esto, nos pueden llevar a
errores el da de maana al aplicarlo en un caso real de nuestra
vida profesional.
Finalmente, vemos que la teora de grafos tiene un sin fin de
aplicaciones en distintas ramas ya sea de la ciencia, informtica,
social o biolgicas.

UNIVERSIDAD DE LA FRONTERA
Facultad De Ingeniera, Ciencias
Departamento de Ing. Matemtica

Bibliografa

Ralph P. Grimaldi (1997), Matemtica Discreta y Combinatoria.


Cdigo extrado de http://underpop.online.fr
Definiciones extradas de:
www.wikipedia.org
www.wordreference.com

Potrebbero piacerti anche