A filled DS can be emptied through a two-step process of deselection (Figure ). First, a perfect matching over the DS is found. Next, the elided bond corresponding to each matched edge is replaced by a double bond. Because the presence of a filled DS implies a perfect matching over it, kekulization always succeeds. A widely-used algorithm for matching, the Edmunds "blossom algorithm," has a time complexity of O(|E||V | 2 ), where |E| is the number of edges and |V | is the number of nodes . Although more efficient algorithms are known, they are either much more difficult to implement or lack generality.