Я хочу построить график из списка слов с расстоянием Хэмминга (скажем) 1, или, говоря иначе, два слова связаны, если они только отличаются от одной буквы (lo l → lo t).
так что данный
words = [ lol, lot, bot ]
граф будет
{
'lol' : [ 'lot' ],
'lot' : [ 'lol', 'bot' ],
'bot' : [ 'lot' ]
}
Простым способом является сравнение каждого слова в списке со всеми остальными и подсчет разных символов; к сожалению, это алгоритм O(N^2)
.
Какую стратегию algo/ds/можно использовать для достижения лучшей производительности?
Кроме того, допустим только латинские символы, и все слова имеют одинаковую длину.