In CLRS excise 22.1-8 (I am self learning, not in any universities)
Suppose that instead of a linked list, each array entry Adj[u] is a hash table containing the vertices v for which (u,v) ∈ E. If all edge lookups are equally likely, what is the expected time to determine whether an edge is in the graph? What disadvantages does this scheme have? Suggest an alternate data structure for each edge list that solves these problems. Does your alternative have disadvantages compared to the hash table?
So, if I replace each linked list with hash table, there are following questions:
- what is the expected time to determine whether an edge is in the graph?
- What are the disadvantages?
- Suggest an alternate data structure for each edge list that solves these problems
- Does your alternative have disadvantages compared to the hash table?
I have the following partial answers:
- I think the expected time is O(1), because I just go Hashtable t = Adj[u], then return t.get(v);
- I think the disadvantage is that Hashtable will take more spaces then linked list.
For the other two questions, I can't get a clue.
Anyone can give me a clue?