MMatchOriel
Робоче середовище з ШІ для коду

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

Знайдіть паросполучення максимальної потужності між двома групами до 32 вершин за множинами дозволених ребер.

● ● ●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. Моделі

    Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.

  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