Prévia do material em texto
1 UNIVERSIDADE VEIGA DE ALMEIDA SISTEMAS DE INFORMAÇÃO NATHALIA DA COSTA MARTINS TRABALHO DA DISCIPLINA (AVA2) GRAFOS APLICADOS À COMPUTAÇÃO RIO DE JANEIRO – RJ 2024 2 A teoria dos grafos possui uma relevância significativa no âmbito matemático, pois oferece uma forma visualmente acessível de representar as conexões entre pontos específicos. Por meio dos grafos, é viável converter questões cotidianas em problemas matemáticos, permitindo sua análise detalhada. É possível encontrar um caminho de um vértice para outro vértice em um grafo usando vários algoritmos estudados na disciplina de teoria dos grafos. Alguns dos algoritmos mais comuns incluem: 1. Busca em largura (BFS - Breadth-First Search): Este algoritmo visita todos os vértices em uma distância específica do vértice de origem antes de se mover para os vértices mais distantes. Ele pode ser usado para encontrar o caminho mais curto entre dois vértices em um grafo não ponderado. A -- B -- C \ | / \ | / D | E -- F 2. Busca em profundidade (DFS - Depth-First Search): Este algoritmo explora o máximo possível ao longo de um ramo antes de retroceder. Embora não seja tão eficiente quanto o BFS para encontrar o caminho mais curto, o DFS pode ser adaptado para encontrar um caminho entre dois vértices em um grafo. 3. Algoritmo de Dijkstra: Este algoritmo é usado para encontrar o caminho mais curto entre um vértice de origem e todos os outros vértices em um grafo ponderado não negativo. Ele é eficiente e pode ser adaptado para encontrar o caminho mais curto entre dois vértices específicos. A --(5)--> B --(2)--> C \ ^ / \ | / 3 (3) (1) (4) \ | / v v v D -- E 4. Algoritmo de Bellman-Ford: Similar ao algoritmo de Dijkstra, o Bellman-Ford encontra o caminho mais curto entre um vértice de origem e todos os outros vértices em um grafo ponderado, mas ele pode lidar com grafos que têm arestas com pesos negativos (desde que não haja ciclos negativos). A --(-1)--> B --(-2)--> C \ ^ / \ | / (-3) (4) (5) \ | / v v v D -- E 5. Algoritmo de Ford-Fulkerson e Algoritmo de Edmonds-Karp: Esses algoritmos são usados para encontrar o fluxo máximo em uma rede de fluxo, onde os vértices representam pontos de armazenamento ou consumo e as arestas representam canais de comunicação ou transporte. Eles são usados em problemas de transporte, design de redes, e fluxo de dados em redes de computadores. 6. Algoritmos de Emparelhamento de Grafos: Esses algoritmos são usados para encontrar pares de vértices em um grafo de modo que cada vértice seja emparelhado com exatamente um outro vértice, sem compartilhar arestas com outros pares. Eles são usados em problemas de alocação de recursos, como emparelhamento de estudantes com escolas, doadores de órgãos com receptores etc. 4 Estes são apenas alguns exemplos de algoritmos que podem ser usados para encontrar caminhos entre vértices em grafos, e a escolha do algoritmo depende das características específicas do grafo e do problema em questão. No campo da computação os grafos têm ampla utilização, aplicação e extrema relevância como, por exemplo: o Redes de computadores: Modelagem de redes: Os dispositivos de rede (roteadores, switches etc.) e suas conexões podem ser modelados usando grafos, onde os vértices representam dispositivos e as arestas representam conexões entre eles. Roteamento de pacotes: Algoritmos de roteamento como o OSPF (Open Shortest Path First) usam grafos para calcular os caminhos mais curtos entre os dispositivos em uma rede. o Algoritmos de busca na web: Modelagem de Páginas da Web: Páginas da web e seus links podem ser representados como um grafo, onde as páginas são vértices e os links são arestas. PageRank: O algoritmo PageRank, usado pelo Google para classificar páginas da web em seus resultados de pesquisa, é baseado em conceitos de grafos. o Grafos sociais e de relacionamento: Redes sociais: Em plataformas como Facebook, Twitter e LinkedIn, os usuários e suas conexões podem ser representados como um grafo, 5 onde os usuários são vértices e as conexões de amizade ou seguidores são arestas. Recomendação de amigos ou conteúdo: Algoritmos de recomendação usam grafos sociais para sugerir novas conexões ou conteúdo com base nas conexões existentes. o Compiladores e análise de código: Árvore de sintaxe abstrata (AST): Em compiladores, os programas de código-fonte são convertidos em uma AST, que pode ser vista como um tipo de grafo onde os nós representam operações ou estruturas do código e as arestas representam dependências. Análise de dependências: Grafos são usados para representar dependências entre módulos, funções ou variáveis em um programa, auxiliando na otimização de código e detecção de erros. o Banco de dados e sistemas de informação: Modelagem de dados relacionais: Bancos de dados relacionais podem ser representados usando grafos, onde as tabelas são vértices e as relações entre elas são arestas. Redes de colaboração: Em sistemas de gerenciamento de informações acadêmicas ou científicas, como PubMed, os autores e suas colaborações podem ser modelados como um grafo. REFERÊNCIAS: “Conexões entre grafos e matrizes na modelagem de problemas matemáticos”, UFSM, 2018 : https://periodicos.ufsm.br/cienciaenatura/article/download/35519/19181/169091#:~:te https://periodicos.ufsm.br/cienciaenatura/article/download/35519/19181/169091#:~:text=A%20teoria%20dos%20grafos%20%C3%A9,estudo%20exato%20em%20cada%20caso 6 xt=A%20teoria%20dos%20grafos%20%C3%A9,estudo%20exato%20em%20cada% 20caso. “Grafos e Algoritmos”, Medium, 2020: https://medium.com/programadores- ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416 “Grafos. Introdução à Teoria dos Grafos. Programação, Matemática e Curiosidades.”, Youtube, 2021: https://www.youtube.com/watch?v=NNZ7jL1X2mI https://periodicos.ufsm.br/cienciaenatura/article/download/35519/19181/169091#:~:text=A%20teoria%20dos%20grafos%20%C3%A9,estudo%20exato%20em%20cada%20caso https://periodicos.ufsm.br/cienciaenatura/article/download/35519/19181/169091#:~:text=A%20teoria%20dos%20grafos%20%C3%A9,estudo%20exato%20em%20cada%20caso https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416 https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416 https://www.youtube.com/watch?v=NNZ7jL1X2mI