from string property to vertex index

Hello list,

I am currently working with graph_tool to analyse text documents. let's say
that in my graph each vertex is a word that appears in the text and each
edge corresponds to a relationship between two words. Because of the fact
that vertex is individuated only by its index i suppose to use a vertex
property map (let's call it 'name', of type 'string') to put the word
related to the vertex, assuring a bijective property of the "word <-> vertex
index" function.
Intuitively i'd like to do something like idx = g.vertex("example").
I cannot see how to implement it with the PropertyMaps because i can only
have the function "vertex index -> word".

I cannot keep the "word -> vertex index" elsewhere because remove_vertex()
is changing my indexes under my feet.

Does anybody of you have a suggestion?

Thank you very much,

Elia Bruni

attachment.html (970 Bytes)

Hello Elia,

Elia Bruni wrote:

Hello list,

I am currently working with graph_tool to analyse text documents. let's
say that in my graph each vertex is a word that appears in the text and
each edge corresponds to a relationship between two words. Because of
the fact that vertex is individuated only by its index i suppose to use
a vertex property map (let's call it 'name', of type 'string') to put
the word related to the vertex, assuring a bijective property of the
"word <-> vertex index" function.
Intuitively i'd like to do something like idx = g.vertex("example").
I cannot see how to implement it with the PropertyMaps because i can
only have the function "vertex index -> word".

I cannot keep the "word -> vertex index" elsewhere because
remove_vertex() is changing my indexes under my feet.

Does anybody of you have a suggestion?

There is no simple solution for this if you intend to modify the graph by
removing vertices... You have basically two options:

1 - Don't remove the vertex, and instead just mask it out of the graph, with
    set_vertex_filter(). This way, all vertex objects remain valid, and
    you can store them as values of a dictionary.

2 - Use the find_vertex() function to find vertices with a given property
    map value. This is easy, but it is also slow, since every lookup
    takes O(V) time.

I hope this helps.

Cheers,
Tiago

Hello Tiago,

thank you very much for the suggestions. i'll try to find the way that best
fit to my case.

Cheers,
Elia

attachment.html (2.47 KB)