Hay tres algoritmos principales a tener en cuenta al hacer esto, todo depende de la cantidad de vértices del gráfico bipartito. A medida que se hace demasiado grande, algunos algoritmos tardarán demasiado en ser factibles.
En primer lugar, como los otros carteles han mencionado es la reducción a Max Flow. Después de determinar las dos mitades, agrega una súper fuente a uno de los conjuntos y un súper sumidero a la otra, asegurando que todos los bordes tengan capacidad uno. Recapitulando la definición de Max-Flow, queremos impulsar la mayor cantidad de flujo posible, por lo tanto, maximizaremos la coincidencia máxima. Este algoritmo depende de qué tan rápido sea el algoritmo Max-Flow y tiende a ser más lento. Además, para recuperar el conjunto de coincidencias, se debe realizar un recorrido de búsqueda de Breadth-First del gráfico resultante.
A continuación, tenemos el algoritmo de ruta de aumento. La idea es encontrar una ruta de aumento (es decir, borde no coincidente-borde coincidente-borde no coincidente-borde coincidente …-borde no coincidente) y voltear la paridad observando que aumenta el número de bordes coincidentes. Esto proporciona un algoritmo [matemático] O (VE) [/ matemático].
- ¿Cuánto cálculo se requiere para comprender algoritmos y redes de computadoras?
- ¿Cuáles son algunas aplicaciones prácticas de los árboles AVL y los árboles de separación?
- ¿Cuál es la sobrecarga máxima en el algoritmo de relleno de bytes?
- ¿Le da un algoritmo no recursivo que realiza un trabajo de árbol de orden?
- ¿Podemos implementar un algoritmo genético sin usar mutación?
Finalmente, tenemos Hopcroft-Karp. Esta es básicamente una versión más eficiente del algoritmo de ruta de aumento. En lugar de encontrar una ruta de aumento, encuentra la ruta de aumento más eficiente en cualquier momento. Esta propiedad hace que el algoritmo se acelere al tiempo [matemático] O (\ sqrt (V) E) [/ matemático].
Tenga en cuenta que todos estos algoritmos están destinados a encontrar coincidencias máximas. Lo cual puede determinar si es perfecto comprobando el número de vértices. También hay otro enfoque que usa el Teorema de Hall:
Un gráfico bipartito tiene una coincidencia perfecta iff para cada subconjunto [math] S [/ math] en cualquier partición, el tamaño del conjunto de vecinos de [math] S [/ math] es al menos tan grande como [math] S [ /mates].
Sin embargo, esto ingenuamente se ejecuta en tiempo exponencial.