Maximale bipartiete koppeling
Vind een koppeling met maximaal aantal paren tussen twee groepen van maximaal 32 knopen op basis van toegestane randen.
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)Modellen
Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.
Project
Test geïsoleerde knopen en herverdeling via een vergrotend pad, weiger ongeldige indices zonder de verzamelingen te wijzigen.
Controleer vóór het toepassen
Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
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)Maak het toewijzingsdoel duidelijk voordat je wijzigingen aanbrengt
MatchOriel is een AI-programmeerwerkruimte voor Windows om toewijzingslogica te bespreken in de context van de toepassing die haar gebruikt. Open het bronproject en leg uit wat een koppeling toegestaan maakt en wat het resultaat moet optimaliseren. Vraag de verbonden assistent te onderzoeken hoe die eisen in de invoerstructuur en de code zijn vastgelegd voordat hij wijzigingen voorstelt.
Een matching met maximale cardinaliteit biedt een voorbeeld. Geef de toegestane koppelingen en beschrijf of het doel simpelweg is zoveel mogelijk leden toe te wijzen. Vraag het model een geval te beoordelen waarin een eerdere keuze opnieuw moet worden toegewezen om dat doel te bereiken. Houd voorkeursrangschikkingen of andere bedrijfsregels expliciet als je toepassing die nodig heeft, want de grootte van een matching legt die niet vast.
Onderzoek het voorstel en test de geretourneerde paren op geldige verbindingen en uniek lidmaatschap. Neem niet-verbonden leden en afgewezen indices op in je eigen projectcontroles en beoordeel hoe aanroepende code niet-toegewezen vermeldingen afhandelt. MatchOriel ondersteunt verbindingen met OpenAI-compatibele of Anthropic-eindpunten met inloggegevens waar nodig. Onbeperkte modellen zijn selecteerbaar waar je dienst ze aanbiedt; de regels van de aanbieder en de context- en toolmogelijkheden van de server blijven gelden. Gebruik het vastgestelde doel in plaats van het zelfvertrouwen van de assistent om te beoordelen of de wijziging geschikt is.
Toewijzingen met toegestane koppelingen beoordelen
Houdt de grootste matching ook rekening met voorkeuren?
Niet automatisch. De geïllustreerde taak maximaliseert het aantal toewijzingen binnen toegestane koppelingen. Als voorkeursstabiliteit of gewogen kwaliteit belangrijk is, specificeer dat afzonderlijk en beoordeel of het voorgestelde algoritme dat doel behandelt in plaats van alleen het aantal.
Waarom een geval opnemen dat hernieuwde toewijzing vereist?
Dat onderscheidt een oplossing die eerdere keuzes kan herzien van een gretige doorloop die te vroeg kan stoppen. Geef verwachte aantallen koppelingen en geldige alternatieven en onderzoek de voorgestelde code en uitvoer aan de hand van die voorbeelden.
Moeten tests precies één verzameling koppelingen vereisen?
Alleen wanneer het contract dat specifieke resultaat vereist. Meerdere toewijzingen kunnen aan hetzelfde doel van maximale cardinaliteit voldoen. Controleer geldigheid, uniek lidmaatschap en grootte en documenteer volgorde- of gelijkspelregels voordat je de testgevallen strenger maakt.
Hoe moeten niet-toegewezen leden de aanroepende code bereiken?
Definieer of de aanroepende code ze afleidt uit ontbrekende koppelingen of een expliciete representatie verwacht. Beoordeel die grens samen met de geretourneerde structuur en test vervolgens niet-verbonden invoer, zodat de toepassing een terecht niet-toegewezen lid niet als ontleedfout behandelt.
MatchOriel · Bijgewerkt 2026-10-25