algoritmo

Algoritmos e seus diferentes tipos 👨‍💻

Olá ouvintes do CoderCast, Me chamo Micael Pereira e nesse podcast vou falar sobre sobre algoritmo.

Esse nome é assustador para quem está no início da faculdade ou planejando entrar na área. Mas algoritmo é fundamental para qualquer pessoa que desenvolve software.

Como de costume esse cast será separado por 4 tipos de algoritmo.

Mas a principal pergunta é, o que é algoritmo?

É uma sequencia finita de ações executáveis que visam obter uma solução para um determinado tipo de problema.
O clássico exemplo é a receita culinária, mas toda vez que eu ouvia pensava: “Ok, mas como vou transformar em código.”
Hoje com mais tempo no mercado entendo que o comparativo é:
Você segue os passos da receita colocando os ingredientes e deixa um tempo no forno. E pronto o bolo está pronto.

A conexão com o software é, você deseja ler um arquivo texto, para descobrir quantas letras A, aparecem no arquivo. Você escreve um código e terá o retorno com o cálculo da quantidade de letra A.

Existem algoritmos que já foram criados e testados. Nesse cast vou falar de 4 categorias.

1- Algoritmo recursivo

Muitos desafios têm a seguinte propriedade: cada instância do problema contém uma instância menor do mesmo problema. Dizemos que esses problemas têm estrutura recursiva. Para resolver uma instância de um problema desse tipo, podemos aplicar o algoritmo recursivo.

O dev precisa mostrar como obter uma solução da instância original a partir de uma solução da instância menor.

Dessa forma você terá uma função, com condições. E enquanto a condição final não for verdade. Será executado uma nova chamada a mesma função com novos valores. Um loop sem ter for ou while.

2- Programação dinâmica de algoritmos

Muitos algoritmos seguem esse paradigma ou estratégia de projeto de algoritmos é uma recursão mas com o apoio de uma tabela.

Para aplicarmos esse paradigma é preciso que o problema tenha estrutura recursiva a solução de toda instância do problema deve conter soluções de recorrência. Uma vez escrito o algoritmo recursivo, entretanto, é fácil construir uma tabela para armazenar as solução das subinstância e assim evitar que elas sejam recalculadas.  A tabela é a base de um algoritmo de programação dinâmica. Nesse algoritmo você usará loops como for e while.

3- Dividir e conquistar

Essa estratégia produz um algoritmo eficiente se o processo de divisão e o processo de combinação forem suficientemente rápidos. A estratégia é:

  • A lista é dividida em duas ou mais partes menores;
  • Cada pedaço da divisão é resolvida;
  • As partes que foram divididas originando partes menores. São combinadas para gerar a parte original.

Alguns exemplos que utilizam o conceito de dividir para conquistar são. Busca binária, mergesort, quicksort.

4- Algoritmos gulosos

Um algoritmo guloso escolhe, em cada iteração, o objeto mais “apetitoso” encontrado. O objeto escolhido passa a fazer parte da solução que o algoritmo constrói.

Um algoritmo gulosos ele toma decisões com base nas informações disponíveis na iteração corrente, sem olhar as consequências dessas decisões. Um algoritmo guloso jamais  volta as escolhas de cada iteração. As escolhas são definitivas.

Chegamos ao final de mais um CoderCast, agora já sabemos 4 categorias de algoritmo. Eu sempre coloco links de curso e livros relacionados ao assunto no final da descrição do Podcast.

O CoderCast é feito por duas pessoas eu Micael Pereira, na apresentação e, você aí!
Tem mais algum item para acrescentar, que você acha que esqueci de colocar?
Deixe nos comentários, Fale comigo no twitter, instagram ou e-mail. No Twitter eu sou o  @MicaelPereira_. No Instagram @guiadev_ me siga lá e comente sobre o podcast com seus amigos devs.

Dessa forma ajuda o crescimento do CoderCast. E o meio de comunicação bem antigo, que ainda respondo é o e-mail. Para entrar em contato o e-mail é [email protected]

Link dos cursos:

Link dos livros:

Comentários no Facebook