16Aug

Quais são os algoritmos de computador e como eles funcionam?

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

Disclaimer: Eu não sou professor de matemática ou informática, então nem todos os termos que uso são técnicos. Isso porque eu estou tentando explicar tudo em inglês simples para as pessoas não estão bastante confortáveis ​​com matemática. Dito isto, há alguma matemática envolvida, e isso é inevitável. Geeks de matemática, sinta-se livre para corrigir ou explicar melhor nos comentários, mas, por favor, mantenha-o simples para os pacientes com desentendimento matemático.

Imagem por Ian Ruotsala

O que é um Algoritmo?

A palavra "algoritmo" tem uma etimologia semelhante à "álgebra", exceto que isso se refere ao próprio matemático árabe, al-Khwarizmi( apenas um tidbit interessante).Um algoritmo, para os não programadores entre nós, é um conjunto de instruções que recebem uma entrada, A, e fornecem um resultado, B, que altera os dados envolvidos de alguma forma. 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 própria programação, eles desempenham papéis importantes em coisas como a compactação de arquivos e criptografia de dados.

Um conjunto básico de instruções

Digamos que seu amigo está se encontrando com você em um supermercado e você o está orientando para você.Você diz coisas como "entrar pelas portas do lado direito", "passar a seção de peixe à esquerda" e "se você vir a laticínios, você passou por mim". Algoritmos funcionam assim. Podemos usar um fluxograma para ilustrar instruções com base em critérios que conhecemos antes ou descobrimos durante o processo.

( imagem intitulada "Rotina de quebra de gelo" EDIT: cortesia de Trigger e Freewheel)

A partir do INÍCIO, você seguiria o caminho e, dependendo do que aconteceu, você segue o "fluxo" para um resultado final. Os fluxogramas são ferramentas visuais que podem representar mais compreensivelmente um conjunto de instruções usadas pelos 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 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 de 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 de qualquer maneira. Essa lista teria muitos dados, certo? E depois ter que conectar cada um, um de cada vez, pode ser uma dor.

Método 2

Outra coisa que podemos fazer é dar 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 linha, 'x' representa a direção a contar( x ou y) e 'h'diz-lhe quantos contam na referida direção. Você também pode se lembrar de traçar um ponto após cada movimento.

graph ={ (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 omesmo gráfico. Você pode ver que os três últimos termos dessa expressão são os mesmos, então podemos reduzir isso simplesmente dizendo "repetir isso três vezes" de alguma maneira. Digamos que sempre que você ver a variável 'R'aparecer, significa repetir a última coisa. 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 gráfico em si? Podemos consolidar essas últimas três seções, assim:

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

Acresce as coisas um pouco de onde estavam antes.

Método 3

Vamos tentar fazer isso de outra forma.

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 em termos algébricos puros. Mais uma vez, se os próprios pontos não importam e apenas o gráfico, podemos consolidar os últimos três 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 você escolhe a segunda opção. No domínio dos computadores, no entanto, você está fazendo muitos tipos diferentes de tarefas e a capacidade do computador realmente não muda. Portanto, os algoritmos são otimizados para as tarefas que eles completam.

Outro ponto importante a observar é 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 você 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á-los, 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 através de um "padrão".

Compressão de arquivos

Quando você baixa um arquivo. zip, você extrai o conteúdo para que você possa usar o que forestá dentro disso. 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 mais nada do que os nomes de arquivos dentro. Isso ocorre porque o que foi armazenado no disco como um arquivo. zip não estava em uma forma utilizável. Pense em um sofá-cama. Quando você quer usá-lo como uma cama, você deve remover as almofadas e desdobrá-la, o que ocupa mais espaço. Quando você não precisa disso, ou deseja transportá-lo, você pode dobrá-lo de volta.

Os algoritmos de compressão são ajustados e otimizados especificamente para os tipos de arquivos aos quais eles 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, 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 no disco, como freqüências de corte que não podem ser ouvidas pelos ouvidos humanos e suavizando a forma de onda nas seções para se livrar de algum detalhe. No final, embora não possamos realmente ouvir a diferença entre um MP3 e uma faixa de CD, definitivamente há um déficit de informação no primeiro. Criptografia de dados

Algoritmos também são usados ​​para proteger dados ou linhas de comunicação. Em vez de armazenar dados para que ele use menos espaço em disco, ele é armazenado de uma maneira que é indetectável por outros programas. Se alguém roubar seu disco rígido e começar a digitalizá-lo, eles podem pegar dados, mesmo quando você exclui arquivos porque os dados em si ainda estão lá, mesmo que o local de encaminhamento para o qual ele 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 crescido ao longo do tempo. Você também pode armazenar dados e fazê-lo aparecer como outro tipo de arquivo. Arquivos de imagens e arquivos de música são bons para isso, pois podem ser bastante grandes sem atrapalhar, por exemplo. Tudo isso é feito usando algoritmos matemáticos, que tomam algum tipo de entrada e convertem-no em outro, tipo de saída muito específico. Para obter mais informações sobre como a criptografia funciona, confira o HTG Explica: o que é criptografia e como funciona?

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 forma consistente, e fornecer as instruções para segui-lo. Saiba mais do que destacamos? Compartilhe suas explicações nos comentários!