Advertisement
Guest User

Untitled

a guest
Jun 26th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. ####################################################
  2.  
  3. Readme.txt - Trabalho 3 - CI065
  4.  
  5. #####################################################
  6.  
  7. ALUNOS:
  8.  
  9. Fernando Futoshi Fujioka GRR20120729 fff12
  10. Rodrigo da Cunha Freitas GRR20124253 rcf12
  11.  
  12. #####################################################
  13.  
  14. DIFICULDADES:
  15.  
  16. As maiores dificuldades que encontramos durante a realização deste trabalho foram:
  17. - Entender o que foi solicitado e o uso das funções disponibilizadas.
  18. - Manipular as estruturas especificadas de forma correta a evitar erros de free e ponteiros.
  19. - Modificações nas funções disponibilizadas durante a execução do trabalho.
  20. - Relembrar conceitos de programação em C.
  21. - Relembrar os conceitos utilizados no trabalho 1 e 2, para a implementação das novas funções.
  22.  
  23. #####################################################
  24.  
  25. FUNÇÕES UTILIZADAS NOS TRABALHOS 1 E 2:
  26.  
  27. static int destroi_aresta(void *a)
  28. 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.
  29.  
  30. static int destroi_vertice(void *v)
  31. 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.
  32.  
  33. static int busca_vertice_lista(vertice v, lista l)
  34. 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.
  35.  
  36. static vertice busca_vertice(char * nome, grafo grf)
  37. 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.
  38.  
  39. static void guarda_vertice(Agraph_t *g, grafo grf)
  40. Essa função guarda um vértice lido do grafo de entrada na struct grafo.
  41.  
  42. static lista seleciona_arestas(Agraph_t *g, grafo grf)
  43. 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.
  44.  
  45. static void guarda_arestas(grafo grf, lista lista_arestas)
  46. 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.
  47.  
  48. static int checa_aresta(lista lista_arestas, aresta a)
  49. Esssa função verifica a já existência de um aresta na lista construida pela seleciona_arestas, para caso contrário, inseri-lá.
  50.  
  51. static no vertice_maior_rotulo(grafo grf)
  52. 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.
  53.  
  54. #######################################
  55. NOVAS FUNÇÕES UTILIZADAS NO TRABALHO 3:
  56. #######################################
  57. grafo emparelhamento_maximo(grafo g)
  58. Essa função recebe o grafo e após chamar algumas funções, devolve o grafo emparelhado.
  59.  
  60. lista caminho_aumentante(grafo g)
  61. 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.
  62.  
  63. int busca_caminho(vertice v, lista l, int last)
  64. 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.
  65.  
  66. void xor_arestas(lista l)
  67. 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.
  68.  
  69. void remove_aresta_vizinho(vertice v, aresta a, no n)
  70. Essa função é chamada na função deleta_arestas_nao_cobertas e é ela que realmente faz a deleção das arestas.
  71.  
  72. void deleta_arestas_nao_cobertas(grafo g)
  73. 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.
  74.  
  75. void deleta_vertices_sem_aresta(grafo g)
  76. Essa função remove os vértices caso não exista nenhuma aresta com vértice emparelhado com ele.
  77.  
  78. void desvisita_vertices(grafo g)
  79. Essa função troca todos os valores de visitados para 0.
  80.  
  81. vertice pega_vizinho(vertice v, aresta a)
  82. Essa função faz a comparação do vértice v com o vertice head da aresta e retorna o vertice diferente de v.
  83.  
  84. #####################################################
  85.  
  86. BUGS:
  87.  
  88. O trabalho não apresenta bugs aparentes.
  89.  
  90. #####################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement