MMatchOriel
Рабочая среда с ИИ для кода

Максимальное двудольное паросочетание

MatchOriel поддерживает работу с задачами назначений, заданными разрешёнными парами. Обсудите множества рёбер проекта и проверьте увеличивающие пути, различая максимальное число пар и устойчивость предпочтений.

● ● ●MatchOriel●
Конкретная отправная точка · Максимальное двудольное паросочетание ×
def maximum_matching(edges, right_count):
    if type(right_count) is not int or not 0 <= right_count <= 32 or type(edges) not in (list, tuple) or len(edges) > 32:
        raise ValueError("matching.size")
    if any(type(row) not in (set, frozenset) or any(type(v) is not int or not 0 <= v < right_count for v in row) for row in edges):
        raise ValueError("matching.edge")
    owners = [-1] * right_count
    def augment(left, seen):
        for right in sorted(edges[left]):
            if right in seen:
                continue
            seen.add(right)
            if owners[right] == -1 or augment(owners[right], seen):
                owners[right] = left
                return True
        return False
    for left in range(len(edges)):
        augment(left, set())
    return sorted((left, right) for right, left in enumerate(owners) if left != -1)
✳Найдите паросочетание максимальной мощности между двумя группами до 32 вершин по множествам допустимых рёбер.
✓ ИзмененияПроверьте перед применением ↗
Иллюстрация рабочей среды
  1. Подключение

    Базовый URL, учётные данные и доступный сервер.

  2. Проект

    Проверьте изолированные вершины и переназначение по увеличивающему пути, отклоняя неверные индексы без изменения множеств.

  3. Проверьте перед применением

    Сравните фактическое поведение с ожидаемым. Если проверка не проходит, разберитесь в причине перед следующими изменениями.

Сценарии

Максимальное двудольное паросочетание

Сценарии ↗
Конкретная отправная точка
def maximum_matching(edges, right_count):
    if type(right_count) is not int or not 0 <= right_count <= 32 or type(edges) not in (list, tuple) or len(edges) > 32:
        raise ValueError("matching.size")
    if any(type(row) not in (set, frozenset) or any(type(v) is not int or not 0 <= v < right_count for v in row) for row in edges):
        raise ValueError("matching.edge")
    owners = [-1] * right_count
    def augment(left, seen):
        for right in sorted(edges[left]):
            if right in seen:
                continue
            seen.add(right)
            if owners[right] == -1 or augment(owners[right], seen):
                owners[right] = left
                return True
        return False
    for left in range(len(edges)):
        augment(left, set())
    return sorted((left, right) for right, left in enumerate(owners) if left != -1)
Рабочая среда с ИИ для кода

Уточните цель назначения пар до изменения кода

MatchOriel — рабочая среда для программирования с ИИ в Windows, где логику назначения пар можно обсуждать в контексте использующего её приложения. Откройте исходный проект и объясните, что делает пару допустимой и что должен оптимизировать результат. Попросите подключённого помощника изучить отражение требований во входной структуре и коде до предложения изменений.

Один из примеров — задача паросочетания максимальной мощности. Приведите допустимые пары и объясните, заключается ли цель только в назначении как можно большего числа участников. Попросите модель проверить случай, где для достижения цели нужно пересмотреть ранний выбор. Явно задайте ранжирование предпочтений и другие бизнес-правила, если они нужны приложению: размер паросочетания сам по себе их не определяет.

Изучите предложение и проверьте допустимость рёбер и уникальность участников в возвращённых парах. Включите участников без связей и отклоняемые индексы в проверки проекта, затем изучите обработку неназначенных элементов вызывающим кодом. MatchOriel поддерживает подключения к конечным точкам, совместимым с OpenAI, или Anthropic с учётными данными при необходимости. Модели без ограничений можно выбирать, если сервис их предлагает; правила поставщика, объём контекста и возможности инструментов сервера сохраняются. Оценивайте уместность правки по поставленной цели, а не уверенности помощника.

Проверка назначения допустимых пар

Учитывает ли наибольшее паросочетание предпочтения?

Не автоматически. В примере максимизируется количество назначений среди допустимых пар. Если важны устойчивость по предпочтениям или взвешенное качество, задайте это отдельно и проверьте, решает ли предложенный алгоритм эту задачу, а не только максимизирует число пар.

Зачем включать случай с переназначением?

Он отличает решение, способное пересматривать прежний выбор, от жадного прохода, который может остановиться слишком рано. Укажите ожидаемое число пар и допустимые альтернативы, затем сравните с примерами предлагаемый код и результат.

Должны ли тесты требовать один конкретный набор пар?

Только если контракт требует именно его. Несколько назначений могут удовлетворять одной цели максимальной мощности. Проверяйте допустимость, уникальность участников и размер, а перед ужесточением примеров документируйте требования к порядку или разрешению равенства.

Как передавать неназначенных участников вызывающему коду?

Определите, выводит ли он их из отсутствующих пар или ожидает явное представление. Проверьте эту границу вместе с возвращаемой структурой, затем протестируйте несвязанные входные элементы, чтобы приложение не принимало допустимого неназначенного участника за ошибку разбора.

Скачать для Windows ↗

MatchOriel · Обновлено 2026-10-25