danieldzzz / bipartite
bipartite 图的 PHP 实现
1.0.0
2022-08-19 21:45 UTC
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^6.1
README
接受一个无权 bipartite 图作为输入,并返回最大基数匹配。
这是 Hopcroft-Karp bipartite 匹配算法的 PHP 实现。
https://en.wikipedia.org/wiki/Hopcroft%E2%80%93Karp_algorithm
安装
composer require danielzzz/bipartite
实际应用
此算法可用于例如,当组 A 的每个成员需要与组 B 的人进行多次会议时,最大化会议数量。
$input = [
'personA' => ['person3', 'person1'],
'personB' => ['person3'],
'personC' => ['person4', 'person2'],
'personD' => ['person2']
];
$bipartite = new Bipartite();
$result = $bipartite->match($input);
/*
result:
^ array:4 [
"personA" => "person1"
"personC" => "person4"
"personD" => "person2"
"personB" => "person3"
]
*/
测试
composer test