I have a complex non-binary graph model.Each tree node can have multiple children&parents (a node can also have a connection to it's brother). A node is represented as square on screen with lines to the connected nodes.For that I want to use Draw2D and GEF libraries.    The problem I am facing is the graph layout. I need a nice algorithm that can reposition the square nodes and the connections with minimum intersections and also make it symmetric as possible. 
Algorithm for perfect non-binary graph layout
java;algorithms;graph