Está en la página 1de 2

Arbol de minima expansion:

El presente texto presenta un codigo que permite construer un arbol de minima expansion a distintos
nodos a modo de resolver problemas de optimizacion que involucre el arbol de minima expansion. En el
algoritmo el usuario debe ingresar los valores de los distintos nodos de forma manual, estos se
agruparan de forma matricial. El codigo se aprecia a continuacion:

clear all;
clc;
n=0;
j=1;
T=0;
d=0;
N = input('Cantidad de nodos del problema');%Introducir el numero de nodos del
problema
for i1 = 1: N
for i2 = 1:N
disp(['A(' int2str(i1) ',' int2str(i2) ')= ']);
A(i1,i2) = input('');
end
end % Se rellena la matriz nodal con la distancia desde un nodo de origen
(fila) hacia un nodo de origen (destino),por ejemplo N(1.2)=3 seria la
distancia del nodo 1 al nodo 2 que equivale a 3.
z = zeros(N,N);%Matriz llena de ceros en donde despues se rellenaran con las
distancias minimas desde un nodo a otro nodo no unido.
disp('La matriz A = ');% muestra la matriz original que alberga los nodos de
origen y llegada (fila-columna) con sus distancias.
disp(A);
while(T<=0)
q=input('Selecciona la distancia del nodo no conectado mas cercano'); % El
nodo de partida es escogido manualmente por el usuario y el debe seleccionar
el nodo mas cercano al elegido.
i=input('Selecciona el nodo o fila de origen');
j=input('Selecciona el nodo o columa de destino');
d=q+d;
z(i,j)=q;
n=n+1;
if(n==N-1)%Se hace esta igualdad ya que en un problema de arbol de minima
expansion las conexiones totales que se hacen para llegar a
%la minima expansion siempre seran equivalentes al numero total
de nodos menos 1.
T=1;
else
T=0;
end

end
disp('La matriz A = ');% muestra la matriz original que alberga los nodos de
origen y llegada (fila-columna) con sus distancias.
disp('La matriz resultante Z = ');% muestra la matriz que posee las
distancias minimas desde los nodos de origen (filas) a los nodos de llegada
% (columnas),cualquier valor diferente a estas filas-
columnas (de los nodos donde la distancia es minima) son cero.
disp('La distancia de minima expansion d'); %Muestra la distancia total que
se obtiene al seguir el camino de la matriz resultante(el camino de la minima
expansion)
disp(A);
disp(z);
disp(d);

También podría gustarte