FForellin
Espacio de programación con IA

Bosques de expansión mínima

Busca un bosque de expansión mínima de hasta 64 nodos y 1024 aristas con pesos enteros dentro de ±10^9.

● ● ●Forellin●
Flujos de trabajo · Bosques de expansión mínima ×
def spanning_forest(count, edges):
    if type(count) is not int or not 0 <= count <= 64 or type(edges) is not list or len(edges) > 1024:
        raise ValueError("forest.input")
    ordered = []
    for edge in edges:
        if type(edge) not in (list, tuple) or len(edge) != 3 or any(type(x) is not int for x in edge):
            raise ValueError("forest.edge")
        a, b, weight = edge
        if not 0 <= a < count or not 0 <= b < count or abs(weight) > 10**9:
            raise ValueError("forest.bounds")
        ordered.append((weight, min(a, b), max(a, b)))
    parent = list(range(count))
    def root(node):
        while parent[node] != node:
            parent[node] = parent[parent[node]]
            node = parent[node]
        return node
    selected, total = [], 0
    for weight, a, b in sorted(ordered):
        x, y = root(a), root(b)
        if x != y:
            parent[x] = y
            selected.append((a, b, weight))
            total += weight
    return total, selected
✳Bosques de expansión mínima
✓ CambiosRevisa antes de aplicar ↗
Vista ilustrativa
  1. 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.

  2. 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.

  3. Proyecto

    Prueba nodos desconectados, aristas paralelas, bucles y empates deterministas, rechazando extremos inválidos o booleanos sin modificar la entrada.

Flujos de trabajo

Bosques de expansión mínima

Flujos de trabajo ↗
Flujos de trabajo
def spanning_forest(count, edges):
    if type(count) is not int or not 0 <= count <= 64 or type(edges) is not list or len(edges) > 1024:
        raise ValueError("forest.input")
    ordered = []
    for edge in edges:
        if type(edge) not in (list, tuple) or len(edge) != 3 or any(type(x) is not int for x in edge):
            raise ValueError("forest.edge")
        a, b, weight = edge
        if not 0 <= a < count or not 0 <= b < count or abs(weight) > 10**9:
            raise ValueError("forest.bounds")
        ordered.append((weight, min(a, b), max(a, b)))
    parent = list(range(count))
    def root(node):
        while parent[node] != node:
            parent[node] = parent[parent[node]]
            node = parent[node]
        return node
    selected, total = [], 0
    for weight, a, b in sorted(ordered):
        x, y = root(a), root(b)
        if x != y:
            parent[x] = y
            selected.append((a, b, weight))
            total += weight
    return total, selected
Espacio de programación con IA

Incluye las entradas desconectadas en el contrato del software de grafos

Forellin ofrece a los desarrolladores un espacio de programación con IA para Windows donde examinar código de procesamiento de grafos junto con la aplicación que depende de él. Inicia una conversación del proyecto con la representación de entrada y el resultado que necesita el código consumidor. Pide al asistente que examine cómo trata la implementación las conexiones ausentes, las aristas repetidas y el orden de salida antes de proponer un cambio. Esas decisiones definen la función tanto como el cálculo central.

El contexto de spanning_forest.py sugiere una tarea en la que se esperan nodos desconectados, en lugar de tratarlos como un intento fallido de conectar todo. Puedes pedir al modelo que explique qué aristas se seleccionan y cómo se relaciona el total con ellas. Revisa la respuesta con un grafo pequeño que puedas comprobar a mano y solicita después un cambio concreto si hay que ajustar el contrato del resultado o la validación.

Ejecuta las comprobaciones del proyecto con entradas conectadas y desconectadas, y examina cómo representa la aplicación los nodos aislados. Si existen varios resultados válidos, acuerda si la selección determinista importa al código consumidor. Forellin acepta endpoints compatibles con OpenAI o de Anthropic admitidos, con credenciales cuando sean necesarias. Se puede elegir un modelo de IA sin filtros cuando se ofrezca, pero las restricciones del modelo, las herramientas y la capacidad de contexto siguen dependiendo del servicio configurado. El espacio de trabajo facilita tu investigación; los ejemplos de grafos y los resultados de las pruebas respaldan la aceptación del código.

Preguntas para un cambio de procesamiento de grafos

¿Debe rechazarse siempre una entrada desconectada?

Solo si la aplicación requiere una estructura conectada única. Para un resultado de bosque, los componentes desconectados pueden ser válidos. Indica esa distinción antes de solicitar una corrección para que el asistente no fuerce conexiones que la entrada nunca proporcionó.

¿Qué sucede si varias selecciones de aristas tienen el mismo total?

Decide si cualquier óptimo válido es aceptable o si el consumidor necesita una selección repetible. Si importan el orden o el comportamiento ante empates, inclúyelos en el resultado esperado y pruébalos explícitamente, en vez de depender del orden incidental de entrada.

¿Cómo compruebo el total indicado?

Usa un ejemplo pequeño y compara independientemente las aristas seleccionadas con la suma de sus pesos. Examina también si el código consumidor espera solo el total o la estructura seleccionada, porque esas salidas permiten comportamientos distintos de la aplicación.

¿Por qué probar los nodos aislados por separado?

Pueden desaparecer de un resultado compuesto solo por aristas aunque la entrada los incluya. Comprueba la representación circundante y decide cómo debe conservar o mostrar esos nodos la aplicación, en vez de suponer que las aristas seleccionadas describen todos los vértices.

Descargar para Windows ↗

Forellin · Actualizado 2026-10-25