2017-04-25 85 views
1

所以我目前在一个高级数据结构类,并了解了一点关于图。今年夏天,我被要求帮助写一个算法来匹配室友。现在对于我的数据结构类,我写了一个城市路径图,并执行一些排序和初始化算法,我很奇怪图表可能是一个开始使用我的室友匹配算法的好地方。室友匹配算法

我在想,我们的数据库可能只是一个文本文件,没什么太花哨。然而,我可以初始化图中的每个节点作为学生,每个学生对更多的学生都会有一个无定向的边缘(对于不想与另一个同室友的学生来说,没有优势,联谊会也不希望重复室友)。现在,我还可以根据特殊兴趣改变边缘权重。

上面列出的一切都很简单,我不认为我会遇到任何实施它的问题。但这是我的问题:

_我应该如何更新共同兴趣领域?我应该从物理调查开始,然后回到文本文件并手动更新边缘的重量吗?还是应该创建一个跟踪匹配兴趣的字段?

顺便说一句,一切都将用Java编写。

回答

0

你试图设计的是叫做双方匹配。幸运的是,与其他二分配匹配算法不同,您不需要花哨的图算法和复杂的实现。这是非常接近的Stable Marriage Problem和令人惊讶的是有非常有效甚至更简单的算法。

如果您有兴趣,我可以分享我的稳定婚姻问题的C++实现。