Re: tab-delimited file to graph

• To: mathgroup at smc.vnet.net
• Subject: [mg69469] Re: tab-delimited file to graph
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Wed, 13 Sep 2006 04:02:54 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <ee64q5\$7s4\$1@smc.vnet.net>

```aitor69gonzalez at gmail.com wrote:
> Hello,
>
> I have a directed graph "mygraph" in a tab delimited file that looks
> like this:
> v1    v2
> v2    v3
> v3    v1
> v1    v4
> I would like to import this graph into mathematica, so that I can take
> advantage of the -DiscreteMath`Combinatorica`- functions. So far, I was
> only able to import it with Import["mygraph","TSV"] into a list of
> two-item lists. Now, I am stuck there. Can somebody help me to convert
> this list of two-item lists into a matrix or adjacency list of a
> directed graph?
>
>
> Aitor
>
Hi Aitor,

Building an adjacency matrix from a list of pairs can be achieve with
the function SparseArray. In the following, I will assume that the
element of your list are literally named v1, v2, ..., vn. First we
transform the pairs {vi,vj} into the pairs of numerical indices {i, j}.
Then we build the replacement rules expected by SparseArray thanks to
the function Thread. Finally, we build the matrix as a sparse array that
contains 1 wherever two vertices are adjacent and 0 everywhere else.
Note that a sparse array is a compact structure, highly efficient in
terms of memory usage. You may want to see the sparse array as a regular
dense matrix, however. You can do that by using the Normal function.

lst = {{v1, v2}, {v2, v3}, {v3, v1}, {v1, v4}};
{v1, v2, v3, v4} = Range[4]

--> {1, 2, 3, 4}

lst
--> {{1, 2}, {2, 3}, {3, 1}, {1, 4}}

rls = Thread[lst -> Table[1, {Length[lst]}]]

--> {{1, 2} -> 1, {2, 3} -> 1, {3, 1} -> 1, {1, 4} -> 1}

SparseArray[rls];
MatrixForm[Normal[SparseArray[rls]]]

-->
0   1   0   1

0   0   1   0

1   0   0   0

Best regards,
Jean-Marc

```

• Prev by Date: Re: Re: solve and Abs
• Next by Date: Re: General--Different Results
• Previous by thread: Re: tab-delimited file to graph
• Next by thread: Evaluating a Meijer G-function