  A synchronizing word of a deterministic finite complete automaton is a word
whose action maps every state to a single one. Finding a shortest or a short
synchronizing word is a central computational problem in the theory of
synchronizing automata and is applied in other areas such as model-based
testing and the theory of codes. Because the problem of finding a shortest
synchronizing word is computationally hard, among \emph{exact} algorithms only
exponential ones are known. We redesign the previously fastest known exact
algorithm based on the bidirectional breadth-first search and improve it with
respect to time and space in a practical sense. We develop new algorithmic
enhancements and adapt the algorithm to multithreaded and GPU computing. Our
experiments show that the new algorithm is multiple times faster than the
previously fastest one and its advantage quickly grows with the hardness of the
problem instance. Given a modest time limit, we compute the lengths of the
shortest synchronizing words for random binary automata up to 570 states,
significantly beating the previous record. We refine the experimental
estimation of the average reset threshold of these automata. Finally, we
develop a general computational package devoted to the problem, where an
efficient and practical implementation of our algorithm is included, together
with several well-known heuristics.
