简体   繁体   中英

Representation of graphs in a hash table

I'm currently writing my master thesis about clusterings in graphs. My prof said he wants the graph to be represented as a hash table. Because it needs less space than the adjency matrix and it is faster in checking if a edge exists between two vertices than adjency lists. Anyway, I have a lot of problems understanding how a graph can be built with (perfect) hash functions. I know there should be two tables inside each other. The first includes every node and the second contains all the adjacent vertices. But how do I find a hash function that makes this correctly? After I built the graph I have to assign a weight to each edge. Is it better to build a new graph or keep the old one? How can I assign the weights correctly to each edge and how do I save it? And the last question: How fast can I do a degree query for one vertex? O(1)?

Sorry for all these questions but I read so many papers and I'm still confused. Thank you in advance for any help!!!

Lisa

You have to ask your professor, but I would assume it is something simple.

Eg let us say you have a triangle A,B,C then in the hash you just represent it as

A {B,C}
B {A,C}
C {A,B}

So the entry to the link A,B could be both from A and B.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM