5 técnicas avançadas para divulgar a sua marca | Marketing Digital
Resumo - Técnicas Avançadas em Construção de Software
-
Upload
dyegospeciais -
Category
Documents
-
view
213 -
download
0
Transcript of Resumo - Técnicas Avançadas em Construção de Software
-
8/16/2019 Resumo - Técnicas Avançadas em Construção de Software
1/6
PROVA
1. BackTracking
- Recursividade - Busca Exaustiva (Combinatório) - Caixeiro Viajante, N-Rainhas, Passeio do Cavalo - Fácil de implementar - Usado para encontrar todas as soluções possíveis para oproblema - Percorre a árvore por DFS (depth-first search - busca emprofundidade)
- Descobre uma má escolha e a desfaz voltando - Percorre toda a arvore de espaço de estados até achar umasolução - Trata-se de uma função de viabilidade
2. Algoritmos Gulosos
- Fácil Implementação
- Nem sempre produz melhor solução (+informação = > chancede solução ótima) - Escolhe o melhor caminho no momento - Problema do Troco - Não volta atrás - Podem entrar em loop infinito - Utilizam de uma estratégia contrária a programação dinâmica.
3. Algoritmos Sobre Grafos
- Algoritmo de Busca (profundidade DFS e largura BFS) * Examina cada arco no máx. uma vez.
- DFS * backtracking, pré-ordem, labirintos.
-
8/16/2019 Resumo - Técnicas Avançadas em Construção de Software
2/6
* utiliza pilha - BFS
* utiliza fila de vértices (s, então vizinhos com distância 1 de
s, então vizinhos a 2 de s)
- Algoritmos de Caminhos Mínimos (Dijkstra) * Considerado algoritmo guloso * Não garante solução ótima caso grafo possua arestas de
peso negativo * GPS (menor caminho)
- Algoritmos de Árvores Mínimas (Prim, Kruskal)
- Prim * Algoritmo guloso. * Subárvore de custo mínimo. * Conceito de Franja.
- Kruskal (diferença PRIM-KRUSKAL?) * Algoritmo guloso. * Árvore geradora mínima (soma das arestas conectando
todos os vértices é mínimo). * Menor custo para rotas de avião.
4. Programação Dinâmica
- Método para construção de algoritmos que resolvam problemascomputacionais. - Otimização combinatória. - Recursão “com apoio de tabela”. - A função da tabela é salvar a solução dos subproblemas deforma que estes não precisem ser recalculados. - Reduz o problema em subproblemas e resolve essessubproblemas em busca da solução ótima. - Consumo de tempo proporcional a tabela.
-
8/16/2019 Resumo - Técnicas Avançadas em Construção de Software
3/6
- A tabela é a base de um algoritmo de PD. - Alguns problemas da otimização:
* Muitas soluções possíveis.
* Cada solução tem um valor.
- Etapas de um algoritmo de PD: * Caracterizar solução ótima. * Definir recursivamente o valor da solução ótima. * Calcular o valor dessa solução de forma bottom-up
(subproblemas menores para maiores até a raiz). * Construir solução a partir dos cálculos realizados.
- Exemplos: Fibonacci e Calcular Troco.
5. Branch and Bound
- Utilizado em problemas de otimização combinatória- Branch = partições realizadas no espaço de soluções- Bound = Limitações nas partições- Divide o problema em sub-problemas da mesma forma que
a Programação Dinâmica, de forma que a solução pode ser
obtida através da resolução dos problemas menores.- Problemas que não contenham a solução ótima são
descartados- O problema é visto como uma árvore; o nó raiz é o problema
original e as folhas são soluções viáveis.- Permite percorrer a árvore de qualquer maneira (DFS - BFS)- Limites são utilizados para descartar nós da árvore onde há
certeza de que não originarão soluções melhores do que as já existentes.- Permitem “medir a distância” até a solução ótima.
obs: (não entendi o conceito de limites inferior e superior ainda)
-
8/16/2019 Resumo - Técnicas Avançadas em Construção de Software
4/6
6. Casamento de Padrões
- Ato de verificar padrões em um conjunto de dados (buscarstring em um texto ou um conjunto de números em um
conjunto maior)- Busca um padrão P de tamanho m em um arranjo T detamanho n onde m
-
8/16/2019 Resumo - Técnicas Avançadas em Construção de Software
5/6
- Método Robin-Karp ● Trata cada substring de tamanho M do texto como
chave em uma tabela.
- Casamentos não exatos são situções onde o algoritmoaproxima o input do caso mais utilizado, como exemplo oGoogle aproxima o resultado de um input com errogramatical.
7. P, NP e NP-Completo
- Conceito de tempo polinomial: Um algoritmo é polinomial seo seu consumo de tempo é limitado por uma funçãopolinomial proporcional ao tamanho da instância doproblema.
- Um algoritmo determinístico pode ser representado por umamáquina de estados, onde após o estado inicial, o estadoatual determinará o próximo estado (abstrato pra caralho). Uma máquina determinística pode nunca retornar um
resultado.- Já o conceito de não-determinístico se difere quando
quando o algoritmo considera valores externos aos deentrada previamente definidos, como variáveis globais ouentradas de usuário.
- Também é considerado como não-determinístico quando setem soluções distintas segundo uma mesma entrada.
- Basicamente entende-se por NP, os problemas cuja soluçãopode ser verificada em tempo polinomial, mas podem nãoser resolvidos em tempo polinomial.
- Exemplos: Caixeiro Viajante, Quadrado Perfeito.
-
8/16/2019 Resumo - Técnicas Avançadas em Construção de Software
6/6
- Problemas P podem ser resolvidos em tempo polinomial. Aqui está contida a maior parte dos algoritmos.
- Exemplos: BubbleSort O(n²).
- Redução de Problemas NP● Um problema Y não é mais dificil de resolver que um
problema X se um algoritmo que resolve X pode serusado para resolver Y.
● As etapas dessa redução são:
○ Transformar uma instancia de Yem uma instancia de X, resolver X com umalgoritmo para X obtendo uma solução S e por fimtransformar S em uma solução da instancia de Y.
- Um problema C é considerado NP-Completo se 1. ele estacontido em NP e 2. todo problema np-completo é redutível
para C em tempo polinomial.- P vs NP: Problema conhecido na Ciencia da Computação.
“Todo problema cuja solução pode ser verificada em tempopolinomial (classe NP), pode ser resolvido em tempopolinomial (classe P)?”