Detalhes bibliográficos
Ano de defesa: |
2020 |
Autor(a) principal: |
ANDRADE JÚNIOR, José Wagner de
 |
Orientador(a): |
SEABRA, Rodrigo Duarte
 |
Banca de defesa: |
Não Informado pela instituição |
Tipo de documento: |
Dissertação
|
Tipo de acesso: |
Acesso aberto |
Idioma: |
por |
Instituição de defesa: |
Universidade Federal de Itajubá
|
Programa de Pós-Graduação: |
Programa de Pós-Graduação: Mestrado - Ciência e Tecnologia da Computação
|
Departamento: |
IESTI - Instituto de Engenharia de Sistemas e Tecnologia da Informação
|
País: |
Brasil
|
Palavras-chave em Português: |
|
Área do conhecimento CNPq: |
|
Link de acesso: |
https://repositorio.unifei.edu.br/jspui/handle/123456789/2330
|
Resumo: |
A retroatividade em programação é um conceito que pode ser definido como o estudo da modificação da linha temporal em uma estrutura de dados, bem como a análise dos efeitos dessa modificação através de toda a sua existência. Em geral, essa análise e implementação tendem a serem mais custosas do ponto de vista computacional, observando-se que uma modificação no passado pode gerar um efeito cascata por toda a existência dessa estrutura. O conceito de retroatividade gera ferramentas e estruturas que otimizam as soluções para a natureza desses problemas temporais. Esse tipo de estrutura pode ser utilizada nas aplicações das mais diversas naturezas, desde em algoritmos de caminho mínimo, aplicações em segurança e até em aplicações geométricas. Nessa dissertação, tem-se os subsídios teóricos sobre essas estruturas, um material detalhado sobre a implementação das estruturas mais comuns utilizando o paradigma da retroatividade, e a implementação de alguns problemas que podem ser resolvidos utilizando técnicas de retroatividade, como, por exemplo, o algoritmo de árvore geradora mínima totalmente dinâmica. Para cada estrutura, foram executados testes práticos sobre as estruturas retroativas e seu desempenho foi comparado às outras implementações dessas mesmas estruturas. Os testes mostraram que as implementações retroativas propostas por Demaine et. al (2007) obtiveram os melhores resultados do ponto de vista temporal. Além disso, foram propostos dois algoritmos que utilizam os conceitos de retroatividade para sua construção: o algoritmo para o problema da árvore geradora mínima totalmente retroativa e o algoritmo do caminho mínimo a partir de um vértice inicial fixo em grafos dinâmicos. Seja m o tamanho da linha temporal em que a estrutura está implementada, V(G) e A(G) o conjunto de vértices e arestas de um grafo G respectivamente. Foi alcançada a complexidade de tempo amortizada de O(√m· log |V(G)|) por operação de atualização ou consulta, para o problema da árvore geradora mínima totalmente retroativa. Para o algoritmo do caminho mínimo, a partir de um vértice inicial fixo em grafos dinâmicos, por meio do algoritmo proposto por Sunita et. al [52], foi obtida a complexidade temporal de O(|A(G)| · lg |V(G)|) por modificação, utilizando filas de prioridade com retroatividade não-consistente. |