]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/galeshapley.h
Termina informe.
[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(size_type capacidad);
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         // Cantidad de hombres comprometidos; se usa para optimizar
45         // todos_h_comprometidos().
46         unsigned int cant_comprometidos;
47
48         /// Se fija si todos los hombres estan comprometidos
49         bool todos_h_comprometidos() const;
50
51 };
52
53 #endif // _GALESHAPLEY_H_