Editar distancia entre dos particiones

17

Tengo dos particiones de [1n] y estoy buscando la distancia de edición entre ellas.

Con esto, quiero encontrar el número mínimo de transiciones individuales de un nodo en un grupo diferente que son necesarias para pasar de la partición A a la partición B.

Por ejemplo, la distancia desde {0 1} {2 3} {4}adentro {0} {1} {2 3 4}sería dos

Después de buscar me encontré con este documento, pero a) no estoy seguro de si están teniendo en cuenta el orden de los grupos (algo que no me importa) a su distancia b) No estoy seguro de cómo funciona yc) No hay referencias

Cualquier ayuda apreciada

zenna
fuente
55
¿Cuál consideraría que es la distancia entre {0 1 2 3} y {0 1} {2 3}? ¿Sería 2? En segundo lugar, no veo por qué los "gráficos" entran en escena. Parece que tiene dos particiones de [n] y desea calcular una distancia entre ellas.
Suresh Venkat
Sí, serían dos. De hecho, estas son particiones establecidas en los nodos de un gráfico (es decir, una partición de gráfico). Es probable que esto no sea importante para la solución, pero este es el problema que estoy tratando de resolver, de ahí por qué lo mencioné.
zenna
3
Si el gráfico es irrelevante, elimine todas las referencias a "gráficos" y "nodos" de su pregunta; no ayuda, distrae.
Jukka Suomela
¿No se puede definir la distancia de edición en términos de la distancia en la red de partición?
Tegiri Nenashi
@Tegiri: de hecho, es la distancia geodésica en la red de particiones. Desafortunadamente, calcular esa red para cualquier conjunto de cardinalidad mucho mayor que 10 es intratable.
zenna

Respuestas:

21

Este problema se puede transformar en el problema de asignación , también conocido como problema de coincidencia bipartita ponderada máxima.

Tenga en cuenta primero que la distancia de edición es igual al número de elementos que deben cambiar de un conjunto a otro. Esto es igual al número total de elementos menos el número de elementos que no necesitan cambiar. Por lo tanto, encontrar el número mínimo de elementos que no cambian es equivalente a encontrar el número máximo de vértices que no cambian.

Deje que y B = { B 1 , B 2 , . . . , B l } sea particiones de [ 1 , 2 , . . . , n ] . Además, sin pérdida de generalidad, sea k l (permitido porque e d i tA={A1,A2,...,Ak}B={B1,B2,...,Bl}[1,2,...,n]kl ). Entonces dejemos que B l + 1 , B l + 2 , ..., B k sean el conjunto vacío. Entonces el número máximo de vértices que no cambian es:edit(A,B)=edit(B,A)Bl+1Bl+2Bk

maxfi=1k|AiBf(i)|

donde es una permutación de [ 1 , 2 , . . . , k ] .f[1,2,...,k]

Este es exactamente el problema de asignación donde los vértices son , ..., A k , B 1 , ..., B k y los bordes son pares ( A i , B j ) con peso | A iB j | . Esto se puede resolver en el tiempo O ( | V | 2 log | V | + | V | | E | ) .A1AkB1Bk(Ai,Bj)|AiBj|O(|V|2log|V|+|V||E|)

bbejot
fuente
¿Podría nombrar el algoritmo, que le da complejidad a este tiempo, por favor?
D-503
Creo que @bbejot se refiere al algoritmo sucesivo de la ruta más corta (con la subrutina Dijkstra implementada utilizando montones de fibonacci).
Wei
Me tomó mucho tiempo analizar esto porque no soy una persona de matemáticas, pero gracias. Pasé mucho tiempo buscando y esto fue lo único que pude encontrar que mostraba cómo convertir el problema de distancia de partición al problema de asignación, o a cualquier algoritmo que pudiera llamar desde una biblioteca de Python. (La parte difícil para mí ha sido descubrir cómo usar scipy.optimize.linear_sum_assignment y luego configurar las matrices basadas en estas instrucciones).
Sigfried
Necesitaba hacer los pesos negativos. De lo contrario, scipy.optimize.linear_sum_assignment me da 0 para todo.
Sigfried
2

Mira el PDF de este documento

http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.0030160

La definición de distancia de edición allí es exactamente lo que necesita, creo. La partición de 'referencia' sería (una arbitraria) una de sus dos particiones, la otra sería simplemente la otra. También contiene citas relevantes.

Mejor, Rob

Robar
fuente
Gracias Rob Sin embargo, a menos que me falte algo, esta es una distancia de edición definida en términos de movimientos de fusión dividida. Estos están bien estudiados y, como señala el artículo, la variación de la información es una medida teórica de la información de esto. Sin embargo, estoy interesado en las transiciones de movimiento de un solo elemento.
zenna
1

Cranky idea del domingo por la mañana que podría o no ser correcta:

Wlog, deja que sea ​​la partición con más conjuntos, P 2 el otro. Primero, asigne diferentes nombres por pares n 1 ( S ) Σ a sus conjuntos P 1 . Luego, encuentre un mejor nombre n 2 ( S ) para los conjuntos P 2 según las siguientes reglas:P1P2n1(S)ΣP1n2(S)P2

  • para S P 2 con S S máximo entre todos S P 1 ; elija el que cree la menor cantidad de conflictos si son posibles varias opciones.n2(S):=n1(S)SP2SSSP1
  • n2(S)=n2(S)SSS,n1(S)=n2(S)P1
  • SP1S,S
  • P1P2

w1=n1(1)n1(n)w2=n2(1)n2(n)nj(i)=nj(S),iSPj). Then, the desired quantity is dH(w1,w2), i.e. the Hamming distance between the bit strings.

Raphael
fuente