Проверьте перед применением
Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
SpanSorbus — Windows-среда для проверки кода связности с совместимой моделью. Проследите ребро через предложенный поиск мостов и проверьте его влияние на конкретный пример графа.
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)Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.
Базовый URL, учётные данные и доступный сервер.
Проверьте раздельные компоненты и циклы, отклоняя повторные рёбра, петли и ошибочные концы без изменения входа.
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)SpanSorbus — рабочая среда программирования для Windows для изучения логики связности в контексте реальных исходных файлов. Сначала опишите решение, принимаемое приложением по результату графа. Попросите подключённую модель изучить представление входа и его потребителя перед запросом изменения обхода или вывода.
Полезная задача с bridge_edges.py — изучение ребра, удаление которого разделяет связную часть тестового графа. Добавьте для сравнения граф с циклом и укажите ожидаемый список рёбер. Проверьте допущения простого неориентированного графа вместе с реализацией, чтобы предлагаемое изменение не принимало незаметно другой вид входа.
Работа над программой продолжается после возврата из процедуры. Изучите, как вызывающий код именует узлы, представляет рёбра и обрабатывает отклонённые данные, затем запустите проверки проекта с несвязными и пустыми графами. Привязывайте проверку к этим наблюдаемым результатам. Правильное объяснение графа не доказывает, что приложение преобразует фактические данные в ожидаемое представление.
SpanSorbus подключается через поддерживаемые конечные точки, совместимые с OpenAI, или конечные точки Anthropic с учётными данными при необходимости. Выберите модель ИИ без цензуры, если конечная точка её предоставляет, проверив ограничения провайдера и доступные инструменты. Пределы контекста зависят от модели и сервера, поэтому для предметного обсуждения кода предоставьте ограниченный тестовый пример и соответствующих потребителей.
Проверьте точное определение графа и решение приложения. Используйте тестовый пример с независимо записанным ожидаемым результатом. Изучите допущения кода о направлении, параллельных рёбрах и петлях, прежде чем переносить неформальное объяснение графа в требование к программе.
Приложение может содержать несколько отдельных компонент со своими значимыми рёбрами. Обход из одного узла может пропустить остальные. Добавьте пример с несколькими компонентами и сравните полный вывод, а не только первое ожидаемое ребро.
Сначала изучите контракт допустимого входа. Пример ожидает простой граф и отклоняет дубликаты. Если импортированные данные содержат повторные рёбра, решите, должен ли импортёр нормализовать их или сообщать об ошибке, прежде чем просить изменить процедуру графа.
Задайте соответствие внутренних идентификаторов узлов видимым пользователю меткам и порядок, нужный для устойчивого вывода. Проверьте эти соответствия вместе с правкой. Правильная внутренняя пара узлов может дать вводящий в заблуждение результат, если вызывающий код связывает её с неверными метками.
SpanSorbus · Обновлено 2026-10-25