Maximální bipartitní párování
Najdi párování s největším počtem dvojic mezi dvěma skupinami nejvýše 32 vrcholů podle povolených hran.
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)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ě.
Projekt
Otestuj izolované vrcholy a přepárování po zlepšující cestě, odmítni neplatné indexy bez změny množin.
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.
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)Před úpravami vyjasněte cíl přiřazování
MatchOriel je programovací prostředí s AI pro Windows k diskusi o logice přiřazování v kontextu aplikace, která ji používá. Otevřete zdrojový projekt a vysvětlete, co činí dvojici přípustnou a co má výsledek optimalizovat. Než připojený asistent navrhne změny, nechte ho prozkoumat, jak se tyto požadavky promítají do vstupní struktury a kódu.
Jedním příkladem je párování maximální mohutnosti. Dodejte povolené dvojice a popište, zda je cílem prostě přiřadit co nejvíce členů. Nechte model posoudit případ, kdy je pro dosažení cíle nutné změnit dřívější přiřazení. Pokud aplikace potřebuje pořadí preferencí či jiná obchodní pravidla, uvádějte je výslovně, protože z velikosti párování nevyplývají.
Prozkoumejte návrh a ověřte, že vracené dvojice tvoří platné hrany a členové se neopakují. Do kontrol projektu zahrňte nepřipojené členy a odmítané indexy, poté prověřte zacházení volajících s nepřiřazenými položkami. MatchOriel podporuje připojení ke koncovým bodům kompatibilním s OpenAI nebo k Anthropic, podle potřeby s přihlašovacími údaji. Neomezené modely lze vybírat tam, kde je služba nabízí; pravidla poskytovatele i možnosti kontextu a nástrojů serveru nadále platí. Vhodnost změny posuzujte podle stanoveného cíle, nikoli podle sebejistoty asistenta.
Kontrola přiřazování povolených dvojic
Respektuje největší párování také preference?
Ne automaticky. Ilustrovaná úloha maximalizuje počet přiřazení mezi povolenými dvojicemi. Pokud záleží na stabilitě preferencí či vážené kvalitě, určete to zvlášť a prověřte, zda navržený algoritmus řeší tento cíl, nikoli pouze počet.
Proč zahrnout případ vyžadující změnu přiřazení?
Odliší řešení schopné měnit dřívější volby od hladového průchodu, který může skončit předčasně. Dodejte očekávané počty dvojic a platné alternativy a podle těchto příkladů prozkoumejte navržený kód i jeho výstup.
Mají testy vyžadovat jednu přesnou sadu dvojic?
Pouze pokud specifikace vyžaduje právě tento výsledek. Tentýž cíl maximální mohutnosti může splnit více přiřazení. Kontrolujte platnost, jedinečnost členství a velikost; před zpřísněním testů zdokumentujte požadavky na pořadí či rozhodování při shodě.
Jak mají být nepřiřazení členové předáni volajícímu?
Určete, zda je volající odvozuje z chybějících dvojic, nebo očekává výslovnou reprezentaci. Posuďte tuto hranici spolu s vracenou strukturou a otestujte nespojené vstupy, aby aplikace nepovažovala oprávněně nepřiřazeného člena za chybu parsování.
MatchOriel · Aktualizováno 2026-10-25