Análise de Algoritmos: Eficiência e Estratégias de Ordenação

Classificado em Computação

Escrito em em português com um tamanho de 3,02 KB

O estudo aprofundado do algoritmo é fundamental para desenvolver aplicações eficientes. Em muitos casos, ampliar o poder computacional por meio de estratégias de hardware não tem sido suficiente, visto que diversos gargalos podem ser gerados. Assim, a melhoria por meio de software é a solução viável.


Ordenação Numérica

Trata-se de um problema clássico que possui várias estratégias para ordenar conjuntos numéricos:
  • Bubble Sort
  • Selection Sort
  • Insertion Sort
  • Quick Sort
  • Shell Sort
  • Merge Sort
  • Heap Sort
  • Shaker Sort


Projeto Genoma

Identificação das 100.000 genes do DNA humano e mineração de sequências.


Comunicação de Dados e Internet

Gestão dos algoritmos inteligentes de manipulação de dados trafegados e gestão de rotas.


Comércio Eletrônico

Milhões (bilhões) de operações simultâneas, com necessidade de disponibilidade total.


Análise de Dados para Tomada de Decisão

Indústria (produção), utilidade pública (eleições), tráfego aéreo.


Problemas Difíceis

O objetivo é produzir algoritmos eficientes. Em geral, a medida de eficiência está relacionada à velocidade de execução. Porém, existem alguns problemas em que não se conhece uma solução eficiente.


Algoritmos com Tecnologia

Mesmo que os PCs tivessem recursos infinitos (não é o caso), ainda assim, a análise de algoritmos seria necessária, especialmente para provar que uma solução termina e está correta.


Eficiência

Algoritmos criados para resolver o mesmo problema. Muitos diferem de forma drástica em sua eficiência; uma análise pode ser feita em algoritmos de ordenação.
Inserção: C1n² para ordenar n itens.
Intercalação: C3n log n para ordenar n itens.


Análise de Algoritmos

Analisar um algoritmo significa prover os recursos que o algoritmo necessitará. Ocasionalmente, recursos como memória, largura de banda, entre outros, são importantes, mas com frequência, o que se deseja medir é o tempo de computação.
Em geral, pela análise de vários algoritmos candidatos para um problema, pode-se identificar o mais eficiente.
Para as análises a serem realizadas a seguir, serão adotadas a ideia de: processador sequencial, com único núcleo, máquina com instruções simples, instruções aritméticas, movimentação de dados e controle.
A seguir, será feita a análise de um algoritmo de ordenação por inserção. Em geral, o tempo de execução de um algoritmo cresce com o tamanho da entrada.

Tamanho da Entrada

Número de elementos que serão processados pelo algoritmo.

Tempo de Execução

Trata-se do número de operações primitivas executadas.

Entradas relacionadas: