Skip to content

Repositorio para hospedagem do trabalho de Teoria dos Grafos (MATA53), proposto pela coordenação da disciplina em 2021.1, UFBA.

Notifications You must be signed in to change notification settings

lucaargolo/trabalho-grafos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MATA53 - Visualização de Algoritmos em Grafos

image Link de acesso a ferramenta: https://lucaargolo.github.io/trabalho-grafos

Tabela de Conteúdos

  1. Autor
  2. Trabalho
  3. Dijkstra's algorithm
    1. Pseudocódigo
  4. Instruções
    1. Execução
    2. Uso
  5. Implementação
    1. Processo de Desenvolvimento
    2. Recursos
    3. Algoritmos
  6. Documentação
  7. Referências

Autor

Nome: Luca Assis Argolo

Matrícula: 219116049

Algoritmo: Dijkstra's algorithm

Trabalho

Proposto pela cordenação da disciplina MATA53, para execução durante o semestre 2021.1, esse trabalho consiste na implementação de uma ferramenta que permita a visualização de algoritmos em grafos, para atrair a atenção de pessoas interessadas nesses assuntos.

Dijkstra's algorithm

O algoritmo de Dijkstra, é um algoritmo simples que visa resolver o problema do caminho mais curto num grafo dirigido ou não dirigido com arestas de peso não negativo.

Foi concebido pelo cientista da computação Edsger W. Dijkstra em 1956 e publicado 3 anos depois.

Pseudocódigo

 1  function Dijkstra(Graph, source):
 2
 3      create vertex set Q
 4
 5      for each vertex v in Graph:            
 6          dist[v] ← INFINITY                 
 7          prev[v] ← UNDEFINED                
 8          add v to Q                     
 9      dist[source] ← 0                       
10     
11      while Q is not empty:
12          u ← vertex in Q with min dist[u]   
13                                             
14          remove u from Q
15         
16          for each neighbor v of u:           // only v that are still in Q
17              alt ← dist[u] + length(u, v)
18              if alt < dist[v]:              
19                  dist[v] ← alt
20                  prev[v] ← u
21
22      return dist[], prev[]

Instruções

Execução

Para executar o programa na sua maquina, basta clonar o repositório e abrir o arquivo ìndex.html presente na pasta raiz do projeto.

Requisitos: Estar utilizando um navegador moderno (Google Chrome, Firefox, Opera, Safari, Edge...) certificando-se de que o mesmo esteja devidamente atualizado.

Uso

Para efetuar o uso do programa, o usuário deverá escolher o algoritmo que quer visualizar e escolher se quer utilizar um grafo predefinido para a visualização, ou quer criar o próprio grafo. Após escolher a opção desejada clicar em "Continuar".

1. Criando o próprio grafo

Caso o usuário decida criar o próprio grafo, ele irá ser redirecionado a página de criação de grafos, onde será disponibilizado uma lista de instruções para que o usuário possa criar o seu próprio grafo.

Após finalizar sua criação, o usuário deverá clicar em "Continuar" e caso haja algum problema de validação, o site informará o erro e o usuário terá que concertá-lo para poder prosseguir. Caso não haja nenhum erro o usuário será redirecionado para a página de visualização.

2. Visualizando o algoritmo escolhido no grafo

Dentro da página de visualização o usuário tem 2 opções. Ou ele irá clicar em "Iniciar Visualização", o que irar dar play na visualização até o final dela, ou ele poderá selecionar a opção "Passo a Passo", e executar a visualização operação por operação.

Implementação

Neste repositório está contido um site para visualização de algoritmos em grafos.

Processo de Desenvolvimento

O site foi desenvolvido utilizando a linguagem de marcação HTML5, style sheets em CSS3 e a linguagem de programação JavaScript, com auxilio do framework para front-end Bootstrap.

Recursos

No momento atual o site possui os seguintes recursos:

  • Visualização de algoritmos em grafos step-by-step em tempo real
  • Grafos pré-definidos para utilização rápida
  • Construtor interativo de grafos para casos de uso mais complexos
  • Exportação e Importação de grafos construidos

Algoritmos

No momento atual o site possui os seguintes algoritmos:

  • Dijkstra's algorithm

Documentação

Todo o código javascript do projeto foi documentado seguindo o padrão do JSDoc

A página web com a documentação pode ser acessada em https://lucaargolo.github.io/trabalho-grafos/docs

Referências

About

Repositorio para hospedagem do trabalho de Teoria dos Grafos (MATA53), proposto pela coordenação da disciplina em 2021.1, UFBA.

Resources

Stars

Watchers

Forks