MMatchOriel
Środowisko programowania z AI

Maksymalne skojarzenie dwudzielne

Znajdź skojarzenie o największej liczności między dwiema grupami do 32 wierzchołków na podstawie zbiorów dozwolonych krawędzi.

● ● ●MatchOriel●
Sposoby pracy · Maksymalne skojarzenie dwudzielne ×
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)
✳Znajdź skojarzenie o największej liczności między dwiema grupami do 32 wierzchołków na podstawie zbiorów dozwolonych krawędzi.
✓ ZmianySprawdź przed zastosowaniem ↗
Ilustracja środowiska
  1. Modele

    Dodaj endpoint zgodny z OpenAI lub Anthropic, podając bazowy URL i klucz API, jeśli jest wymagany. Sprawdź połączenie. Lokalny serwer modelu musi działać; zdalne narzędzia mogą przesyłać dane oddzielnie.

  2. Projekt

    Sprawdź izolowane wierzchołki i zmianę przypisań ścieżką powiększającą, odrzucając błędne indeksy bez zmiany zbiorów.

  3. Sprawdź przed zastosowaniem

    Porównaj rzeczywiste zachowanie z oczekiwanym wynikiem. Jeśli sprawdzenie się nie powiedzie, wyjaśnij przyczynę przed kolejnymi zmianami.

Sposoby pracy

Maksymalne skojarzenie dwudzielne

Sposoby pracy ↗
Sposoby pracy
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)
Środowisko programowania z AI

Wyjaśnij cel przydziału przed edycją

MatchOriel to środowisko programowania z AI dla Windows do omawiania logiki przydziału w kontekście korzystającej z niej aplikacji. Otwórz projekt źródłowy i wyjaśnij, co czyni parę dozwoloną oraz co wynik ma optymalizować. Poproś podłączonego asystenta o sprawdzenie, jak wymagania te odzwierciedlają się w strukturze wejścia i kodzie, przed zaproponowaniem zmian.

Jednym z przykładów jest zadanie skojarzenia o maksymalnej liczności. Podaj dozwolone pary i opisz, czy celem jest po prostu przydzielenie jak największej liczby elementów. Poproś model o ocenę przypadku, w którym osiągnięcie celu wymaga zmiany wcześniejszego wyboru. Jawnie określ ranking preferencji lub inne reguły biznesowe, jeśli aplikacja ich potrzebuje, ponieważ nie wynikają one z rozmiaru skojarzenia.

Sprawdź propozycję i przetestuj zwracane pary pod kątem dozwolonych krawędzi i niepowtarzalnego udziału elementów. Uwzględnij niepołączone elementy i odrzucane indeksy we własnych kontrolach projektu, a następnie oceń obsługę nieprzydzielonych pozycji przez kod wywołujący. MatchOriel obsługuje połączenia z punktami końcowymi zgodnymi z OpenAI lub Anthropic, z danymi uwierzytelniającymi w razie potrzeby. Modele bez ograniczeń można wybrać, gdy oferuje je usługa; nadal obowiązują reguły dostawcy oraz możliwości kontekstu i narzędzi serwera. Oceniaj adekwatność zmiany według określonego celu, a nie pewności asystenta.

Przegląd przydziałów dozwolonych par

Czy największe skojarzenie respektuje także preferencje?

Nie automatycznie. Przykładowe zadanie maksymalizuje liczbę przydziałów spośród dozwolonych par. Jeśli liczy się stabilność preferencji lub ważona jakość, określ to oddzielnie i sprawdź, czy proponowany algorytm realizuje ten cel, a nie tylko liczbę.

Dlaczego uwzględniać przypadek wymagający ponownego przydziału?

Odróżnia rozwiązanie potrafiące zmieniać wcześniejsze wybory od zachłannego przebiegu, który może skończyć zbyt wcześnie. Podaj oczekiwane liczby par i poprawne alternatywy, a następnie zbadaj proponowany kod i wynik względem tych przykładów.

Czy testy powinny wymagać jednego dokładnego zestawu par?

Tylko gdy kontrakt wymaga konkretnego wyniku. Różne przydziały mogą spełniać ten sam cel maksymalnej liczności. Sprawdź poprawność, niepowtarzalny udział i rozmiar oraz udokumentuj wymagania kolejności lub rozstrzygania remisów, zanim zaostrzysz przypadki testowe.

Jak przekazywać nieprzydzielone elementy do kodu wywołującego?

Określ, czy kod wywołujący wywnioskuje je z brakujących par, czy oczekuje jawnej reprezentacji. Oceń tę granicę razem ze zwracaną strukturą, a następnie przetestuj niepołączone dane, aby aplikacja nie traktowała prawidłowego nieprzydzielonego elementu jako błędu parsowania.

Pobierz dla Windows ↗

MatchOriel · Zaktualizowano 2026-10-25