Google
 

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!

Tutti i messaggi della discussione