Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650...

15
Universidade Federal do Rio de Janeiro Escola Politécnica MBA em Engenharia de Software EEL 650 Análise e Implementação de Algoritmos Turma ENGSOFT32 Prof. Heraldo L. S. Almeida Trabalho Prático para Avaliação de Aproveitamento Descrição do Trabalho: 1) Escolher e descrever um problema cuja resolução requeira a execução de algoritmos computacionais que não sejam triviais. 2) Descrever um algoritmo que possa ser utilizado para resolver o problema. 3) Analisar o algoritmo escolhido em termos de complexidade de tempo (como o tempo de execução aumenta em função com o tamanho do problema). 4) Implementar o algoritmo escolhido na linguagem de programação de sua preferência e medir o tempo de execução para problemas de diferentes tamanhos, plotar um gráfico e analisar os resultados obtidos, comparando a taxa de crescimento observada experimentalmente com a previsão da análise teórica desenvolvida no item 3. Regras: O trabalho poderá ser feito em grupos de até 5 alunos. Poderão ser escolhidos tanto problemas clássicos da literatura de ciência da computação (ver lista de sugestões em anexo), quanto problemas práticos específicos, relacionados a necessidades reais de pessoas ou de empresas com as quais o aluno se relacione. Cada grupo deve enviar um e-mail contendo o nome dos componentes do grupo e o tema escolhido para o endereço eletrônico [email protected] até o dia 08/10/2018. No caso de tema existente na lista de sugestões em anexo, basta mencionar o título do tema. Já no caso de um tema proposto pelos próprios alunos, deve ser incluída uma descrição do problema escolhido e dos tipos de algoritmos a serem investigados. Temas escolhidos pelos alunos estarão sujeitos à aprovação do professor. Dois grupos não podem escolher o mesmo tema, ou temas muito semelhantes. No caso de conflito, o grupo que tiver se manifestado mais tarde deverá escolher outro tema. Os trabalhos finais deverão ser enviados em formato Word ou PDF, juntamente com o código-fonte dos programas desenvolvidos, ao endereço eletrônico [email protected] até o dia 23/10/2018. O professor estará à disposição para esclarecer dúvidas e ajudar no que for necessário, podendo ser acessado, a qualquer tempo, até o prazo final de entrega do trabalho, no endereço eletrônico acima.

Transcript of Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650...

Page 1: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

Universidade Federal do Rio de Janeiro

Escola Politécnica – MBA em Engenharia de Software

EEL 650 – Análise e Implementação de Algoritmos

Turma ENGSOFT32 – Prof. Heraldo L. S. Almeida

Trabalho Prático para Avaliação de Aproveitamento

Descrição do Trabalho:

1) Escolher e descrever um problema cuja resolução requeira a execução de algoritmos

computacionais que não sejam triviais.

2) Descrever um algoritmo que possa ser utilizado para resolver o problema.

3) Analisar o algoritmo escolhido em termos de complexidade de tempo (como o tempo de

execução aumenta em função com o tamanho do problema).

4) Implementar o algoritmo escolhido na linguagem de programação de sua preferência e

medir o tempo de execução para problemas de diferentes tamanhos, plotar um gráfico e

analisar os resultados obtidos, comparando a taxa de crescimento observada

experimentalmente com a previsão da análise teórica desenvolvida no item 3.

Regras:

• O trabalho poderá ser feito em grupos de até 5 alunos.

• Poderão ser escolhidos tanto problemas clássicos da literatura de ciência da computação (ver

lista de sugestões em anexo), quanto problemas práticos específicos, relacionados a

necessidades reais de pessoas ou de empresas com as quais o aluno se relacione.

• Cada grupo deve enviar um e-mail contendo o nome dos componentes do grupo e o tema

escolhido para o endereço eletrônico [email protected] até o dia 08/10/2018. No caso de tema

existente na lista de sugestões em anexo, basta mencionar o título do tema. Já no caso de um

tema proposto pelos próprios alunos, deve ser incluída uma descrição do problema escolhido

e dos tipos de algoritmos a serem investigados.

• Temas escolhidos pelos alunos estarão sujeitos à aprovação do professor.

• Dois grupos não podem escolher o mesmo tema, ou temas muito semelhantes. No caso de

conflito, o grupo que tiver se manifestado mais tarde deverá escolher outro tema.

• Os trabalhos finais deverão ser enviados em formato Word ou PDF, juntamente com o

código-fonte dos programas desenvolvidos, ao endereço eletrônico [email protected] até o

dia 23/10/2018.

• O professor estará à disposição para esclarecer dúvidas e ajudar no que for necessário,

podendo ser acessado, a qualquer tempo, até o prazo final de entrega do trabalho, no

endereço eletrônico acima.

Page 2: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

1. Ordenação Topológica (topological sorting)

Formulação Teórica:

Dado um grafo orientado e acíclico com n vértices v1, v2, ... vn, ordenar os vértices de modo que,

para toda aresta (vi ; vj), o vértice vi anteceda o vértice vj.

Entrada: Saída:

Exemplo Prático:

A grade curricular de um curso universitário possui n disciplinas v1, v2, ... vn , sendo que algumas

dentre estas disciplinas podem ter uma ou várias dentre as outras disciplinas da grade como pré-

requisito.

O algoritmo deve determinar uma ordem válida em que um aluno possa cursar as n disciplinas da

grade sem violar nenhum pré-requisito.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Topological_sorting

• http://www.cs.sunysb.edu/~algorith/files/topological-sorting.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 22.

Page 3: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

2. Árvore de Cobertura de Extensão Mínima

(minimum spanning tree)

Formulação Teórica:

Dado um grafo com n vértices v1, v2, ... vn e os custos cij para inserção de arestas interligando cada

par de vértices vi e vj, para i=1,2,...,n e j=1,2,...,n, determinar um conjunto de arestas de custo total

mínimo que forme uma árvore abrangendo todos os n vértices.

Entrada: Saída:

Exemplo Prático:

Uma empresa de telefonia precisa interligar n localidades v1, v2, ... vn por meio de fibras óticas,

sendo que o custo necessário para interligar diretamente duas localidades vi e vj é conhecido e dado

por cij, para i=1,2,...,n e j=1,2,...,n.

O algoritmo deve determinar uma solução de custo mínimo para implementar uma rede de fibra

ótica interligando todas as n localidades.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Minimum_spanning_tree

• http://www.cs.sunysb.edu/~algorith/files/minimum-spanning-tree.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 23.

Page 4: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

3. Caminhos mínimos (shortest paths)

Formulação Teórica:

Dado um grafo orientado com n vértices v1, v2, ... vn , m arestas a1, a2, ... am e custos c1, c2, ... cm

associados a cada aresta, determinar:

• o caminho de menor custo entre um vértice-origem vi e um vértice-destino vj

• os caminhos de menor custo entre um vértice-origem vi e todos os demais vértices do grafo

• os caminhos de menor custo entre todos os demais vértices do grafo e um vértice-destino vj

• os caminhos de menor custo entre todos os pares de vértices do grafo

Entrada: Saída:

Exemplo Prático:

Em um país existem n cidades v1, v2, ... vn e as companhias aéreas oferecem m vôos a1, a2, ... am

interligando algumas dessas cidades, cujos custos são dados por c1, c2, ... cm.

Os algoritmos devem determinar:

• o roteiro aéreo de menor custo total entre uma cidade-origem vi e um cidade-destino vj

• os caminhos de menor custo entre um vértice-origem vi e todos os demais vértices do grafo

• os caminhos de menor custo entre todos os demais vértices do grafo e um vértice-destino vj

• os caminhos de menor custo entre todos os pares de vértices do grafo

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Shortest_path_problem

• http://www.cs.sunysb.edu/~algorith/files/shortest-path.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulos 23 e 24.

Page 5: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

4. Inspeção de Rotas (route inspection)

Formulação Teórica:

Dado um grafo orientado com n vértices v1, v2, ... vn , m arestas a1, a2, ... am e custos c1, c2, ... cm

associados a cada aresta, determinar o roteiro de menor custo que percorre cada aresta pelo menos

uma vez.

Entrada: Saída:

Exemplo Prático:

Os caminhões de uma empresa de coleta de lixo precisam percorrer diariamente m ruas a1, a2, ... am,

cujos comprimentos são dados por c1, c2, ... cm, e que se interceptam em n esquinas.

Determinar um roteiro que minimize a quilometragem total rodada diariamente pelos caminhões da

empresa.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Route_inspection_problem

• http://www.cs.sunysb.edu/~algorith/files/eulerian-cycle.shtml

Page 6: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

5. Fluxo Máximo em Redes (maximum network flow)

Formulação Teórica:

Dado um grafo orientado com n vértices v1, v2, ... vn , m arestas a1, a2, ... am e capacidades máximas

c1, c2, ... cm associadas a cada aresta, determinar fluxos f1, f2, ... fm tais que 0 fi ci , i=1,2,...,n em

cada aresta de modo que o fluxo total roteado de um vértice-origem vi para um vértice-destino vj

seja o máximo possível.

Entrada: Saída:

Exemplo Prático:

Seja uma rede de comunicação de dados com n roteadores v1, v2, ... vn interligados por m canais de

comunicação a1, a2, ... am, cujas capacidades máximas (em pacotes por segundo) disponíveis em um

dado momento sejam dadas por c1, c2, ... cm, respectivamente.

Determinar as quantidades de pacotes por segundo f1, f2, ... fm tais que 0 fi ci , i=1,2,...,n que

cada roteador deve transmitir por meio de cada canal de comunicação para que a taxa de

transmissão de dados de um roteador-origem vi para um roteador-destino vj seja a máxima possível.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Maximum_flow_problem

• http://www.cs.sunysb.edu/~algorith/files/network-flow.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 26.

Page 7: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

6. Cobertura de Conjunto (set cover)

Formulação Teórica:

Dados m subconjuntos de um conjunto S composto de n elementos, determinar a menor quantidade

de subconjuntos que cobrem todos os elementos de S.

Entrada: Saída:

Exemplo Prático:

Uma empresa de assistência técnica tem contratos de manutenção cobrindo n tipos diferentes de

máquinas e possui em seu quadro de funcionários m técnicos. Cada técnico tem capacitação para

dar suporte a um ou mais dentre os n tipos de máquinas cobertos pela empresa.

Surgiu a necessidade de se reduzir ao mínimo possível a folha de pagamento da empresa, por meio

da demissão do maior número possível de técnicos.

Determinar uma equipe composta pelo menor número possível de técnicos que, conjuntamente,

sejam capazes de dar cobertura a todos os n tipos de máquinas cobertos pelos contratos de

manutenção em vigor.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Set_cover

• http://www.cs.sunysb.edu/~algorith/files/set-cover.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 35.

Page 8: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

7. Empacotamento de Conjunto (set packing)

Formulação Teórica:

Dados m subconjuntos de um conjunto S composto de n elementos, determinar a maior quantidade

de subconjuntos que são disjuntos.

Entrada: Saída:

Exemplo Prático:

Uma linha de produção possui n máquinas diferentes e produz m produtos diferentes.

Cada produto requer a utilização de uma ou mais dentre as m máquinas disponíveis, sendo que

produtos que requerem uma mesma máquina não podem ser produzidos simultaneamente.

Determinar a quantidade máxima de produtos que podem ser produzidos simultaneamente.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Set_packing

• http://www.cs.sunysb.edu/~algorith/files/set-packing.shtml

Page 9: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

8. Casamento de Sequências (string matching)

Formulação Teórica:

Dados

• um alfabeto composto por p caracteres (exemplos: ={a,b,c,...,z} para textos, ={0,1}

para sequências binárias ou ={A,C,G,T} para sequências genéticas)

• uma sequência s composta por n caracteres do alfabeto

• uma sequência r composta por m caracteres do alfabeto , tal que m n

localizar todas as subsequências de s que sejam exatamente iguais a r.

Entrada: Saída:

Exemplo Prático:

Localizar todas as ocorrências de uma string de m caracteres em um texto de n caracteres.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/String_matching

• http://www.cs.sunysb.edu/~algorith/files/string-matching.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 32.

Page 10: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

9. Casamento Aproximado de Sequências

(approximate string matching)

Formulação Teórica:

Dados

• um alfabeto composto por p caracteres (exemplos: ={a,b,c,...,z} para textos, ={0,1}

para sequências binárias ou ={A,C,G,T} para sequências genéticas)

• uma sequência s composta por n caracteres do alfabeto

• uma sequência r composta por m caracteres do alfabeto

localizar todas as subsequências de s que possuam a mínima distância de edição de r, onde o

conceito de distância de edição corresponde ao número mínimo de operações elementares de

inserção, substituição e remoção de caracteres que precisam ser feitas para que a subsequência

original seja transformada em uma sequência exatamente igual a r.

Entrada: Saída:

Exemplos Práticos:

• Dada uma palavra inexistente em um dicionário, obter uma lista das palavras existentes

nesse dicionário que sejam mais parecidas com a palavra dada.

• Dada a sequência de m nucleotídeos de um gen específico em uma espécie animal, localizar

a sequência mais parecida que existir na sequência de n nucleotídeos correspondente ao

genoma humano (supõe-se que a sequência a ser encontrada no genoma humano

corresponda a um gen com a mesma função do gen localizado no animal, com pequenas

modificações evolutivas).

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Approximate_string_matching

• http://www.cs.sunysb.edu/~algorith/files/approximate-pattern-matching.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 32.

Page 11: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

10. Compressão de Dados (data compression)

Formulação Teórica:

Dados

• um alfabeto composto por p caracteres (exemplos: ={a,b,c,...,z} para textos, ={0,1}

para sequências binárias ou ={A,C,G,T} para sequências genéticas)

• uma sequência s composta por n caracteres do alfabeto

determinar uma sequência r de comprimento mínimo tal que a sequência original s possa ser

recuperada a partir da sequência r.

Entrada: Saída:

Exemplo Prático:

Compactar um arquivo de tamanho n, codificado em um alfabeto composto por p símbolos distintos

em um arquivo de tamanho mínimo possível, que permita recuperar posteriormente o arquivo

original.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Data_compression

• http://www.cs.sunysb.edu/~algorith/files/text-compression.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 16.

Page 12: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

11. Máxima Subsequência Comum

(longest common subsequence)

Formulação Teórica:

Dados

• um alfabeto composto por p caracteres (exemplos: ={a,b,c,...,z} para textos, ={0,1}

para sequências binárias ou ={A,C,G,T} para sequências genéticas)

• m sequências s1, s2,...,sm, cada uma composta por n caracteres do alfabeto

determinar a mais longa subsequência comum a todas as m sequências.

Entrada: Saída:

Exemplo Prático:

Determinar a mais longa subsequência comum entre gens similares de diferentes espécies, visando

identificar características funcionais básicas daquele gen que são comuns em todas as espécies

estudadas.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Longest_common_subsequence_problem

• http://www.cs.sunysb.edu/~algorith/files/longest-common-substring.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 15.

Page 13: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

12. Programação de Linha de Montagem

(assembly line scheduling)

Formulação Teórica:

Dado um grafo orientado com n vértices v1, v2, ... vn , m arestas a1, a2, ... am e custos c1, c2, ... cm

associados a cada aresta, determinar o caminho de menor custo entre um vértice qualquer dentre um

subconjunto de possíveis vértices-origem e um vértice qualquer dentre um subconjunto de possíveis

vértices-destino.

Entrada: Saída:

Exemplo Prático:

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Job_Shop_Scheduling

• http://www.cs.sunysb.edu/~algorith/files/scheduling.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 15.

Page 14: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

13. Problema do Encaixotamento (bin packing problem)

Formulação Teórica:

Dados

• n itens de d dimensões com medidas xi1,xi2,...,xid, pra i=1,2,...,n

• um número ilimitado de “caixotes” de d dimensões, todos do mesmo tamanho, com

dimensões xo1,xo2,...,xod

determinar o número mínimo de “caixotes” necessários para empacotar todos os n itens,

juntamente com a distribuição e organização dos itens no interior dos “caixotes”.

Entrada: Saída:

Exemplo Prático:

Acomodar n embalagens com dimensões (x1 ; y1 ; z1), (x2 ; y2 ; z2), ... , (xn ; yn ; zn) em containers com

dimensões (xo ; yo ; zo), utilizando o menor número possível de containers.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Bin_packing_problem

• http://www.cs.sunysb.edu/~algorith/files/bin-packing.shtml

Page 15: Universidade Federal do Rio de Janeiro Escola Politécnica ...heraldo/eel650_trabalho_t32.pdfEEL 650 – Análise e Implementação de Algoritmos Turma ENGSOFT32 – Prof. Heraldo

14. Problema do Caixeiro Viajante

(travelling salesman problem)

Formulação Teórica:

Dado um grafo ponderado completo, com n vértices v1, v2, ... vn e custos cij, para i=1,2,...,n,

associados a cada aresta interligando os vértices vi e vj, encontrar um caminho fechado de custo

mínimo que percorra todos os n vértices.

Entrada: Saída:

Exemplo Prático:

Um braço de robô precisa soldar n pontos em uma placa de circuito impresso. As coordenadas das

posições de cada ponto de solda na superfície da placa são dadas por (x1 ; y1), (x2 ; y2), ... , (xn ; yn).

O braço do robô pode se mover em qualquer direção, sempre em velocidade constante.

Determine a ordem em que os n pontos de solda devem ser processados para que o tempo total de

soldagem da placa seja mínimo.

Dicas de Pesquisa:

• http://en.wikipedia.org/wiki/Travelling_salesman_problem

• http://www.cs.sunysb.edu/~algorith/files/traveling-salesman.shtml

• Livro Cormen, Leiserson, Rivest & Stein, “Algoritmos: Teoria e Prática”, capítulo 35.