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:
vertices
1
2
3
4
Edges:
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?
Thanks,
Martin
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:
http://igraph.sourceforge.net/igraphbook/igraphbook-iterators.html
Gabor
Thanks
Martin
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>
wrote:
Thank you guys, that solved my problem.
I suspected that $weight should work, but simple listing of an edge
did
not
reveal the attribute. Need to find out how to get the full
information
about
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)
Best,
Gabor
Cheers
Martin
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