(self, states)
return set(), None, states
Find the "most mergeable" set of states from those provided.

        :param states: a list of states
        :returns: a tuple of: (a list of states to merge, those states' common history, a list of states to not merge yet)
Find the "most mergeable" set of states from those provided.
Find the most mergeable set of states from those provided .
def most_mergeable(self, states):
        """
        Find the "most mergeable" set of states from those provided.

        :param states: a list of states
        :returns: a tuple of: (a list of states to merge, those states' common history, a list of states to not merge yet)
        """

        histories = set(self.get_ref(s.history) for s in states)

        for n in networkx.algorithms.dfs_postorder_nodes(self._graph):
            intersection = histories.intersection(self.all_successors(n))
            if len(intersection) > 1:
                return (
                    [ s for s in states if self.get_ref(s.history) in intersection ],
                    n(),
                    [ s for s in states if self.get_ref(s.history) not in intersection ]
                )

        # didn't find any?
        return set(), None, states
def most_mergeable ( self , states ) : histories = set ( self . get_ref ( s . history ) for s in states ) for n in networkx . algorithms . dfs_postorder_nodes ( self . _graph ) : intersection = histories . intersection ( self . all_successors ( n ) ) if len ( intersection ) > 1 : return ( [ s for s in states if self . get_ref ( s . history ) in intersection ] , n ( ) , [ s for s in states if self . get_ref ( s . history ) not in intersection ] ) # didn't find any? return set ( ) , None , states