it » scienza » matematica
grafo
di kreshen
il Wed, 11 Jul 2007 19:41:33 GMT
newsgroups it.scienza.matematica
message-id <9815077.1184183032445.JavaMail.newsgroup@sc-ng-1>
Salve a tutti!
Non riesco a capire una cosa...
Allora,supponiamo di avere un grafo con 4 nodi {1,2,3,4} con i
lati che collegano
1-3 e 2-4 (ho quindi 2 componenti connesse).
Posso indicare questa situazione con una matrice dove leggo lungo
le colonne
i collegamenti G=[1 2;3 4].Ho trovato un algoritmo che per
trovare le componeti
connesse fa questo:
EG=expm(G); %qui fa l'esponenziale della matrice G
N=length(G);
not_in_a_component=ones(1,N);
k=1;
while (k<=N)
ind=find(not_in_a_component); %restituisce gli indici delle
%componenti di not_in_a_component diverse da 0
if isempty(ind), break; end %se tutte le componenti di
not_in_a_component sono 0 si esce dal while
var_comp_matrix(:,k)=(EG(:,ind(1))>0);
components{k}=find(var_comp_matrix(:,k)); %con le {} creo un
vettore di celle,in questo caso vedo a mettere
%nella cella un vettore con
%le componenti connesse
not_in_a_component(components{k})=0;
k=k+1;
Non riesco a capire perchè usando l'esponenziale della matrice
funziona!
Quale proprietà usa?
La matrice var_comp_matrix mi da qualche info particolare?o no?
Questo è un procedimento più generale di andare semplicemente a
guardare
come è fatta la matrice G?
Grazie in anticipo
Saluti
--
Postato da Alice Newsgroup: lo usi da web ma con le funzioni del newsreader http://newsgroup.alice.it
Gerarchie it, italia, it-alt, tin, it.binari. Unico!