O que são algoritmos de computador e como eles funcionam?

Publicados: 2022-01-29

A menos que você goste de matemática ou programação, a palavra “algoritmo” pode ser grega para você, mas é um dos blocos de construção de tudo que você está usando para ler este artigo. Aqui está uma rápida explicação do que são e como funcionam.

Isenção de responsabilidade: não sou professor de matemática ou ciência da computação, portanto, nem todos os termos que uso são técnicos. Isso porque estou tentando explicar tudo em inglês simples para as pessoas que não estão muito à vontade com matemática. Dito isto, há alguma matemática envolvida, e isso é inevitável. Geeks de matemática, sintam-se à vontade para corrigir ou explicar melhor nos comentários, mas, por favor, mantenham as coisas simples para os matematicamente desinclinados entre nós.

Imagem de Ian Ruotsala

O que é um Algoritmo?

A palavra 'algoritmo' tem uma etimologia semelhante a 'álgebra', exceto que isso se refere ao próprio matemático árabe, al-Khwarizmi (apenas um boato interessante). Um algoritmo, para os não programadores entre nós, é um conjunto de instruções que recebe uma entrada, A, e fornece uma saída, B, que altera os dados envolvidos de alguma forma. Os algoritmos têm uma grande variedade de aplicações. Em matemática, eles podem ajudar a calcular funções a partir de pontos em um conjunto de dados, entre coisas muito mais avançadas. Além de seu uso na programação em si, eles desempenham papéis importantes em coisas como compactação de arquivos e criptografia de dados.

Um conjunto básico de instruções

Digamos que seu amigo o encontre em uma mercearia e você o esteja guiando em sua direção. Você diz coisas como “entre pelas portas do lado direito”, “passe pela seção de peixes à esquerda” e “se você vir a leiteria, passou por mim”. Algoritmos funcionam assim. Podemos usar um fluxograma para ilustrar instruções com base em critérios que conhecemos antecipadamente ou descobrimos durante o processo.

(imagem intitulada “Icebreaking Routine” EDIT: cortesia de Trigger and Freewheel)

Propaganda

A partir do START, você seguiria o caminho e, dependendo do que acontecer, seguiria o “fluxo” para um resultado final. Fluxogramas são ferramentas visuais que podem representar de forma mais compreensível um conjunto de instruções usadas por computadores. Da mesma forma, os algoritmos ajudam a fazer o mesmo com mais modelos baseados em matemática.

Gráficos

Vamos usar um gráfico para ilustrar as várias maneiras pelas quais podemos dar direções.

Podemos expressar este gráfico como uma conexão entre todos os seus pontos. Para reproduzir esta imagem, podemos dar um conjunto de instruções a outra pessoa.

Método 1

Podemos representar isso como uma série de pontos, e as informações seguiriam a forma padrão do gráfico = {(x1, y1), (x2, y2), …, (xn, yn)}.

gráfico = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1) }

É muito fácil traçar cada ponto, um após o outro, e conectá-los ao ponto anterior. No entanto, imagine um gráfico com mil pontos ou vários segmentos, todos indo em todas as direções. Essa lista teria muitos dados, certo? E então ter que conectar cada um, um de cada vez, pode ser uma dor.

Método 2

Outra coisa que podemos fazer é dar um ponto inicial, a inclinação da linha entre ele e o próximo ponto, e indicar onde esperar o próximo ponto usando a forma padrão de graph={(starting point}, [m1, x1, h1 ], …, [mn, xn, hn]}. Aqui, a variável 'm' representa a inclinação da linha, 'x' representa a direção de contagem (seja x ou y), e 'h' informa como muitos para contar nessa direção. Você também pode se lembrar de traçar um ponto após cada movimento.

gráfico = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}

Propaganda

Você vai acabar com o mesmo gráfico. Você pode ver que os últimos três termos nesta expressão são os mesmos, então podemos reduzir isso apenas dizendo “repita isso três vezes” de alguma forma. Digamos que sempre que você vir a variável 'R' aparecer, isso significa repetir a última coisa. Nós podemos fazer isso:

gráfico = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}

E se os pontos individuais realmente não importam, e apenas o próprio gráfico importa? Podemos consolidar essas três últimas seções assim:

gráfico = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}

Isso encurta um pouco as coisas de onde estavam antes.

Método 3

Vamos tentar fazer isso de outra maneira.

y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2,5x-7,5, 5≤x≤7
y=-3x+29, 7≤x≤8
y=-3x+29, 8≤x≤9
y=-3x+29, 9≤x≤10

Aqui temos isso em termos algébricos puros. Mais uma vez, se os pontos em si não importam e apenas o gráfico importa, podemos consolidar os três últimos itens.

y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2,5x-7,5, 5≤x≤7
y=-3x+29, 7≤x≤10

Agora, qual método você escolhe depende de suas habilidades. Talvez você seja ótimo com matemática e gráficos, então você escolhe a última opção. Talvez você seja bom em navegar, então escolha a segunda opção. No domínio dos computadores, no entanto, você está realizando muitos tipos diferentes de tarefas e a capacidade do computador não muda realmente. Portanto, os algoritmos são otimizados para as tarefas que realizam.

Outro ponto importante a ser observado é que cada método depende de uma chave. Cada conjunto de instruções é inútil a menos que você saiba o que fazer com elas. Se você não sabe que deve traçar cada ponto e conectar os pontos, o primeiro conjunto de pontos não significa nada. A menos que você saiba o que cada variável significa no segundo método, você não saberá como aplicá-las, assim como a chave para uma cifra. Essa chave também é parte integrante do uso de algoritmos e, muitas vezes, essa chave é encontrada na comunidade ou por meio de um “padrão”.

Compressão de arquivo

Ao baixar um arquivo .zip, você extrai o conteúdo para poder usar o que estiver dentro dele. Hoje em dia, a maioria dos sistemas operacionais pode mergulhar em arquivos .zip como se fossem pastas normais, fazendo tudo em segundo plano. Na minha máquina Windows 95 há mais de uma década, tive que extrair tudo manualmente antes de poder ver algo além dos nomes dos arquivos dentro. Isso porque o que estava armazenado no disco como um arquivo .zip não estava em um formato utilizável. Pense em um sofá-cama. Quando quiser usá-la como cama, é preciso retirar as almofadas e desdobrá-la, o que ocupa mais espaço. Quando você não precisar dele ou quiser transportá-lo, você pode dobrá-lo novamente.

Propaganda

Os algoritmos de compactação são ajustados e otimizados especificamente para os tipos de arquivos aos quais são direcionados. Os formatos de áudio, por exemplo, usam uma maneira diferente de armazenar dados que, quando decodificados pelo codec de áudio, fornecerão um arquivo de som semelhante à forma de onda original. Para obter mais informações sobre essas diferenças, confira nosso artigo anterior, Quais são as diferenças entre todos esses formatos de áudio? Formatos de áudio sem perdas e arquivos .zip têm uma coisa em comum: ambos produzem os dados originais em sua forma exata após o processo de descompressão. Codecs de áudio com perdas usam outros meios para economizar espaço em disco, como aparar frequências que não podem ser ouvidas por ouvidos humanos e suavizar a forma de onda em seções para eliminar alguns detalhes. No final, embora não possamos realmente ouvir a diferença entre uma faixa de MP3 e uma faixa de CD, há definitivamente um déficit de informação na primeira.

Criptografia de dados

Os algoritmos também são usados ​​para proteger dados ou linhas de comunicação. Em vez de armazenar dados para que usem menos espaço em disco, eles são armazenados de maneira indetectável por outros programas. Se alguém roubar seu disco rígido e começar a escaneá-lo, ele poderá coletar dados mesmo quando você excluir arquivos porque os dados em si ainda estão lá, mesmo que o local de encaminhamento tenha desaparecido. Quando os dados são criptografados, o que está armazenado não se parece com o que é. Geralmente parece aleatório, como se a fragmentação tivesse se acumulado ao longo do tempo. Você também pode armazenar dados e fazê-los aparecer como outro tipo de arquivo. Arquivos de imagem e arquivos de música são bons para isso, pois podem ser bem grandes sem levantar suspeitas, por exemplo. Tudo isso é feito por meio de algoritmos matemáticos, que pegam algum tipo de entrada e a convertem em outro tipo de saída bem específico. Para obter mais informações sobre como a criptografia funciona, confira HTG Explains: What is Encryption and How Does It Work?


Algoritmos são ferramentas matemáticas que fornecem uma variedade de usos em ciência da computação. Eles trabalham para fornecer um caminho entre um ponto inicial e um ponto final de maneira consistente e fornecem as instruções para segui-lo. Sabe mais do que destacamos? Compartilhe suas explicações nos comentários!