Algoritmo competitivo e sua complexidade computacional

Em 2010, na Universidade Católica de Pernambuco, desenvolvi um projeto junto com um amigo sobre a complexidade computacional do algoritmo de aprendizagem competitivo, para a cadeira de inteligência artificial ministrada pelo professor Francisco Madeiro.
O algoritmo, e sua complexidade computacional, foram inferidos do artigo Complexidade Computacional de um Algoritmo Competitivo Aplicado ao Projeto de Quantizadores Vetoriais, escrito pelo professor Madeiro em conjunto com outros mestres para a revista da Sociedade Brasileira de Redes Neurais.

A implementação foi feita usando a linguagem de programação Python, a biblioteca Python para manipulação de imagens PIL e a biblioteca de interface gráfica padrão Tkinter.

A aplicação recebe como dados de entrada:

  • k = A quantidade de números que irão compor cada vetor;
  • w = A quantidade de vetores de peso (W);
  • nAC = A quantidade de iterações de aprendizagem;
  • Fator de aprendizagem inicial;
  • Fator de aprendizagem final;
  • Um arquivo contendo os números que serão utilizados pelo algoritmo;

A aplicação gera/retorna:

  • Retorna os vetores de peso inicial;
  • Retorna os vetores de peso após as iterações de aprendizagem;
  • Retorna a quantidade de operações utilizadas no processo de aprendizagem;
  • Gera um arquivo chamado VetoresDeTreino.jpg que exibe todos os vetores de treino;
  • Gera um arquivo chamado VetoresDePesoAntes.jpg que exibe todos os vetores de peso antes do aprendizado;
  • Gera um arquivo chamado VetoresDePesoDepois.jpg que exibe todos os vetores de peso depois do aprendizado;

Note que as 3 imagens só serão geradas se a quantidade de números (k) que irão compor cada vetor for igual a 2 (duas dimensões).

O projeto pode ser baixado no link Algoritmo competitivo em Python ou através da URL:
www.frenetic.com.br/projetos/ia_python/IA_Python.zip

Screenshots do projeto:

Janela Principal

VetoresDeTreino.jpg

vetorPesoAntes.jpg

vetorPesoDepois.jpg

Leave a Reply

Your email address will not be published. Required fields are marked *

*