The current Graph representation is based on a mutable hash set.
Unfortunately, immutable Graphs have no separate persistent representation.
In terms of the Big-O notation, operation costs on graphs can be summarized as follows:
| Operation | Cost | |
| mutable | immutable | |
| Instance Creation | O(V + E) |
|
| element addition | O(1) |
O(V + E) |
| element removal | O(1) |
O(V + E) |
| element look-up | O(1) |
|
| traversal | O(V + E) |
|
| path search | O(V + E) |
|
| shortest path search | O(VlogV + E) |
|
Algorithms are tail recursive so they are guaranteed not to cause any stack overflow.