Stabiele koppeling van voorkeuren
Koppel twee groepen van hoogstens 20 leden met volledige strikte voorkeurslijsten.
from collections import deque
def stable_pairs(proposers, receivers):
if type(proposers) not in (list, tuple) or type(receivers) not in (list, tuple):
raise ValueError("preference tables must be lists or tuples")
n = len(proposers)
if n > 20 or len(receivers) != n: raise ValueError("equal sizes up to 20")
for rows in (proposers, receivers):
for row in rows:
if type(row) not in (list, tuple) or len(row) != n or any(type(v) is not int for v in row) or set(row) != set(range(n)):
raise ValueError("complete strict preferences")
ranks = [{v:i for i,v in enumerate(row)} for row in receivers]
free, next_choice = deque(range(n)), [0]*n
owner, partner = [None]*n, [None]*n
while free:
p = free.popleft()
r = proposers[p][next_choice[p]]
next_choice[p] += 1
old = owner[r]
if old is None or ranks[r][p] < ranks[r][old]:
owner[r], partner[p] = p, r
if old is not None: partner[old] = None; free.append(old)
else: free.append(p)
return partner- 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 lege groepen en concurrerende keuzes, weiger dubbele of ontbrekende voorkeuren en controleer dat geen blokkerend paar overblijft.
- Controleer vóór het toepassen
- Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
from collections import deque
def stable_pairs(proposers, receivers):
if type(proposers) not in (list, tuple) or type(receivers) not in (list, tuple):
raise ValueError("preference tables must be lists or tuples")
n = len(proposers)
if n > 20 or len(receivers) != n: raise ValueError("equal sizes up to 20")
for rows in (proposers, receivers):
for row in rows:
if type(row) not in (list, tuple) or len(row) != n or any(type(v) is not int for v in row) or set(row) != set(range(n)):
raise ValueError("complete strict preferences")
ranks = [{v:i for i,v in enumerate(row)} for row in receivers]
free, next_choice = deque(range(n)), [0]*n
owner, partner = [None]*n, [None]*n
while free:
p = free.popleft()
r = proposers[p][next_choice[p]]
next_choice[p] += 1
old = owner[r]
if old is None or ranks[r][p] < ranks[r][old]:
owner[r], partner[p] = p, r
if old is not None: partner[old] = None; free.append(old)
else: free.append(p)
return partnerMaak toewijzingsvereisten zichtbaar voordat u de code herziet
Een toewijzingsfunctie heeft meer nodig dan een lijst paren: duidelijkheid over geldige invoer en aanvaardbare uitkomsten. PairCrest biedt een Windows-programmeerwerkruimte met AI om die vereisten te bespreken met de relevante projectbestanden erbij. Begin met de voorkeuren die uw toepassing ontvangt en de voorwaarden waaraan zij moet voldoen. Vraag daarna om onderzoek van de huidige implementatie.
Het voorbeeld met stabiele voorkeurstoewijzing biedt één mogelijke ontwikkeltaak. U kunt beoordelen hoe volledige rangschikkingen worden gevalideerd, hoe nog niet toegewezen werk tijdens de verwerking wordt weergegeven en hoe de uiteindelijke paren de aanroepende code bereiken. Als uw vereisten gelijke voorkeuren, ontbrekende voorkeuren of ongelijk grote groepen omvatten, benoem dat verschil voordat u om een aanpassing vraagt. De beperktere aannames van het voorbeeld moeten tijdens het hele gesprek zichtbaar blijven, in plaats van verborgen toepassingsbeleid te worden.
Een AI-model zonder censuur kan worden gekozen via een ondersteund OpenAI-compatibel of Anthropic-eindpunt, met inloggegevens waar nodig. Het model en de server bepalen context, hulpmiddelen en beperkingen. Beoordeel de voorgestelde invoercontroles en resultaatverwerking en test daarna kleine voorkeurstabellen met uitkomsten die u kunt inspecteren. Een afzonderlijke lokale modelserver verzorgt alleen inferentie; andere hulpmiddelen kunnen nog steeds verbinding maken met externe diensten.
Een functie op basis van voorkeuren verduidelijken
Hoe ziet een bruikbare toewijzingsvereiste eruit?
Beschrijf de groepen, toegestane voorkeurvormen en de eigenschap waaraan de uiteindelijke toewijzing moet voldoen. Geef een klein voorbeeld dat mensen kunnen controleren. Vermijd een breed woord als beste zonder te zeggen hoe de toepassing een uitkomst moet beoordelen.
Kan ik gelijke voorkeuren toevoegen zonder het omliggende contract te wijzigen?
Ga daar niet van uit. Het voorbeeld verwacht volledige, strikte voorkeuren. Gelijke voorkeuren kunnen zowel de invoerrepresentatie als de betekenis van een aanvaardbaar resultaat veranderen. Vraag expliciet om die beslissingen voordat u een voorgesteld algoritme of wijzigingen in aanroepende code beoordeelt.
Hoe kan ik uitvoer inspecteren zonder een grote testgegevensverzameling?
Begin met kleine voorkeurstabellen en toets de gevormde paren aan de gestelde eigenschap. Neem ongeldige rangschikkingen op om afwijzingen te testen. Deze gerichte gevallen ondersteunen de beoordeling; de eigen tests van de toepassing moeten de bredere invoer- en integratievereisten dekken.
Bepaalt PairCrest wat eerlijk is voor gebruikers?
De softwarewerkruimte bepaalt uw verdelingsbeleid niet. U levert de vereisten aan en beoordeelt hun gevolgen. Vraag de assistent om implementatieaannames uit te leggen en beoordeel vervolgens of die passen bij de regels die uw toepassing moet hanteren.
PairCrest · Bijgewerkt 2026-10-25