Stabile Zuordnung nach Präferenzen
Ordne zwei Gruppen mit höchstens 20 Mitgliedern anhand vollständiger strenger Präferenzlisten einander zu.
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- Modelle
- Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen.
- Projekt
- Prüfe leere Gruppen und konkurrierende Wünsche, lehne doppelte oder fehlende Präferenzen ab und kontrolliere das Fehlen blockierender Paare.
- Vor dem Anwenden prüfen
- Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen.
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 partnerZuordnungsanforderungen vor der Codeüberarbeitung sichtbar machen
Eine Zuordnungsfunktion braucht mehr als eine Liste von Paaren: Sie braucht klare Angaben zu gültigen Eingaben und akzeptablen Ergebnissen. PairCrest bietet einen KI-Programmierarbeitsbereich für Windows, um diese Anforderungen mit den relevanten Projektdateien zu besprechen. Beginnen Sie mit den Präferenzen, die Ihre Anwendung erhält, und den einzuhaltenden Vorgaben. Bitten Sie anschließend um eine Untersuchung der aktuellen Implementierung.
Das Beispiel für stabile Präferenzzuordnungen bietet eine mögliche Entwicklungsaufgabe. Sie könnten prüfen, wie vollständige Rangfolgen validiert werden, wie noch nicht zugeordnete Einträge während der Verarbeitung dargestellt werden und wie die endgültigen Paarungen den aufrufenden Code erreichen. Falls Ihre Anforderungen Gleichstände, fehlende Präferenzen oder unterschiedlich große Gruppen umfassen, benennen Sie diese Abweichung vor einer Anpassung. Die engeren Annahmen des Beispiels sollten während der gesamten Diskussion sichtbar bleiben, statt zu verborgenen Anwendungsregeln zu werden.
Ein unzensiertes KI-Modell kann über einen unterstützten OpenAI-kompatiblen oder Anthropic-Endpunkt gewählt werden, bei Bedarf mit Zugangsdaten. Modell und Server bestimmen Kontext, Werkzeuge und Einschränkungen. Prüfen Sie die vorgeschlagenen Eingabeprüfungen und die Ergebnisverarbeitung und testen Sie anschließend kleine Präferenztabellen mit nachvollziehbaren Ergebnissen. Ein separater lokaler Modellserver deckt nur die Inferenz ab; andere Werkzeuge können weiterhin externe Dienste kontaktieren.
Eine präferenzbasierte Funktion klären
Wie sieht eine hilfreiche Zuordnungsanforderung aus?
Beschreiben Sie die Gruppen, zulässigen Präferenzformen und die Eigenschaft, die die endgültige Zuordnung erfüllen soll. Geben Sie ein kleines, von Menschen überprüfbares Beispiel an. Vermeiden Sie allgemeine Begriffe wie „beste“, ohne zu sagen, wie die Anwendung ein Ergebnis beurteilen soll.
Kann ich Gleichstände hinzufügen, ohne den umgebenden Vertrag zu ändern?
Gehen Sie nicht davon aus. Das Beispiel erwartet vollständige strikte Präferenzen. Gleichstände können sowohl die Eingabedarstellung als auch die Bedeutung eines akzeptablen Ergebnisses verändern. Fordern Sie diese Entscheidungen ausdrücklich ein, bevor Sie einen vorgeschlagenen Algorithmus oder Änderungen am aufrufenden Code prüfen.
Wie kann ich die Ausgabe ohne großen Testdatensatz prüfen?
Beginnen Sie mit kleinen Präferenztabellen und prüfen Sie die resultierenden Paare anhand der festgelegten Eigenschaft. Beziehen Sie ungültige Rangfolgen ein, um die Zurückweisung zu testen. Diese gezielten Fälle unterstützen die Prüfung; die eigene Testsuite der Anwendung sollte ihre umfassenderen Eingabe- und Integrationsanforderungen abdecken.
Entscheidet PairCrest, was für die Nutzer gerecht ist?
Der Softwarearbeitsbereich legt Ihre Zuteilungsregeln nicht fest. Sie liefern die Anforderungen und bewerten deren Folgen. Lassen Sie den Assistenten Implementierungsannahmen erklären und prüfen Sie dann, ob diese zu den für Ihre Anwendung vorgesehenen Regeln passen.
PairCrest · Aktualisiert 2026-10-25