A schematic diagram showing how our algorithm works. In each (a, b, c, d, e and f), the first row represents genes and operons in one genome, and the second row represents genes and operons in another genome. (a) The initial homologous relationship (dashed lines) between the two genomes; each operon is considered as a vertex; (b) the weight of O4-O5′ is 3 (because the maximum mapping between them is 3), and it is the maximal among all the weights, so they are merged to one operon group, where the solid lines represent orthologous relationship, and this operon group becomes a new vertex; (c) the weights of O1-O1′, O2-O2′ and O4′-O4O5′ are 2; they are merged to operon groups and become the new vertices; (d) the weight of O3-O4′O4O5′ are 2; they are merged into one operon group; it should be noted that when the maximum mapping is re-calculated, one pair of orthologues between O4 and O5′ has been re-predicted; the new prediction is more accurate when all the four operons are considered, which represents a correcting mechanism in this algorithm; (e) O1O1′ and O2O2′ are merged into one operon group; (f) O3′ and O1O1′O2O2′are merged into one operon group; it should be noted that when the maximum mapping is re-calculated, some of the predicted orthologous relationships could be different from that by the previous iteration. At the end two uber-operons in each genome are generated.