MMatchOriel
Espacio de programación con IA

Emparejamiento bipartito máximo

Obtén un emparejamiento de cardinalidad máxima entre dos grupos de hasta 32 vértices mediante conjuntos de aristas permitidas.

● ● ●MatchOriel●
Flujos de trabajo · Emparejamiento bipartito máximo ×
def maximum_matching(edges, right_count):
    if type(right_count) is not int or not 0 <= right_count <= 32 or type(edges) not in (list, tuple) or len(edges) > 32:
        raise ValueError("matching.size")
    if any(type(row) not in (set, frozenset) or any(type(v) is not int or not 0 <= v < right_count for v in row) for row in edges):
        raise ValueError("matching.edge")
    owners = [-1] * right_count
    def augment(left, seen):
        for right in sorted(edges[left]):
            if right in seen:
                continue
            seen.add(right)
            if owners[right] == -1 or augment(owners[right], seen):
                owners[right] = left
                return True
        return False
    for left in range(len(edges)):
        augment(left, set())
    return sorted((left, right) for right, left in enumerate(owners) if left != -1)
✳Obtén un emparejamiento de cardinalidad máxima entre dos grupos de hasta 32 vértices mediante conjuntos de aristas permitidas.
✓ CambiosRevisa antes de aplicar ↗
Vista ilustrativa
  1. Modelos

    Configura un endpoint compatible con OpenAI o Anthropic usando la URL base y, si hace falta, una clave API. Prueba la conexión. Un servidor local debe estar en ejecución; las herramientas remotas pueden enviar datos por separado.

  2. Proyecto

    Prueba vértices aislados y reasignación por caminos aumentantes, rechazando índices inválidos sin modificar los conjuntos.

  3. Revisa antes de aplicar

    Compara el comportamiento real con el resultado esperado. Si una prueba falla, investiga la causa antes de hacer más cambios.

Flujos de trabajo

Emparejamiento bipartito máximo

Flujos de trabajo ↗
Flujos de trabajo
def maximum_matching(edges, right_count):
    if type(right_count) is not int or not 0 <= right_count <= 32 or type(edges) not in (list, tuple) or len(edges) > 32:
        raise ValueError("matching.size")
    if any(type(row) not in (set, frozenset) or any(type(v) is not int or not 0 <= v < right_count for v in row) for row in edges):
        raise ValueError("matching.edge")
    owners = [-1] * right_count
    def augment(left, seen):
        for right in sorted(edges[left]):
            if right in seen:
                continue
            seen.add(right)
            if owners[right] == -1 or augment(owners[right], seen):
                owners[right] = left
                return True
        return False
    for left in range(len(edges)):
        augment(left, set())
    return sorted((left, right) for right, left in enumerate(owners) if left != -1)
Espacio de programación con IA

Aclara el objetivo de la asignación antes de editar

MatchOriel es un espacio de programación con IA para Windows donde analizar la lógica de asignación en el contexto de la aplicación que la utiliza. Abre el proyecto fuente y explica qué hace que un emparejamiento esté permitido y qué debe optimizar el resultado. Pide al asistente conectado que examine cómo aparecen esos requisitos en la estructura de entrada y en el código antes de proponer cambios.

Una tarea de emparejamiento de cardinalidad máxima proporciona un ejemplo. Aporta los pares permitidos y describe si el objetivo es simplemente asignar tantos miembros como sea posible. Pide al modelo que revise un caso en el que haya que reasignar una elección anterior para lograr ese objetivo. Explicita las preferencias u otras reglas de negocio si tu aplicación las necesita, porque el tamaño de un emparejamiento no las establece.

Examina la propuesta y comprueba que los pares devueltos sean aristas válidas y que cada miembro aparezca una sola vez. Incluye miembros desconectados e índices rechazados en las comprobaciones del proyecto y revisa cómo trata el código consumidor las entradas sin asignar. MatchOriel admite conexiones a endpoints compatibles con OpenAI o de Anthropic con credenciales cuando sean necesarias. Se pueden seleccionar modelos sin restricciones donde tu servicio los ofrezca; siguen aplicándose las reglas del proveedor y las capacidades de contexto y herramientas del servidor. Usa el objetivo establecido, en vez de la confianza del asistente, para evaluar si el cambio es adecuado.

Revisar asignaciones de pares permitidos

¿Respeta también las preferencias el emparejamiento más grande?

No automáticamente. La tarea ilustrada maximiza el número de asignaciones entre pares permitidos. Si importan la estabilidad de las preferencias o la calidad ponderada, especifícalo por separado y revisa si el algoritmo propuesto aborda ese objetivo y no solo la cantidad.

¿Por qué incluir un caso que necesite reasignación?

Permite distinguir una solución que puede revisar elecciones anteriores de una pasada voraz que quizá se detenga demasiado pronto. Proporciona cantidades esperadas de pares y alternativas válidas, y examina el código propuesto y su salida con esos ejemplos.

¿Deben exigir las pruebas un conjunto exacto de pares?

Solo cuando el contrato requiera ese resultado específico. Varias asignaciones pueden satisfacer el mismo objetivo de cardinalidad máxima. Comprueba la validez, la unicidad de los miembros y el tamaño, y documenta los requisitos de orden o desempate antes de hacer más estrictos los casos de prueba.

¿Cómo deben llegar al código consumidor los miembros sin asignar?

Define si el código consumidor los deduce de los pares ausentes o espera una representación explícita. Revisa ese límite junto con la estructura devuelta y prueba entradas desconectadas para que la aplicación no trate un miembro legítimamente sin asignar como un fallo de análisis.

Descargar para Windows ↗

MatchOriel · Actualizado 2026-10-25