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
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 On Fri, Nov 27, 2009 at 9:29 AM, Tiago de Paula Peixoto <tiago@forked.de>wrote:
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
_______________________________________________ graph-tool mailing list graph-tool@forked.de http://lists.forked.de/mailman/listinfo/graph-tool
participants (2)
-
Elia Bruni -
Tiago de Paula Peixoto