feito para cos 242 · teoria dos grafos · ufrj 2026/2
graphman.
Uma biblioteca de grafos em Rust: um trait Graph, três formas de guardar um grafo, quatro formas de achar o diâmetro, rodando no seu navegador.
Um trait, três representações, quatro diâmetros.
O GraphMan lê o formato de lista de arestas da disciplina para uma lista de adjacência, uma matriz de bits ou CSR, e roda BFS, DFS, distâncias, componentes e o diâmetro em qualquer uma delas por um único trait Graph. Mede a própria memória e o próprio tempo nos seis grafos da disciplina e, compilado para WebAssembly, é o motor do observatório.
- arestas no maior grafo
- 46.5Mlido em 2.07 s
- representações
- 3um trait Graph
- métodos de diâmetro
- 4todos canceláveis
- 1│23
- 2│134
- 3│125
- 4│25
- 5│34
Sem servidor, sem dados pré-calculados: a própria biblioteca no seu navegador
O observatório começa vazio. Carregue qualquer grafo no formato da disciplina e tudo o que você vê é calculado na hora.
Rust, compilado para WebAssembly
O mesmo crate que roda os estudos de caso (crates/graphman) é exposto com wasm-bindgen. Leitura, BFS, DFS, distâncias, componentes e o diâmetro rodam na sua aba, em uma thread, a partir do arquivo que você solta.
WebGPU via vgpu
Posições, arestas e a árvore de busca vivem em buffers da GPU. Compute shaders rodam a simulação de forças e o morph entre quatro layouts (forças, radial, camadas, grau); cada vértice e aresta é desenhado com a cor do nível em que a busca o alcançou.