A menos que você goste de matemática ou programação, a palavra “algoritmo” pode ser grego para você, mas é um dos blocos de construção de tudo que você está usando para ler este artigo. Aqui está uma explicação rápida 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 um inglês claro para as pessoas que não se sentem muito à vontade com matemática. Dito isso, há um pouco de matemática envolvida e isso é inevitável. Geeks da matemática, fiquem à vontade para corrigir ou explicar melhor nos comentários, mas, por favor, mantenham as coisas simples para os que não gostam de matemática entre nós.
Imagem de Ian Ruotsala
Índice
O que é um algoritmo?
A palavra ‘algoritmo’ tem uma etimologia semelhante a ‘álgebra’, exceto que se refere ao próprio matemático árabe, al-Khwarizmi (apenas um petisco 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 ampla variedade de aplicações. Em matemática, eles podem ajudar a calcular funções 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 esteja encontrando você em uma mercearia e você o esteja guiando em sua direção. Você diz coisas como “entre pelas portas do lado direito”, “passe a seção de peixes à esquerda” e “se você vir a leiteria, você passou por mim”. Algoritmos funcionam assim. Podemos usar um fluxograma para ilustrar as instruções com base em critérios que conhecemos com antecedência ou descobrimos durante o processo.
(imagem intitulada “ Rotina quebra-gelo ” EDIT: cortesia de Trigger and Freewheel )
A partir do INÍCIO, você desce o caminho e, dependendo do que acontece, você segue o “fluxo” até o resultado final. Fluxogramas são ferramentas visuais que podem representar mais compreensivelmente um conjunto de instruções usadas por computadores. Da mesma forma, os algoritmos ajudam a fazer o mesmo com modelos mais matemáticos.
Gráficos
Vamos usar um gráfico para ilustrar as várias maneiras de dar instruçõ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 plotar 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 indo em todas as direções. Essa lista teria muitos dados, certo? E ter que conectar cada um, um de cada vez, pode ser uma dor.
Método 2
Outra coisa que podemos fazer é fornecer um ponto de partida, 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 gráfico = {(ponto de partida}, [m1, x1, h1 ],…, [Mn, xn, hn]}. Aqui, a variável ‘m’ representa a inclinação da reta, ‘x’ representa a direção na qual contar (seja x ou y) e ‘h’ informa como muitos para contar nessa direção. Você também pode se lembrar de marcar 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]}
Você acabará com o mesmo gráfico. Você pode ver que os últimos três termos nesta expressão são iguais, 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, 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 não importarem realmente, e apenas o gráfico em si o fizer? 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, nós o temos em termos puramente algébricos. 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, o método que 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 você escolhe a segunda opção. No reino dos computadores, entretanto, você está realizando muitos tipos diferentes de tarefas e a capacidade do computador realmente não muda. Portanto, os algoritmos são otimizados para as tarefas que concluem.
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 eles. Se você não sabe que deve plotar 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, não saberá como aplicá-las, da mesma forma que a chave para uma cifra. Essa chave também é parte integrante do uso de algoritmos e, frequentemente, 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 que possa 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. Em minha máquina Windows 95, há mais de uma década, tive que extrair tudo manualmente antes de poder ver qualquer coisa além dos nomes de arquivo dentro. Isso porque o que estava armazenado no disco como um arquivo .zip não estava em uma forma 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, pode dobrá-lo de volta.
Os algoritmos de compactação são ajustados e otimizados especificamente para os tipos de arquivos aos quais se destinam. Os formatos de áudio, por exemplo, cada um usa uma maneira diferente de armazenar dados que, quando decodificados pelo codec de áudio, darão um arquivo de som semelhante à forma de onda original. Para obter mais informações sobre essas diferenças, consulte nosso artigo anterior, Quais são as diferenças entre todos esses formatos de áudio?Os formatos de áudio sem perdas e os arquivos .zip têm uma coisa em comum: ambos produzem os dados originais em sua forma exata após o processo de descompressão. Os codecs de áudio com perdas usam outros meios para economizar espaço em disco, como cortar 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 possamos não ser capazes de realmente ouvir a diferença entre uma faixa de MP3 e uma faixa de CD, definitivamente há um déficit de informação na primeira.
Criptografia de Dados
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 uma maneira que não pode ser detectada por outros programas. Se alguém roubar seu disco rígido e começar a digitalizá-lo, poderá coletar dados mesmo quando você excluir arquivos, porque os próprios dados ainda estão lá, mesmo que o local de encaminhamento para eles tenha desaparecido. Quando os dados são criptografados, o que quer que seja armazenado não se parece com o que é. Geralmente parece aleatório, como se a fragmentação tivesse se acumulado com o tempo. Você também pode armazenar dados e fazer com que apareçam como outro tipo de arquivo. Arquivos de imagem e arquivos de música são bons para isso, pois podem ser bem grandes sem despertar suspeitas, por exemplo. Tudo isso é feito usando algoritmos matemáticos, que pegam algum tipo de entrada e a convertem em outro tipo de saída muito específico.HTG explica: O que é criptografia e como funciona?
Algoritmos são ferramentas matemáticas que fornecem uma variedade de usos na ciência da computação. Eles trabalham para fornecer um caminho entre um ponto inicial e um ponto final de forma consistente e fornecem as instruções para segui-lo. Sabe mais do que destacamos? Compartilhe suas explicações nos comentários!