Re: Add terms surrounded by zero together in matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg59144] Re: Add terms surrounded by zero together in matrix
- From: "Valeri Astanoff" <astanoff at yahoo.fr>
- Date: Sat, 30 Jul 2005 01:25:18 -0400 (EDT)
- References: <dcccur$3j7$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
I suggest you use Combinatorica
and proceed roughly like this
(I didn't deal with side effects):
In[1]:=<<DiscreteMath`Combinatorica`
In[2]:=m={{0,0,0,1,0},{0,0,1,2,0},{0,0,0,2,1},{1,3,0,0,0},
{0,0,0,0,0},{0,0,0,0,0},{0,0,1,1,0},
{5,0,3,0,0},{0,0,0,0,0},{0,0,0,3,1}};
im=Length[m];
jm=Length[m[[1]]];
select non nul vertices :
vtx=Outer[List,Range[im],Range[jm]]//Flatten[#,1]&//
Select[#,m[[#[[1]],#[[2]]]] != 0&]&;
f = function to tell if 2 vertices are connected
f[{i1_,j1_},{i1_,j2_/;j2 <= jm}]/;j2 == j1+1:=
m[[i1,j1]] != 0 && m[[i1,j1+1]] != 0;
f[{i1_,j1_},{i2_/;i2 <= im,j1_}]/;i2 == i1+1:=
m[[i1,j1]] != 0 && m[[i1+1,j1]] != 0;
[here : more to specify for f ... ]
In[8]:=gr=MakeGraph[vtx,f,Type -> Undirected];
In[9]:=ConnectedComponents[gr]
Out[9]={{1,2,3,4,5},{6,7},{8,9,11},{10},{12,13}}
etc. etc.
hth
Valeri Astanoff