Visualizando algoritmos

Capa

Quando estamos aprendendo novos algoritmos geralmente passamos por algumas fases importantes. Contudo, tudo começa com o correto entendimento do problema que o algoritmo se propõe a resolver. Neste ponto já começamos a compreender melhor o contexto e nos acostumar com certas terminologias, conceitos, métricas e algumas informações que vão nos ajudar a criar as variáveis, lógica do algoritmo e também tratar as entradas e saídas.

A apresentação do algoritmo em si pode ser realizada de diversas maneiras. Alguns professores optam por apresentar diretamente uma fórmula matemática. Por exemplo, o algoritmo de mineração de dados utilizado para classificar dados em clusters k means pode ser apresentado como a fórmula abaixo.

Representação matemática do algoritmo K-means

Representação matemática do algoritmo K-means

Outra representação comum é apresentar o algoritmo em pseudo código, como o exemplo abaixo que descreve o mesmo algoritmo k-means.

Pseudo código do algoritmo de clusterização K-means

Pseudo código do algoritmo de clusterização K-means

Estas duas representões são relativamente abstratas e alguns alunos, especialmente aqueles que preferem informações visuais podem ter dificuldade para compreensão. Nestes casos é comum apresentar alguns passos de execução de um algoritmo como imagem, como a figura abaixo que mostra o algoritmo para geração de regras de associação Apriori.

Representação gráfica de alguns passos do algoritmo Apriori

Representação gráfica de alguns passos do algoritmo Apriori

Outro recursos que vem se tornando muito interessante é o uso de animações no formato GIF animado para apresentar certos passos de execução do algoritmo. Apesar de serem muito interessantes, elas se baseiam em uma representação visual de um exemplo e de como apenas certos passos do algoritmo vão agir sobre o que está armazenado nas estruturas de dados utilizadas pelo algoritmo. Abaixo apresento alguns bons exemplos de gifs animados que podem auxiliam muito quem está apresento um novo algoritmo.

Animação do algoritmo A*

Animação do algoritmo A*

 

Representação do funcionamento do algoritmo MergeSort do SQL Server

Representação do funcionamento do algoritmo MergeSort do SQL Server

Algoritmo Fortune para gerar mapas de Voronoi

Algoritmo Fortune para gerar mapas de Voronoi

 

Representação dos dados no algoritmo QuickSort

Representação dos dados no algoritmo QuickSort

Outra representção dos dados do algoritmo QuickSort

Outra representação dos dados do algoritmo QuickSort

 

Problema TSP com algoritmo BranchAndBoud

Problema TSP com algoritmo BranchAndBoud

 

Funcionamento do algoritmo InsertionSort

Funcionamento do algoritmo InsertionSort

Animação que mostra como gerar números primos com o algoritmo Crivo de Erastóstenes

Animação que mostra como gerar números primos com o algoritmo Crivo de Erastóstenes

Algoritmo de Dijkstra

Algoritmo Deep First Search

 

Outra abordagem é tentar alguma representação física do algoritmo, tal como uma dança ou mesmo algum tipo de jogo onde pessoas representam certas partes da lógica envolvida no algoritmo. Os vídeos abaixo mostram exemplos desta técnica que geralmente é aplicada para ensinar algoritmos básicos para crianças ou pessoas com pouco conhecimento e experiência em programação.

De qualquer maneira, quem está começando a aprender o algoritmo e não possui algum contato com o contexto incluindo detalhes do problema, lógica, passos da solução, variáveis, entradas e saídas vai encontrar alguma dificuldade quando se deparar com qualquer uma destas formas didáticas de se apresentar um novo algoritmo e também algum programa, isto é, a implementação do algoritmo em alguma linguagem de programação.

Quem se interessa por alguns algoritmos de mineração de dados, e também implementações simples na linguagem SQL, pode conferir alguns artigos que escrevi para o iMasters e que foram selecionados para o meu livro Conversando sobre banco de dados.



Esta entrada foi publicada em Uncategorized e marcada com a tag , , , , , , , , , , . Adicione o link permanente aos seus favoritos.

3 respostas a Visualizando algoritmos

  1. Pingback: Conteúdos e formatos de livros | Blog do Mauro Pichiliani

  2. Pingback: Como é a ‘cara’ de uma nova linguagem de programação? | Blog do Mauro Pichiliani

  3. Rodrigo disse:

    Ola!
    Gostaria de perguntar uma coisa: queria montar um algoritmo que me permitisse estruturar um campeonato e a cada rodada fizesse as atualizações dos placares (manualmente) e a partir dos resultados (atualizados toda semana) montasse um ranking dos times de acordo com a sua pontuação..isso é possível fazer através algoritmos? É a forma mais simples?
    Muito obrigado
    Rodrigo

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *