Pencocokan bipartit maksimum
Temukan pencocokan berkardinalitas maksimum antara dua kelompok berisi hingga 32 simpul berdasarkan himpunan sisi yang diizinkan.
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)Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Proyek
Uji simpul terisolasi dan penugasan ulang lewat lintasan penambah, tolak indeks salah tanpa mengubah himpunan.
Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
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)Perjelas tujuan pemasangan sebelum mengedit
MatchOriel adalah ruang kerja pemrograman AI di Windows untuk membahas logika pemasangan dalam konteks aplikasi yang menggunakannya. Buka proyek sumber dan jelaskan syarat pasangan yang diizinkan serta tujuan optimasi hasil. Minta asisten yang terhubung memeriksa representasi kebutuhan itu dalam struktur masukan dan kode sebelum mengusulkan perubahan.
Tugas pencocokan berkardinalitas maksimum merupakan salah satu contoh. Sertakan pasangan yang diizinkan dan jelaskan apakah tujuannya sekadar memasangkan sebanyak mungkin anggota. Minta model meninjau kasus ketika pilihan sebelumnya harus diubah untuk mencapai tujuan itu. Nyatakan peringkat preferensi atau aturan bisnis lain secara eksplisit jika dibutuhkan aplikasi, karena ukuran pencocokan tidak membuktikan pemenuhannya.
Periksa usulan dan uji apakah pasangan hasil merupakan sisi yang valid dengan keanggotaan unik. Sertakan anggota yang tidak terhubung dan indeks yang ditolak dalam pemeriksaan proyek, lalu tinjau penanganan entri yang tidak mendapat pasangan oleh pemanggil. MatchOriel mendukung koneksi endpoint yang kompatibel dengan OpenAI atau Anthropic dengan kredensial bila diperlukan. Model tanpa pembatasan dapat dipilih jika layanan Anda menawarkannya; aturan penyedia serta kapasitas konteks dan alat server tetap berlaku. Gunakan tujuan yang dinyatakan, bukan keyakinan asisten, untuk menilai kelayakan perubahan.
Meninjau pemasangan pasangan yang diizinkan
Apakah pencocokan terbesar juga memenuhi preferensi?
Tidak otomatis. Tugas ilustratif memaksimalkan jumlah pemasangan di antara pasangan yang diizinkan. Jika kestabilan preferensi atau kualitas berbobot penting, tentukan secara terpisah dan tinjau apakah algoritme yang diusulkan menangani tujuan tersebut, bukan hanya jumlah.
Mengapa menyertakan kasus yang memerlukan pemasangan ulang?
Kasus itu membedakan solusi yang dapat merevisi pilihan sebelumnya dari proses rakus yang mungkin berhenti terlalu dini. Berikan jumlah pasangan yang diharapkan dan alternatif valid, lalu periksa usulan kode serta keluarannya berdasarkan contoh tersebut.
Haruskah pengujian mensyaratkan satu himpunan pasangan tertentu?
Hanya jika kontrak mensyaratkan hasil spesifik itu. Beberapa pemasangan dapat memenuhi tujuan kardinalitas maksimum yang sama. Periksa validitas, keanggotaan unik, dan ukuran, serta dokumentasikan kebutuhan urutan atau pemecah seri sebelum memperketat data uji.
Bagaimana anggota tanpa pasangan disampaikan kepada pemanggil?
Tentukan apakah pemanggil menyimpulkannya dari pasangan yang tidak ada atau mengharapkan representasi eksplisit. Tinjau batas itu bersama struktur hasil, lalu uji masukan yang tidak terhubung agar aplikasi tidak menganggap anggota tanpa pasangan yang sah sebagai kegagalan penguraian.
MatchOriel · Diperbarui 2026-10-25