Você está na página 1de 1

clear all close all clc % Algoritmo de Warshall fprintf('Algoritmo de Warshall\n\n') %Matriz de Adjacncia A = [ 0 1 1 1 1 ; ... 1 0 0 0 0 ; ... 1 0 0 0 0 ; .... 1 0 0 0 0 ; ...

1 0 0 0 0 ; ... ] dim = size(A); if (dim(1)~=dim(2)) fprintf('A matriz de acessibilidade deve ser quadrada!\n'); break; end n = dim(1); % pode ser dim(2) tambm, pois a matriz quadrada fprintf('M0 - Caminhos sem ns intermedirios'); fprintf('\nM0 a prpria matriz de adjacncia.'); M = A % Na verdade A = M(0), no caso M(n) ser M(n+1) Mold = M; %warshall for k=1:1:n for ki=1:1:n for kj=1:1:n M(ki,kj) = M(ki,kj) || ( M(ki,k) && M(k,kj) ); end end fprintf('----------------------------------------------------------------\n') if k==1 fprintf('M%d - Caminhos sem ns intermedirios',k); fprintf('\n ou apenas com o n %d',k); else fprintf('M%d - Caminhos sem ns intermedirios',k); fprintf('\n ou apenas com o ns: ') for aux=1:1:k fprintf('n%d ',aux) end end M if(k==n) fprintf('\n ----> Esta a matriz de acessibilidade final.\n') end if(M == Mold) fprintf(' * *'); fprintf('\n ** No houve modificaes em relao matriz anterior. **'); fprintf('\n * *\n'); end Mold=M; end fprintf('\n\n FIM DO ALGORITMO\n')

Você também pode gostar