Ferramentas do usuário

Ferramentas do site


a:algoritmos

Algoritmos

Um algoritmo é definido na matemática e na ciência da computação como um conjunto de instruções precisas e bem-definidas, tipicamente utilizado para resolver algum problema específico. Algoritmos não são necessariamente programas de computador, mas sim instruções que compõem a resolução de um problema. Uma receita de bolo, por exemplo, desde que bem escrita e declarada, pode ser considerado um exemplo de algoritmo.

A palavra “algoritmo” possui a mesma origem que a palavra “algarismo”: as duas provém do nome do matemático, astrônomo, astrólogo e escritor Abu Abdallah Mohammed ibn Musa Al-Khwarizmi da Pérsia, considerado um dos fundadores da álgebra.


Como algoritmos funcionam

Algoritmos podem ser expressados em diferentes tipos de linguagem: natural, humana, matemática, dentre outras, sejam elas formais ou não. O nível de precisão pode divergir dependendo do tipo de linguagem utilizado para o algoritmo; um algoritmo escrito em português, por exemplo, provavelmente é mais ambíguo do que um escrito em alguma linguagem de programação. Fluxogramas e outras formas gráficas também podem ser utilizados para representar um algoritmo, utilizando de suas próprias notações e convenções.

Um exemplo gráfico de um algoritmo que soma dois números representado em forma de fluxograma:

Um outro exemplo de algoritmo extremamente simples que soma dois números pode ser escrito da seguinte maneira na linguagem Javascript:

function soma(a, b) {
  return a + b;
}
 
soma(1,3); // retorna 4

Perceba que há diversas formas de escrever o mesmo programa, então existem algoritmos que podem ser mais legíveis e eficientes do que outros. No exemplo acima nenhum problema de performance ocorre devido a simplicidade da função, mas um algoritmo que percorre um vetor de números e tenta encontrar um número específico pode possuir grandes divergências no seu tempo de execução, dependendo da estratégia empregada no seu desenvolvimento.


Eficiência de Algoritmos

Há várias maneiras de se resolver um problema. Logo, é possível criar programas de computador diferentes para resolvê-los. Com isto, naturalmente ocorre a pergunta: “Qual a melhor maneira de resolver esse problema?”. Para exemplificar, um algoritmo que calcula a rota de uma cidade até outra pode calcular uma rota que percorre caminhos desnecessários, tornando o esforço maior. Na prática, isso significa que um algoritmo pode resolver o problema, porém levar mais tempo ou ocupar mais espaço para atingir o mesmo objetivo.

Um algoritmo deve ser analisado para determinar a sua utilização de recursos, e sua eficiência pode ser medida baseada nesses recursos, como tempo e espaço. É necessário entender qual recurso é mais importante na análise daquele algoritmo, pois eles podem não estar diretamente relacionados, como é o caso do tempo e espaço.

Um conceito muito importante para classificar a eficiência de um algoritmo é a sua complexidade, o número aproximado de operações realizadas pelo algoritmo para concluir uma tarefa. Dessa forma, geralmente é utilizada apenas a operação mais custosa em performance para estimar a complexidade do algoritmo a fim de facilitar o cálculo. Sendo assim, é utilizada uma notação matemática para classificar a complexidade de um algoritmo, a Big O Notation, que busca representar o tempo necessário para concluir o algoritmo conforme as entradas crescem e classificar o crescimento desse tempo.

Um algoritmo eficiente sempre busca uma pequena quantidade ações para completar uma tarefa, ou seja, baixa complexidade. Portanto, os algoritmos mais eficientes serão aqueles que possuem uma complexidade de progressão logarítmica, que possuem um crescimento mais lento, e os menos eficientes serão os que possuem complexidade de progressão exponencial ou fatorial.


Aplicações

Além de serem aplicados em diferentes áreas como em diferentes áreas, como marketing, vendas, relacionamento, compras online, logística, financeiro, uma das principais aplicações dos algoritmos no nosso cotidiano é nas redes sociais. O Facebook usa algoritmos para identificar os posts que devem ou não ser exibidos aos usuários, para que o conteúdo seja relevante a eles e aumente seu engajamento. O algoritmo do Youtube utiliza visualizações, e, principalmente, tempo médio de visualização para determinar a relevância do conteúdo. O algoritmo do Spotify determina músicas a serem recomendadas aos usuários com base em seus gostos. O algoritmo de busca do Google é extremamente rápido e eficiente, e para que esse algoritmo de busca funcione bem também é necessário um bom algoritmo de ordenação para manter os dados ordenados e garantir a velocidade de busca.








Referências

[1] Understanding algorithms in Computer Science .iun. INTERNATIONAL UNIVERSITY IN GENEVA. Disponível em: <https://www.iun.ch/en-en/blog/computer-science/algorithm-computer-science-definition-and-understanding>. Acesso em 30 de Agosto de 2022.
[2] ALGORITIMO. in: WIKIPÉDIA: a enciclopédia livre. Disponível em: <https://pt.wikipedia.org/wiki/Algoritmo>. Acesso em 30 de Agosto de 2022.
[3] GILLIS. A. S.. What is an algorithm?. TECHTARGET. Disponível em: <https://www.techtarget.com/whatis/definition/algorithm>. Acesso em 30 de Agosto de 2022.
[4] CONTENT. R. R.. Saiba como funciona um algoritmo e conheça os principais exemplos existentes no mercado. ROCKCONTENT. Disponível em: <https://rockcontent.com/br/blog/algoritmo/>. Acesso em 30 de Agosto de 2022.
[5] BIG O NOTATION. in: WIKIPEDIA: the free encyclopedia. Disponível em: <https://en.wikipedia.org/wiki/Big_O_notation>. Acesso em 5 de Setembro de 2022.

a/algoritmos.txt · Última modificação: 2023/01/22 19:09 por Gabriel Bizio