SSpanSorbus
AI-werkruimte voor code

Bruggen in ongerichte grafen

Vind bruggen in een eenvoudige ongerichte graaf met maximaal 32 knopen.

● ● ●SpanSorbus●
Werkprocessen · Bruggen in ongerichte grafen ×
def bridge_edges(n, edges):
    if type(n) is not int or not 0 <= n <= 32:
        raise ValueError("vertex count")
    if type(edges) is not list or len(edges) > 496:
        raise ValueError("edge count")
    graph = [set() for _ in range(n)]
    for edge in edges:
        if type(edge) is not tuple or len(edge) != 2 or any(
            type(x) is not int or not 0 <= x < n for x in edge):
            raise ValueError("edge endpoints")
        a, b = edge
        if a == b or b in graph[a]:
            raise ValueError("simple undirected edges")
        graph[a].add(b); graph[b].add(a)
    timer, found = 0, []
    entered, low = [-1] * n, [0] * n
    def visit(v, parent):
        nonlocal timer
        entered[v] = low[v] = timer; timer += 1
        for u in sorted(graph[v]):
            if u == parent:
                continue
            if entered[u] < 0:
                visit(u, v); low[v] = min(low[v], low[u])
                if low[u] > entered[v]:
                    found.append(tuple(sorted((v, u))))
            else:
                low[v] = min(low[v], entered[u])
    for v in range(n):
        if entered[v] < 0:
            visit(v, -1)
    return sorted(found)
✳Vind bruggen in een eenvoudige ongerichte graaf met maximaal 32 knopen.
✓ WijzigingenControleer vóór het toepassen ↗
Illustratie van de werkruimte
01

Controleer vóór het toepassen

Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.

02

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.

03

Project

Test losse componenten en cycli en wijs dubbele kanten, lussen en ongeldige eindpunten af zonder de invoer te veranderen.

Werkprocessen

Bruggen in ongerichte grafen

Werkprocessen ↗
Werkprocessen
def bridge_edges(n, edges):
    if type(n) is not int or not 0 <= n <= 32:
        raise ValueError("vertex count")
    if type(edges) is not list or len(edges) > 496:
        raise ValueError("edge count")
    graph = [set() for _ in range(n)]
    for edge in edges:
        if type(edge) is not tuple or len(edge) != 2 or any(
            type(x) is not int or not 0 <= x < n for x in edge):
            raise ValueError("edge endpoints")
        a, b = edge
        if a == b or b in graph[a]:
            raise ValueError("simple undirected edges")
        graph[a].add(b); graph[b].add(a)
    timer, found = 0, []
    entered, low = [-1] * n, [0] * n
    def visit(v, parent):
        nonlocal timer
        entered[v] = low[v] = timer; timer += 1
        for u in sorted(graph[v]):
            if u == parent:
                continue
            if entered[u] < 0:
                visit(u, v); low[v] = min(low[v], low[u])
                if low[u] > entered[v]:
                    found.append(tuple(sorted((v, u))))
            else:
                low[v] = min(low[v], entered[u])
    for v in range(n):
        if entered[v] < 0:
            visit(v, -1)
    return sorted(found)
AI-werkruimte voor code

Verbind graafresultaten met een beslissing van de toepassing

SpanSorbus is een programmeeromgeving voor Windows om connectiviteitslogica in echte bronbestanden te onderzoeken. Beschrijf eerst welke beslissing je toepassing neemt op basis van het graafresultaat. Vraag het verbonden model de invoerrepresentatie en gebruikende code te bekijken voordat je een wijziging in de doorloop of uitvoer vraagt.

Een nuttige taak kan bridge_edges.py gebruiken om een verbinding te onderzoeken waarvan verwijdering een verbonden deel van een testgraaf scheidt. Voeg ter vergelijking een graaf met een cyclus toe en vermeld de verwachte verbindingslijst. Beoordeel de aannames van een eenvoudige, ongerichte graaf samen met de implementatie, zodat de voorgestelde wijziging niet stilzwijgend een ander invoertype accepteert.

Het softwarewerk gaat door nadat de routine terugkeert. Bekijk hoe de aanroeper knopen benoemt, verbindingen presenteert en geweigerde gegevens verwerkt en voer projectcontroles uit met niet-samenhangende en lege testgrafen. Koppel de beoordeling aan die waarneembare uitkomsten. Een correcte graafuitleg bewijst niet dat de toepassing haar werkelijke gegevens naar de verwachte representatie omzet.

SpanSorbus verbindt via ondersteunde OpenAI-compatibele of Anthropic-endpoints, met inloggegevens waar vereist. Kies een AI-model zonder censuur waar het endpoint dat aanbiedt en controleer de beperkingen van de aanbieder en beschikbare tools. Contextlimieten hangen af van model en server; geef daarom een begrensd testgeval en relevante gebruikende code voor een gericht programmeergesprek.

Vragen vóór het wijzigen van connectiviteitscode

Moet elke verbinding buiten een cyclus hetzelfde worden behandeld?

Controleer de precieze graafdefinitie en de beslissing van je toepassing. Gebruik een testgraaf met een onafhankelijk opgeschreven verwacht resultaat. Beoordeel de codeaannames over richting, parallelle verbindingen en zelflussen voordat je een informele graafuitleg in een software-eis omzet.

Waarom niet-samenhangende invoer testen?

De toepassing kan meerdere afzonderlijke componenten bevatten, elk met eigen relevante verbindingen. Een doorloop die bij één knoop begint, kan de andere missen. Gebruik een testgraaf met meer dan één component en vergelijk de volledige uitvoer, niet alleen de eerste verwachte verbinding.

Kan ik herhaalde verbindingen uit geïmporteerde gegevens aanleveren?

Bekijk eerst het contract voor geaccepteerde invoer. Het voorbeeld verwacht een eenvoudige graaf en weigert duplicaten. Als geïmporteerde gegevens herhaalde verbindingen bevatten, bepaal dan of de importeur ze normaliseert of een fout meldt voordat je de graafroutine laat wijzigen.

Wat moet de gebruikende code bij weergave van een verbinding behouden?

Definieer de koppeling tussen interne knoopidentificatoren en zichtbare labels, plus eventuele volgorde voor stabiele uitvoer. Beoordeel die koppelingen met de voorgestelde wijziging. Een correct intern knopenpaar kan alsnog een misleidend resultaat worden als de aanroeper het aan verkeerde labels koppelt.

Download voor Windows ↗

SpanSorbus · Bijgewerkt 2026-10-25