Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Trabalho Prático Parte 1 Teoria dos Grafos

Pedro Boueke
September 30, 2014

Trabalho Prático Parte 1 Teoria dos Grafos

Pedro Boueke

September 30, 2014
Tweet

More Decks by Pedro Boueke

Other Decks in Programming

Transcript

  1. Classes e estruturas Estruturas: ❏ Element ❏ DoubleElement ❏ Connected

    Component ❏ Linked List ❏ DoubleLinkedList ❏ Queue ❏ Stack Todas são declaradas com template<class T> Permitem a utilização de uma classe Graph genérica para qualquer tipo de estrutura de dados
  2. Classes e estruturas Classes: ❏ NVector ❏ Matrix ❏ Graph

    ❏ LinkedList ❏ Hashtable ❏ ( . . . ) (Não conseguimos tempo para a implementação adequada) Graph é declarado com template<class T> de modo que possa ser instanciado como de qualquer tipo de estrutura de dados escolhida para representar o grafo
  3. Graph contém os métodos que envolvem o manuseio do grafo

    propriamente dito. Nvector, Matrix e demais estruturas armazenam os dados do grafo na memória. Eles contém os mesmos métodos e elementos, que são acessados e chamados pelos métodos de Graph Classes e estruturas
  4. Estudo de caso Estruturas Grafo de 30k Grafo de 100k

    Grafo de 1kk NVector 0,02268 s 0,41308 s 3,61556 s Matrix 0,41824 s -- -- Estruturas / Grafo Grafo de 30k Grafo de 100k Grafo de 1kk NVector 0,03668 s 0,1634 s 2,647 s Matrix 1,30544 s -- -- Estruturas / Grafo Grafo de 30k Grafo de 100k Grafo de 1kk NVector 1.8MiB 8.9MiB 83.2MiB Matrix 1000.2MiB 12500MiB(?) 125000MiB(?) Tempo médio para carregamento do grafo: Memória ocupada pelo grafo: Tempo médio de execução de 10 BFSs: Estruturas / Grafo Grafo de 30k Grafo de 100k Grafo de 1kk NVector 0,0178 s 0,057 s 1,10748 Matrix 1,1448 s -- -- Tempo médio de execução de 10 DFSs:
  5. Estudo de caso Diâmetro: -- Grafo de 30k Grafo de

    100k Grafo de 1kk Tempo de Execução 1m 13,044 s 25m 2,9028 s 4 dias(?) Com o crescimento do tempo de execução limitado por O(n2), a tomada do diâmetro é muito lenta. Uma das ideias para otimizar esse resultado seria a utilização de computação paralela, visto que as diversas BFSs necessárias para a execução do algoritmo não são interdependentes.
  6. Conclusões Lista de Adjacência Matriz de Adjacência Grafos Estáticos Algoritmos

    podem ser otimizados de maneiras diferentes para se adequarem à sua estrutura de dados! Grafos Dinâmicos Acessa lista de vizinhos em O(1) Modifica arestas em O(1)