Optimização Combinatória. Guia de Utilização do Software

Documentos relacionados
Investigação Operacional I. Guia de Utilização do Software. José Manuel Vasconcelos Valério de Carvalho. Universidade do Minho

Problema do Caminho Mais Curto. Problema do Caminho Mais Curto

Investigação Operacional

Problema de Optimização. Metodologias de Apoio à Decisão 1. Slide 1

Técnicas de Concepção de Algoritmos: Branch and Bound

Aula 19: Lifting e matrizes ideais

Resolução de problemas difíceis de programação linear através da relaxação Lagrangeana

Programa de Unidade Curricular

Emparelhamento de Objectos Representados em Imagens usando Técnicas de Optimização

Ciclos hamiltonianos e o problema do caixeiro viajante

Ferramentas de Suporte

Problema do Caminho Mínimo

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

1 - Ambiente de desenvolvimento

Facebook. Um grafo é uma rede. Estrutura de dados fundamental em Informática, tal como listas e árvores.

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

Oalgoritmo de Dijkstra

O estudo utilizando apenas este material não é suficiente para o entendimento do conteúdo. Recomendamos a leitura das referências no final deste

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

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

Análise e Síntese de Algoritmos

Problemas de Busca (a.k.a NP) - parte 2

Resolução do problema do caixeiro viajante assimétrico (e uma variante) através da relaxação Lagrangeana

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Teoria dos Grafos Aula 27

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

Teoria dos Grafos Aula 22

Conteúdo. Histórico. Notas. Teoria dos Grafos BCC204. Notas. Notas. 1736: Euler e as Pontes de Königsberg

Alguns Exercícios de Inteligência Artificial

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 3ª Parte Prof. Sandra Pais Soares

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

Os Problemas de Optimização Combinatória e a Teoria da Complexidade

Encriptação de Mensagens

1) Escolher e descrever um problema cuja resolução requeira a execução de algoritmos computacionais que não sejam triviais.

Índice. Prefácio Os modelos de programação linear e a investigação operacional 17

Introdução à Programação. João Manuel R. S. Tavares

Inteligência Artificial

VII Congresso de Mecânica Aplicada e Computacional Universidade de Évora 14 a 16 de Abril de 2003

Problemas de Optimização em redes

Teoria da Complexidade Computacional

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Unidade: Modelo Simplex e Modelo Dual. Unidade I:

BCC204 - Teoria dos Grafos

Nuno Miguel Duarte Sequeira André VARIABLE NEIGHBOURHOOD SEARCH

ALGORITMO DE DIJKSTRA

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved.

Teste de Software. Técnica de Teste Estrutural. Rosemary Silveira Filgueiras Melo

Redes. ADSA António Câmara

Algoritmos Combinatórios: Introdução

Calculando distâncias

Problemas de Fluxo em Redes

P, NP e NP-Completo. André Vignatti DINF- UFPR

Melhor caminho entre duas estações de metro

Algoritmos de Aproximação para o Problema do Caixeiro Viajante

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

Ferramentas Web, Web 2.0 e Software Livre em EVT

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

Programação. Folha Prática 6. Lab. 6. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Introdução aos Sistemas Informáticos

2º Trabalho Prático - Algoritmos em grafos

Melhor caminho entre duas estações de metro

UNIVERSIDADE PEDAGÓGICA ESCOLA SUPERIOR TÉCNICA - ESTEC

Estrutura (IV) - Modularidade

Matrizes como imagens Funções definidas pelo programador: Âmbito das variáveis Apresentação do projecto

Teoria dos Grafos. Aula 5 - Estruturas de Dados para Grafos. Profª. Alessandra Martins Coelho. março/2013

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

Arquitetura e Organização de Computadores

AULA 24. Algoritmos p.856/905

Métodos de Programação I Ana Maria de Almeida

Introdução à Programação

A palavra ALGORITMO teve origem com um Matemático Persa, al. Khawarizmi. O seu trabalho mais famoso foi Al-jabr walmuquabalah,

5COP096 TeoriadaComputação

Um sistema de numeração posicional utiliza um conjunto de símbolos. O valor que cada

Tecnicas Essencias Greedy e Dynamic

Teoria dos Grafos. Edson Prestes

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 21

João Paulo de Freitas Araujo. Algoritmos para acelerar a computação de Árvores de corte de Gomory e Hu. Dissertação de Mestrado

BCC204 - Teoria dos Grafos

Complexidade de Algoritmos

Prof. Marco Antonio M. Carvalho

Trabalho Prático Data de Entrega : 30 de Maio

8ª S Olimpíadas de Informática Prova Prática

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Projeto e Análise de Algoritmos

CIC 111 Análise e Projeto de Algoritmos II

Departamento de Engenharia de Produção UFPR 22

Introdução à Programação em C Input / Output

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

Grafos: caminhos mínimos

INF 1010 Estruturas de Dados Avançadas

Árvore Binária de Busca Ótima

Informática para Ciências e Engenharias 2014/15. Teórica 8

03 Grafos: percurso, ponderação e caminhos SCC0503 Algoritmos e Estruturas de Dados II

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

O Problema do Multi Corte Mínimo em Digrafos

método de solução aproximada

Transcrição:

Optimização Combinatória Guia de Utilização do Software José Manuel Vasconcelos Valério de Carvalho Universidade do Minho 2005

Introdução Este documento apresenta diversas informações sobre a utilização dos seguintes packages de programação matemática: Problemas de maximização de fluxo: MAXFLOW Problema do caminho mais curto: LTHRS Problemas de afectação: APC Problema do caixeiro viajante: TSP2 Problema de emparelhamento de custo mínimo em grafos não bipartidos: SAP Todos estes packages se encontram disponíveis: - na Internet: no endereço http://opsresearch.com/, local que fornece inúmeras informações de interesse sobre o domínio da Investigação Operacional, ou - na ORSEP (Operations Research Software Exchange Program), por ftp (usando como login ftp e password um endereço de e-mail válido), no sistema HELIOS.MATHEMATIK.UNI-KL.DE, na directoria pub/math/orsep. Para mais detalhes, ver EJOR 38/1 (1989) e EJOR 48 (1990). Os programas foram desenvolvidos em Fortran (LTHRS, MAXFLOW e APC) e em Pascal (TSP). Utilizadores interessados em converter os programas de Fortran para C poderão fazê-lo com software disponível na Internet no seguinte endereço: - http://www.fortran.com/fortran/free.html Estes packages usam ficheiros de dados como input. Para construir o ficheiro de dados pode ser usado qualquer processor de texto, desde que o ficheiro seja guardado como um ficheiro de texto, apenas com caracteres ASCII. No caso do WORD, deve ser usada a opção GUARDAR COMO ficheiro do tipo TEXT ONLY (*.TXT), podendo o utilizador escolher o nome que pretende dar ao ficheiro. Ficheiros do tipo *.DOC não podem ser utilizados, porque contêm um cabeçalho com caracteres invisíveis para o utilizador que os programas interpretam como dados do problema. Os resultados dos programas são, por defeito, apresentados no écran, podendo, no entanto, ser redireccionados para um ficheiro, através da opção >ficheiro. Os ficheiros relativos a cada programa encontram-se na diskette, respectivamente, nas directorias fluxo, caminho, afecta e caixeiro. Problemas de Maximização de Fluxo: MAXFLOW O package é baseado num artigo de D. Goldfarb, M.D. Grigoriadis, "A computational comparison of the Dinic and network simplex methods for maximum flow, Annals of Operations Research 7, 1988. Este programa determina o fluxo máximo entre um vértice fonte, abaixo designado por isou, e um terminal designado por isnk. Os dados de entrada devem ser números inteiros.

O package aceita dados de input, a partir de um ficheiro de texto, com o seguinte formato: Na primeira linha: nodes narcs isou isnk sendo nodes o número de vértices do grafo e narcs o número de arcos, isou a fonte de fluxo (vértice s) e isnk o terminal (vértice t). Nas restantes narcs linhas, é feita uma listagem dos narcs arcos, no seguinte formato: fromnode tonode arccapacity sendo fromnode o vértice de origem do arco, tonode o vértice de destino, e arccapacity a respectiva capacidade. Se for declarado um valor de capacidade nulo, o programa assume uma capacidade infinita para o arco. O formato de input é 4I10, pelo que devem ser reservadas 10 posições para cada dado, ou então, os dados devem ser separados por vírgulas. O input da rede apresentada na Pág. 66 dos Apontamentos (atribuindo aos vértices v1,v2,v3 e v4, os números 1,2,3 e 4, respectivamente, ao vértice s, o número 5, e ao vértice t, o número 6) é o seguinte: 6,9,5,6 5,1,2 5,2,3 1,3,3 1,4,1 1,2,2 2,4,2 3,6,1 3,4,4 4,6,3 Para executar o programa, fazer - MAXFLOW sendo pedido o nome do ficheiro de input e do ficheiro de output. estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo acima referido. Problema do Caminho mais curto: LTHRS

O package foi desenvolvido por Gallo e Pallotino, sendo o algoritmo baseado em ideias de Glover, Klingman and Philips. Este programa determina o caminho mais curto entre um vértice de raíz (origem), abaixo designado por nr, e todos os restantes vértices do grafo. São admitidos custos negativos para os arcos, mas o grafo não deve ter nenhum circuito de comprimento negativo. Os valores dos custos devem ser inteiros. O programa LTHRS lê o input numa representação designada por uma estrela de sucessores. O programa usa esta estrutura de dados por ser a mais eficiente para a implementação do algoritmo. No entanto, a introdução de dados neste formato pressupõe o trabalho prévio de organização de dados, e está sujeita a erros. Para ultrapassar este problema, foi desenvolvido o programa LA2ES que converte um ficheiro com uma lista de arcos num ficheiro com o grafo representado como uma estrela de sucessores. Para correr este programa, fazer LA2ES, e fornecer o nome dos ficheiros de input e output. O ficheiro com a lista de arcos deve ter o seguinte formato: Nas três primeiras linhas: n m nr sendo n o número de vértices do grafo e m o número de arcos, e nr o vértice de raíz (origem). Nas restantes m linhas, é feita uma listagem dos m arcos, no seguinte formato: org dst custo sendo org o vértice de origem do arco, dst o vértice de destino, e custo o respectivo custo. No ficheiro PAG36 está definido um problema com 7 vértices e 12 arcos, sendo o vértice de origem o vértice 7. Este corresponde ao grafo apresentado nos Apontamentos na Página 36, e o vértice 7 corresponde ao vértice s, enquanto os restantes vértices têm a numeração apresentada na Figura. O ficheiro PAG44 apresenta outro dos Apontamentos. Para executar o programa, fazer - LTHRS <EXEMPLO.INP >EXEMPLO.OUT em que EXEMPLO.INP deve ser um ficheiro com o formato de lista de adjacências.

estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo: Giorgio Gallo e Stefano Pallotino, Shortest paths algorithms, Annals of Operations Research 13, 3-79, 1988. A estratégia do algoritmo foi concebida por F.Glover, D. Klingman e N.Phillips, A new polynomially bounded shortest path algorithm, Operations Research, 65-74, 1985. Problema de Afectação: APC O algoritmo de afectação foi desenvolvido por Carpaneto, Martello e Toth e é designado por APC. Baseia-se em ideias apresentadas no artigo Carpaneto, Martello e Toth, Algorithms and codes dor the assignment problem, Annals of Operations Research 13, 193-224, 1988. O módulo A.FOR destina-se a fazer a interface com o utilizador. Este programa determina a afectação de custo mínimo, dada uma matriz de custos de dimensão n x n. O ficheiro com a matriz de custos deve ter o seguinte formato: Na primeira linha: n sendo n a dimensão da matriz quadrada. Em cada uma das restantes n linhas, é feita uma listagem dos n coeficientes de custo relativos a essa linha. O formato de input é 10I8, pelo que devem ser reservadas 8 posições para cada dado, ou então, os dados devem ser separados por vírgulas. Nos ficheiros LOG158.DAT e LOG159.DAT estão definidos os inputs dos problemas apresentados nas páginas 158 e 159 dos Apontamentos, respectivamente. Para executar o programa, fazer

- A sendo pedido o nome do ficheiro de input e do ficheiro de output. estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo acima referido. Problema do caixeiro viajante: TSP O algoritmo o problema do caixeiro viajante foi desenvolvido por T. Volgenant and W.B. van den Hout do Institute da Universidade de Amsterdão, e está disponível através da ORSEP. Este programa determina a solução óptima do problema de caixeiro viajante simétrico, ou seja, com custos associados aos arcos cij=cji. Ver ficheiro READ.ME Problema de emparelhamento de custo mínimo em grafos não bipartidos: SAP O algoritmo é baseado em ideias de U. Derigs. Este programa determina o emparelhamento perfeito de custo mínimo em grafos não bipartidos com um número par de vértices, significando emparelhamento perfeito que todos os vértices do grafo estão emparelhados. Os valores dos custos associados aos arcos do grafo devem ser inteiros. Este algoritmo pode também ser usado para resolver o problema de emparelhamento apresentado nos Apontamentos da disciplina, em que se pretende determinar o emparelhamento de maior cardinal num grafo não-bipartido. Para o efeito, todos os custos associados aos arcos devem ser iguais a 1. A solução de menor custo é aquela em que todos os vértices (em número que deve ser sempre par) estão emparelhados.

O programa SAP lê o input numa representação própria. O programa usa esta estrutura de dados por ser a mais eficiente para a implementação do algoritmo. No entanto, a introdução de dados neste formato pressupõe o trabalho prévio de organização de dados, e está sujeita a erros. Para ultrapassar este problema, foi desenvolvido o programa LA2NBM que converte um ficheiro com uma lista de arcos num ficheiro com o grafo representado de uma forma adequada. Para correr este programa, fazer LA2NBM, e fornecer o nome dos ficheiros de input e output. Ver exemplo de aplicação em baixo. O ficheiro com a lista de arcos deve ter o seguinte formato: Nas duas primeiras linhas: n m sendo n o número de vértices do grafo e m o número de arcos. Nas restantes m linhas, é feita uma listagem dos m arcos, no seguinte formato: org dst custo sendo org o vértice de origem do arco, dst o vértice de destino, e custo o respectivo custo. No ficheiro APONT65 está definido um problema com 12 vértices e 16 arcos. Este corresponde ao grafo apresentado no dos Apontamentos relativo à solução do problema de emparelhamento em grafos não-bipartidos. Os vértices têm a numeração apresentada na Figura e os custos associados aos arcos são iguais a -1. A aplicação do programa LA2NBM ao ficheiro APONT65 (que tem uma lista de arcos) produz o ficheiro NBM65 (que tem uma representação própria que serve de input ao programa SAP). Para executar o programa, fazer a nível do MS-DOS - SAP <EXEMPLO.INP >EXEMPLO.OUT em que EXEMPLO.INP deve ser um ficheiro com o formato próprio. estruturas de dados utilizadas e o desempenho computacional, podem ser obtidas no artigo: U. Derigs, Solving non-bipartite matching problems via shortest path techniques, Annals of Operations Research 13, 225--261, 1988.