You may find a very long route to Richmond. Breadth first search Go in steps. Symbolic logic, propositional logic Programmable logic structures, proofs, simple reasoning. Prove that Julia did not miss the train. Prolog - a Programming Logic language.
Genetic algorithms Generate a population of random possible solutions.
Pick the best of solution set of this generation, and use this new population to produce the next generation. Repeat this process, generation after generation, until solutions are reached that are good enough.