Autor | |
Tipo de Bolsa | Sem Bolsa |
Orientador | RICARDO JOSÉ PFITSCHER |
Centro do Orientador | CAMPUS DE JOINVILLE |
Departamento do Orientador | DEPARTAMENTO DE ENGENHARIAS DA MOBILIDADE / DEM/CTJOI |
Laboratório | |
Área do Conhecimento | Ciência da Computação |
Período | Setembro de 2022 até Dezembro de 2022 |
Titulo | Avaliação de técnicas de aprendizagem de máquina para estimativa de complexidade de tempo de execução |
Resumo | A complexidade de tempo de execução é uma medida crucial para determinar a eficiência computacional de um dado programa ou algoritmo. A depender da classe de complexidade em que um problema está classificado, ele pode ser considerado intratável, ou seja, um programa que resolve esse problema irá consumir tantos recursos para uma entrada suficientemente grande que será inviável executá-lo. Durante o processo de desenvolvimento de software, desenvolvedores codificam soluções para problemas pontuais, sem, necessariamente, conseguir fazer relação com os problemas clássicos da computação. Então, ao mesmo tempo que é importante aos desenvolvedores conhecer os problemas e sua condição de tratabilidade, também é necessário saber estabelecer a função de tempo de execução para um trecho de código. Apesar de não ser possível escrever um programa capaz de computar o tempo de execução de outro programa, um valor aproximado do tempo de execução pode ser útil para apoiar equipes de desenvolvimento na avaliação da eficiência dos seus códigos produzidos. Recentes esforços de pesquisa têm produzido, através de técnicas de inteligência artificial, estimativas de complexidade com base nas características de código (número de laços aninhados, número de testes condicionais, etc). Contudo, não existem bases de dados que relacionem características de códigos com classes de complexidade consideradas ineficientes (e.g., O(cn) e O(nn)), o que limita os resultados de pesquisa atuais. O presente projeto de pesquisa tem por objetivo desenvolver um modelo capaz de estimar a classe de complexidade de tempo de execução de um determinado trecho de código com base em suas características. As atividades do IC voluntário incluem: i) o entendimento sobre as técnicas de machine learning supervisionadas apropriadas para estimativa da complexidade de tempo; ii) realizar uma análise comparativa em uma base de dados conhecida; iii) implementar um modelo de aprendizado; iv) avaliar resultados; e v) redigir um artigo científico com os resultados. |
Palavras-chave | Complexidade, IA, Comparativo |