Nota: algoritmo húngaro para la coincidencia máxima de gráficos bipartitos

Problema de coincidencia máxima de gráfico bipartito

Definición

La figura proporcionado dos simples \ (G = <A, B , E>, M \ subset E, \) si \ (M \) cualquiera de los dos lados adyacentes no se dice que \ (M \) es \ ( G \) de juego . Cuando \ (M \) tiene la mayoría de las aristas, \ (M \) se denomina coincidencia máxima . Cuando \ (| A | = | B | = n \) , la coincidencia con el número de aristas \ (n \) se denomina coincidencia perfecta .

Conceptos relacionados

Ruta escalonada y ruta escalonada aumentada

Conjunto \ (M \) es bipartita \ (G \) de un partido, denominado \ (M \) en el lado de los bordes coincidentes , \ (G \) no pertenece a \ (M \) lateral es no Bordes coincidentes , los vértices asociados con los bordes coincidentes son puntos de saturación . La ruta compuesta de bordes coincidentes y bordes no coincidentes alternativamente en \ (G \) se llama ruta entrelazada , y la ruta entrelazada cuyo punto de partida y foco son todos vértices insaturados se llama ruta entrelazada aumentada .

Lema 1

Sea \ (M \) una coincidencia de gráfico bipartito \ (G \) , \ (P \) es una ruta escalonada aumentada sobre \ (M \) , luego \ (M '= M \ bigoplus E (P ) \) (La diferencia simétrica de la coincidencia original) es una coincidencia, y \ (| M '| = | M | +1 \) , donde \ (E (P) \) es el conjunto de bordes de \ (P \) .

Teorema 1

La coincidencia del gráfico bipartito es la coincidencia máxima si y solo si no hay una ruta intercalada aumentada al respecto.

Algoritmo húngaro

Idea básica

(1). A partir de la coincidencia inicial \ (M \) , busque una ruta entrelazada aumentada al respecto \ (P \)

(2). 令\ (M \ leftarrow M \ bigoplus E (P) \)

(3) Verifique si hay una ruta escalonada aumentada \ (P \) sobre \ (M \) , si no existe, el algoritmo termina. De lo contrario, vaya a (2).

Implementación: Etiquetado

1. Establezca la coincidencia actual en \ (M \) , agregue una etiqueta a cada punto insaturado \ (A_i \) en \ (A \) \ (l (A_i) = 0 \) , \ (A_i \) está etiquetado Pero puntos sin marcar.

2. Para cualquier vértice etiquetado pero no marcado \ (A_i \) , etiquete todos los vértices adyacentes pero no etiquetados \ (B_j \) como \ (l (B_j) = A_i \) .

3. Si \ (B_j \) es un punto no saturado, busque una ruta escalonada aumentada, modifique la coincidencia y reinicie el etiquetado.

4. Si \ (B_j \) es el punto de saturación, establezca \ ((A_k, B_j) \ en M \) y haga \ (l (A_k) = B_j \) , entonces \ (A_k \) se etiqueta sin marcar Vértice, \ (A_i \) se convierte en el vértice cuya etiqueta ha sido verificada.

5. Repita el algoritmo hasta que no haya vértices sin marcar en \ (A \) .

Análisis de complejidad del algoritmo húngaro

Configure un gráfico bipartito \ (G = <A, B, E> \) . En cada etapa del algoritmo húngaro, si encuentra la ruta escalonada aumentada \ (P \) , deje \ (M \ leftarrow M \ bigoplus E (P) \) . Para el estado inicial, \ (M = \ emptyset \) es \ ( G \) . Cuando finaliza el cálculo, no hay una ruta intercalada aumentada.

Además de la etapa final del algoritmo, cada etapa del algoritmo agrega un borde coincidente, el número total de bordes coincidentes es \ (\ min \ {| A |, | B | \} \) , por lo que hay como máximo \ (\ min \ {| A | , | B | \} + 1 \) etapas, en cada etapa de etiquetado, cada borde se comprueba como máximo una vez, la longitud de la ruta intercalada aumentada no excede \ (2 | M | +1 \) , por lo que cada etapa Se hará en \ (O (| E |) \) . Por lo tanto, todo el algoritmo se aborta en el paso \ (O (\ min \ {| A |, | B | \} \ times E) \) .

Supongo que te gusta

Origin www.cnblogs.com/allegro-vivace/p/12693264.html
Recomendado
Clasificación