Algoritmos, onde usa-los?

21 respostas
J

Senhores(as).

Estou tentando levantar uma relação de Algoritmos.

Dentre os que conheço teoricamente (nunca implentei nenhum deles) são:

:arrow: Algoritmo das formigas
  :arrow: Algoritmo da mochila
   :arrow: Algoritmo do caxeiro viajante
   :arrow: Algoritmo do avestruz ( o melhor na minha opnião...rsrsrs)

   :arrow: Agoritmo Genético
   :arrow: Algortmo Evolutivo

Alguem, se possivel, pode me dar uma dica de outros algoritmos e sua possivel areas em que o mesmo possa ser implementado.

21 Respostas

E

Você pode consultar o famoso DADS -

S

Estes algoritmos inicialmente citados são algoritmos do tipo acadêmicos, ou seja são algoritmos que são usados para desenvolver o raciocínio lógico de quem está começando a entrar no mundo da programação, desenvolver algoritmos exatamente igual a eles provavelmente nunca será necessário mais se vc abalizá-los bem verá que dentro deles existem linhas de códigos que são bastante úteis em seu dia dia.

ja o dads é um dicionario de algoritmos muito util…

E

Um algoritmo que você vai usar muito, embora você nem se dê conta disso, é o que percorre uma árvore qualquer, como uma árvore de diretórios.
Você pode percorrê-la em profundidade ou então em largura.

R

Eu já discordo que são apenas algoritmos acadêmicos. O caixeiro viajante, e suas evoluções heurísticas, são amplamente usados em cálculo de rotas, principalmente em empresas que trabalham com logística.

Digo isso pq trabalhei bastante tempo na área. Provavelmente os outros algoritmos (e evoluções) são usados em vários cantos ou áreas de atuação.

J

steniobh:
Estes algoritmos inicialmente citados são algoritmos do tipo acadêmicos, ou seja são algoritmos que são usados para desenvolver o raciocínio lógico de quem está começando a entrar no mundo da programação, desenvolver algoritmos exatamente igual a eles provavelmente nunca será necessário mais se vc abalizá-los bem verá que dentro deles existem linhas de códigos que são bastante úteis em seu dia dia.

ja o dads é um dicionario de algoritmos muito util…

Eu queria na verdade achar algum algoritmo pratico para ser usado em um SD, tipo criar um agente movel que possa fazer um inventario em um parque de maquinas sem ter q instalar algo em maquina por maquina.

J

[quote=entanglement]Você pode consultar o famoso DADS -

Obrigado pela dica.

E

SD = ? (Decerto não é “Secure Digital Card” que é aquele cartãozinho de memória).

De qualquer maneira, a parte de inventário precisa de alguma coisa a ser instalada, normalmente não em Java. Procure por “SNMP”.

T

Algoritmos genéticos idem, tem utilidades a bessa.

J

entanglement:
SD = ? (Decerto não é “Secure Digital Card” que é aquele cartãozinho de memória).

De qualquer maneira, a parte de inventário precisa de alguma coisa a ser instalada, normalmente não em Java. Procure por “SNMP”.

Sistema Distribuido - Um sistema de processamento distribuído ou paralelo é um sistema que interliga vários nós de processamento (computadores individuais, não necessariamente homogéneos) de maneira que um processo de grande consumo seja executado no nó “mais disponível”, ou mesmo subdividido por vários nós. Conseguindo-se, portanto, ganhos óbvios nestas soluções: uma tarefa qualquer, se divisível em várias subtarefas pode ser realizada em paralelo.

fonte: http://pt.wikipedia.org/wiki/Sistema_de_processamento_distribuído

F

Jauns:
entanglement:
SD = ? (Decerto não é “Secure Digital Card” que é aquele cartãozinho de memória).

De qualquer maneira, a parte de inventário precisa de alguma coisa a ser instalada, normalmente não em Java. Procure por “SNMP”.

Sistema Distribuido - Um sistema de processamento distribuído ou paralelo é um sistema que interliga vários nós de processamento (computadores individuais, não necessariamente homogéneos) de maneira que um processo de grande consumo seja executado no nó “mais disponível”, ou mesmo subdividido por vários nós. Conseguindo-se, portanto, ganhos óbvios nestas soluções: uma tarefa qualquer, se divisível em várias subtarefas pode ser realizada em paralelo.

fonte: http://pt.wikipedia.org/wiki/Sistema_de_processamento_distribuído

Não seria Cluster o nome?

J

steniobh:
Estes algoritmos inicialmente citados são algoritmos do tipo acadêmicos, ou seja são algoritmos que são usados para desenvolver o raciocínio lógico de quem está começando a entrar no mundo da programação, desenvolver algoritmos exatamente igual a eles provavelmente nunca será necessário mais se vc abalizá-los bem verá que dentro deles existem linhas de códigos que são bastante úteis em seu dia dia.

ja o dads é um dicionario de algoritmos muito util…

Não existe algoritmo do tipo academico. Algoritmos são algoritmos em qualquer lugar. A computação é algoritmo.

*caxeiro viajante - È um problema, e não é um algoritmo. Ele pode ser resolvido usando um algoritmo de busca e otimização como GAs(Algoritmos genéticos).

Os GAs são usados para otimizar e/ou encontrar a melhor resposta possível para determinado tipo de problema(busca).

Ex: Pode usar GAs para escolher a melhor equação, e otimizar COCOMO(calcular o tempo e custo de um projeto de software)

  • reconhecimento de padrões - é um problema que pode ser resolvido com um perceptron, e um algoritmo de treinamento(backpropagation, etc…)
    Reconcecimento de padrões é um problema comum do nosso dia a dia. Existem diversas aplicações(leitor de digitais, faces, iris, …) que utilizam rna(redes neurais artificiais) para resolvê-lo.

Esses algoritmos citados são tecnicas de inteligencia artificial.

Até o bublesort tem sua importância.

A

A técnica de Algoritmo Genético já é obsoleta… Se você quer entrar nessa área de Computação Natural, é o Algoritmo certo a se estudar.
Agora, pra encontrar melhores resultados em um problema, testes com diversas outras técnicas: Algoritmos Meméticos, SIA, Colônia de formigas (ACO), Enxame de partículas (PSO), Enxame de abelhas… Redes Neurais e (mais uma técnica que não consigo lembrar o nome… tem a ver com hiperplanos… po, não consigo me lembrar o nome :slight_smile: são boas pedidas também.

Procure, no Google, por “Bio-inspired models for Computing”.

J

Andre Brito:
A técnica de Algoritmo Genético já é obsoleta… Se você quer entrar nessa área de Computação Natural, é o Algoritmo certo a se estudar.
Agora, pra encontrar melhores resultados em um problema, testes com diversas outras técnicas: Algoritmos Meméticos, SIA, Colônia de formigas (ACO), Enxame de partículas (PSO), Enxame de abelhas… Redes Neurais e (mais uma técnica que não consigo lembrar o nome… tem a ver com hiperplanos… po, não consigo me lembrar o nome :slight_smile: são boas pedidas também.

Procure, no Google, por “Bio-inspired models for Computing”.

Não existe um algoritmo obsoleto. Podemos dizer que são especializados e aprimorados. Para o cacheiro viajante, o GA é muito forte, batendo de londe o perceptron…

E

Andre Brito:
e (mais uma técnica que não consigo lembrar o nome… tem a ver com hiperplanos… po, não consigo me lembrar o nome :slight_smile:

André,
Support Vector Machines (máquinas de suporte vetoriais)?

A

Conhece os algoritmos de ordenação?
Bubblesort, mergesort,
Um outro bem interessante é o algoritmo de Huffman…

J

alanrodrigues:
Conhece os algoritmos de ordenação?
Bubblesort, mergesort,
Um outro bem interessante é o algoritmo de Huffman…

O huffman é utilizado no formato de arquivos zip. Ele é um algoritmo de compressão. Alguns formatos de imagem usam uma variação dele, como é o caso do jpeg.

A

elciok:
Andre Brito:
e (mais uma técnica que não consigo lembrar o nome… tem a ver com hiperplanos… po, não consigo me lembrar o nome :slight_smile:

André,
Support Vector Machines (máquinas de suporte vetoriais)?


Exatamente… Me fugiu completamente esse nome :
Valeu, Elcio.

T

Já que citaram huffmann não posso deixar de citar LZ77, DES (e sua variação 3DES), RSA, etc…
Os mais clássicos á foram todos no primeiro post, Djikstra, Cacheiro viajante, etc…
Os que sempre me despertaram mais interesse foram os aplicados sobre grafos, taí uma estrutura de dados que eu adoro por tudo que a compõe.
Recomendo fortemente a leitura do livro “Linked” de Albert Lazlo Barabasi (sujeito a erros, o nome tem uns detalhesinhos chatos hehe).

Abraços.

R

O que acontece é na maioria das vezes utilizamos implementações prontas desses algoritmos, então parece que nós não usamos. Mas mesmo usando implementações prontas é preciso conhecê-los para escolher o mais apropriado em determinada situação.

A

Algoritmos são muito importantes, principalmente os que se relacionam à ordenação e teoria de grafos. Muitos deles temos prontos em linguagens que dispõem de boas bibliotecas, mas nem sempre é o caso.

abraços

J

todo programa de computador é um algoritmo. A lógica influencia diretamente na qualidade do software, e na sua pracisão, ao realizar uma tarefa.

Criado 25 de fevereiro de 2010
Ultima resposta 27 de fev. de 2010
Respostas 21
Participantes 12