1_Visão geral do algoritmo

Mar 31 2023
Introdução Para começar a falar de algoritmos é necessário começar pela definição: “Algoritmos são um conjunto finito de instruções ordenadas cujo objetivo é resolver um problema” existem várias definições mas o significado é sempre o mesmo. Vamos comparar como o algoritmo funciona com uma receita de torta, onde a realização da torta é o problema que queremos resolver.
O Nascimento de Vênus, Sandro Botticelli 1485

Introdução

Para começar a falar de algoritmos é necessário começar pela definição: “Algoritmos são um conjunto finito de instruções ordenadas cujo objetivo é resolver um problema” existem várias definições mas o significado é sempre o mesmo.

Vamos comparar como o algoritmo funciona com uma receita de torta, onde a realização da torta é o problema que queremos resolver. Para começar, deve estar claro qual é o problema, qual torta gostaríamos de fazer? Quais ingredientes precisamos? O bolo é para quantas pessoas? Depois de analisar tudo, podemos começar com a preparação.

Seguindo a receita, juntam-se os elementos pela ordem indicada, por exemplo, primeiro o leite com a farinha e o açúcar, depois o fermento e por fim uma pitada de sal.

É um conjunto precisamente finito de etapas, cujo objetivo é resolver o problema, que é cozinhar o bolo.

Se seguirmos todos os passos sem nenhuma alteração, em teoria, o bolo deve ser sempre o mesmo. Na informática, o funcionamento de um algoritmo é semelhante, existem muitos pequenos passos, geralmente de natureza estritamente matemática que, se seguidos da mesma forma, permitem chegar ao mesmo resultado. Se, por outro lado, mudarmos um dos ingredientes, o resultado será diferente na receita e na informática.

Etapas a realização de um algoritmo envolve duas fases:

● Fase de planeamento , onde se estudam os vários passos e se esboça a primeira estrutura do algoritmo, como quando se colocam todos os ingredientes na mesa, pelo que ainda não estamos a cozinhar mas a planear o que usar e fazer.

Na ciência da computação as etapas são:

  • Pseudocódigo , onde os algoritmos estão em linguagem natural. Todos podem entendê-lo sem ser um especialista.
  • Snippet , é como o pseudocódigo, mas mais semelhante à linguagem de programação. Se o snippet for criado, o pseudocódigo não será, e apenas um especialista poderá criá-lo.
  • Plano de execução , qual processo será executado primeiro? Quais são os próximos? Alguns deles podem ser executados juntos? Pensando na receita da torta, pode ser que precise de um tempo para pré-aquecer o forno ou deixar a massa descansar, então posso fazer mais alguma coisa durante esse tempo?

Requisitos

Algoritmos produzem cálculos e precisam de dados na entrada para funcionar. Essas duas variáveis ​​podem nos levar a:

  • Algoritmos de alta intensidade de dados , que exigem muitos dados de entrada, mas não precisam de muitos cálculos;
  • Algoritmos de alta intensidade de cálculo , requerem grande necessidade de recursos, mas não grande necessidade de dados;
  • Algoritmos intensivos de dados e cálculos , têm uma grande necessidade de dados e cálculos.

Quando um algoritmo é considerado funcional? Um algoritmo deve sempre ter três características para ser funcional. Tem que ser:

  • Correto , ele deve retornar as respostas certas.
  • Compreensível , o mais descomplicado possível.
  • Eficiente , não precisa demorar muito, mesmo que correto não é possível esperar milhares de anos por uma resposta, mas mesmo um dia é inaceitável para a maioria dos algoritmos.

O tempo que leva para rodar um algoritmo é um assunto sentido na comunidade de informática, então não faltam formas de avaliar a velocidade dele:

● Estimativa de desempenho , uma média é feita entre a execução mais rápida e a mais lenta. Se as avaliações estiverem corretas, a execução nunca deve passar pela pior avaliação.

● Big O , este indicador avalia o tempo que leva para cada operação e pode assumir estes valores:

  • 1 = a complexidade é constante , o tempo não muda com base nos dados. Então se eu colocar 10 ou 20 gramas de fermento no bolo o cozimento será sempre de 10 minutos.
  • N = o tempo muda com base nos dados , então digamos que se eu colocar 10 gramas de fermento no bolo levará 10 minutos para cozinhar enquanto se colocar 20 gramas levará 20 minutos para cozinhar.
  • N 2 = o tempo é proporcional ao quadrado da entrada . Então se dessa vez com 10 gramas demorar 10 minutos se eu colocar 20 gramas o bolo vai demorar 40 minutos para assar.
  • Logn = é proporcional ao logaritmo do tamanho da entrada . Você me pegou sem um exemplo culinário para propor neste caso. Só sei que nesse caso toda vez que eu insiro um dado, o tempo de execução do algoritmo diminui.

explicabilidade

Para concluir, um algoritmo deve ter uma última característica: deve ser explicável. Quem consulta o código do algoritmo deve entender como cada parte afeta o resultado final. Hoje bancos, estados, instituições de treinamento e empresas utilizam algoritmos para tarefas que impactam a vida das pessoas, como descartar um currículo ou encaminhá-lo para a próxima etapa de seleção, conceder um financiamento imobiliário ou cuidar da fiscalização. E essas são apenas algumas das tarefas executadas por um algoritmo.

A compreensibilidade é, portanto, essencial para evitar que alguns grupos de pessoas sejam discriminados voluntária ou involuntariamente. Facilitar o acesso de algumas pessoas a uma hipoteca modificando um Algoritmo é extremamente simples para um especialista, então os Algoritmos devem ser compreensíveis.

Um dos métodos de avaliação é trabalhar as variáveis ​​utilizadas. Se você alterar uma variável, é possível compreender como essa variável afeta o Algoritmo, então a área de influência da variável é mapeada.