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)モデル
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
プロジェクト
孤立頂点と増加道による再割り当てを試し、辺集合を変更せず不正な番号を拒否します。
適用前に確認
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
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)編集前に割り当ての目的を明確にする
MatchOrielは、割り当てロジックを利用するアプリケーションの文脈で検討するためのWindows向けAIコーディング環境です。ソースプロジェクトを開き、ペアを許可する条件と結果で最適化すべきものを説明してください。変更を提案する前に、入力構造とコードに要件がどう現れるか、接続したアシスタントに確認してもらいます。
最大要素数マッチングが一例です。許可するペアを示し、目的が単にできるだけ多くのメンバーを割り当てることか説明します。以前の選択を割り当て直さないと目的を達成できないケースのレビューをモデルに依頼してください。マッチングの大きさだけでは優先順位や他の業務規則は定まらないため、必要なら明示します。
提案を確認し、返されたペアの辺が有効でメンバーの重複がないかテストしてください。孤立したメンバーや拒否すべきインデックスをプロジェクトの検証に含め、未割り当ての項目を呼び出し側がどう扱うかレビューします。MatchOrielは、必要に応じて認証情報を使うOpenAI互換またはAnthropicのエンドポイント接続に対応します。サービスが提供すれば制限のないモデルを選べますが、プロバイダーの規則とサーバーのコンテキスト・ツール能力は引き続き適用されます。変更の妥当性はアシスタントの自信ではなく、明示した目的で評価してください。
許可ペアの割り当てをレビューする
最大のマッチングは希望順位も尊重しますか?
自動的には尊重しません。例の目的は許可ペア内の割り当て数の最大化です。希望に対する安定性や重み付きの質が重要なら別途指定し、提案されたアルゴリズムが件数だけでなくその目的も扱うか確認してください。
割り当て直しが必要なケースを含めるのはなぜですか?
以前の選択を修正できる解法と、早く止まりすぎる貪欲な処理を区別できます。期待するペア数と有効な代替案を示し、コード案とその出力を例に照らして調べてください。
テストでは特定のペア集合だけを要求すべきですか?
仕様がその結果を必要とする場合に限ります。複数の割り当てが同じ最大要素数を満たすことがあります。有効性、メンバーの重複がないこと、件数を確認し、テストを厳密にする前に順序や同点処理の要件を文書化してください。
未割り当てメンバーを呼び出し側へどう伝えるべきですか?
欠けたペアから導出するのか、明示的な表現が必要なのかを定義してください。戻り値の構造とその境界を確認し、孤立した入力をテストして、正当な未割り当てメンバーを解析失敗と誤認しないようにします。
MatchOriel · 更新日 2026-10-25