def to_dot(self, path: str, title: Optional[str] = None):
        """
        Print the automaton to a dot file

        :param path: the path where to save the file.
        :param title:
        :return:
        """
        g = graphviz.Digraph(format='svg')
        g.node('fake', style='invisible')
        for state in self._states:
            if state == self._initial_state:
                if state in self._accepting_states:
                    g.node(str(state), root='true',
                           shape='doublecircle')
                else:
                    g.node(str(state), root='true')
            elif state in self._accepting_states:
                g.node(str(state), shape='doublecircle')
            else:
                g.node(str(state))

        g.edge('fake', str(self._initial_state), style='bold')
        for start in self._transition_function:
            for symbol, end in self._transition_function[start].items():
                g.edge(str(start),
                       str(end),
                       label=str(symbol))

        if title:
            g.attr(label=title)
            g.attr(fontsize='20')

        g.render(filename=path)
        return
Print the automaton to a dot file

        :param path: the path where to save the file.
        :param title:
        :return: