Stabilní párování preferencí
Spárujte dvě skupiny nejvýše 20 členů podle úplných ostrých preferencí.
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- 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
- Ověřte prázdné skupiny a soupeřící volby, odmítněte opakované či chybějící preference a zkontrolujte absenci blokujícího páru.
- 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.
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 partnerPřed úpravou kódu jasně formulujte požadavky na přiřazování
Funkce přiřazování potřebuje více než seznam dvojic: vyžaduje jasný popis platných vstupů a toho, co činí výsledek přijatelným. PairCrest nabízí prostředí pro programování s AI ve Windows, kde lze tyto požadavky probírat s příslušnými soubory projektu. Začněte preferencemi, které aplikace přijímá, a omezeními, která má dodržovat, a poté požádejte o kontrolu současné implementace.
Příklad stabilního párování podle preferencí nabízí jednu možnou vývojovou úlohu. Můžete prověřit validaci úplných pořadí, reprezentaci dosud nespárovaných položek během zpracování a předání konečných dvojic volajícímu. Pokud požadavky zahrnují shody v pořadí, chybějící preference nebo nestejně velké skupiny, upozorněte na tento nesoulad ještě před žádostí o úpravu. Užší předpoklady příkladu mají zůstat zřejmé po celou diskusi, místo aby se staly skrytou zásadou aplikace.
Model AI bez cenzury lze zvolit prostřednictvím podporovaného koncového bodu kompatibilního s OpenAI nebo koncového bodu Anthropic, podle potřeby s přihlašovacími údaji. Kontext, nástroje a omezení určuje model a server. Prověřte navržené kontroly vstupů a zpracování výsledků a poté otestujte malé tabulky preferencí s výsledky, které můžete prohlédnout. Samostatný lokální server modelu zajišťuje pouze inferenci; další nástroje se stále mohou připojovat k externím službám.
Upřesnění funkce založené na preferencích
Jak vypadá užitečný požadavek na přiřazování?
Popište skupiny, povolené podoby preferencí a vlastnost, kterou má konečné přiřazení splňovat. Uveďte malý příklad, který lze ručně prohlédnout. Vyhněte se obecným slovům jako nejlepší, pokud nevysvětlíte, jak má aplikace výsledek hodnotit.
Mohu přidat shody v pořadí bez změny souvisejícího kontraktu?
Nepředpokládejte to. Příklad očekává úplné striktní preference. Shody mohou změnit reprezentaci vstupů i význam přijatelného výsledku. Než budete hodnotit navržený algoritmus nebo změnu volajícího kódu, výslovně si tato rozhodnutí vyžádejte.
Jak mohu zkontrolovat výstup bez rozsáhlého testovacího souboru?
Začněte malými tabulkami preferencí a ověřte výsledné dvojice podle stanovené vlastnosti. Zahrňte neplatná pořadí pro otestování odmítnutí. Tyto cílené případy usnadňují kontrolu, zatímco vlastní testovací sada aplikace má pokrývat širší požadavky na vstupy a integraci.
Rozhoduje PairCrest o tom, co je pro uživatele spravedlivé?
Programovací prostředí neurčuje vaše pravidla přidělování. Požadavky dodáváte vy a posuzujete jejich důsledky. Požádejte asistenta o vysvětlení předpokladů implementace a pak prověřte, zda odpovídají pravidlům, která má aplikace používat.
PairCrest · Aktualizováno 2026-10-25