Haskell, Genetic Algorithm, Graph Theory, Programming.
case that moving in any direction at all gets you from the start to the finish. A key insight here is that adding an edge in a graph always does one of two things: it either connects two previously unconnected components of the graph, or it creates a cycle (a path from a vertex back to itself