Mam dwie partycje i szukam odległości edycji między nimi.
W ten sposób chcę znaleźć minimalną liczbę pojedynczych przejść węzła do innej grupy, które są niezbędne do przejścia z partycji A na partycję B.
Na przykład odległość od {0 1} {2 3} {4}
do {0} {1} {2 3 4}
wynosi dwa
Po przeszukaniu natknąłem się na ten artykuł, ale a) nie jestem pewien, czy uwzględniają kolejność grup (coś, co mnie nie obchodzi) w ich odległości, b) nie jestem pewien, jak to działa, c) Brak referencji.
Każda pomoc doceniona
Odpowiedzi:
Problem ten można przekształcić w problem przypisania , znany również jako problem maksymalnego ważenia dwustronnego dopasowania.
Zauważ najpierw, że odległość edycji jest równa liczbie elementów, które należy zmienić z jednego zestawu na inny. Jest to równa całkowitej liczbie elementów minus liczba elementów, których nie trzeba zmieniać. Znalezienie minimalnej liczby elementów, które się nie zmieniają, jest równoważne znalezieniu maksymalnej liczby wierzchołków, które się nie zmieniają.
Niech a B = { B 1 , B 2 , . . . , B l } się partycje [ 1 , 2 , . . . , n ] . Również bez utraty ogólności niech k ≥ l (dozwolone, ponieważ e d i tA={A1,A2,...,Ak} B={B1,B2,...,Bl} [1,2,...,n] k≥l ). Pozwól B l + 1 , B l + 2 , ..., B k wszyscy być zbiorem pustym. Zatem maksymalna liczba wierzchołków, które się nie zmieniają to:edit(A,B)=edit(B,A) Bl+1 Bl+2 Bk
gdzie jest permutacją [ 1 , 2 , . . . , k ] .f [1,2,...,k]
To jest właśnie problem przypisania gdzie wierzchołki są 1 , ..., k , B 1 , ..., B k a krawędzie są pary ( I , B j ) o masie | A i ∩ B j | . Można to rozwiązać za pomocą czasu O ( | V | 2 log | V | + | V | | E | ) .A1 Ak B1 Bk (Ai,Bj) |Ai∩Bj| O(|V|2log|V|+|V||E|)
źródło
Spójrz na plik PDF tego artykułu
http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.0030160
Sądzę, że definicja odległości edycji jest dokładnie tym, czego potrzebujesz. Partycja „referencyjna” byłaby (dowolną) jedną z twoich dwóch partycji, druga byłaby po prostu drugą. Zawiera również odpowiednie cytaty.
Najlepiej, Rob
źródło
Zepsuty pomysł na niedzielny poranek, który może, ale nie musi być poprawny:
Wlog, niech będzie partycją z większą liczbą zestawów, P 2 drugą. Najpierw przypisz parami różne nazwy n 1 ( S ) ∈ Σ do swoich zestawów P 1 . Następnie znajdź najlepszą nazwę n 2 ( S ) dla zestawów P 2 według następujących zasad:P1 P2 n1(S)∈Σ P1 n2(S) P2
Teraz możesz wziąć pod uwagę ciągi bitowe elementów piszących na partycjach, tj. i w 2 = n 2 ( 1 ) ⋅ ⋯ ⋅ n 2 ( n ) ( z n j ( i ) = n j ( S ) , i ∈ S ∈ P jw1=n1(1)⋅⋯⋅n1(n) w2=n2(1)⋅⋯⋅n2(n) nj(i)=nj(S),i∈S∈Pj ). Następnie pożądana ilość todH(w1,w2)
źródło