Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Algorithm 有可能让每个人都满意吗?_Algorithm_Graph_Logic_Nodes_Matching - Fatal编程技术网

Algorithm 有可能让每个人都满意吗?

Algorithm 有可能让每个人都满意吗?,algorithm,graph,logic,nodes,matching,Algorithm,Graph,Logic,Nodes,Matching,将为您提供两组节点,每个节点具有相同的节点数。集合A包含一个人员列表。集合B包含项目列表。每个人对集合B中任意数量的项目都有偏好。如果我们将这些偏好表示为人员节点和项目节点之间的连接,则每个节点必须至少有一个连接 起初我认为每个人都可以得到他们想要的东西,但这并不总是正确的,例如,可能会发生这样的事情: 我的一个想法是,只要图中存在(设置A大小+设置B大小-1)或更多连接,就始终可以形成有效的连接。然而,我很难证明这一点的正确性。 你知道这是否正确吗?还是有完全不同的解决方案?恐怕你的理论不正

将为您提供两组节点,每个节点具有相同的节点数。集合A包含一个人员列表。集合B包含项目列表。每个人对集合B中任意数量的项目都有偏好。如果我们将这些偏好表示为人员节点和项目节点之间的连接,则每个节点必须至少有一个连接

起初我认为每个人都可以得到他们想要的东西,但这并不总是正确的,例如,可能会发生这样的事情:

我的一个想法是,只要图中存在(设置A大小+设置B大小-1)或更多连接,就始终可以形成有效的连接。然而,我很难证明这一点的正确性。
你知道这是否正确吗?还是有完全不同的解决方案?

恐怕你的理论不正确。想象一下,A组有10个人,B组有10件物品。你的理论说需要19个连接。但事实上,你可以在没有解决方案的情况下拥有更多

例如,将集合拆分为7和3组。然后将7人组中的每个人连接到7个项目组中的每个项目。这是49个连接

如问题所示,这两组3人仍然可以连接。因此,有了10个人和10个项目,您就可以有53个连接,而无需解决方案


感谢您在评论中指出

我将在这里解释这个定理。证据在链接的文章中

给定两个大小相等的集合A和B,饱和匹配是A 覆盖两个集合的每个元素的匹配

对于b的子集{b},让{a}表示a的具有 与{b}的连接。婚姻定理表明A和B具有 a饱和匹配当且仅当对于b的每个子集b:


|恐怕你的理论不正确。想象一下,A组有10个人,B组有10件物品。你的理论说需要19个连接。但事实上,你可以在没有解决方案的情况下拥有更多

例如,将集合拆分为7和3组。然后将7人组中的每个人连接到7个项目组中的每个项目。这是49个连接

如问题所示,这两组3人仍然可以连接。因此,有了10个人和10个项目,您就可以有53个连接,而无需解决方案


感谢您在评论中指出

我将在这里解释这个定理。证据在链接的文章中

给定两个大小相等的集合A和B,饱和匹配是A 覆盖两个集合的每个元素的匹配

对于b的子集{b},让{a}表示a的具有 与{b}的连接。婚姻定理表明A和B具有 a饱和匹配当且仅当对于b的每个子集b:


|b |我将以以下方式处理这个问题:

  • 根据边缘的数量(从低到高)对一个人进行分类

  • 如果a中的一个人在B中只有一个首选项,则分配它

  • 当a中的一个人在B中有多个首选项时,请选择a中首选项人数最少的项


我会用回溯法来解决这个问题。

我会用以下方法来解决这个问题:

  • 根据边缘的数量(从低到高)对一个人进行分类

  • 如果a中的一个人在B中只有一个首选项,则分配它

  • 当a中的一个人在B中有多个首选项时,请选择a中首选项人数最少的项


我会通过回溯来实现这一点。

FYI,我回滚了您的编辑,首先是因为它使现有答案无效,其次是因为更新版本没有足够精确地解释目标,因此无法回答问题。一般来说,没有。霍尔的婚姻定理()提供解决方案存在的必要和充分条件。如果您有100人,99项,每个人都喜欢每项,那么您显然没有解决方案,但有9900个连接。仅供参考,我已回滚您的编辑,首先是因为它使现有答案无效,第二,因为更新版本没有足够精确地解释问题的目的。一般来说,霍尔的婚姻定理()给出了解决方案存在的充分必要条件。如果你有100个人,99个项目,每个人都喜欢每个项目,那么你显然没有解决方案,但是9900个连接。如果你假设有N+1个人和N个每个人都喜欢的项目,那么你的算法将尝试N!失败前的组合。不是真的。不是每个人都喜欢的项目将是首选项目(步骤3),其他人只会选择剩下的N个项目中的任何一个。事实上,这可能只需要一次迭代就能解决。如果你假设有N+1个人和N个大家都喜欢的项目,那么你的算法将尝试N!失败前的组合。不是真的。不是每个人都喜欢的项目将是首选项目(步骤3),其他人只会选择剩下的N个项目中的任何一个。事实上,这可能只在一次迭代中解决。