Santiago Valdés Ravelo

I'm interested in

Me interesso em

Me intereso en

About me

Apresentação

Presentación

I am an Adjunct Professor at the Department of Applied Informatics (INA) of the Institute of Informatics (INF) of the Federal University of Rio Grande do Sul (UFRGS) and a member of the Graduate Program in Computing (PPGC). Usually, I lecture courses on linear integer programming, combinatorial optimization, and computer theory for graduate students in Computer Science and on algorithms and programming for undergraduate students in Computer Science, Computer Engineering and Electrical Engineering.

Eu sou Professor Adjunto do Departamento de Informática Aplicada (INA) do Instituto de Informática (INF) da Universidade Federal do Rio Grande do Sul (UFRGS) e membro do Programa de Pós-Graduação em Computação (PPGC). Usualmente, ministro disciplinas sobre programação linear inteira, otimização combinatória e teoria da computação para alunos de pós-graduação em Ciência da Computação e sobre algoritmos e programação para alunos de graduação em Ciência da Computação, Engenharia da Computação e Engenharia Elétrica.

Soy Profesor Adjunto en el Departamento de Informática Aplicada (INA) del Instituto de Informática (INF) de la Universidad Federal de Rio Grande do Sul (UFRGS) y miembro del Programa de Posgraduación en Computación (PPGC). Usualmente, imparto materias sobre programación lineal entera, optimización discreta y teoría de la computación para estudiantes de posgrado en Ciencia de la Computación, y sobre algoritmos y programación para estudiantes de pregrado en Ciencia de la Computación, Ingeniería de la Computación e Ingeniería Eléctrica.

Academic Degree

Titulação Acadêmica

Titulación Académica

Research Interests

Interesses de Pesquisa

Intereses de Investigación

I'm interested in the study of optimization problems that emerge from practical applications and whose solutions belong to discrete domains. The theoretical approaches may include proofs on the difficulty of solving or approximating these problems and their variants. More applied approaches will attempt to solve them with standard optimization methods or by proposing new techniques and algorithms. Specifically, I work with the following research topics:

Me interesso no estudo de problemas de otimização oriundos de aplicações práticas, cujas soluções pertencem a domínios discretos. As abordagens teóricas podem incluir provas sobre a dificuldade de solucionar ou aproximar esses problemas e seus casos particulares, enquanto abordagens mais aplicadas tentarão solucioná-los com métodos padrão (de otimização) ou propondo novas técnicas e algoritmos. Especificamente, trabalho com os seguintes tópicos de pesquisa:

Me intereso por el estudio de problemas de optimización oriundos de aplicaciones prácticas, cuyas soluciones pertenecen a dominios discretos. Las propuestas teóricas pueden incluir pruebas sobre la dificultad de solucionar o aproximar eses problemas e sus casos particulares, mientras que propuestas más aplicadas intentarán solucionarlos con métodos estándar (de optimización) o a través de nuevas técnicas e algoritmos. Específicamente, trabajo con los siguientes tópicos de investigación:

  • Approximation Algorithms
  • Combinatorial Optimization
  • Computational Complexity
  • Graph Theory
  • Heuristics and Metaheuristics
  • Mathematical Programming
  • Matheuristics
  • Operational Research
  • Algoritmos de Aproximação
  • Otimização Combinatória
  • Complexidade Computacional
  • Teoria dos Grafos
  • Heurísticas e Metaheurísticas
  • Programação Matemática
  • Matheurísticas
  • Pesquisa Operacional
  • Algoritmos de Aproximación
  • Optimización Discreta
  • Complejidad Computacional
  • Teoría de los Grafos
  • Heurísticas y Metaheurísticas
  • Programación Matemática
  • Matheurísticas
  • Investigación de Operaciones

Students interested in pursuing graduate studies in Computer Science on the above topics, or undergraduate studies on those themes, feel free to contact me.

Alunos interessados na pós-graduação em Ciência da Computação abordando algum dos tópicos anteriores, ou que se interessem em iniciar pesquisas na graduação nesses temas, fiquem à vontade para me contatar.

Estudiantes interesados en cursar posgrado en Ciencia de la Computación sobre algún de los tópicos anteriores, o que se interesen en comenzar una investigación de pregrado sobre esos temas, siéntanse libres para contactarme.

Teaching

Ensino

Enseñanza

This course is for graduate students in Computer Science and aims to approach combinatorial problems with integer linear programming techniques. Students from different computational fields will explore diverse optimization methods based on mathematical formulations and will apply them to solve problems associated with their respective researches. At the end of the semester, the students will be able to propose integer linear models and to use such formulations embedded in exact algorithms, matheuristics, or approximation algorithms for solving the problems.

Esta é uma disciplina de pós-graduação em Ciência da Computação que propõe a abordagem de problemas combinatórios sob a ótica de programação linear inteira. Nela, alunos de diferentes áreas da computação poderão estudar diversas técnicas de otimização baseadas em formulações matemáticas para aplicar em problemas associados às suas respectivas pesquisas. Desta forma, se espera que ao final do semestre o aluno seja capaz de propor modelos lineares inteiros para os problemas e projetar algoritmos exatos, matheurísticas ou algoritmos de aproximação que explorem as formulações na sua resolução.

Esta es una asignatura de posgrado en Ciencia da la Computación que propone abordar de problemas discretos bajo la óptica de programación lineal entera. En ella, alumnos de diferentes áreas de la computación podrán estudiar diversas técnicas de optimización basadas en formulaciones matemáticas para aplicar en problemas asociados a sus respectivas investigaciones. De este modo, se espera que al final del semestre el alumno sea capaz de proponer modelos lineales enteros para los problemas y proyecte algoritmos exactos, matheurísticas o algoritmos de aproximación que usen las formulaciones para su resolución.

Lectures Aulas Conferencias
slides (English only) slides (somente em Inglês) slides (solo en Inglés)
00
IntroductionIntroduçãoIntroducción
01
Computational complexity: asymptotic notation and algorithm's analysis Complexidade computacional: notação assintótica e análise de algoritmos Complejidad computacional: notación asintótica y análisis de algoritmos
02
Computational complexity: complexity classes Complexidade computacional: classes de complexidade Complejidad computacional: clases de complejidad
03
Linear algebra: basic concepts Álgebra linear: conceitos básicos Álgebra lineal: conceptos básicos
04
Linear programming: canonical problem and equivalences Programação linear: problema canônico e equivalências Programación lineal: problema canónico y equivalencias
05
Linear programming: dual problem and complementary slackness Programação linear: problema dual e folgas complementares Programación lineal: problema dual y holguras complementarias
06
Linear programming: Dantzig-Wolfe decomposition Programação linear: decomposição de Dantzig-Wolfe Programación lineal: descomposición de Dantzig-Wolfe
07
Linear programming: algorithms Programação linear: algoritmos Programación lineal: algoritmos
08
Integer linear programming: definition, combinatorial optimization, and NP-hardness Programação linear inteira: introdução, otimização combinatória e NP-dificuldade Programación lineal entera: introducción, optimización discreta y NP-dificultad
09
Integer linear programming: formulations Programação linear inteira: formulações Programación lineal entera: formulaciones
10
Relaxations: definition, duality, and combinatorial, linear, and Lagrangian relaxations Relaxações: definição, dualidade e relaxações combinatória, linear e Lagrangiana Relajaciones: definición, dualidad y relajaciones discreta, lineal y Lagrangiana
11
Cutting planes and valid inequalities Planos de corte e desigualdades válidas Cortes y desigualdades válidas
12
Branch & Bound Branch & Bound Branch & Bound
13
Branch & Bound variations: Branch & Price, Branch & Cut Variações do Branch & Bound: Branch & Price, Branch & Cut Variantes del Branch & Bound: Branch & Price, Branch & Cut
14
Introduction to the use of solvers with Python: PuLP Introdução ao uso de solvers com Python: PuLP Introducción al uso de solvers con Python: PuLP
15
Constructive heuristics, local search, multi-start metaheuristics, GRASP, VNS, simulated annealing, and tabu search Heurísticas construtivas, busca local, metaheurísticas multi-start, GRASP, VNS, simulated annealing e busca tabu Heurísticas constructivas, búsqueda local, metaheurísticas multi-start, GRASP, VNS, simulated annealing y búsqueda tabú
16
Nature-based metaheuristics: evolutionary algorithms and swarm intelligence Metaheurísticas baseadas na natureza: algoritmos evolutivos e inteligência de enxame Metaheurísticas basadas en la naturaleza: algoritmos evolutivos e inteligencia de enjambre
17
Matheuristics: RINS, polishing algorithm, local branching, proximity search, feasibility pump, corridor method, POPMUSIC Matheurísticas: RINS, polishing algorithm, local branching, proximity search, feasibility pump, corridor method, POPMUSIC Matheurísticas: RINS, polishing algorithm, local branching, proximity search, feasibility pump, corridor method, POPMUSIC
18
Approximation algorithms: primal, dual and primal-dual methods, and inapproximability Algoritmos de aproximação: métodos primal, dual e primal-dual, e inaproximabilidade Algoritmos de aproximación: métodos primal, dual y primal-dual, e inaproximabilidad
Semesters:Semestres:Semestres: 2020/1


INF01056 - Programming Challenges

INF01056 - Desafios de Programação

INF01056 - Desafíos de Programación

This course is for undergraduate students in Computer Science and aims to analyze and discuss algorithms and programming techniques needed to solve a challenging problem, similar to those that appear in Programming Contests. Selected topics will be discussed, each one on one lecture and two practices, where the students will solve lists of problems. Also, programming contests will be simulated through the semester. At the end of the course, the students will be able to analyze a problem, determine the best method for its solutions and the more suitable data structures, aiming for an efficient and correct implementation to solve the problem.

Esta é uma disciplina de graduação em Ciência da Computação que objetiva analisar e discutir algoritmos e técnicas de programação necessários na resolução de problemas desafiadores como os que aparecem em Maratonas de Programação. Tópicos selecionados serão individualmente discutidos mediante uma aula teórica seguida por duas aulas práticas, em que listas de problemas serão solucionadas pelos alunos. Ao longo do semestre se realizarão também simulacros de maratonas de programação. Se espera que, no final do semestre o aluno esteja preparado para analisar um problema, determinar o melhor método de solução e as estruturas de dados adequadas, visando uma implementação eficiente para sua correta resolução.

Esta es una asignatura de pregrado en Ciencia de la Computación que tiene como objetivos analizar y discutir algoritmos y técnicas de programación necesarios en la resolución de problemas desafiadores como los que aparecen en Competencias de Programación. Tópicos seleccionados serán individualmente discutidos mediante una clase teórica seguida por dos clases prácticas, en que listas de problemas serán solucionadas por los estudiantes. Durante el semestre se realizarán también simulaciones de competencias de programación. Se espera que, al final del semestre el alumno esté preparado para analizar un problema, determinar el mejor método de solución y las estructuras de datos adecuadas, visando una implementación eficiente para su correcta resolución.

Lectures Aulas Conferencias
slides (Portuguese only) slides (somente em Português) slides (solo en Portugués)
00
Introduction Introdução Introducción
01
Data structures: vectors, lists, sets, maps, heaps, union-find Estruturas de dados: vetores, listas, conjuntos, mapas, heaps, conjuntos disjuntos Estructuras de datos: vectores, listas, conjuntos, mapas, heaps, conjuntos disjuntos
02
Graphs: searches, topological order, connected components, minimum spanning trees Grafos: buscas, ordenação topológica, componentes conexas, árvores geradoras mínimas Grafos: búsquedas, ordenación topológica, componentes conectados, árboles generadores mínimos
03
Graphs: minimum paths, maximum flow Grafos: caminhos mínimos, fluxo máximo Grafos: caminos mínimos, flujo máximo
04
Dynamic programming: Fibonacci, knapsack problems and multiplication of matrices Programação dinâmica: Fibonacci, problemas da mochila e multiplicação de matrizes Programación dinámica: Fibonacci, problemas de la mochila y multiplicación de matrices
05
Dynamic programming: longest common subsequence, edit distance, and longest increasing subsequence Programação dinâmica: máxima subsequência comum, distância de edição e subsequência crescente máxima Programación dinámica: subsecuencia común más larga, distancia de edición y subsecuencia creciente más larga
06
Combinatorics and number theory: combinations, recurrences, divisibility, prime numbers, and modular arithmetic Combinatória e teoria dos números: combinações, recorrências, divisibilidade, números primos e aritmética modular Combinatoria y teoría de los números: combinaciones, recurrencias, divisibilidad, números primos y aritmética modular
07
Computational geometry: distances, areas, perimeters, convex hulls and polygons convexity Geometria computacional: distâncias, áreas, perímetros, envoltórios convexos e convexidade de polígonos Geometría computacional: distancias, áreas, perímetros, envolturas convexas y convexidad de polígonos
08
Strings: tries, prefix function, and suffix automaton Cadeias de caracteres: tries, função prefixo e autômato de sufixos Cadenas de caracteres: tries, función prefijo y autómata de sufijos
Semesters:Semestres:Semestres: 2020/2, 2020/1


INF01202 - Algorithms and Programming

INF01202 - Algoritmos e Programação

INF01202 - Algoritmos y Programación

This course is for undergraduate students in Computer Science, Computer Engineering and Electrical Engineering and aims to introduce the knowledge and techniques needed to develop problem solutions with structured programming. The studied topics include basic commands, simple and structured data types, sub-programming, recursion, and file manipulation. At the end of the semester, the students will be able to analyze problems and to solve them by implementing programs in the programming language C.

Esta é uma disciplina de graduação em Ciência da Computação, Engenharia da Computação e Engenharia Elétrica que objetiva introduzir o conhecimento e técnicas necessários para o desenvolvimento de soluções de problemas através da programação estruturada. Serão estudados os comandos básicos, tipos de dados simples e estruturados, o uso de conceitos como a subprogramação e a recursão, além de manipular arquivos. No final do semestre, se espera que o aluno seja capaz de analisar problemas e implementar programas que os solucionem utilizando a linguagem de programação C.

Esta es una asignatura de pregrado en Ciencia de la Computación, Ingeniería de la Computación e Ingeniería Eléctrica que tiene como objetivo introducir los conocimientos y técnicas necesarios para el desarrollo de soluciones de problemas a través de la programación estructurada. Serán estudiados los comandos básicos, tipos de datos simples y estructurados, el uso de conceptos como la subprogramación y la recursión, además de manipular archivos. Al final del semestre, se espera que el alumno sea capaz de analizar problemas y implementar programas que los solucionen utilizando el lenguaje de programación C.

Lectures Aulas Conferencias
slides (Portuguese only) slides (somente em Português) slides (solo en Portugués)
00
Introduction Introdução Introducción
01
Problem analysis, algorithm definition, Von Neumann model, program structure Análise de problemas, definição de algoritmos, modelo de Von Neumann, estrutura de um programa Análisis de problemas, definición de algoritmos, modelo de Von Neumann, estructura de un programa
02
Language elements, libraries, basic data types in C, arithmetic expressions, scan and print functions Elementos da linguagem, bibliotecas, tipos de dados básicos em C, expressões aritméticas, funções de leitura e impressão Elementos del lenguaje, bibliotecas, tipos de datos básicos en C, expresiones aritméticas, funciones de lectura e impresión
03
Logical expressions, simple, double and nested selection Expressões lógicas, seleção simples, dupla e aninhada Expresiones lógicas, selección simple, dupla y anidada
04
Multiple selection Seleção múltipla Selección múltiple
05
Repetition (while and do-while) Repetição (enquanto-faça e faça-enquanto) Repetición (mientras-haga y haga-mientras)
06
Repetition (for) Repetição (para-cada-faça) Repetición (por-cada-haga)
07
Vectors (arrays) Vetores (arranjos) Vectores (arreglos)
08
Character sequences (strings) Cadeias de caracteres (strings) Cadenas de caracteres (strings)
09
Matrices (multidimensional arrays) Matrizes (arranjos multidimensionais) Matrices (arreglos multidimensionales)
10
Functions Funções Funciones
11
Functions and pointers Funções e ponteiros Funciones y punteros
12
Functions, pointers and vectors Funções, ponteiros e vetores Funciones, punteros y vectores
13
Structs Estruturas Estructuras
14
Structs, pointers and vectors Estruturas, ponteiros e vetores Estructuras, punteros y vectores
15
Binary files Arquivos binários Archivos binarios
16
Binary files (continuation) Arquivos binários (continuação) Archivos binarios (continuación)
17
Text files Arquivos de texto Archivos de texto
18
Text files and strings manipulation Arquivos de texto e manipulação de strings Archivos de texto y manipulación de strings
19
Recursion Recursividade Recursividad
20
Recursion problems. Software development Problemas com recursão. Projeto de software Problemas con recursión. Proyecto de software
Semesters:Semestres:Semestres: 2020/2, 2019/2, 2019/1

Publications

Publicações

Publicaciones

Approximation algorithms for simple assembly line balancing problems

Generalizations, formulations and subgradient based heuristic with dynamic programming procedure for target set selection problems

Minimum constellation covers: hardness, approximability and polynomial cases

NP-hardness and evolutionary algorithm over new formulation for a Target Set Selection problem

Meta-heuristics for the one-dimensional cutting stock problem with usable leftover

Closed-form formulas for evaluating r-flip moves to the unconstrained binary quadratic programming problem

A PTAS for the metric case of the optimum weighted source–destination communication spanning tree problem

A PTAS for the Metric Case of the Minimum Sum-Requirement Communication Spanning Tree Problem

PTAS's for Some Metric p-Source Communication Spanning Tree Problems

A PTAS for the Metric Case of the Minimum Sum-Requirement Communication Spanning Tree Problem

Projects

Projetos

Proyectos

Algoritmos para problemas de otimização combinatória em redes de comunicação modelados com grafos

Coordinator: Coordenador: Coordinador: Santiago V. Ravelo

Institution: Federal University of Rio Grande do Sul (UFRGS) Instituição: Universidade Federal do Rio Grande do Sul (UFRGS) Institución: Universidad Federal de Rio Grande do Sul (UFRGS)

AICaBI: Artificial Intelligence for Cancer Biomarkes Identification

Coordinator: Coordenador: Coordinador: Márcio Dorn

Institutions: Federal University of Rio Grande do Sul (UFRGS), Pontifical Catholic University of Rio Grande do Sul (PUCRS), University of Santiago de Chile (USACH), and Sorbonne University - Pierre and Marie Curie (UPMC) Instituições: Universidade Federal do Rio Grande do Sul (UFRGS), Pontifícia Universidade Católica do Rio Grande do Sul (PUCRS), Universidade de Santiago de Chile (USACH) e Universidade Sorbonne - Pierre e Marie Curie (UPMC) Instituciones: Universidad Federal de Rio Grande do Sul (UFRGS), Pontificia Universidad Católica de Rio Grande do Sul (PUCRS), Universidad de Santiago de Chile (USACH) y Universidad Sorbonne - Pierre y Marie Curie (UPMC)

Sponsor: CAPES Financiador: CAPES Financiador: CAPES

Métodos de busca heurística multimodais e multi-objetivo para problemas em Bioinformática Estrutural

Coordinator: Coordenador: Coordinador: Márcio Dorn

Institution: Federal University of Rio Grande do Sul (UFRGS) Instituição: Universidade Federal do Rio Grande do Sul (UFRGS) Institución: Universidad Federal de Rio Grande do Sul (UFRGS)

Sponsor: FAPERGS Financiador: FAPERGS Financiador: FAPERGS

Students

Alunos

Alumnos

Graduate

Pós-Graduação

Posgrado


Felipe Furtado Lorenci

Master's thesisDissertação de mestradoTesis de maestría: Formulations and algorithms for Warehouses Order Picking and Batching problems

Tiago Furtado Drehmer Pinheiro

Co-supervisorCo-orientadoraCo-tutora: Luciana Salete Buriol

Master's thesisDissertação de mestradoTesis de maestría: The k-labeled Spanning Forest problem: approximability, formulations and algorithms

Undergraduate

Graduação

Pregrado


Bruno Rodrigues Bartolomasi

Scientific initiationIniciação científicaIniciación científica: QUBO for the Optimum Communication Spanning Tree problem

Eduardo Braga Rhoden

Scientific initiationIniciação científicaIniciación científica: Exact Covers by Subgraph Collections

Jordi Pujol Ricarte

Scientific initiationIniciação científicaIniciación científica: Algorithms for Subgraphs Covering problems

Marco Antônio Chitolina da Silva

Scientific initiationIniciação científicaIniciación científica: Graph Covering problems


Ended Supervisions

Orientações Finalizadas

Tutorías Concluídas


2021

Giovane Alves Fonseca

Bachelor's thesisTrabalho de conclusão de cursoTesis de graduación: Formulations and algorithms for the Optimum Communication Spanning Tree problem

2019

Leonardo Abreu Nahra

Co-supervisorCo-orientadoraCo-tutora: Luciana Salete Buriol

Bachelor's thesisTrabalho de conclusão de cursoTesis de graduación: Proof of NP-hardness, new mathematical formulation and constructive heuristic for In-band Network Monitoring Optimization

Contact

Contato

Contacto

Students interested in pursuing graduate studies in Computer Science on Combinatorial Optimization, Algorithms or Operational Research, or undergraduate studies on those themes, feel free to contact me.

Alunos interessados na pós-graduação em Ciência da Computação abordando Otimização Combinatória, Algoritmos ou Pesquisa Operacional, ou que se interessem em iniciar pesquisas na graduação nesses temas, fiquem à vontade para me contatar.

Estudiantes interesados en cursar posgrado en Ciencia de la Computación sobre Optimización Discreta, Algoritmos o Investigación de Operaciones, o que se interesen en comenzar una investigación de pregrado sobre esos temas, siéntanse libres para contactarme.

Address:

Endereço:

Dirección:

Av. Bento Gonçalves, 9500, Porto Alegre, RS, Brazil. CEP: 91501-970

Phone:

Telefone:

Teléfono:

+55 (51) 3308 6826