Straight line layout is sometimes not very useful for several reasons: (a) it does not ensure that nodes do not overlap, (b) is does not ensure that edges do not cross nodes, (c) it is for certain applications simply a wrong layout pattern. For instance control flow diagrams in compiler construction look completely different from typical straight line layouts. It is important that nodes do not overlap because their labels must be readable. In branches of the control flow, the user expects labels directly near the node that represents the branch condition. The start node of the control flow should be at the top. To draw such graphs differently may also produce nice pictures (see Fig. 14, right), but they look unfamiliar for users that expect a control flow graphs, because they do not satisfy the drawing conventions.
Figure 14: Control Flow Graphs
Next, we present a layout method that avoids node overlappings and allows edges with bends. Here, not only node positions must be found, but edge routing must be done, too.