Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ####################################################
- Readme.txt - Trabalho 3 - CI065
- #####################################################
- ALUNOS:
- Fernando Futoshi Fujioka GRR20120729 fff12
- Rodrigo da Cunha Freitas GRR20124253 rcf12
- #####################################################
- DIFICULDADES:
- As maiores dificuldades que encontramos durante a realização deste trabalho foram:
- - Entender o que foi solicitado e o uso das funções disponibilizadas.
- - Manipular as estruturas especificadas de forma correta a evitar erros de free e ponteiros.
- - Modificações nas funções disponibilizadas durante a execução do trabalho.
- - Relembrar conceitos de programação em C.
- - Relembrar os conceitos utilizados no trabalho 1 e 2, para a implementação das novas funções.
- #####################################################
- FUNÇÕES UTILIZADAS NOS TRABALHOS 1 E 2:
- static int destroi_aresta(void *a)
- Esta função faz parte do destroi, sendo responsável por destruir o conteúdo de cada nodo da lista de arestas, sendo tal lista de entrada ou saída.
- static int destroi_vertice(void *v)
- Esta função faz também parte do destroi, sendo responsável por destruir o conteúdo de cada novo da lista de vértices.
- static int busca_vertice_lista(vertice v, lista l)
- Esta função tem como objetivo buscar um vértice dentro de uma lista de vizinhos, sendo portanto usada na função clique. Retorna 1 caso o vizinho exista, e 0 caso contrário.
- static vertice busca_vertice(char * nome, grafo grf)
- Esta função, diferente da busca_vertice_lista, busca um vértice a partir de seu nome, dentro da lista de vértices de um grafo, retornando tal vértice caso encontrado.
- static void guarda_vertice(Agraph_t *g, grafo grf)
- Essa função guarda um vértice lido do grafo de entrada na struct grafo.
- static lista seleciona_arestas(Agraph_t *g, grafo grf)
- Essa função monta uma lista com todas as arestas do grafo. Como tal função coleta também o peso das arestas, aproveitamos para setar o grafo como ponderado caso peso > 0.
- static void guarda_arestas(grafo grf, lista lista_arestas)
- Essa função percorre a lista de arestas, verificando a quais vértices tal aresta pertence, e se deve inseri-lá na lista de entrada ou saída do respectivo vértice.
- static int checa_aresta(lista lista_arestas, aresta a)
- Esssa função verifica a já existência de um aresta na lista construida pela seleciona_arestas, para caso contrário, inseri-lá.
- static no vertice_maior_rotulo(grafo grf)
- Essa função é chamada dentro da função busca_largura_lexicografica. Ela percorre o grafo verificando qual o nó que possui o maior rótulo, após percorrer todos os nós retorna com o maior para a função busca_largura_lexicografica.
- #######################################
- NOVAS FUNÇÕES UTILIZADAS NO TRABALHO 3:
- #######################################
- grafo emparelhamento_maximo(grafo g)
- Essa função recebe o grafo e após chamar algumas funções, devolve o grafo emparelhado.
- lista caminho_aumentante(grafo g)
- Essa função percorre os vértices do grafo tentando emparelhá-los e retorna a lista das arestas que devem ter sua flag de "coberta" alterada.
- int busca_caminho(vertice v, lista l, int last)
- Essa função é a responsável por realizar a verificação dos vértices e se eles podem ser emparelhados, assim insere na lista a aresta que liga esses vértices para depois setá-la como 1.
- void xor_arestas(lista l)
- Essa função é responsável por setar o valor 1 nas arestas que fazem parte do caminho aumentando, porém quando acha outro caminho aumentante, ela deve além de setar as arestas do caminho aumentante, também deve setar 0 nas arestas que não fazem mais parte do caminho.
- void remove_aresta_vizinho(vertice v, aresta a, no n)
- Essa função é chamada na função deleta_arestas_nao_cobertas e é ela que realmente faz a deleção das arestas.
- void deleta_arestas_nao_cobertas(grafo g)
- Essa função remove as aresta que não pertencem ao grafo emparelhado ou seja as aresta que estão setadas com o valor 0 no campo coberta.
- void deleta_vertices_sem_aresta(grafo g)
- Essa função remove os vértices caso não exista nenhuma aresta com vértice emparelhado com ele.
- void desvisita_vertices(grafo g)
- Essa função troca todos os valores de visitados para 0.
- vertice pega_vizinho(vertice v, aresta a)
- Essa função faz a comparação do vértice v com o vertice head da aresta e retorna o vertice diferente de v.
- #####################################################
- BUGS:
- O trabalho não apresenta bugs aparentes.
- #####################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement