public void addEdge(String v, String w) throws InvalidEdgeException,
			SelfLoopExistsException, ParallelEdgeExistsException
	{
		// / Insert names into the hash table. Associate current size as the
		// value
		if (!contains(v))
			st.put(v, st.size());
		if (!contains(w))
			st.put(w, st.size());

		// Reverse index
		keys[st.get(v)] = v;
		keys[st.get(w)] = w;

		G.addEdge(st.get(v), st.get(w));
	}