Como os algoritmos moldam sua vida digital: um guia para não programadores

2

Você toca em uma tela. O conteúdo aparece. Você não viu isso acontecer, mas alguém, ou alguma coisa, decidiu o que lhe mostrar.

Os algoritmos são os arquitetos invisíveis da Internet moderna. Eles ditam as classificações de pesquisa, selecionam feeds sociais e direcionam seu tráfego. Mas o que é um algoritmo no mundo real, além do jargão tecnológico?

Na sua forma mais simples, um algoritmo é uma receita passo a passo. É um conjunto de instruções para resolver um problema ou concluir uma tarefa. Pode ser tão básico quanto somar dois números ou tão complexo quanto uma rede neural reconhecendo seu rosto. Essas regras são a espinha dorsal de todo aplicativo de software, garantindo que as tarefas sejam executadas com eficiência. Eles são o “como” por trás do “o quê”.

Para entender por que isso é importante, temos que observar como os computadores realmente funcionam.

A lógica passo a passo do código

Os computadores são obedientes, mas literais. Eles não adivinham. Se você quiser que um computador faça alguma coisa, você deve escrever um programa que diga exatamente o que fazer, passo a passo. O computador executa essas instruções mecanicamente.

Ao escrever esse programa, você deve escolher o método. Esse método é o algoritmo. É a técnica usada para realizar o trabalho.

Considere isto: um amigo está chegando ao aeroporto. Eles precisam chegar até sua casa. Você tem quatro algoritmos diferentes para eles seguirem. Cada um leva-os ao mesmo destino, mas o caminho é completamente diferente.

O algoritmo do táxi
* Vá para o ponto de táxi.
* Entre em um táxi.
* Dê ao motorista seu endereço.

O algoritmo Call-Me
* Ligue para o seu celular quando o avião pousar.
* Conheça a área de retirada de bagagem externa.

O algoritmo de aluguel de carro
* Pegue o ônibus até o balcão de aluguel.
* Alugue um veículo.
* Dirija usando GPS até sua casa.

O Algoritmo do Ônibus
* Pegue o ônibus número 70 fora da área de retirada de bagagem.
* Transferência para o ônibus 14 na Main Street.
* Desça na Elm Street.
* Caminhe dois quarteirões para o norte.

Todos os quatro funcionam. Nenhum está “errado”. Mas eles diferem enormemente em custo e tempo. O táxi é rápido, mas caro. O ônibus é barato, mas lento. Você escolhe o algoritmo com base nas circunstâncias.

No software, fazemos a mesma coisa. Escolhemos a técnica que se adapta aos dados, ao tempo e ao orçamento.

Por que a classificação é mais importante do que você pensa

Na programação, muitas vezes existem muitas maneiras de resolver um único problema. Cada maneira tem compensações. Em nenhum lugar isso é mais evidente do que na classificação.

Os computadores gastam muito tempo classificando listas. Nomes. Preços. Datas. Resultados da pesquisa. Se a classificação for ineficiente, todo o sistema ficará lento.

Os pesquisadores estudam algoritmos de classificação há décadas. Aqui estão cinco abordagens comuns:

  • Classificação da lixeira
  • Mesclar classificação
  • Classificação por bolha
  • Classificação de shell
  • Classificação rápida

Qual você usa?

Se você tiver um milhão de números inteiros entre 1 e 10, bin sort é o vencedor. É rápido e simples para intervalos pequenos. Se você tem um milhão de títulos de livros, o quicksort é provavelmente a melhor escolha. Ele lida melhor com dados não estruturados. Conhecer os pontos fortes e fracos permite que os desenvolvedores escolham a ferramenta certa. Escolha o errado e seu aplicativo ficará lento.

Os principais tipos de algoritmos

Algoritmos não tratam apenas de classificação. Eles se enquadram em categorias amplas com base no que estão tentando alcançar. Da criptografia ao aprendizado de máquina, o tipo de algoritmo define como os dados são processados.

Algoritmos de pesquisa

Eles são projetados para recuperar informações de uma estrutura de dados. Pense na pesquisa linear (verificar cada item) ou na pesquisa binária (cortar a lista pela metade repetidamente). Os mecanismos de pesquisa e as consultas de banco de dados dependem muito deles para encontrar o que você digitou em milissegundos.

Algoritmos de Programação Dinâmica

Esta abordagem otimiza problemas complexos, dividindo-os em subproblemas mais simples. Evita recalcular os mesmos dados repetidamente. Os exemplos incluem gerar a série de Fibonacci, resolver o problema da mochila (maximizar o valor em uma bolsa limitada) ou encontrar o caminho mais curto em um gráfico, como com os algoritmos Bellman-Ford ou Floyd-Warshall.

Algoritmos gananciosos

Algoritmos gananciosos escolhem a melhor opção local em cada etapa. Eles não olham para o quadro geral. Eles presumem que a melhor escolha imediata leva ao melhor resultado geral. Isso funciona bem para problemas como encontrar a árvore geradora mínima em uma rede (algoritmos de Kruskal e Prim). Mas às vezes, ser ganancioso leva você a um beco sem saída.

Algoritmos de retrocesso

Usados para satisfação de restrições, esses algoritmos constroem candidatos passo a passo. Se um candidato falhar no teste, ele “retrocederá” e tentará um caminho diferente. Os solucionadores de Sudoku e o problema N-Queens são exemplos clássicos. É essencialmente tentativa e erro com uma memória de erros passados.

Algoritmos de aprendizado de máquina

Isso permite que os computadores aprendam com os dados, em vez de seguir regras codificadas. Eles prevêem resultados ou tomam decisões. Eles são subdivididos em aprendizagem supervisionada (treinada em dados rotulados), aprendizagem não supervisionada (encontrar padrões em dados não rotulados), aprendizagem por reforço (aprendizagem por meio de recompensa/punição) e aprendizagem profunda (usando redes neurais).

Algoritmos Randomizados

Às vezes, o determinismo é muito lento. Algoritmos randomizados introduzem aleatoriedade em sua lógica. Eles usam abordagens probabilísticas para resolver problemas onde um método rigoroso e passo a passo é ineficiente. O método Monte Carlo e o Randomized Quicksort são excelentes exemplos.

Algoritmos de Força Bruta

Esta é a abordagem “tente tudo”. A força bruta explora sistematicamente todas as soluções possíveis. É simples. Garante uma solução, se existir. Mas para problemas grandes ou complexos, é dolorosamente ineficiente. É o equivalente digital de experimentar todas as teclas de um anel até que uma caiba.

Essas categorias se sobrepõem. Um algoritmo pode ser de programação dinâmica e ganancioso em diferentes contextos. A chave é compreender as compensações.

O Impacto Humano

Muitas vezes pensamos em algoritmos como lógica fria. Eles são. Mas também são espelhos das nossas escolhas. Quando priorizamos a velocidade, pegamos táxis. Quando priorizamos o custo, conseguimos ônibus. Quando priorizamos a precisão, podemos aceitar a lentidão.

Na sua vida digital, você raramente vê o código. Você acabou de ver o resultado. O feed que entende o seu humor. O mapa que evita o trânsito. O resultado da pesquisa que responde à sua pergunta antes de você terminar de digitar.

Não é mágica. São apenas alguns passos.

Mas quem decide os passos? E quem decide o peso de cada passo?

Essa é a verdadeira questão.

Na próxima vez que você rolar, pergunte-se: qual algoritmo está conduzindo o show? E por que escolheu esse conteúdo para você?

A resposta pode mudar a forma como você olha para a tela.

Como os algoritmos traduzem entradas em resultados do mundo real

Um algoritmo é apenas um conjunto de instruções. É preciso entrada. Ele processa esses dados. Ele cospe saída. A linguagem em que você escreve – Python, C++, Java – não altera a mecânica central. É a lógica que importa. E essa lógica está sempre em busca de uma solução ótima, mesmo que “ótimo” signifique algo diferente dependendo da tarefa.

A saída nem sempre é um único número ou uma resposta sim/não. Isso varia muito com base no problema que o código está tentando resolver.

Resolução de problemas e classificação

Alguns algoritmos são construídos para encontrar respostas específicas. Pense no Google Maps calculando o caminho mais curto entre dois pontos. Ou um script simples classificando uma lista confusa de números. Estas são saídas clássicas de resolução de problemas.

Mas no aprendizado de máquina, o resultado geralmente é uma decisão. Um filtro de spam não apenas classifica e-mails; ele os classifica. Este e-mail é lixo eletrônico? Sim ou não. Um mecanismo de recomendação não lista apenas itens. Ele decide quais produtos você provavelmente comprará agora. É fazer uma escolha por você.

Números, estruturas e recursos visuais

Às vezes, o resultado é apenas um número bruto. Algoritmos processam equações para encontrar raízes. Eles calculam médias estatísticas a partir de enormes conjuntos de dados. Outras vezes, eles geram estruturas de dados. Um algoritmo de classificação reorganiza uma matriz. Um algoritmo gráfico identifica componentes conectados, essencialmente mapeando relacionamentos dentro de uma rede.

Depois, há o lado visual. Algoritmos de computação gráfica pegam dados numéricos brutos e os transformam em imagens. Os mecanismos de renderização em videogames geram imagens 2D a partir de modelos 3D. Sem estes algoritmos, os mundos em que jogamos seriam apenas linhas num ecrã.

Texto, sinais e ações físicas

Algoritmos de processamento de linguagem natural produzem texto. Eles geram respostas semelhantes às humanas, traduzem idiomas ou resumem artigos longos. Não é mais apenas código; é conversa.

Na robótica e nos sistemas embarcados, a saída é física. Algoritmos enviam sinais para motores e atuadores. Eles podem acender uma luz. Ou podem coordenar os movimentos complexos de um braço robótico numa linha de montagem. A instrução digital torna-se uma ação física.

O panorama geral

Esteja você identificando padrões, vasculhando dados iniciais ou encontrando um processo matemático, algoritmos eficientes automatizam o trabalho pesado. Eles lidam com as entradas e variáveis ​​para que você não precise fazer isso.

A questão não é realmente como eles funcionam. É o que eles serão capazes de fazer a seguir.

Algoritmos são essenciais para a forma como os sistemas de computador processam dados. A maioria dos programas de computador consiste em algoritmos que seguem instruções específicas para realizar uma tarefa simples.

Este artigo foi atualizado em conjunto com a tecnologia de IA, depois verificado e editado por um editor do HowStuffWorks.

Aqui estão alguns links interessantes:

  • Como a inteligência artificial está mudando tudo totalmente
  • whatis.com: Algoritmo
  • Como funciona o Java
  • Como funciona a programação C
  • Como funcionam os PCs
  • Como funciona a criptografia
  • Como funciona a compactação de arquivos

Perguntas frequentes sobre algoritmos

O que é um algoritmo em termos simples?
Quando você diz a um computador o que fazer, você também escolhe como ele fará isso. Esse é o algoritmo. É a técnica básica ou conjunto de instruções usadas para realizar o trabalho.

O que é um exemplo de algoritmo?
Uma receita é um exemplo clássico. É uma lista finita de instruções. Um algoritmo pode ser mais específico, mas o conceito é o mesmo.

Quais são as três partes de um algoritmo?
Entradas de dados. Processamento de dados. Saídas de dados. Você coloca alguma coisa, a máquina faz alguma coisa e você tira alguma coisa.

Qual é a utilização de algoritmo na programação de computadores?
Algoritmos são a espinha dorsal do processamento de dados. A maioria dos programas de computador são apenas coleções de algoritmos que seguem instruções específicas para realizar tarefas simples. Sem eles não há automação. Sem lógica. Apenas hardware bruto aguardando orientação.