This repository was archived by the owner on Oct 10, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathheuristica.h
64 lines (49 loc) · 2.95 KB
/
heuristica.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
============================================================================
TRABALHO PRÁTICO 6 - Paralelismo
Algoritmos e Estruturas de Dados III
Bruno Maciel Peres
HEURISTICA.H - Define o cabeçalho da principal função de execução do programa.
============================================================================
*/
#ifndef HEURISTICA_H_INCLUDED
#define HEURISTICA_H_INCLUDED
#include <stdbool.h>
#include "lista.h"
typedef struct GlobalVars {
int qnt_solteiros;
int numThreads;
LISTA *homem;
LISTA *mulher;
} GlobalVars;
/*###############################################################################################################################
# Assinatura: void men_porpose_algorithm(LISTA mulher[], LISTA homem[], int n);
# Definição: Casa esses dois grupos através do algoritmo de Gale-Stanley
# Argumentos: Dois vetores de listas, homem e mulher
# Premissas: A lista de mulher e de homem foi completamente povoada, n é verdadeiro
# Ordem de Complexidade: O(n²), pois percorre as n preferências de n homens
################################################################################################################################*/
void men_porpose_algorithm(int n, int numThreads);
/*###############################################################################################################################
# Assinatura: float calcula_satisfabilidade(LISTA lista[], int n);
# Definição: Calcula a satisfabilidade de uma lista após o algoritmo de casamento
# Argumentos: Um vetor de listas, homem ou mulher
# Saída: Satisfabilidade dessa lista com o casamento atual
# Premissas: Todos estão casados e n é verdadeiro
# Ordem de Complexidade: O(n²), pois percorre n listas preferências com n elementos cada
################################################################################################################################*/
float calcula_satisfabilidade(LISTA lista[], int n);
/*###############################################################################################################################
# Assinatura: float calcula_satisfabilidade_geral(float satisf_fem, float satisf_masc);
# Definição: Calcula a satisfabilidade geral entre duas listas após o casamento através da média aritmética das satisfabilidades dos grupos
# Argumentos: Índice de satisfabilidade das mulheres e dos homens
# Saída: Satisfabilidade geral
# Premissas: As satisfabilidades estão corretas e não são nulas
# Ordem de Complexidade: O(1), simples média aritmética entre 2 floats
################################################################################################################################*/
float calcula_satisfabilidade_geral(float satisf_fem, float satisf_masc);
LISTA * AlocaVetLista(int n);
void DesalocaVetLista(LISTA *l, int n);
void SMP(FILE *ArqEntrada, int numThreads, FILE *ArqSaida, bool Analise);
#endif // HEURISTICA_H_INCLUDED