SSpanSorbus
Pracovní prostředí s AI pro kód

Mosty neorientovaných grafů

Najděte mosty jednoduchého neorientovaného grafu s nejvýše 32 vrcholy.

● ● ●SpanSorbus●
Pracovní postupy · Mosty neorientovaných grafů ×
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)
✳Najděte mosty jednoduchého neorientovaného grafu s nejvýše 32 vrcholy.
✓ ZměnyPřed použitím zkontrolujte ↗
Ilustrace pracovního prostředí
01

Před použitím zkontrolujte

Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu.

02

Modely

Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně.

03

Projekt

Ověřte oddělené komponenty a cykly a odmítněte duplicitní hrany, smyčky a chybné konce bez změny vstupu.

Pracovní postupy

Mosty neorientovaných grafů

Pracovní postupy ↗
Pracovní postupy
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)
Pracovní prostředí s AI pro kód

Propojte výsledky grafu s rozhodnutím aplikace

SpanSorbus je pracovní prostředí pro programování ve Windows pro zkoumání logiky konektivity v kontextu skutečných zdrojových souborů. Nejprve popište rozhodnutí, které vaše aplikace činí na základě výsledku grafu. Před žádostí o změnu průchodu nebo výstupu požádejte připojený model o kontrolu vstupní reprezentace a navazujícího kódu.

Užitečná úloha může pomocí bridge_edges.py zkoumat hranu, jejíž odstranění rozdělí souvislou část testovacího grafu. Pro porovnání přidejte graf s cyklem a uveďte očekávaný seznam hran. Spolu s implementací prověřte předpoklady jednoduchého neorientovaného grafu, aby navržená změna tiše nepřijímala jiný druh vstupu.

Práce na softwaru pokračuje i po návratu z rutiny. Prověřte, jak volající pojmenovává uzly, prezentuje hrany a zpracovává odmítnutá data, a potom spusťte projektové kontroly s nesouvislými a prázdnými testovacími grafy. Kontrolu vázejte na tyto pozorovatelné výsledky. Správné vysvětlení grafu nedokazuje, že aplikace mapuje svá skutečná data do očekávané reprezentace.

SpanSorbus se připojuje přes podporované koncové body kompatibilní s OpenAI nebo Anthropic, případně s přihlašovacími údaji. Zvolte model AI bez cenzury, pokud jej koncový bod poskytuje, a ověřte omezení poskytovatele i dostupné nástroje. Limity kontextu závisí na modelu a serveru, proto pro cílenou diskusi o kódu dodejte omezený testovací graf a relevantní navazující kód.

Otázky před změnou kódu konektivity

Vyžaduje každá hrana mimo cyklus stejné zacházení?

Ověřte přesnou definici grafu a rozhodnutí, které aplikace činí. Použijte testovací graf s nezávisle zapsaným očekávaným výsledkem. Než neformální vysvětlení grafu převedete na softwarový požadavek, prověřte předpoklady kódu o orientaci, souběžných hranách a smyčkách.

Proč testovat nesouvislý vstup?

Aplikace může obsahovat několik oddělených komponent, z nichž každá má vlastní relevantní hrany. Průchod začínající v jednom uzlu může ostatní minout. Přidejte graf s více komponentami a porovnejte celý výstup, nejen první očekávanou hranu.

Mohu dodat opakované hrany z importovaných dat?

Nejprve prověřte kontrakt přijímaného vstupu. Příklad očekává jednoduchý graf a odmítá duplicity. Pokud importovaná data obsahují opakované hrany, před žádostí o změny grafové rutiny rozhodněte, zda je má importér normalizovat, nebo hlásit chybu.

Co má navazující kód zachovat při zobrazení hrany?

Definujte mapování interních identifikátorů uzlů na uživatelsky viditelná označení a případné řazení potřebné pro stabilní výstup. Tato mapování prověřte spolu s navrženou úpravou. Správná interní dvojice uzlů může vést k zavádějícímu výsledku, pokud ji volající spojí s nesprávnými označeními.

Stáhnout pro Windows ↗

SpanSorbus · Aktualizováno 2026-10-25