Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的Edmonds最大匹配算法_Php_Algorithm_Graph_Matching - Fatal编程技术网

PHP中的Edmonds最大匹配算法

PHP中的Edmonds最大匹配算法,php,algorithm,graph,matching,Php,Algorithm,Graph,Matching,我在互联网上到处搜索,试图找到PHP中的示例代码,但我无法做到这一点。我想做的是将课程与房间相匹配,其中课程有一组与之兼容的房间 示例:课程A可以在X、Y和Z房间教授,课程B可以在p和Q房间教授 在给定的时间段内,每门课程只能与一个房间相匹配。我必须创建一个函数来接受这两组房间和课程,并输出最大匹配。有人能提供PHP的源代码让我开始吗?我以前从未建立过匹配算法,也不知道从哪里开始。你可以试试Igor Naverniouk的代码。它是用C++编写的,但是你可以很容易地把它转换成PHP。< /P>你

我在互联网上到处搜索,试图找到PHP中的示例代码,但我无法做到这一点。我想做的是将课程与房间相匹配,其中课程有一组与之兼容的房间

示例:课程A可以在X、Y和Z房间教授,课程B可以在p和Q房间教授


在给定的时间段内,每门课程只能与一个房间相匹配。我必须创建一个函数来接受这两组房间和课程,并输出最大匹配。有人能提供PHP的源代码让我开始吗?我以前从未建立过匹配算法,也不知道从哪里开始。

你可以试试Igor Naverniouk的代码。它是用C++编写的,但是你可以很容易地把它转换成PHP。< /P>你如何存储/检索你的数据(课程,房间)?或者你已经达到了这一点吗?维基百科中有伪代码,你可以从那里开始。你描述的设置是一个二部图,有一些算法可以在二部图中找到最大匹配,比Edmonds的算法快得多。几乎可以肯定的是,找到并实现这些算法中的一个会有更好的运气。数据存储在mysql数据库中,并从中检索@templatetypedef我同意有更快的算法。我相信Hopcroft-Karp二部匹配算法比其他算法更快。但是我不知道如何编写实际代码来接受课程名称和房间的关联数组作为输入。非常感谢,这对我来说绝对是一个正确方向的开始。但是,我仍然不确定输入矩阵的格式。进一步阅读后,我发现PHP使用矩阵作为2D数组。要使此代码正常工作,输入必须是一个m x n矩阵,如果存在匹配,则该矩阵的值为1,如果不存在匹配,则该矩阵的值为0。我应该有这样一个矩阵:$matrix['course_name']['room_name']=1表示匹配,0表示不匹配,还是我必须为每个课程名称和房间名称分配一个唯一的数字,并将其用作数组的索引?我认为您应该为每个课程和房间(从1到n)分配唯一的数字(增量,从1到m)。当然,可以修改代码以使用名称作为索引,但我认为这会有点慢。非常感谢您的帮助。你的回答很有帮助。