Stable Marriage Problem

No algorithm description given

In mathematics, economics, and computer science, the stable marriage problem (SMP) is the problem of finding a stable matching between two sets of elements given a set of preferences for each element. A matching is a mapping from the elements of one set
 to the elements of the other set. A matching is stable whenever it is not the case that both: 
 
 
 
 some given element A of the first matched set prefers some given element B of the second matched set over the element to which A is already matched, and 
 
 
 
 B also prefers A over the element to which B is already matched 
 
 
 
 
 In other words, a matching is stable when there does not exist any alternative pairing (A, B) in which both A and B are individually better off than they would be with the element to which they are currently matched. 
 
 The stable marriage problem is commonly stated as: 
 
 
 
 Given n men and n women, where each person has ranked all members of the opposite sex with a unique number between 1 and n in order of preference, marry the men and women together such that there are no two people of opposite sex who would both rather
 have each other than their current partners. If there are no such people, all the marriages are "stable". (It is assumed that the participants are binary gendered and that marriages are not same-sex). 
 
 Source: http://en.wikipedia.org/wiki/Stable_marriage_problem 
 
 Input should be an object of class Map<String,List<String>>, in which each key is a node name, and its value is an ordered list of names denoting preferences (the first element being the highest preference). The structure of the problem
 implies that the input contain 2n elements, n of which are “male” and include each of the n “female” nodes in their preference list, and vice versa. Output Map<String,String> where each key is paired with its value. 
 Note that the algorithm is not symmetric in its optimality: as implemented,
 
 
 it is optimal for the "suitors", but the stable, suitor-optimal solution 
 
 
 
 may or may not be optimal for the "reviewers". 
 
 
 


Tags
(no tags)

Cost Breakdown

0 cr
royalty per call
1 cr
usage per second
avg duration

Cost Calculator

API call duration (sec)
×
API calls
=
Estimated cost
per calls
for large volume discounts
For additional details on how pricing works, see Algorithmia pricing.

Internet access

This algorithm has Internet access. This is necessary for algorithms that rely on external services, however it also implies that this algorithm is able to send your input data outside of the Algorithmia platform.


To understand more about how algorithm permissions work, see the permissions documentation.

1. Type your input

2. See the result

Running algorithm...

3. Use this algorithm

curl -X POST -d '{{input | formatInput:"curl"}}' -H 'Content-Type: application/json' -H 'Authorization: Simple YOUR_API_KEY' https://api.algorithmia.com/v1/algo/Aluxian/StableMarriageProblem/0.1.0
View cURL Docs
algo auth
# Enter API Key: YOUR_API_KEY
algo run algo://Aluxian/StableMarriageProblem/0.1.0 -d '{{input | formatInput:"cli"}}'
View CLI Docs
import com.algorithmia.*;
import com.algorithmia.algo.*;

String input = "{{input | formatInput:"java"}}";
AlgorithmiaClient client = Algorithmia.client("YOUR_API_KEY");
Algorithm algo = client.algo("algo://Aluxian/StableMarriageProblem/0.1.0");
AlgoResponse result = algo.pipeJson(input);
System.out.println(result.asJsonString());
View Java Docs
import com.algorithmia._
import com.algorithmia.algo._

val input = {{input | formatInput:"scala"}}
val client = Algorithmia.client("YOUR_API_KEY")
val algo = client.algo("algo://Aluxian/StableMarriageProblem/0.1.0")
val result = algo.pipeJson(input)
System.out.println(result.asJsonString)
View Scala Docs
var input = {{input | formatInput:"javascript"}};
Algorithmia.client("YOUR_API_KEY")
           .algo("algo://Aluxian/StableMarriageProblem/0.1.0")
           .pipe(input)
           .then(function(output) {
             console.log(output);
           });
View Javascript Docs
var input = {{input | formatInput:"javascript"}};
Algorithmia.client("YOUR_API_KEY")
           .algo("algo://Aluxian/StableMarriageProblem/0.1.0")
           .pipe(input)
           .then(function(response) {
             console.log(response.get());
           });
View NodeJS Docs
import Algorithmia

input = {{input | formatInput:"python"}}
client = Algorithmia.client('YOUR_API_KEY')
algo = client.algo('Aluxian/StableMarriageProblem/0.1.0')
print algo.pipe(input)
View Python Docs
library(algorithmia)

input <- {{input | formatInput:"r"}}
client <- getAlgorithmiaClient("YOUR_API_KEY")
algo <- client$algo("Aluxian/StableMarriageProblem/0.1.0")
result <- algo$pipe(input)$result
print(result)
View R Docs
require 'algorithmia'

input = {{input | formatInput:"ruby"}}
client = Algorithmia.client('YOUR_API_KEY')
algo = client.algo('Aluxian/StableMarriageProblem/0.1.0')
puts algo.pipe(input).result
View Ruby Docs
use algorithmia::*;

let input = {{input | formatInput:"rust"}};
let client = Algorithmia::client("YOUR_API_KEY");
let algo = client.algo('Aluxian/StableMarriageProblem/0.1.0');
let response = algo.pipe(input);
View Rust Docs
Discussion
  • {{comment.username}}