The problem of race-free state assignment of an asynchronous automaton is considered. A method to solve that problem is suggested that provides removal of critical races between memory elements along with minimizing the number of memory elements and minimization of their switching activity. The problem is reduced to finding a minimal weighted cover. Рассматривается задача противогоночного кодирования состояний асинхронного автомата. Предложен метод решения этой задачи, который обеспечивает устранение критических состязаний наряду с минимизацией числа элементов памяти и минимизацией их переключательной активности. Задача сводится к задаче минимального взвешенного покрытия.