O que é um algoritmo? - Trabalho de algoritmos com exemplos

Índice:

Anonim

O que é um algoritmo?

É uma sequência de regras / instruções descritas antes de fazer uma abordagem para resolver qualquer problema específico, uma garantia para resolver o problema. Por exemplo, dê um exemplo de um ponto de portão ferroviário.
Um algoritmo deve:

  • Seja bem definido e bem ordenado - As instruções fornecidas em um algoritmo devem ser compreensíveis e bem definidas.
  • Tenha operações inequívocas, ou seja, cada uma das etapas de um algoritmo deve ser simples o suficiente para que não exija mais simplificação
  • Tenha uma operação efetivamente computável.

Fonte da imagem: d262ilb51hltx0.cloudfront.net/

Entendendo o algoritmo

Fonte da imagem : goo.gl/images/u76bFe

Existe um sensor que detecta a chegada de um trem, pois uma saída pode ser 2 resultados

  • O trem está chegando
  • O trem não está chegando

O resultado do primeiro resultado é passado para uma ação em que é aconselhável fechar os portões, enquanto o resultado do segundo resultado é novamente testado enviando-o para a declaração inicial. Além disso, o resultado da ação resultante da primeira condição é testado para verificar se o trem partiu completamente. Se a resposta for sim, os portões são abertos e, se for negativo, os portões permanecem fechados. Discutiremos mais isso e trabalharemos com os seguintes tópicos (Os subconjuntos / componentes básicos e o funcionamento de um algoritmo)

Como o Algorithm facilita o trabalho?

Como sabemos, este é um plano para resolver um problema. Bem, se não tivermos um plano, nossa abordagem para resolver um problema complexo possivelmente falhará na primeira tentativa e, mesmo que o resolva, as chances são muito menores de que seja uma solução ideal para esse problema.

Por outro lado, se criarmos algoritmos antes de resolver qualquer problema, digamos que criaremos alguns algoritmos e os classificaremos com base na solução ideal que eles fornecem, isso garantiria a solução do problema em questão. Esta é a razão pela qual em todos os lugares, antes de resolver qualquer problema, primeiro um algoritmo é criado.

Principais empresas de desenvolvimento de algoritmos

Construir um ótimo produto requer um design realmente bom, embora não possamos comparar um algoritmo para dois problemas diferentes, o que podemos fazer é listar os nomes das empresas que entregaram alguns produtos excelentes para esse mundo ao longo do século XXI:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • Cambriano
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Babilônia
  • Intel
  • Saúde do ferro de passar roupa
  • Afirmar
  • Subir na vida
  • Elemento AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Fonte: algoritmxlab.com/

Os subconjuntos / blocos de construção e o funcionamento de um algoritmo

Durante todos esses anos, ficou comprovado que um algoritmo pode ser projetado a partir de apenas três elementos básicos:

  • Seqüência
  • Seleção
  • Iteração


Fonte da imagem : https://goo.gl/

Uma sequência é uma série de instruções que devem ser seguidas para resolver um problema e as instruções devem ser executadas em ordem.

Exemplos

1. Adição de dois números

Etapa 1: Iniciar
Etapa 2: obtenha dois números como entrada e armazene em uma variável como aeb
Etapa 3: adicione o número a & b e armazene na variável c
Etapa 4: Imprimir c
Etapa 5: Pare.

Uma seleção é um programa que permite escolher a saída de diferentes ações. Como vimos anteriormente no exemplo do portão ferroviário, tínhamos uma caixa condicional na qual estava verificando se o trem está chegando.

2. Encontre o maior número entre 2

Etapa 1: Iniciar
Etapa 2: obtenha dois números como entrada e armazene em uma variável como aeb
Etapa 3: se a for maior que b, então
Etapa 4: imprimir a é grande
Etapa 5: else
Etapa 6: a impressão b é grande
Etapa 7: Parar

Repetição, iteração ou loop são os programas menores executados várias vezes até que a condição seja atendida.

3. Se quisermos calcular o fatorial de um número

Etapa 1 : Iniciar
Etapa 2 : declarar as variáveis ​​n, fatorial ei
Etapa 3 : inicialize as variáveis, ie fatorialß1 e iß1
Etapa 4: leia os valores de n
Etapa 5: repita as etapas até n iterações
fatorial <- fatorial * i
i <- i + 1
Etapa 6: Exibir fatorial
Etapa 7: parar

O que você pode fazer com um algoritmo?

É uma função ou série de funções que resolve um problema. Podemos usar um algoritmo para resolver o problema mais simples e também alguns dos mais difíceis do mundo. Decidimos que é o ideal com a ajuda da "complexidade do tempo". Em termos simples, a complexidade do tempo é uma maneira de descrever o tempo de execução de qualquer algoritmo. Há tempo de execução mínimo (chamado de pequeno 'O'), tempo médio de execução e, no pior caso, tempo de execução O (N) (também conhecido como grande 'O'). Cientistas da computação e engenheiros de software gostam de pensar em algoritmos porque estão interessados ​​em avaliar e criar coleções de práticas recomendadas para que não precisem começar do zero em cada instância de uma classe de problemas semelhante. Abaixo está um exemplo de diferentes complexidades de tempo que se pode obter ao resolver um problema específico. Isso também significa que pode haver várias soluções para um único problema, mas precisamos escolher a melhor opção, calculando as complexidades de tempo dos algoritmos. Nas entrevistas, você será solicitado a resolver um problema e, além disso, será solicitado a otimizá-lo, ou seja, reduzir o tempo de execução do seu algoritmo. Por exemplo, você pode ter escrito código com 2 loops "for" (iteração), mas pode ser possível que o trabalho seja realizado apenas usando um único loop "for" (iteração), mas você não está com essa solução ainda e você precisa descobrir mais!

Fonte da imagem: https://goo.gl/

Vantagens do algoritmo

  1. É uma representação passo a passo de uma solução para qualquer problema, o que facilita a compreensão.
  2. Ele usa um procedimento definido.
  3. É independente de qualquer linguagem de programação, por isso é fácil de entender para qualquer pessoa, mesmo sem conhecimento de programação.
  4. Cada etapa tem sua própria sequência lógica, portanto, é fácil depurar.
  5. Usando o algoritmo, o problema é dividido em partes ou etapas menores, portanto, é mais fácil para um programador convertê-lo em um programa real

Habilidades necessárias

Para projetar um algoritmo robusto e com a melhor complexidade de tempo, é preciso ter um bom raciocínio lógico, deve ser bom em matemática e deve conhecer pelo menos uma linguagem de programação orientada a objetos. Também é necessário conhecimento da estrutura de dados.

  1. Computadores - Aprenda sobre matrizes, listas vinculadas, árvores binárias, tabelas de hash, gráficos, pilhas, filas, pilhas e outras estruturas de dados fundamentais.
  2. Matemática - Aprenda sobre teoria dos conjuntos, máquinas de estado finito, expressões regulares, multiplicação de matrizes, operações bit a bit, resolução de equações lineares e outros conceitos importantes, como permutações, combinações, princípio do buraco de pombo.
  3. Big-O & Runtime - Aprenda o que é Big-O e como analisar os tempos de execução dos algoritmos.

Por que devemos usar e por que precisamos de um algoritmo?

Deve-se usar o algoritmo, pois facilita nosso trabalho e fornece a solução mais ideal. Se não aplicarmos um algoritmo antes de resolver qualquer problema complexo, há grandes chances de seguirmos sem direção em termos de solução. Com o algoritmo, economizamos nosso tempo na solução de problemas e garantimos que a otimização do algoritmo da solução, como dito anteriormente, seja independente de qualquer linguagem de programação, para que qualquer pessoa possa projetar um algoritmo, mas para projetar um algoritmo realmente bom seja bom em lógica e matemática. Serve como um protótipo de uma solução.

Por exemplo, imagine que temos dois cubos de Rubik à nossa frente. Um deles você tem permissão para usar algoritmos (como quantas vezes ou qual direção virar uma face) e o outro você precisa encontrar seu próprio caminho. Qual caminho será mais rápido? Certamente, será o primeiro.

Vamos dar um exemplo interessante:

Digamos que temos uma matriz de elementos e gostaríamos de ordená-los em ordem crescente. Agora, há uma abordagem algorítmica diferente para isso. Vamos nos concentrar na complexidade de tempo de dois deles: Classificação de inserção e Classificação de mesclagem

Classificação de inserção: a classificação de inserção é uma classificação simples.
(A complexidade do tempo é O (N 2).)

Classificação de mesclagem: Na classificação de mesclagem, classificamos os elementos usando o método Divide and conquistar.
A complexidade do tempo é O (N log N).

Esse poderia ser o impacto que você encontraria se não seguir uma e não realizar uma análise sobre ela.

Escopo do algoritmo

Ao aprender e dominar o algoritmo, você conheceria a arte de "Resolução de Problemas". Com boas práticas e aprendizado contínuo, você poderá resolver problemas complexos. É a base do design de algum software ou código, já que o tempo de execução do código é um dos fatores mais importantes na determinação da execução de uma tarefa específica. Gigantes da tecnologia do mundo, como Google e Facebook, julgam suas habilidades na solução de problemas e, em entrevistas, a maioria das perguntas está relacionada ao design de algoritmos e à solução de problemas. Você será solicitado a projetar um algoritmo e otimizá-lo para o melhor tempo de complexidade possível.

Alguns pontos:

  • Isso melhorará suas habilidades de resolução de problemas, o que o levará a competir melhor em entrevistas ou exames on-line
  • Você reduzirá seu tempo na solução de qualquer problema.
  • Quase todos os gigantes da tecnologia contratam candidatos com base em suas melhores habilidades em solução de problemas
  • Pode-se tirar o máximo proveito de uma linguagem de programação aprendendo como construir e projetar um algoritmo

Quem é o público certo para aprender tecnologias de algoritmo?

Do ponto de vista da ciência da computação, qualquer pessoa que faça pouca ou mais programação deve aprender algoritmos. Se você escreve um código que não resolve o seu problema ou se resolve o problema, mas utiliza recursos de maneira ineficiente (por exemplo, leva muito tempo para ser executado ou usa muita memória do computador), seu código não é o ideal. . Mas as empresas desejam que seus softwares ou produtos respondam ou executem no menor tempo possível.

Qualquer pessoa que esteja desenvolvendo algo deve aprender a fazer uma análise sobre um algoritmo para garantir o funcionamento ideal do produto final.

Como o algoritmo o ajudará no crescimento da carreira?

O design e a análise de um algoritmo não são um papel (específico), mas fazem parte do seu trabalho e essa parte desempenha um papel vital no desenvolvimento do código. Se você criar um bom algoritmo, escreverá bons códigos com uma solução ideal e, eventualmente, seu produto final entregue aos clientes será excelente. Portanto, se você projetar e / ou desenvolver software, o conhecimento e a experiência com estruturas e algoritmos de dados são essenciais. Digamos que você esteja trabalhando em um produto de desenvolvimento de software, a resposta deve ser testada minuciosamente (é claro que você gostaria de verificar o tempo de execução do processo antes de entregar o código à equipe de teste de software) e isso não é algo que você poderia adivinhe quase com precisão de antemão, mas você deve usar a análise de um algoritmo para calcular a complexidade do tempo.

Conclusão

Então, como vimos uma descrição introdutória dos algoritmos e seus vários aspectos, e vimos que poderia haver abordagens diferentes para resolver um problema específico, e a complexidade Big-O e Time são os parâmetros que nos ajudam a escolher a solução mais ideal. Ao explorar um bom número de algoritmos, você se tornará fundamental na análise do algoritmo e poderá projetar e executar a análise sobre o algoritmo com facilidade.

Artigos recomendados

Este foi um guia para o que é um algoritmo. Aqui discutimos o funcionamento de algoritmos com exemplos e seus vários aspectos. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. O que é o Tableau Server?
  2. Guia de análise de big data
  3. O que é o SQL Developer?
  4. O que é a Informatica