Miguel Araújo

Recebeu um Mestrado em Engenharia Informática e Computação pela Faculdade de Engenharia da Universidade do Porto e é actualmente aluno de doutoramento do Programa CMU|Portugal investigando data mining e detecção de anomalias em grafos.

Grafos – 2ª Parte

Depois de na primeira parte (ver Edição 10) termos feito uma introdução ao mundo dos grafos e de termos lançado as primeiras bases para uma melhor compreensão destas estruturas, chegou a altura de perceber, realmente, que problemas podem ser resolvidos.

Pode ficar já claro que o número de algoritmos que resolvem problemas baseados em grafos é enorme, demasiado extenso para ficar completo um artigo, portanto nada melhor do que começar pelos mais simples (e importantes). Preferi manter o nome dos algoritmos e dos problemas em inglês para ser mais fácil encontrá-los numa pesquisa.

Continuar a ler

Grafos – 1ª Parte

Introdução: O que é um grafo

O leitor certamente que já ouviu falar em grafos. São amplamente usados em matemática, mas sobretudo em programação.

Formalmente, um grafo é uma colecção de vértices (V) e uma colecção de arcos (E) constituídos por pares de vértices. É uma estrutura usada para representar um modelo em que existem relações entre os objectos de uma certa colecção.

Pense nos vértices como “locais“. O conjunto dos vértices é o conjunto de todos os locais possíveis. Nesta analogia, os arcos (ou arestas) representam caminhos entre estes locais. O conjunto E (vou usar o termo mais comum – “E” do inglês “edges“) contém todas as ligações entre os locais.

Utilizar grafos é de grande utilidade na representação de problemas da vida real.

Continuar a ler

Compilar, testar e detectar erros de C em Linux

Praticamente todos os programas existentes em Linux foram escritos em C.

O próprio Linux foi escrito em C (embora não na totalidade), portanto é de esperar que seja possível programar-se em C usando uma distribuição instalada de raiz, e de facto é na maioria dos casos, sem recorrer a qualquer programa adicional.

Introdução

A primeira distinção necessária é a de editor versus compilador. O editor é o programa que nós usamos para escrever o nosso código. Existem milhares de programas que o fazem, tanto em Windows como em Linux, desde os simples gEdit ou Kate aos mais complexos Vi, eMacs, Joe… a lista é praticamente interminável.

Deixo a escolha do editor ao vosso critério – é uma questão de gosto pessoal. Se são novos neste mundo da programação em Linux comecem com algo simples, e se se sentirem limitados passem para algo mais complexo.

Do outro lado da barricada, aquele em que nos vamos concentrar, encontra-se o compilador. O compilador é responsável por transformar o vosso código em algo interpretável pela máquina.