O que exatamente é um algoritmo, como no que significa Algoritmo? O pouco que entendo da palavra é que ela não é específica para uma linguagem ou padrão de design específico, mas é um dos princípios mais básicos (então acho que essa pergunta me faz parecer estúpida).
Uma das "opções" que tenho para entendê-lo é que significa o método de fazer algo, que pode ser escrito como uma lista no pseudocódigo.
Quando escrevo código mais complicado, acho que o que precisa ser feito, com o que e como chegaria lá (não em uma linguagem de programação), depois escrevo isso no código. Essa é uma boa maneira de fazer isso e isso tem algo a ver com algoritmos?
(Queria perguntar aqui no Stackoverflow, porque não se trata de um problema / idioma específico, e tenho a sensação de que a maioria das pessoas aqui conhece o 'porquê', ou pelo menos as respostas aqui são mais detalhadas, em vez de no Stackoverflow onde é diferente, me desculpe se eu deveria ter perguntado por lá)
fonte
Respostas:
Um algoritmo é uma sequência finita de instruções bem definidas para calcular uma função (ou executar um procedimento) que termina em um estado final bem definido.
fonte
Esta é realmente uma questão bastante interessante e, de fato, ainda é uma questão de pesquisa aberta.
Yuri Gurevich, um dos gigantes da teoria dos algoritmos, está dando uma série de palestras em vídeo no site da comunidade da Microsoft Channel9:
Como você pode ver, sua própria pergunta é realmente o título da segunda palestra. No entanto, eu sugiro fortemente que você assista todos os três.
O primeiro, em particular, contém alguns exemplos de algoritmos que invalidam praticamente todas as definições fornecidas na maioria das outras respostas aqui.
fonte
Um algoritmo é como uma boa receita culinária . Você tem algumas entradas, algumas etapas intermediárias bem definidas e obtém um resultado final.
Aplicada à programação, é uma descrição inequívoca das etapas necessárias para solucionar um problema específico. Tudo o que você pode escrever na linguagem de programação de sua escolha pode ser visto como um algoritmo - mas normalmente o termo é usado apenas para tarefas lógicas ou matemáticas comuns, como classificação ou pesquisa.
fonte
Um algoritmo é um conjunto de regras ou processo (em um cálculo) usado para a solução de problemas. Basicamente, há um problema, você quer uma solução e o processo para essa solução é um algoritmo. Um algoritmo possui conjuntos finitos de regras / processos para chegar a uma solução.
Se você é como Edsger W. Dijkstra , você escreverá seu algoritmo em um pedaço de papel e trabalhará / refinará o algoritmo no papel até ficar satisfeito com seus algoritmos. Caso contrário (especialmente ao escrever documentações), um fluxograma é usado para representar diagramaticamente o fluxo de um algoritmo / processo. Isso permite que outras pessoas critiquem o fluxograma e melhorem, se necessário (sem se preocupar com a linguagem de programação necessária).
Não sei se isso responde à sua pergunta.
fonte
Algoritmo: um conjunto bem ordenado de operações que são 1) inequívocas e 2) efetivamente computáveis, de modo que a execução das operações a partir da primeira produza um resultado após um número finito de operações.
fonte
Algoritmo É a combinação de etapas seqüenciais (essas etapas podem ser cálculos, processamento de dados e tarefas de raciocínio) usadas para resolver um problema de uma maneira muito simples e eficiente.
Ele é projetado com mais eficiência que pode ser expresso em uma quantidade finita de espaço e tempo. podemos implementá-lo em qualquer linguagem de programação.
Propriedades de um algoritmo: a seguir, estão as principais propriedades de um algoritmo: -
Um algoritmo deve ter um nome exclusivo. Deveria ter definido explicitamente conjuntos de entradas e saídas. Um algoritmo deve estar em ordem seqüencial com operações inequívocas. Ele deve ter algum ponto final, ou seja, pára em um período finito de tempo. Clique aqui para aprender sobre Design e Análise de Algoritmo
fonte
Eu uso o termo para descrever uma fórmula para resolver um problema específico. A fórmula não precisa necessariamente ser escrita em matemática ou ter relação 1: 1 com um método. Na escola, algoritmos e estruturas de dados estão intimamente relacionados e podem ser escritos como fórmulas matemáticas ou comprovados usando provas.
fonte
Um algoritmo é uma abstração de um programa de computador e consiste em um conjunto de instruções para realizar alguma tarefa bem definida em um número finito de etapas, embora o limite na contagem de etapas possa ser muito grande e as etapas individuais possam ser complexas ( tarefas finitas) por direito próprio. Embora existam programas (corretos) que são conhecidos como não algorítmicos, todos eles funcionam repetindo partes algorítmicas em algum padrão. (Mais interessantes são os programas cujo status de encerramento não é conhecido, mas a maioria dos programadores não lida com essas coisas intencionalmente; sei que não!)
fonte
OMI ninguém sabe muito bem :) Eu já vi o termo aplicado apenas a funções de cálculo matemático, a qualquer função que receba e produza saída e a qualquer coisa que receba e execute algum tipo de operação.
Você consideraria algum / todo o seguinte um algoritmo?
finder
função que consulta um banco de dados em busca de um objeto Customerfonte
Um algoritmo é uma idéia, um método, uma técnica, "inteligente" para calcular ou executar uma tarefa que é abstrata por natureza, mas, como é executada em computadores no mundo real, aspiramos a usar o mínimo de recursos possível , que são, no mundo dos computadores, Tempo e memória.
fonte
Um algoritmo é uma sequência de etapas bem definidas que produzem um resultado em tempo finito.
Etapa bem definida: isso é algo que você pode fazer ou calcular, que é definido com precisão. Apenas lendo a etapa, você sabe o que precisa fazer e como fazê-lo. Especificamente, você pode escrevê-lo em uma linguagem de programação conhecida e garantir que o fragmento do programa corresponda exatamente à etapa.
Sequência: as etapas são executadas em uma ordem especificada. As etapas podem ser executadas mais de uma vez, dependendo dos dados (loops) ou não executadas, dependendo dos dados (instruções if). Algoritmos paralelos impõem apenas uma ordem parcial nas etapas, então estou simplificando demais aqui. Seria mais correto descrevê-lo como um conjunto parcialmente ordenado do que como uma sequência, mas eu queria manter as palavras um pouco mais simples. Além disso, é facilmente possível incorporar um conjunto parcialmente ordenado em um pedido completo.
Resultado: um estado ou valor final. Não precisa ser previsível com antecedência, mas precisa ser um fim definitivo que satisfaça alguma condição. Isso significa que um sistema operacional não é um algoritmo, embora ele use muitos deles.
Finito: é garantido que um algoritmo pare em algum momento, pelo menos em uma máquina que possa funcionar por tempo suficiente. Não é necessariamente garantido que pare em um tempo previsível, e não é garantido que ele pare antes que o sol se expanda e fique vermelho em qualquer máquina existente. Isso também significa que um sistema operacional não é um algoritmo, pois, idealmente, ele será executado para sempre. Eu vi a palavra "procedimento" usada para descrever algo que seria um algoritmo se tivéssemos certeza de que isso iria parar em algum momento. (É possível ter um algoritmo que irá parar em um período de tempo desconhecido. Suponha que, digamos que a conjectura de Goldbach tenha sido matematicamente falsa, em uma prova não construtiva, portanto havia um número par> 2 que não era a soma de dois números primos Um algoritmo que simplesmente testava números pares terminaria,
O algoritmo é um tipo intencionalmente abstrato, por isso não consideramos perguntas como "É fisicamente possível executar isso antes da morte por calor do Universo?". Eles seriam muito difíceis de responder. Se estiver relacionado às operações do computador, é fácil implementá-lo em uma linguagem de programação.
fonte
Se eu tivesse que dar uma definição geral, diria que um algoritmo é uma fórmula para resolver um problema de computação mais complexo do que e acaba sendo mais eficiente que a solução óbvia / força bruta.
Além disso, é importante observar que um algoritmo não é um código-fonte específico; é a própria computação. Entre outras coisas, isso significa que qualquer linguagem completa de Turing pode implementar qualquer algoritmo que qualquer outra linguagem completa de Turing possa implementar.
fonte