[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] Re: working with weighted networks (from pajek .net)

From: Martin Tomko
Subject: Re: [igraph] Re: working with weighted networks (from pajek .net)
Date: Thu, 02 Sep 2010 11:40:18 +0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20100227 Lightning/1.0b1 Thunderbird/3.0.3

Hi Gabor,
I am afraid that this solutions is not right:

sapply(get.shortest.paths(g, 5), length)-1

so let's assume we have the follwong network:
1 - 2 0.5
2 - 3 0.2
3 - 4 0.1

And a resulting shortest path between 1 and 4 as c(1,2,3,4), your solution  
would yield 3 as the length - which is fine for an unweighted graph.
But I need to get the value 0.5+0.2+0.1 = 0.8.

Is this possible?


this is only true in an unweighted network. In a weighted network, where let's assume we have

On 9/2/2010 11:32 AM, Gábor Csárdi wrote:
On Thu, Sep 2, 2010 at 11:25 AM, Martin Tomko<address@hidden>  wrote:
Thank you Gabor,
that helps heaps.
One last question - I guess the answer must be trivial. Once I get a path
(get.shortest.paths(...)) between two vertices in a weighted graph, I would
like to know the length of this path (similar to a vlaue I would get if I
counted them all using shortes.paths(..., algorithm="dijkstra")). I only get
a list of visited vertices, as documented.

Is there a way to get this value?
It is the length of the path vector minus one:

sapply(get.shortest.paths(g, 5), length)-1

And is there a way to dientify edges based on input vertices? I read through
the documentation and can not find the answer.
What is an input vertex? Adjacent vertex?

E(g)[ adj(v) ]

gives the edges adjacent to vertex v. 'from' and 'to' are similar to
'adj', but consider edge direction as well. There are more examples in
the manual page of 'E' and also here:



On 9/2/2010 11:11 AM, Gábor Csárdi wrote:
On Thu, Sep 2, 2010 at 11:07 AM, Martin Tomko<address@hidden>

Thank you guys, that solved my problem.
I suspected that $weight should work, but simple listing of an edge did
reveal the attribute. Need to find out how to get the full information
the object...

You mean printing everything on the screen? Attributes are not printed
by default, but you can print them by giving extra arguments to the
print.igraph() function. You can also make printing them the default:

igraph.par("print.edge.attributes", TRUE)
igraph.par("print.graph.attributes", TRUE)
igraph.par("print.vertex.attributes", TRUE)



On 9/2/2010 10:52 AM, Tamas Nepusz wrote:

Sorry, got it working with weights, the appraoch mentionned worked, but
what confused me is that there is no access to a g$weights vector. I am
still not sure how to get the information for any individual edge.

E(g)[edgeindex]$weight seems to work for me in igraph 0.5.3. The only
thing to watch out for is that edges are indexed from zero, not 1, so
E(g)[1]$weight gives the weight of the second edge.

Martin Tomko
Postdoctoral Research Assistant

Geographic Information Systems Division
Department of Geography
University of Zurich - Irchel
Winterthurerstr. 190
CH-8057 Zurich, Switzerland

email:  address@hidden
site:   http://www.geo.uzh.ch/~mtomko
mob:    +41-788 629 558
tel:    +41-44-6355256
fax:    +41-44-6356848

reply via email to

[Prev in Thread] Current Thread [Next in Thread]