algorithm - 座位有多少种排列方式

标签 algorithm math data-structures combinations dynamic-programming

我在其中一次采访中发现了以下问题。请给我建议这个算法。我不需要代码。

电影院里有 N 个人和 N 个座位。每个人都有自己喜欢的座位列表,例如:

人 1 -> 1、2、4

人 2 -> 2 , 5

人 3 -> 1、3 等等 ..

我需要找到可以按稳定顺序排列座位的方式的数量(这意味着每个人都必须从那里的偏好列表中找到座位)。

最佳答案

如果我们用图形语言翻译您的问题,我们将获得 bipartite graph其中人和座位代表两组不相交的顶点。您要查找的是此类图中的多个完美匹配。

我很惊讶你在采访中发现了这个问题,因为这是一个严肃的科学研究课题。您应该查看两篇论文:

简而言之,第一篇论文提供了一种算法来枚举O(c(n+m)+n^(2.5))中的所有完美匹配。时间,而第二篇论文对其进行了改进并给出了 O(mn^(0.5)+ cn) 的算法时间,在哪里n表示顶点数,m表示边数,c表示给定二部图中完美匹配的数量。

关于algorithm - 座位有多少种排列方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167788/

相关文章:

algorithm - AVL 树 : How to do index access?

java - 骑士之旅问题 - 移动顺序影响性能

Python:找到两个列表中存在的给定长度的公共(public)子列表

javascript - 获取大数的最后 13 位数字

math - 处理数学函数中的错误

database - RTree 前步骤 : Divide a set of points into rectangular regions each containing one point

python - 如何在python中合并两个数据结构

algorithm - 这种用于第 N 个斐波那契数的 O(log n) 迭代方法如何工作?

通过最少的移动次数来最小化装满球的桶的最大重量的算法

algorithm - O(n) 中的 Frechet 距离