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

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

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

    Disclaimer: Eu não sou professor de matemática ou de ciências da computação, então nem todos os termos que uso são técnicos. Isso porque estou tentando explicar tudo em inglês claro para pessoas que não estão muito confortáveis ​​com a matemática. Dito isto, há alguma matemática envolvida, e isso é inevitável. Geeks de matemática, sinta-se à vontade para corrigir ou explicar melhor nos comentários, mas, por favor, mantenha isso simples para os matematicamente desincentivos entre nós.

    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 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. 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, 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 te encontrando 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 laticinios, passou por mim”. Algoritmos funcionam assim. Podemos usar um fluxograma para ilustrar instruções com base em critérios que conhecemos antecipadamente ou descobrirmos durante o processo.

    (imagem intitulada "Icebreaking Routine" EDIT: cortesia de Trigger e Freewheel)

    Do START, você seguiria o caminho e, dependendo do que acontece, você segue 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 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 esse 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 graph = (x1, y1), (x2, y2),…, (xn, yn).

    grafo = (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 milhares de pontos ou múltiplos segmentos, indo em todos os sentidos. 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 de partida, o declive da linha entre ele e o próximo ponto, e indicar onde esperar o próximo ponto usando a forma padrão do gráfico = (ponto inicial, [m1, x1, h1 Aqui, a variável 'm' representa a inclinação da linha, 'x' representa a direção a ser contada (se x ou y), e 'h' diz a você como muitos para contar na direção dita.Você também pode lembrar de traçar um ponto após cada movimento.

    grafo = (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ê 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, significa repetir a última coisa. Nós podemos fazer isso:

    grafo = (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 importarem, e apenas o gráfico em si der importância? Podemos consolidar essas últimas três seções da seguinte forma:

    grafo = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2,5, x, 2], [-3, x, 3]

    Ele encurta as coisas um pouco de onde elas 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 temos isso em termos algébricos puros. Mais uma vez, se os pontos em si não importam e apenas o gráfico faz, 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 você escolhe a segunda opção. No reino dos computadores, no entanto, você está fazendo muitos tipos diferentes de tarefas e a capacidade do computador não muda realmente. Portanto, os algoritmos são otimizados para as tarefas que eles completam.

    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 você 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, você 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, muitas vezes, essa chave é encontrada na comunidade ou por meio de um "padrão".

    Compressão de arquivos

    Quando você faz o download de 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, precisei extrair tudo manualmente antes que pudesse ver nada além dos nomes dos arquivos contidos nele. 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 você quer usá-lo como uma cama, você tem que remover as almofadas e desdobrá-lo, o que ocupa mais espaço. Quando você não precisa, ou quer transportá-lo, você pode dobrá-lo de volta.

    Os algoritmos de compactação são ajustados e otimizados especificamente para os tipos de arquivos para os 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, consulte 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 descompactação. Codecs de áudio com perdas usam outros meios para economizar espaço em disco, como freqüências de corte que não podem ser ouvidas por ouvidos humanos e suavizar a forma de onda em seções para se livrar de alguns detalhes. No final, apesar de podermos não ser capazes de realmente ouvir a diferença entre uma faixa de MP3 e uma de CD, há definitivamente um déficit de informação na antiga.

    Criptografia de dados

    Algoritmos também são usados ​​na proteção de dados ou linhas de comunicação. Em vez de armazenar dados para que ele use menos espaço em disco, ele é armazenado de maneira indetectável por outros programas. Se alguém rouba seu disco rígido e começa a digitalizá-lo, ele pode coletar dados mesmo quando você exclui 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 fazer com que apareça como outro tipo de arquivo. Arquivos de imagem e arquivos de música são bons para isso, pois podem ser bastante grandes sem levantar 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. Para obter mais informações sobre como funciona a criptografia, confira 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 aquilo que destacamos? Compartilhe suas explicações nos comentários!