https://github.com/nicolascoiado/a3-estrutura-de-dados
Atividade avaliativa da matéria de Estrutura de Dados, trata-se de uma aplicação que lê textos, e representa seus tópicos através de um grafo.
https://github.com/nicolascoiado/a3-estrutura-de-dados
graph graph-algorithms javascript nodejs
Last synced: 4 months ago
JSON representation
Atividade avaliativa da matéria de Estrutura de Dados, trata-se de uma aplicação que lê textos, e representa seus tópicos através de um grafo.
- Host: GitHub
- URL: https://github.com/nicolascoiado/a3-estrutura-de-dados
- Owner: NicolasCoiado
- Created: 2023-10-24T09:06:03.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-13T11:45:50.000Z (almost 2 years ago)
- Last Synced: 2025-03-11T20:55:44.607Z (7 months ago)
- Topics: graph, graph-algorithms, javascript, nodejs
- Language: JavaScript
- Homepage:
- Size: 229 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# LEITOR DE ARTIGOS
## Estrutura de dados e algoritmos### Resumo
Este projeto trata-se de um software capaz de ler resumos de artigos ciêntíficos, e identificar:
* Os principais tópicos (assuntos) de casa resumo;
* Os autores de cada resumo;
* Os autores mais influentes da base de resumos;
* A similaridade entre dois resumos.### Objetivo
Este projeto foi desenvolvido como uma atividade avaliativa para a matéria de **Estrutura de Dados e Algoritmos**, do curso de **Ciência da Computação**. Seu objetivo é a implementação de grafos e a avaliação da performance apresentada pelas soluções desenvolvidas.### Notações Big O
Não seria possível identificar a eficiência do software por inteiro, por isso, dividi o programa em 3 funções, sendo elas: **Identificação dos tópicos** de cada artigo, **Identificação dos autores** mais influentes e a **Medição de similaridade** entre resumos.#### Identificação dos tópicos
Para a identificação dos tópicos de cada resumo, o texto passa por diversas etapas, como:
* Tokenização;
* Remoção de stopwords;
* Construção do grafo (Que será abordada melhor no decorrer da leitura);
* E a comparação entre vértices.Na etapa de comparação entre vértices, a condição usada para determinar o que é tópico importante para o resumo é a seguinte:
`A palavra deve ter um grau maior que o grau médio das outras palavras; E a palavra deve ter ao menos uma aresta mais pesada em comparação com o peso médio das arestas em geral`.
Para a implementação desta lógica, utilizei o algoritmo de busca simples, ou seja, a notação big O para esta função é **O(n)**. E isto ocorre pois para aplicar as condições necessárias, o programa visita e compara todas os vértices do grafo.
#### Identificação dos autores mais influentes
Para a identificação dos autores mais influentes, o software constrói um grafo, onde cada autor representa um vértice, e a cada coautoria, este vértice recebe uma aresta. Após a constução do grafo, as condições para determinar que um autor é influente, são muito parecidas com as condições já apresentadas, sendo elas:`O vértice do autor deve ter um grau maior que o grau médio dos outros autores; E o autor deve ter ao menos uma aresta mais pesada em comparação com o peso médio das arestas em geral`.
Para a implementação desta lógica, utilizei o algoritmo de busca simples, ou seja, a notação big O para esta função é **O(n)**. E isto ocorre pois para aplicar as condições necessárias, o programa visita e compara todas os vértices do grafo.
#### Medição de similaridade
Para compreender a medição de similaridade entre resumos, devemos entender como os grafos são construídos neste programa. Eles são construídos através de **MAPAS**, onde cada vértice é uma chave, que é capaz de armazenar um array de objetos, que por sua vez, representam as arestas ligadas a aquele vértice.A medição de similaridade entre os resumos, é feita ao compararmos o peso das arestas de um grafo, grafo este que o próprio software nos retorna.
A notação Big O que representa o retorno de informações em um mapa, é **O(1)** em seu caso médio e **O(n)** em seu pior caso. Pelo fato da função de medição de similiridade ser apenas o retorno das informações de um grafo, podemos afirmar que estas notações também podem ser utilizadas para descrever esta função.
## Agradecimento e Integrantes
Obrigado por ter lido até aqui, os responsáveis pelo desenvolvimento deste projeto são:Aline de Resende Barbosa - 32225080
Matheus Cruz - 8222243702
Nicolas Mauricio Martins Coiado - 822149637