【轮子】有权二部图中的最大匹配、最小匹配python轮子
有权二部图的匹配问题往往采用匈牙利算法求解。算法的原理可以参考14-3: 有权二部图中的最大匹配 Maximum-Weight Bipartite Matching。此处给出一个求解匹配问题的库,pip安装参考https://pypi.org/project/munkres/,此处给出其提供的源码:
from munkres import Munkres, print_matrixmatrix = [[5, 9, 1],[10, 3, 20],[8, 7, 4]]#二部图邻接矩阵
m = Munkres()
indexes = m.compute(matrix)
print_matrix(matrix, msg='Lowest cost through this matrix:')
total = 0
for row, column in indexes:value = matrix[row][column]total += valueprint(f'({row}, {column}) -> {value}')
print(f'total cost: {total}')
输出结果为:
Lowest cost through this matrix:
[ 5, 9, 1]
[10, 3, 20]
[ 8, 7, 4]
(0, 2) -> 1
(1, 1) -> 3
(2, 0) -> 8
total cost: 12
即完全匹配的配对方式为(0, 2), (1, 1), (2, 0)时可以得到最小损失,为12。注意输入的matrix需要为一个list,不能为numpy,否则会得到错误结果。
参考资料:
- https://stackoverflow.com/questions/4426131/maximum-weight-minimum-cost-bipartite-matching-code-in-python
- https://stackoverflow.com/questions/4075669/hungarian-algorithm-in-python
- https://software.clapper.org/munkres/
【轮子】有权二部图中的最大匹配、最小匹配python轮子相关推荐
- ruby中正则表达式最小匹配与最大匹配
正则表达式中,默认的是最大匹配,即贪婪模式,但有些时候,要最小匹配, 请看下面的例子:(ruby) str = "abbbbbdwwdwwwede" puts str[/a.*(d ...
- 分治法求数组中的最大最小元素
#include<iostream> using namespace std; //分而治之法求数组中的最大最小元素 void maxmin(int i,int j,int A[],int ...
- 熵权法中计算的熵值与决策树的熵值完全不一样之谜
熵权法中的熵值计算公式如图所示: 比如说某个评价的指标完全一样,1,1,1,1,1,1 那么m=6,p1到p6的概率均等于1/6:这个时候的熵值是最大的:所以在计算指标权重时,用这种方法反而是数据越小 ...
- 海量数据中,寻找最小的k个数。
维护k个元素的最大堆,即用容量为k的最大堆存储最小的k个数,k1设为大顶堆中最大元素.遍历一次数列,n,每次遍历一个元素x,与堆顶元素比 较,x<kmax,更新堆,否则不更新堆. 1 // 海量 ...
- c编程:求出4#215;4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和。...
//求出4×4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和 #include <stdio.h> int main() {int sum=0;int max,mi ...
- 【2021牛客暑期多校训练营5】Jewels(建图,最小匹配权,KM乱搞)
J Jewels 题意: 给出n个点的位置x,y,z以及速度v,从第t=0秒开始打捞,打捞点i的代价为x^2+y^2+(z+t*v)^2,求打捞所有点的最小代价. 思路: 所有的宝石肯定都在 0~n- ...
- 找出列表中最大或最小的元素-python3
""" 找出列表中最大或最小的元素Version: 1.0.0 Author: Catherine Data: 2019-03-11 """ ...
- SAP中的物料最小订购量
[@more@]SAP 物料主数据中的舍入值(Rounding QTY) 和采购信息记录中的最小数量(Minimum Qty),验证他们的作用和优先级. 1.在设定方面,最小订购量可以位于物料主数据中 ...
- aka鉴权 ims_IMS鉴权过程中各参数的用途
IMS 鉴权过程中各参数的用途 发帖日期: 2011-08-18 14:12:52 按照目前的国际规范, IMS 认证方式主要有 IMS AKA . SIP Digest . NASS-IMS Bun ...
- 堆排序及从10亿个数据中找出最小或最大的10个数
高频面试题目 一.堆排序 1.基础知识 * ------基本知识: * 1. 堆数据结构特征: * 大顶堆:所有父节点大于等于左右子节点,arr[i] >= arr[2i+1] &&am ...
最新文章
- Session对象失效的客户端解决方法
- 如何修复修复损坏的TAU G2的.u2文件
- m3u8地址_「波波带你手动提取网页视频」04讲 Network和Elements提取m3u8链接
- 分布式Matlab计算集群建立方法与Demo
- 贫血的Domain Model之说
- 可以创建专业的客户端/服务器视频会议应用程序的音频和视频控件LEADTOOLS Video Conferencing SDK...
- 外国人怎么看祖冲之量子计算机,我国“祖冲之号”量子计算机再次刷新纪录:1.2 小时完成超算 8 年计算量...
- 如何改变“只收藏不阅读”的习惯
- java多数据源事务处理_springboot整合多数据源解决分布式事务
- cruisecontrol 持续化集成(运行bat脚本)
- CSS:个人常用搜索框样式
- 饱和度,对比度,锐度
- 線上 Android/Linux Kernel Source Code瀏覽 - Android/Linux Source Code Cross Reference
- 价值百万的2022年度总结
- raspberry 4b|点亮树莓派桌面(以及坑总结)
- 服装实体店运营需要的所有软件,合集在此!(建议收藏)实体店运营 实体店运营干货 实体店运营全流程所需系统推荐
- 计算机专业自我认知swot,计算机专业自我认知.doc
- 读《半生烟雨,半世落花:李清照传》小感
- Java后端工程师必备书单(从Java基础到分布式)
- 那些年啊,那些事——一个程序员的奋斗史 ——94