*Proc. RECOMB*, 2011, 222-237.

Nuclear magnetic resonance (NMR) spectroscopy is a primary tool to perform structural studies of proteins in the physiologically-relevant solution-state. Restraints on distances between pairs of nuclei in the protein, derived from the nuclear Overhauser effect (NOE) for example, provide information about the structure of the protein in its folded state. NMR studies of symmetric protein homo-oligomers present a unique challenge. Current techniques can determine whether an NOE restrains a pair of protons across different subunits or within a single subunit, but are unable to determine in which subunits the restrained protons lie. Consequently, it is difficult to assign NOEs to particular pairs of subunits with certainty, thus hindering the structural analysis of the oligomeric state. Hence, computational approaches are needed to address this subunit ambiguity. We reduce the structure determination of protein homo-oligomers with cyclic symmetry to computing geometric arrangements of unions of annuli in a plane. Our algorithm, {myname}, runs in expected O(n^2) time, where *n* is the number of distance restraints, and is guaranteed to report the exact set of oligomer structures consistent with ambiguously-assigned inter-subunit distance restraints and orientational restraints from residual dipolar couplings (RDCs). Since the symmetry axis of an oligomeric complex must be parallel to an eigenvector of the alignment tensor of RDCs, we can represent each distance restraint as a union of annuli in a plane encoding the configuration space of the symmetry axis. Oligomeric protein structures with the best restraint satisfaction correspond to faces of the arrangement contained in the greatest number of unions of annuli. We demonstrate our method using two symmetric protein complexes: the trimeric *E. coli* Diacylglycerol Kinase (DAGK), whose distance restraints possess at least two possible subunit assignments each; and a dimeric mutant of the immunoglobulin-binding domain B1 of streptococcal protein G (GB1) using ambiguous NOEs. In both cases, {myname} computes oligomer structures with high accuracy.