Aula 02 - Emparelhamento Estável
Universidade Federal do Rio Grande do Sul
Instituto de Informática
Departamento de Informática Teórica
Estes slides utilizam conteúdo adaptado da bibliografia da disciplina e também de notas de aula e slides prévios dos professores Bruno Grisci, Rodrigo Machado, André Grahl Pereira, Lucas Nunes Alegre, Marcus Ritt e Luciana Buriol.
Objetivo: Dado um conjunto de preferências entre hospitais e estudantes de medicina, definir um processo de admissão autoimposto.

Par Instável: estudante e e hospital h são instáveis se:
Emparelhamento Estável:
Exemplo: Empresas e estudantes.
Objetivo: Dado um conjunto de n hospitais e um conjunto de n estudantes, encontrar uma atribuição adequada.
Exemplo de Instância (3 hospitais, 3 estudantes):
Preferências dos Hospitais:
Preferências dos Estudantes:
Def. Um emparelhamento S é um conjunto ordenado de pares h-e com h \in H e e \in E tal que cada hospital h \in H e cada estudante e \in E aparece no máximo em um par de S.
Def. Um emparelhamento S é perfeito se |S|=|H|=|E|=n.
Exemplo de Emparelhamento Perfeito:
Def. Dado um emparelhamento perfeito S, um hospital h e uma estudante e são um par instável se:
- h prefere e a seu parceiro atual; e
- e prefere h a seu parceiro atual.
Obs. Um par instável (h, e) pode melhorar seus parceiros com uma ação conjunta.
Exemplo:
Preferências:
Emparelhamentos:
Def. Um emparelhamento estável é um emparelhamento perfeito sem pares instáveis.
Problema: Dadas listas de preferências de n hospitais e n estudantes, encontrar um emparelhamento estável (se existir).
P: Emparelhamentos estáveis sempre existem?
Problema: Colega de Quarto Estável.
P: Emparelhamentos estáveis sempre existem?
| 1ª | 2ª | 3ª | |
|---|---|---|---|
| A | B | C | D |
| B | C | A | D |
| C | A | B | D |
| D | A | B | C |
Observações sobre instabilidades:
Conclusão: Não existe emparelhamento perfeito que seja estável neste exemplo.
P: Como encontrar um emparelhamento estável?
Algoritmo intuitivo que garante encontrar um emparelhamento estável.
O que mostrar?
Item 1: Emparelhamento perfeito.
Item 2: Sem pares instáveis.
Item 3: Algoritmo G-S termina.
Item 4: Justiça.
Afirmação. No Algoritmo G-S, todos os hospitais e estudantes são emparelhados.
Prova. Prova por contradição.
O que mostrar?
Item 1: Emparelhamento perfeito.
Item 2: Sem pares instáveis.
Item 3: Algoritmo G-S termina.
Item 4: Justiça.
Afirmação. No Algoritmo G-S, não existem pares instáveis.
Prova. S é perfeito. Suponha para o efeito de contradição que o par (h, e) \in S é instável.
O que mostrar?
Item 1: Emparelhamento perfeito.
Item 2: Sem pares instáveis.
Item 3: Algoritmo G-S termina.
Item 4: Justiça.
Obs. Hospitais propõem para estudantes em ordem decrescente de preferência (apenas piora).
Obs. Assim que uma estudante é proposta, ela nunca fica sozinha, ela apenas troca a proposta atual por uma proposta melhor (apenas melhora).
P: Como provar que o algoritmo termina?
P: Como medir progresso? . . . Número de indivíduos livres? . . . Número de pares? . . . Número de propostas realizadas?
Afirmação. O algoritmo termina no máximo após n^2 iterações do loop.
Prova. A cada iteração do loop um hospital propõe para uma nova estudante. Existem apenas n^2 possíveis propostas. \blacksquare
Hospitais
| 1ª | 2ª | 3ª | 4ª | 5ª | |
|---|---|---|---|---|---|
| V | A | B | C | D | E |
| W | B | C | D | A | E |
| X | C | D | A | B | E |
| Y | D | A | B | C | E |
| Z | A | B | C | D | E |
Estudantes
| 1ª | 2ª | 3ª | 4ª | 5ª | |
|---|---|---|---|---|---|
| A | W | X | Y | Z | V |
| B | X | Y | Z | V | W |
| C | Y | Z | V | W | X |
| D | Z | V | W | X | Y |
| E | V | W | X | Y | Z |
Exemplo: Pior caso.
Afirmação. O algoritmo realiza no máximo n(n-1)+1 propostas.
Prova.
Teorema. [Gale-Shapley 1962] O algoritmo Gale-Shapley garante encontrar um emparelhamento estável para qualquer instância do Problema de Emparelhamento Estável.
P: Se existem múltiplos emparelhamentos estáveis, qual o algoritmo G-S irá retornar? A ordem das propostas importa?
O que mostrar?
Item 1: Emparelhamento perfeito.
Item 2: Sem pares instáveis.
Item 3: Algoritmo G-S termina.
Item 4: Justiça.
P. A ordem em que os hospitais são selecionados para propor muda o resultado do algoritmo?
Def. Uma estudante e é uma parceiro viável para um hospital h se existe algum emparelhamento estável com o par (h, e).
Exemplo:
Def. Uma estudante e é uma parceiro viável para um hospital h se existe algum emparelhamento estável com o par (h, e).
Atribuição Hospital-Ótima: Todo hospital recebe o melhor parceiro viável.
Afirmação. Toda execução do algoritmo G-S retorna uma atribuição hospital-ótima.
Corolário. Uma atribuição hospital-ótima é um emparelhamento estável.
Afirmação. O algoritmo G-S é hospital-ótimo: cada hospital recebe sua melhor parceiro viável.
Prova. Por contradição.
[Hipótese] Suponha que algum hospital não termina com suo melhor parceiro viável.
[Construção] e é viável para h, logo por definição existe emparelhamento estável S' com (h, e).
Conclusão: Todo hospital termina com suo melhor parceiro viável no algoritmo G–S.
P: O que acontece com os estudantes?
Pessimalidade para Estudantes: Cada estudante recebe o pior parceiro viável.
Afirmação. O algoritmo G-S é estudante-péssimo.
Prova. Por contradição. Suponha que o hospital h é atribuído a e em S^*, mas h não é o pior parceiro viável de e.
Exemplo: Hospitais \approx Empresas, Estudantes \approx Alunos.
Variação 1: Alguns participantes declaram outros como inaceitáveis.
Variação 2: Números diferentes de hospitais e estudantes.
Variação 3: Poligamia limitada.
Def. Um emparelhamento S é instável se há uma empresa e e um aluno a tal que:
- e e a são aceitáveis mutuamente; e
- a não está emparelhado, ou a prefere e a sua empresa atual; e
- e não preencheu todas as suas vagas, ou e prefere a a um dos seus atuais estagiários.
National Resident Matching Program.
Lloyd Shapley: Teoria de emparelhamento estável e algoritmo G-S.
Alvin Roth: Aplicação do algoritmo G-S no problema de hospitais e estudantes, e doadores de órgãos com pacientes.
Content delivery networks (CDNs). Distribute much of world’s content on web.
Akamai
?