]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/galeshapley.h
Mover mostrar_estado() de GaleShapley a Susanita.
[z.facultad/75.29/susanita.git] / src / galeshapley.h
1 #ifndef _GALESHAPLEY_H_
2 #define _GALESHAPLEY_H_
3
4 #include "persona.h"
5 #include "susanita.h"
6 #include <map>
7 #include <deque>
8 #include <string>
9
10 struct GaleShapley: Susanita
11 {
12
13         /// Constructor
14         GaleShapley();
15
16         /// Empieza a emparejar gente
17         void casamentear();
18
19         private:
20
21         /**
22          * En la primera ronda cada hombre se le declara a la mujer que
23          * prefiere independientemente de que algun otro se le haya declarado.
24          * Entre todas las propuestas que recibio, cada mujer elige al hombre
25          * mejor posicionado en su ranking y se compromete con él. Si una
26          * mujer no recibe ninguna propuesta, espera hasta la proxima ronda.
27          */
28         void primera_ronda();
29
30         /**
31          * En cada ronda subsiguiente los hombres que ya estan comprometidos
32          * no hacen nada. Cada hombre no comprometido se le declara a la mujer
33          * mejor posicionada en su ranking que aun no lo rechazo,
34          * independientemente de que ella este comprometida o no.
35          * Cuando le toca el turno a las mujeres, cada mujer acepta la
36          * propuesta del hombre mejor posicionado en su ranking (incluso puede
37          * llegar a romper un compromiso; tambien puede suceder que su novio
38          * actual este mejor posicionado que todos sus nuevos pretendientes,
39          * en cuyo caso se queda con el novio actual). Si una mujer no recibe
40          * ninguna propuesta, espera hasta la proxima ronda.
41          */
42         void nesima_ronda();
43
44         /// Se fija si todos los hombres estan comprometidos
45         bool todos_h_comprometidos() const;
46
47 };
48
49 #endif // _GALESHAPLEY_H_