graphopt is a graph layout optimizer based on the iterative application of laws of physics instead of using finite-pass algorithms. It is meant to become a replacement for graphviz.Graphopt takes a graph description file as input and calculates the optimal layout of the nodes and edges. Graphs can be imported using a subset of the dot format from the Graphviz tools. There is also a module to export graphs in a Visio-importable format. The graph is displayed in a GUI where certain parameters can be tweaked and the result can be seen immediately. Each node is given mass and an electric charge, and each edge is represented as a spring. Node mass, electric charge, optimal spring length, and the spring constant are tweakable in the gui in realtime.
To accomodate very large graphs, an additional mechanism called layering was added. When a graph is loaded, nodes are assigned to layers based on their relative positions. During optimization, you can choose to hide any number of layers. Any nodes assigned to a layer lower than the selected layer are not only hidden, but neither their electric charges nor the forces of the springs attached to them are figured into the forces acting on the visible nodes. In effect, those nodes cease to exist, and a smaller graph is allowed to lay itself out without being constrained by an excessive number of nodes.