Abordagens para Resolução de Problemas

Documentos relacionados
Complexidade de Algoritmos

Projeto e Análise de Algoritmos

Complexidade de Algoritmos

Estruturas de Dados 2

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos

TEORIA: 60 LABORATÓRIO: 0

Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno

Tecnicas Essencias Greedy e Dynamic

Introdução Paradigmas

GRAFOS Aula 08 Árvore Geradora Mínima: Algoritmos de Kruskal e Prim-Jarnik Max Pereira

Grafos: árvores geradoras mínimas. Graça Nunes

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Árvore Geradora Mínima

Projeto e Análise de Algoritmos

Técnicas de Projeto de Algoritmos

Grafos Árvores Geradoras Mínimas

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

APOSTILA DE MÉTODO GULOSO

Projeto e Análise de Algoritmos

Programação Dinâmica. Prof. Anderson Almeida Ferreira. Adaptado do material elaborado por Andrea Iabrudi Tavares

O Problema do Multi Corte Mínimo em Digrafos

BCC Projeto e Análise de Algoritmos Aula 0: Apresentação

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

Programação Dinâmica. Prof. Anderson Almeida Ferreira

Problema de seleção de atividades. Aula 14. Exemplo. Algoritmos Gulosos. Algoritmos Gulosos. Intervalo: par ordenado de números

Métodos Exatos para PI - Parte 1: Branch-and-Bound

Teoria da Computação. Complexidade computacional classes de problemas

Solução de Recorrências

Projeto e Análise de Algoritmos

Prof. Marco Antonio M. Carvalho

Problema da Árvore Geradora Mínima (The Minimum Spanning Tree Problem-MST)

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

AULA 24. Algoritmos p.856/905

Algoritmos para Automação e Sistemas

Paradigmas de Projetos de Algoritmos

Algoritmos gulosos (greedy) CLRS

Algoritmos Gulosos. Norton T. Roman

Teoria dos Grafos Aula 5

Tópicos Avançados em Algoritmos

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Análise e Complexidade de Algoritmos

PLANO DE DISCIPLINA DISCIPLINA: Análise de Algoritmos

4 C odigos de Huffman 4.1 Arvores de c odigo folhas os internos n ıvel altura Arvore bin aria arvore bin aria ordenada

Toward an Architecture-Independent Analysis of Parallel Algorithms

Algoritmos em Grafos - Aula 07 Algoritmos Gulosos

Complexidade computacional

Algoritmos em Grafos COM11087-Tópicos Especiais em Programação I

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

SCC-501 Introdução à Ciência de Computação II

Análise e Complexidade de Algoritmos

Análise de Algoritmos

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

Complexidade de Algoritmos. Edson Prestes

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

Análise e Projeto de Algoritmos

MATEMÁTICA DISCRETA PARA ENGENHARIA DE COMPUTAÇÃO

PCC104 - Projeto e Análise de Algoritmos

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

INTRODUÇÃO AOS SISTEMAS LÓGICOS

Árvore Binária de Busca Ótima

Algoritmos em Grafos

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo

Grafos Parte 1. Aleardo Manacero Jr.

SIN5013 Análise de Algoritmos e Estrutura de Dados - 1o Semestre de 2019

Compactação de Dados. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante.

Projeto e Análise de Algoritmos

SCC-201 Introdução à Ciência de Computação II

Projeto e Análise de Algoritmos. Prof. Ruy Luiz Milidiú

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 5 a Lista de Exercícios

Recursividade, Tentativa e Erro

QUESTÕES DE PROVAS ANTIGAS

Buscas Informadas ou Heurísticas - Parte I

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

AULA 15. Algoritmos p.600/637

Projeto de Algoritmos por Divisão e Conquista

Sub-grafo. Árvore Geradora Mínima

SCC-502 Algoritmos e Estruturas de Dados 1 M. Cristina/Jorge. Trabalho Rec Codificação de Huffman

Codificação de Huffman

Algoritmo Aproximado. Prof. Anderson Almeida Ferreira [DPV]9.2 [ZIV]9.2.2 e 9.2.3

Caminhos de Amizades pelo Facebook:

DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Aula 13: Branch-and-bound

apenas os caminhos que passam só por vértices em C, exceto, talvez, o próprio v A Figura 1 a seguir ilustra o significado do conjunto C edovalordist.

Ordenação e Busca em Arquivos

Caminhos de Amizades pelo Facebook: Dualidade Computacional entre Curto e Longo

ANÁLISE DE ALGORITMOS (INF 1721)

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1

Teoria dos Grafos Aula 14

Pesquisa Operacional / Programação Matemática

Transcrição:

Abordagens para Resolução de Problemas UDESC - Universidade do Estado de Santa Catarina Departamento de Ciência da Computação CAL - Complexidade de Algoritmos Teodoro Alberto Borges Junior

Abordagens para Resolução de Problemas Muitos problemas podem ser resolvidos de diversas maneiras diferentes. Contudo, dependendo da abordagem escolhida, uma solução pode ser melhor ou pior do que outra em questões de tempo ou uso de memória.

Abordagens para Resolução de Problemas Podemos classsificar os principais métodos de resolução de problemas em relação a abordagem utilizada: Indução matemática - fórmula Divisão e Conquista (divide and conquer) Algoritmos Gulosos (greedy) Algoritmo de Tentativa e Erro (backtracking) Programação Dinâmica (dynamic programming) Algoritmos de Aproximação (approximation)

Indução Matemática - fórmula Abordagem simples. O problema pode ser reduzido a uma fórmula ou a um conjunto de fórmulas matemáticas. Exemplo: descobrir as raízes de uma equação de segundo grau.

Divisão e Conquista Já foi visto em algoritmos de ordenação. A idéa é desmembrar o problema original em vários subproblemas menores, resolvê-los e combinar as soluções. Exemplo: Merge-Sort...

Algoritmos Gulosos (Greedy Algorithms) Uma técnica para resolver problemas de otimização: minimizar ou maximizar um determinado valor. Um algoritmo guloso sempre faz a escolha que parece ser a melhor em um determinado momento, esperando que essa melhor escolha local leve ao melhor resultado do problema como um todo.

Algoritmos Gulosos (Greedy Algorithms) Alguns problemas que podem ser resolvidos com algoritmos gulosos: Problema do troco - forma canônica Árvore Geradora Mínima (Minimum Spanning Tree) Escalonamento de tarefas Problema da Mochila - fracionada (Knapsack) Codificação de Huffman

Problema do troco Exemplo 1: considerando o conjunto de moedas disponíveis {1, 5, 10, 25, 50, 100}, qual é a quantidade mínima de moedas necessário para atender o troco de R$ 3,82?

Problema do troco Exemplo 1: considerando o conjunto de moedas disponíveis {1, 5, 10, 25, 50, 100}, qual é a quantidade mínima de moedas necessário para atender o troco de R$ 3,82? 382 / 100 = 3 e sobram 82 3 moedas de 100 82 / 50 = 1 e sobram 32 1 moeda de 50 32 / 25 = 1 e sobram 7 1 moeda de 25 7 / 5 = 1 e sobram 2 1 moeda de 5 2 / 1 = 2 e sobra 0 2 moedas de 1

Problema do troco Exemplo 2: considerando o conjunto de moedas disponíveis {1, 3, 4}, qual é a quantidade mínima de moedas necessário para atender o troco de R$ 0,06?

Problema do troco Exemplo 2: considerando o conjunto de moedas disponíveis {1, 3, 4}, qual é a quantidade mínima de moedas necessário para atender o troco de R$ 0,06? 6 / 4 = 1 e sobram 2 1 moeda de 4 2 / 1 = 2 e sobra 0 2 moedas de 1 6 / 3 = 2 e sobra 0 2 moedas de 3

Árvore Geradora Mínima Dado um grafo com seus respectivos vértices e arestas, determinar qual a árvore que contém todos os vértices deste grafo com o menor custo possível. Prim vs Kruskal

Problema da Mochila Problema: um ladrão está assaltando uma loja e possui uma mochila que pode carregar um limite máximo de peso sem arrebentar. Sabendo os pesos e valores dos itens, qual é o maior valor possível que o ladrão conseguirá roubar? Exemplo: mochila com capacidade 9 kg Fracionada: objetos podem ser selecionados/escolhidos de forma parcial.

Problema da Mochila - fracionada Fracionada: pode ser resolvida com algoritmo guloso calculando a proporção valor/peso.

Codificação de Huffman É um método de compressão de dados. Esse método usa a frequência com que cada símbolo ocorre, em uma coleção de dados, para determinar um código de tamanho variável para o símbolo.

Codificação de Huffman faca 101000010000 110001000...

Codificação de Huffman faca 101000010000 110001000...

Codificação de Huffman

Codificação de Huffman EXERCÍCIO: Escreva como seria codificada a sequência de caracteres abracadabra pe de cabra utilizando a codificação de Huffman. Mostre a árvore criada no processo de codificação e a codificação binária com o código fixo e com o código variável. Levar em consideração os espaços em branco.