Projeto e Análise de Algoritmos: Introdução

● algoritmos e procedimentos

Algoritmo significa para resolver o problema de um método ou um processo .
Algoritmo é uma sequência finita de várias instruções satisfazer propriedades:
(1) entrada : quantidade SIM fornecido externamente como entrada para o algoritmo.
(2) de saída : pelo menos um algoritmo produz como uma grandeza de saída.
(3) Incerteza : cada instrução é composta pelos algoritmo claras , inequívocas s'.
(4) Limitação : algoritmo de cada instrução frequência de execução é limitado a, cada execução da instrução tempo é limitado a.

Programa é o algoritmo usando uma linguagem de programação de execução específica . Programa pode não ficar satisfeito com a natureza do algoritmo, tais como o sistema operacional .

● algoritmo de projeto Passo

Entenda o problema : Antes de projetar um algoritmo, precisamos fazer a primeira coisa é entender plenamente as questões apresentadas. Ao mesmo tempo, precisam ser abordadas algoritmo estritamente definido gama exemplo é muito importante. Um algoritmo apropriado não só deve ser capaz de lidar com a maioria dos casos, e deve ser capaz de lidar corretamente com todos legal de entrada.
Compreensão do desempenho equipamentos de informática : a maioria dos algoritmos usados hoje ainda corre na von Neumann computador. Sua principal aleatório máquina de acesso visão é: executar comandos, um por um, cada vez que a etapa de operação, chamado algoritmo sequencial . Alguns computadores mais recentes podem executar várias operações ao mesmo tempo, ou seja, computação paralela .
Entre a exata e aproximada para escolher : Solução chamado precisa algoritmo exato , o chamado aproximada solução algoritmo de aproximação . Você não pode obter a solução exata ou devido a alguns problemas de complexidade inerente , usando algoritmo exato conhecido para resolver este problema pode ser inaceitavelmente lento.
Determinação das estruturas de dados apropriadas : algoritmos e estruturas de dados, computador de programação de base importante . Estruturas algoritmos + dados = programas

● algoritmo de análise de índice

Para qualquer algoritmo ou uma solução, existem as seguintes questões:
(1) o problema pode ser resolvido?
(2) para resolver o problema, certo?

Eficiência não é a análise de algoritmos para o único propósito de. Embora o objetivo algoritmo é a velocidade , mas o algoritmo deve primeiro corrigir existência significativa. Projetar algoritmos , ou quando vários algoritmos comparar o tempo, é necessário analisar a sua exatidão e eficiência de tempo . Este tipo de algoritmo dissecadas para obter a sua precisão e tempo de eficiência da operação é a análise de algoritmos . Se a dois algoritmos eficiência de tempo , temos de implementar o algoritmo usado espaço comparando espaço usando menos é melhor.
Assim, o algoritmo de análise pode ser dividido em três aspectos seguintes:
(1) exactidão da
análise temporal eficiência (2)
(3) Análise das características temporais

= Algorítmicas algoritmo complexidade recursos de computador necessários
complexidade de tempo de t (N-) ; complexidade espaço de S (n-) .
Onde n é o tamanho do problema (tamanho da entrada).

complexidade de tempo do algoritmo tem a seguinte análise:
(1) o pior caso complexidade de tempo na
Tmax de (n-) = max {T (I) | tamanho (o I) = n-}
(2) o melhor caso complexidade de tempo do resistência
de Tmin (n) = min {T (I) | tamanho (I) = N}
(. 3) média caso complexidade de tempo em
Tavg (n) =Aqui Insert Picture Descrição
em que I é o tamanho de problema n exemplo , p (I) exemplo que está aparecendo probabilidade .

Se para T (n) → ∞, como n → ∞;
ter (T (n) - T ( n)) / T (n) → 0, como n → ∞;
chamado T (n) é T (n) o comportamento assintótica , o algoritmo de complexidade assintótica .
Matematicamente, t (n) é T (n) é a expressão assintótica é T (n) produto primário deixou termos de ordem inferior são omitidos . Ele (n) mais simples do que T.

análise assintótica do símbolo : Na discussão a seguir, para todo n, f (n) ≥ 0 , g (n) ≥ 0.
(1) ligado ao símbolo S assintoticamente
O (g (n)) = {f (n) | , e a presença do número normal c para todos os n ≥ n0 n0 tal que não é: 0 ≤ F (n-) ≤ CG (n-)}
( 2) o assintótica inferior notação ligado [Ómega]
[Ómega] (G (n-)) = {F (n-) |, e a presença do número normal c para todos os n ≥ n0 n0 de tal modo que existem: 0 ≤ CG (n-) ≤ F (n-)}
(3). não ligado aperto marca O
O (G (n-)) = {F (n-) | para qualquer número normal c> 0, e um número positivo n0> 0 de tal modo que para todos n≥ n0 tem: 0 ≤ f (n) < CG (n)}
é equivalente a f (n) / g (n ) → 0, como n → ∞.
(4) não-apertado limite inferior notação [omega]
[omega] (G (n-)) = {F (n-) | para qualquer número normal c> 0, existe um número positivo e o n0> 0 tal que ≥ n0 ter todos os n: 0 ≤ cg (N ) <f (n)}
é equivalente a f (n) / g (n ) → ∞, como n → ∞.
f (n) ∈ ω (g (n)) é equivalente a G (n-) ∈ O (F (n-))
(5.) símbolo imediatamente assintoticamente delimitada [Teta]
[Teta] (G (n-)) = {F (n-) | presença de c1 número normal, C2, e n0 n0 ≥ possui todos tal n: C1G (n) ≤ f (n) ≤ C2G (n)}

Para o algoritmo uma função do tempo f (n) , se f (n) e g (n) é a mesma ordem de grandeza (na mesma ordem), disponível f (n) = O (g (n)) expresso na forma. Ele referida fórmula é a complexidade do algoritmo , também conhecido como o tempo de complexidade do algoritmo é O (G (n-)) .
Comumente usado complexidade de tempo tem a seguinte relação:
O (. 1) ≤ O (log2N) ≤ O (n-) ≤ O (n- * log2N) ≤ O (n- 2 ) ≤ O (n- . 3 ) ≤ ... ≤ O (n- K ) ≤ O (2 n- ) <O (n-!)

● classificação algoritmo

Algoritmo dividido em três categorias:
(1) limitados, algoritmos determinísticos
tais algoritmos por um período limitado de tempo termina . Eles podem levar um longo tempo para executar as tarefas atribuídas, mas irá terminar dentro de um determinado período de tempo. Tais algoritmos muitas vezes o resultado depende dos valores de entrada .
(2) um limitado, algoritmo não-determinístico
tais algoritmos em um número limitado de tempo termina . No entanto, para um (ou alguns) do dado valor numérico, e o resultado do algoritmo não é única ou determinado .
(3) algoritmo infinito
refere-se a aqueles porque não há condição de terminação é definido , ou condições definidas não satisfeitas por os dados de entrada algoritmo sem terminar a operação. Tipicamente, um algoritmo infinito é devido à falha para determinar a condição de terminação é definido.

algoritmo clássico :
1. busca exaustiva
2. Iterativo algoritmo
3. algoritmo recursivo
4. algoritmo recursivo
5. Divisão e conquista
6. algoritmo guloso
7. algoritmo de programação dinâmica
8. Retrocesso
9. Ramo e algoritmo de limite

Publicado 39 artigos originais · ganhou elogios 4 · Vistas 2052

Acho que você gosta

Origin blog.csdn.net/weixin_44712386/article/details/105008543
Recomendado
Clasificación