igraph-help
[Top][All Lists]

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

 From: Gábor Csárdi Subject: Re: [igraph] Re: working with weighted networks (from pajek .net) Date: Thu, 2 Sep 2010 11:57:54 +0200

```You're right, I forgot that you have weighted graphs. One solution is
to run 'shortest.paths()' as well, and that gives you the lengths.

Or you can use the E() function for each path, with the 'path'
argument, but this does not work properly if you have multiple edges.

Gabor

On Thu, Sep 2, 2010 at 11:40 AM, Martin Tomko <address@hidden> wrote:
> 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?
>>
>>
>> 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
>>>>> 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
>
> site:   http://www.geo.uzh.ch/~mtomko
> mob:    +41-788 629 558
> tel:    +41-44-6355256
> fax:    +41-44-6356848
>
>

--