我不是计算机科学理论家,但认为此现实问题属于此。
问题
我公司在全国各地设有几家分公司。
我们向员工提供了在另一个部门工作的可能性。但是有一个条件:单位的工人总数不能改变。
这意味着:如果某人想要他的职位,我们将允许其员工离开单位。
示例(虚拟)请求数据:
Name Origin Destination
Maria 1 -> 2
Marcos 2 -> 3
Jones 3 -> 4
Terry 4 -> 5
Joe 5 -> 6
Rodrigo 6 -> 1
Barbara 6 -> 1
Marylin 1 -> 4
Brown 4 -> 6
Benjamin 1 -> 3
Lucas 4 -> 1
上面,绘制:
看看我们如何在红色,蓝色或黑色选项之间进行选择?
真正的问题要复杂一点,因为我们有27个单元和751个请求。请看一下可视化
目标
收集了所有请求后,如何满足大多数请求?
理论(?)应用
有了图,让每个单元为一个顶点,一个请求为有向边,成功的交换将采取有向循环的形式。
每个循环只能使用一次(一个工人不能两次离开他的单位),但是可以多次访问(一个单位可以有许多想离开的工人)。
问题
如果这个问题表示为
“如何找到有向图共同包含最大数量的非共享边的循环”?
我们会满足大多数要求者吗?
没错,有一种算法可以找到最佳循环集?
这种贪婪的方法会解决问题吗?
- 在上找到最大的有向环;
- 从移除边缘;
- 重复1直到没有定向循环;
你能帮助我吗?
您是否知道另一种描述原始问题的方式(使大多数请求者感到满意)?
编辑:将部门更改为部门,以更好地描述问题。