Projectos da disciplina de Teoria dos Grafos José Manuel de Castro Torres Universidade Fernando Pessoa –2001/2002 Regras: O projecto deverá ser elaborado individualmente ou em grupos de dois elementos; Deverá ser entregue e apresentado oralmente (a não apresentação oral irá repercutir-se na nota final) até ao último dia de aulas Deverá ser desenvolvido em Java (sugestão: use o ambiente de desenvolvimento JBuilder4 ou o JCreator v1.5); Deverá ser entregue juntamente com um relatório explicativo do processo de desenvolvimento, manual de utilização do programa, características do programa, limitações e desenvolvimentos possíveis; A atribuição dos trabalhos aos grupos deve ser feita com conhecimento ao docente da cadeira e com a maior brevidade possível, não sendo possível alterar posteriormente o tema do trabalho. Descrição dos Projectos Dada uma aplicação desenvolvida em Java já existente, pretende-se que estenda essa aplicação com funcionalidades extra usando os conhecimentos e tópicos focados ao longo da disciplina de Teoria dos Grafos. Entre as funcionalidades que poderá implementar tem-se as seguintes: Gerar um relatório com as principais características do Grafo (número de nós e de ramos, sequência dos graus, número de componentes do grafo, se é grafo ou pseudo-grafo, etc.) Testar se o Grafo é bipartido Testar se o Grafo é completo Testar a existênia de n-ciclos Dados dois grafos em duas janelas: o Testar se um grafo é subgrafo do outro o Testar se os dois grafos são isomorfos Testar se um grafo é Euleriano Testar se um grafo é Hamiltoniano Apresentar a matriz de adjacência do grafo Calcular o caminho mais curto entre dois nós de um grafo pesado usando o algoritmo de Dijkstra Calcular a matriz de caminhos mais curtos usando o algoritmo de Floyd-Warshall Testar se o Grafo é Digrafo, e se for se é fortemente conexo Testar se o Grafo é uma rede dirigida (isto é, testar se é um Digrafo pesado) Se o grafo for uma rede dirigida com um nó inicio e um nó fim, calcular o caminho critico Verificar se um grafo conexo é uma árvore Calcular a “spanning tree” mínima de um grafo conexo Aplicar o algoritmo de “depth-first search” a um grafo para verificar se um grafo é conexo e calcular uma sua “spanning tree” Testar se um grafo é planar Testar se dois grafo são homeomórficos Calcular o número cromático de um grafo