The Problem

A primary aspect of our world is location. Humanity has created maps, putting complex networks onto a two- dimensional sheet of paper, in an attempt to make traveling between these locations easier. The map was amazing. A human being was able to look at the map and quickly discover a route to their destination. However, was it always the fastest?

Surely, in a small system, a human can deduce the fastest route, as it is normally a straight line with very few turns. However, a human being may fail to discover the fastest route when the system grows more complex. This presents a clear opportunity for a computer – something consistent, precise, and always correct.

The Solution

We've created an original map file system that is simple and to-the-point. It allows for a unlimited size, as well as unlimited distance between points. In short, one vertex can touch a second, through an edge. This edge has a certain weight. If we were talking about locations on a map, the points (vertexes) would be a location, and the weighted values will be the distance between points.

On top of this infinitely expandable map file system, we've created an incredibly flexible and fast engine.

The Engine

In creating our engine, we considered elegance and speed to be critical factors. Our program is written in LISP, as LISP makes it easier to concentrate on the algorithm instead of on the small semantics that are embedded in other languages. LISP itself was developed purely for processing lists, as the name suggests. The program will need to take in any set of connected nodes as data, and quickly and reliably find the best path between the two.

The engine has three primary functions:

  1. Shortest distance: The engine can compute the shortest distance between point A and point B.

  2. Scheduling: You can find the fastest route passing through any number of specified points.

  3. Salesman: Find the fastest route to every single point and then back to the starting point.