数据结构与算法--二分匹配

简介: 数据结构与算法--二分匹配

在Python中实现二分匹配,可以使用网络流算法中的hopcroft-karp算法或经典的匈牙利算法。以下是一个基于匈牙利算法实现二分匹配的简要示例:

Python

1import numpy as np
2
3def hungarian_algorithm(cost_matrix):
4    def _make_cover_zero(matrix):
5        n = len(matrix)
6        for i in range(n):
7            minval = min(matrix[i])
8            matrix[i] -= minval
9        return sum(minval for minval in matrix.flat)
10
11    def _augment_path(matrix, parents, u):
12        if parents[u] < 0:
13            return True
14        v = parents[u]
15        _augment_path(matrix, parents, parents[v])
16        matrix[u][v], matrix[v][u] = matrix[v][u], matrix[u][v]
17        return False
18
19    n = len(cost_matrix)
20    matrix = cost_matrix.copy()
21    parents = [-1] * n
22    cover = 0
23
24    while True:
25        cover += _make_cover_zero(matrix)
26        queue = [i for i in range(n) if parents[i] < 0]
27        while queue:
28            u = queue.pop(0)
29            for v in range(n):
30                if matrix[u][v] == 0 and parents[v] < 0:
31                    parents[v] = u
32                    if _augment_path(matrix, parents, v):
33                        return cover
34        if not any(parents[i] < 0 for i in range(n)):
35            break
36
37    return cover
38
39# 使用示例
40cost_matrix = np.array([[0, 5, 9], 
41                       [4, 0, 7], 
42                       [8, 2, 0]])
43print(hungarian_algorithm(cost_matrix))  # 输出匹配的边数

请注意,上述代码仅提供了一个基础实现,并未完全优化,且未处理非二分图的情况。

目录
相关文章
|
8月前
|
JavaScript 中间件 测试技术
FastAPI全面指南:从入门到企业级应用实战
FastAPI正迅速成为Python Web开发领域的明星框架。它以高性能、高效率和现代化特性著称,性能媲美Go/Node.js,支持异步编程并内置自动化文档系统。本文全面解析FastAPI核心功能,包括类型安全路由、Pydantic数据验证、异步支持等,并通过实战案例展示其在RESTful API开发、微服务架构、实时数据处理及机器学习模型部署中的应用。同时,文章提供数据库集成、中间件配置和测试策略等最佳实践,解决常见问题并展望未来技术发展方向。掌握FastAPI,助你构建高效现代化Web应用。
1331 1
|
8月前
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
1974 4
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
917 150
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1655 8
|
7天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
608 152
|
9天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
579 13