Projeto e Análise de Algoritmos Prof.
Introdução 2
www.inf.puc-rio.br/~milidiu/inf2926 3
Resumo Objetivo Apresentar o enfoque adotado no curso para capacitação em Projeto e Análise de Algoritmos Sumário Descrição do Curso Metodologia Planejamento 4
Objetivo Examinar a Teoria e a Arte de Resolver Eficientemente Problemas Computacionais Eficiência Computacional Princípios e Métodos Técnicas de Análise Limitações e Perspectivas 5
Metodologia Apresentar Princípios de Projeto Examinar Exemplos Analisar Eficiência Avaliar Aplicabilidade 6
Projeto X Análise PROJETO Dividir-e-Conquistar Método Guloso Estruturas Dinâmicas Programação Dinâmica Caminhamento BackTracking Branch-and-Bound Redução ANÁLISE Medidas de Consumo Critérios de Eficiência Equações de Recorrência Amortização Matróides Cotas Inferiores Otimalidade Intratabilidade 7
Exemplos Busca Binária MergeSort Multiplic. de Inteiros QuickSort Subcadeia de Soma Max Armazenamento em fitas Repos. de Equipamentos Alocação de Recursos Union-Find Agendamentos Árvores de Busca Casamento de Padrões Conectividade, Ciclos Grafos Bipartidos Pareamento em Grafos Componentes Biconexos Coloração de Grafos Jogos 8
Problemas... Entrada. Lista de salários S 1,,S n Saída. Despesa total com salários S Recursos Computacionais Papel e Lápis Pessoa alfabetizada S = S 1 + + S n COMO COMPUTAR S? 9
Soluções... Solução 1 10 8 18 11 29 13 42 7 49 9 58 5 63 7 70 Solução 2 10 8 18 11 42 13 24 7 70 9 16 5 28 7 12 10
Soluções... Solução 3 10 8 8 FUNCIONÁRIOS 11 X 13 UM SALÁRIO 7 = 9 8 X 10 5 = 7 80 Solução 4 Enquanto houver na lista um par consecutivo de salários com valores distintos faça: AUMENTAR de uma unidade o menor deles REDUZIR de uma unidade o maior deles. 11
Soluções indesejáveis Solução 3 NEM SEMPRE PRODUZ A SAÍDA ESPERADA Solução 4 NEM SEMPRE TERMINA A COMPUTAÇÃO 12
Problema Algorítmico PROBLEMA E = conjunto das possíveis entradas S = conjunto das saídas desejadas R(E,S) = relação entre entradas e saídas desejadas Operações válidas SOLUÇÃO A = algoritmo TOTALMENTE correto 13
Algoritmo Conjunto finito de instruções, compostas de uma ou mais operações válidas, com o objetivo de resolver um problema específico. 14
Algoritmo correto Para todo e E e A s (e,s) R(E,S) 15
Algoritmo Operações válidas Definidas 5/0 Efetivas Término em tempo finito procedimento computacional Entrada Opcional Saída - Uma ou mais 16
Formalização E = conjunto de possíveis entradas S = conjunto de saídas desejadas Q = conjunto de estados da computação E, S Q f: Q Q baseada nas op s válidas em Q f(s) = s para todo s S COMPUTAÇÃO 17
Sequencia computacional e E x 0 = e x k = f(x k-1 ) para k =1,2, t = inf { k 0 x k S } sequencia termina t < (Q, E, S, f) é algoritmo totalmente correto Toda sequencia computacional TERMINA 18
Solução de Problemas MODELO MATEMÁTICO ALGORITMO INFORMAL TIPO ABSTRATO DE DADOS PROGRAMA EM PSEUDO- CÓDIGO ESTRUTURA DE DADOS PROGRAMA 19
Algoritmos & Problemas Eficácia Correção Eficiência Tempo Espaço Simplicidade Otimalidade Limitações Computabilidade Tratabilidade Heurísticas Aproximações Aleatorização IA, ML... 20