У меня есть набор строк, и мне нужно построить график, где строки являются узлами, и есть край между любыми парами соседних строк.Построение графа «смежных» строк
Для строк A
и B
называются смежно если путем добавления, удаления или замены одного символа из A
(в любой позиции), вы получите B
.
Например scar
и car
смежны (удаление s
от scar
), поэтому являются car
и far
(замена c
с f
) и поэтому far
и farm
(добавление m
).
Можно ли это сделать менее чем O(n^2)
?
Как Изменить расстояние является расстоянием, то имеет место треугольное неравенство. Я думаю, что в общем случае вы можете разбить пространство, рекурсивно удерживая подмножества с расстоянием <= 2 до последней точки, рассматриваемой в качестве кандидатов, и отбросить для вычисления других элементов AM. В худшем случае все элементы останутся в одном и том же подмножестве навсегда. –
Вот в чем смысл моего полного графического примера. Это худший случай. – jason
Граф не должен храниться как матрица смежности. – Nabb