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
✳Minimale opspannende bossen
✓ WijzigingenControleer vóór het toepassen ↗
Illustratie van de werkruimte
Controleer vóór het toepassen
Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
Modellen
Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.
Project
Test losse knopen, parallelle verbindingen, lussen en vaste gelijkspelkeuzes, en weiger verkeerde eindpunten of booleans zonder invoerwijziging.
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
AI-werkruimte voor code
Maak niet-verbonden invoer onderdeel van het contract van graafsoftware
Forellin biedt ontwikkelaars een AI-programmeerwerkruimte voor Windows om graafverwerkingscode te onderzoeken samen met de toepassing die erop vertrouwt. Begin een projectgesprek met de invoerrepresentatie en het resultaat dat de aanroepende code nodig heeft. Vraag de assistent te onderzoeken hoe de implementatie ontbrekende verbindingen, herhaalde kanten en uitvoervolgorde afhandelt voordat hij een wijziging voorstelt. Die keuzes vormen de functie net zo goed als de centrale berekening.
De context van spanning_forest.py suggereert een taak waarbij niet-verbonden knopen worden verwacht in plaats van behandeld als een mislukte poging om alles te verbinden. Je kunt het model vragen uit te leggen welke kanten worden geselecteerd en hoe het totaal daarmee samenhangt. Beoordeel het antwoord aan de hand van een kleine graaf die je handmatig kunt controleren en vraag vervolgens een gerichte patch als het resultaatcontract of de validatie moet worden aangepast.
Voer projectcontroles uit op verbonden en niet-verbonden invoer en onderzoek hoe geïsoleerde knopen in de omringende toepassing worden weergegeven. Spreek bij meerdere geldige resultaten af of deterministische selectie voor de afnemer belangrijk is. Forellin accepteert ondersteunde OpenAI-compatibele of Anthropic-eindpunten met inloggegevens waar nodig. Een ongefilterd AI-model kan worden gekozen als het wordt aangeboden, maar modelbeperkingen, tools en contextcapaciteit blijven afhankelijk van de ingestelde dienst. De werkruimte ondersteunt je onderzoek; de graafvoorbeelden en testresultaten onderbouwen de acceptatie van de code.
Vragen bij een wijziging aan graafverwerking
Moet niet-verbonden invoer altijd worden afgewezen?
Alleen als de toepassing één verbonden structuur vereist. Voor een bos als resultaat kunnen niet-verbonden componenten geldig zijn. Vermeld dat onderscheid voordat je een oplossing vraagt, zodat de assistent geen verbindingen afdwingt die de invoer nooit heeft aangeleverd.
Wat als meerdere kantselecties hetzelfde totaal hebben?
Bepaal of elk geldig optimum aanvaardbaar is of dat de afnemer een herhaalbare selectie nodig heeft. Maak volgorde- of gelijkspelgedrag onderdeel van het verwachte resultaat als dat belangrijk is en test het expliciet in plaats van op toevallige invoervolgorde te vertrouwen.
Hoe controleer ik het gerapporteerde totaal?
Gebruik een klein voorbeeld en vergelijk de geselecteerde kanten onafhankelijk met de som van hun gewichten. Onderzoek ook of de aanroepende code alleen het totaal of de geselecteerde structuur verwacht, want die uitvoer ondersteunt verschillend toepassingsgedrag.
Waarom geïsoleerde knopen afzonderlijk testen?
Ze kunnen uit een resultaat met alleen kanten verdwijnen, ook wanneer ze in de invoer staan. Controleer de omringende representatie en bepaal hoe de toepassing die knopen moet behouden of weergeven, in plaats van aan te nemen dat de geselecteerde kanten elke knoop beschrijven.