warshall matlab

1
clear all close all clc % Algoritmo de Warshall fprintf('Algoritmo de Warshall\n\n') %Matriz de Adjacência 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) também, pois a matriz é quadrada fprintf('M0 - Caminhos sem nós intermediários'); fprintf('\nM0 é a própria matriz de adjacência.'); 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 nós intermediários',k); fprintf('\n ou apenas com o nó %d',k); else fprintf('M%d - Caminhos sem nós intermediários',k); fprintf('\n ou apenas com o nós: ') 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 ** Não houve modificações em relação à matriz anterior. **'); fprintf('\n * *\n'); end Mold=M; end fprintf('\n\n FIM DO ALGORITMO\n')

Upload: rodrigo-espinoza

Post on 20-Apr-2015

39 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Warshall Matlab

clear all close all clc % Algoritmo de Warshall fprintf('Algoritmo de Warshall\n\n') %Matriz de Adjacência 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) também, pois a matriz é quadrada fprintf('M0 - Caminhos sem nós intermediários'); fprintf('\nM0 é a própria matriz de adjacência.'); 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 nós intermediários',k); fprintf('\n ou apenas com o nó %d',k); else fprintf('M%d - Caminhos sem nós intermediários',k); fprintf('\n ou apenas com o nós: ') 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 ** Não houve modificações em relação à matriz anterior. **'); fprintf('\n * *\n'); end Mold=M; end fprintf('\n\n FIM DO ALGORITMO\n')