mosp LEDA Extension Package
0.7
|
In Matchings with One Sided Preferences we are given a bipartite graph where
. Set
denotes a set of applicants and set
of posts. Each applicant in
submits a preference list (a ranking of a subset of the posts, possibly including ties). Edges which are choice
are called rank
edges.
Given this setting we may ask for matchings which satisfy different optimization criteria. This library contains code for the two following such criteria.
A rank-maximal matching is a matching which contains the maximum number of first choice edges. Given that constraint it contains the maximum number of second choice edges and so on. A rank-maximal matching can be computed in polynomial time. libMOSP contains three implementations which compute such a matching:
Except for the above, libMOSP contains an implementation of a rank-maximal matching algorithm with capacities. In this case the nodes of the right-side partition of the bipartite graph may have capacities larger that 1, i.e. they may be matched more than once. The library contains:
We say that a matching is more popular than matching
if more applicants prefer
than those who prefer
. Applicants who are indifferent are ignored. A matching
is popular if there is no other matching which is more popular.
Popular matchings can also be computed in polynomial time (see here for more details), but unfortunately they do not always exist. In that case we wish to compute matchings which approximate the least unpopular matching (see here for more details).
libMOSP contains two algorithms.
libMOSP also provides routines to compute the so called "unpopularity factor" and the "unpopularity margin" of a matching (see McCutchen 2007).
The library also contains 4 random structured instance generators.
This implementation is written in C++ and uses LEDA. The structure of the package follows that of a LEDA extension package (LEP).
This package has been tested on the following platforms:
but it may work on others too.
This program can be freely used in an academic environment ONLY for research purposes, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software an acknowledgment in the product documentation is required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Any other use is strictly prohibited by the author, without an explicit permission. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Note that this package uses LEDA, which is not free.
The repository can be found at github.