Эта проблема может быть преобразована в задачу назначения , также известную как проблема максимального взвешенного двудольного соответствия.
Во-первых, обратите внимание, что расстояние редактирования равно количеству элементов, которые необходимо изменить из одного набора в другой. Это равно общему количеству элементов минус количество элементов, которые не нужно менять. Поэтому нахождение минимального количества элементов, которые не меняются, эквивалентно нахождению максимального количества вершин, которые не меняются.
Пусть и В = { B 1 , B 2 , . , , , Б л } разбиения числа [ 1 , 2 , . , , , п ] . Также, без ограничения общности, пусть k ≥ l (допускается, потому что e d i tA={A1,A2,...,Ak}B={B1,B2,...,Bl}[1,2,...,n]k≥l ). Тогда пусть B l + 1 , B l + 2 , ..., B k все будут пустым множеством. Тогда максимальное количество вершин, которые не меняются:edit(A,B)=edit(B,A)Bl+1Bl+2Bk
maxf∑ki=1|Ai∩Bf(i)|
где является перестановкой [ 1 , 2 , . , , , к ] .f[1,2,...,k]
Это именно та задача присваивания, где вершинами являются , ..., A k , B 1 , ..., B k, а ребра - пары ( A i , B j ) с весом | A i ∩ B j | , Это можно решить за O ( | V | 2 log | V | + | V | | E | ) время.A1AkB1Bk(Ai,Bj)|Ai∩Bj|O(|V|2log|V|+|V||E|)