GAM deduces block orders from assembly read orders and, by using them, builds a graph of assemblies whose nodes represent blocks and whose edges represents block order. Since cycles in the graph of assemblies denote conflicting block order in assemblies, GAM avoid to merge sequences containing blocks belonging to them.
For above reason, GAM distinguishes between a master assembly, which cannot be contradicted, and a slave assembly, which is used to extend and orient master sequences. One cycles are removed from graph, GAM uses block information to align and weave both contig and supercontig of the two input assemblies.
A more detailed (but still partial) description of the implemented algorithms can be found in the publications concerning GAM.