The Algorithms:
The implemented optimization algorithms of the PC version base all on the first algorithm selectable in the optimize menu. It is called the 'Standard' algorithm. This basic algorithm selects two random vertices and calculates the length of all connected edges of those two vertices. Then these two vertices are exchanged and the length newly calculated. If the new length is shorter, the vertices are left exchanged, otherwise they will be swapped back to their former position. This results in a graph with short edges and therefore mostly (in most cases) lesser crossings. The layout of the graph remains the same after applying this algorithem. It only changes the position of the vertices among themselves.
Circle AlgorithmThis algorithm is just a variation of the 'Standard' algorithm. This time, the minimal edge-length is calculated, too, but the vertices change their position and are placed in a circle, first. So, pay attention, this algorithem changes the position of emph{all} vertices and produces only good results if the graph consists of only a few vertices.
First of all, the vertex with most connections is place in the middle of the workspace. The rest of the vertices is placed in two shifted circles around the first. Then the 'Standard' algorithm is applied on them. Of course, the former layout of the graph is destroyed, but this layout is fine for use with homogenous connected vertices where one of the vertices has many more connection than the others.
The 'Cross' algorithm is a much better algorithm than the 'Standard' algorithm. This algorithm takes care of how much crossings there are in the whole graph and changes the configuration of the graph only if the graph has less crossings. Two random vertices are chosen and then the number of crossings calculated. Then the two vertices are exchanged and the number of crossings newly calculated. If there are more crossings after swapping the two vertices, then the vertices are swapped back to their former position. Otherwise, the swapping continous until there are no crossings or until you stop the algorithm doing so.
This algorithm tries to set every edge to a specific length. The length of a randomly chosen edge is calculated and then either both edges get closer to each other or move in the other direction. The algorithm also takes care of the number of connections of both vertices and moves the one with less connections more than the other vertex. The longer this algorithm is applied on the graph, the more quiet it gets because every edge has more and more the perfect length. The result is in every case the best distribution of the vertices.
The dynamic spring algorithm is a better spring algorithm. Not only the momentary movement of the vertices is calculated, but also the last movement of the vertex gets into this calculation and therefore the whole movement of a vertex is dynamically connected to the other vertices. It also takes care of how big the difference between the actual edge-length and the best edge-length is and calculates the velocity of the movement dependent on this fact. This results in a dynamic movement of the whole graph as if the edges where springs.