36
Teoria dos Grafos Teoria dos Grafos Conceitos Preliminares Conceitos Preliminares Prof. Renato Melo

Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Embed Size (px)

Citation preview

Page 1: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Teoria dos GrafosTeoria dos Grafos

Conceitos PreliminaresConceitos Preliminares

Prof. Renato Melo

Page 2: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Visão geral e conceitos básicos História da teoria dos grafos Componentes dos grafos Tipos básicos de grafos Representação computacional Busca

Em profundidade Em largura

Page 3: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Motivação Por que estudar grafos?

Importante ferramenta matemática com aplicação em diversas áreas do conhecimento

Utilizados na definição e/ou resolução de problemas

Existem centenas de problemas computacionais que empregam grafos com sucesso.

Page 4: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

História da Teoria dos Grafos Leonhard Euler (1707-

1783), no ano de 1736, resolveu um problema na cidade de Königsberg (antiga Prússia), criando assim o primeiro registro na história referente aos grafos.

Euler criou tal estrutura para resolver o clássico problema das Sete Pontes de Königsberg.

O problema era: É possível visitar todas as partes de terra desta cidade passando por cada ponte exatamente uma vez?

Page 5: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

História da Teoria dos Grafos

A cidade de Königsberg foi construída numa região onde haviam dois braços do Rio Pregel e uma ilha. Foram construídas sete pontes ligando diferentes partes da cidade, como mostrado na figura:

• Problema: É possível que uma pessoa faça um percurso na cidade de tal forma que inicie e volte a mesma posição passando por todas as pontes somente uma única vez?

Page 6: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

História da Teoria dos Grafos

Apesar do problema ser uma brincadeira dos matemáticos da época, possui fundamental importância.

Euler isolou completamente a essência do problema, ficando apenas o que era importante para o pensamento em sua solução, que passou então a ser trivial.

Page 7: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Modelagem proposta por Euler

Todos os “pontos” de uma dada área de terra podem ser representados por um único ponto já que uma pessoa pode andar de um lado para o outro sem atravessar uma ponte.

Um ponto é conectado a outro se houver uma ponte de um lado para o outro.

Page 8: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

História dos Grafos

Pensamento trivial de Euler: Não existe solução para o problema: Saindo de A, não é possível voltar para A passando

por todas as pontes sem utilizar a mesma ponte mais de uma vez porque existem faixas de terra que são conectadas com um número impar de pontes.

Page 9: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

História dos Grafos

O formalismo proposto por Euler ficou mais de 100 anos sem ser utilizado, vindo a ser referenciado apenas no século XIX com os trabalhos de:

Gustav Kirchoff (circuitos elétricos) Arthur Cayley (química – desenhos de

hidrocarbonetos)

Butano

Page 10: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

O problema das 3 casas É possível conectar os 3 serviços às

três casas sem haver cruzamento de tubulação?

A teoria dos grafos

mostra que não é

possível!

Page 11: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Coloração de Mapas

Quantas cores são necessárias para colorir o mapa do Brasil, sendo que estados adjacentes não podem ter a mesma cor?

Page 12: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Questões sobre o caminho mínimo

De forma a reduzir seus custos operacionais, uma empresa de transporte de cargas deseja oferecer aos motoristas de sua frota um mecanismo que os auxilie a selecionar o melhor caminho (o de menor distância) entre quaisquer duas cidades por ela servidas, de forma a que sejam minimizados os custos de transporte.

Page 13: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo
Page 14: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Modelagem com grafos Estamos interessados em objetos e nas

relações entre eles;

Quem são eles nos problemas apresentados?

Como representar graficamente?

Page 15: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Modelagem com grafos No problema das casas

Vértices são casas e serviços Arestas são as tubulações entre casas e serviços

No problema da coloração de mapas Vértices são estados Arestas relacionam estados vizinhos

No problema do caminho mais curto Vértices são as cidades Arestas são as ligações entre as cidades

Page 16: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

O que são grafos? Tipicamente um grafo é representado

como: um conjunto não vazio de pontos ou vértices ligados por retas, que são chamadas de

arestas; Ferramenta de modelagem; Abstração matemática que representa

situações reais através de um diagrama.

Page 17: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Componentes do Grafo

Um grafo é uma estrutura matemática que contém dois tipos básicos de entidades:

Vértices Arestas

G(V,A), onde:V = {e1, e2}A = { (e1,e1), (e1,e2) }

e1 e2

G

Page 18: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Exemplo

G = (V, E)

V = {a,b,c,d,e}E = {{a,b},{a,c},{b,c},{b,d},{c,d},{c,e}} = { e1, e2, e4, e5, e7, e9}

a

e

b c

d

G = (V, E)

V = {a,b,c,d,e}E = {{a,b},{a,c},{b,b},{b,c},{b,d},{c,d},{c,d},{c,d},{c,e}} = { e1, e2, e3, e4, e5, e6, e7, e8, e9}

Grafo simples

Multigrafo

e1 e2

e3

e4

e5

e6e7

e8e9

Page 19: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Tipos básicos

Os grafos podem ser:

Dirigidos (G1) Não dirigidos (G2)

Nos grafos dirigidos, as arestas representam pares ordenados.

e1 e2

e1 e2

G1

G2

Page 20: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Características – Rotulado ou Valorado

Os grafos podem ser:

Rotulados (G3) Não Rotulados

Os rótulos indicam alguma característica para cada par de vértices, ou seja, para cada aresta.

BH AL370

0 0

G3

Page 21: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Teoria dos Grafos

Conceitos

• Dois vértices que são incidentes a uma mesma aresta são ditos adjacentes.

• Duas arestas que são incidentes a um mesmo vértice são ditas adjacentes.

u v

eu e v são adjacentes

e1 e e2 são adjacentes

ue2

e1

Page 22: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Teoria dos Grafos

Observação

O conceito de incidência ou adjacência

é importante para a representação

da estrutura de um grafo como um diagrama

Page 23: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Teoria dos Grafos

Conceitos

• O número de vértices de um grafo G é denotado por n. O valor n também é conhecido como ordem de G

• O número de arestas de um grafo é denotado por m

• Se n e m são finitos, o grafo é finito. Caso contrário é dito infinito.– Exemplo de grafo infinito: malhas

Page 24: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Teoria dos Grafos

Conceitos

• O número de arestas incidentes a um vértice v é denominado grau(v) e representado por d(v).

• Grau também é conhecido como valência.

a

e

b c

d

d(a) = 3d(b) = 5d(c) = 4d(d) = 2d(e) = 2

Page 25: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

CC/EC/Mestrado Teoria dos Grafos

Conceitos

• Vértice isolado é o vértice que não possui arestas incidentes (grau nulo)

• Vértice folha ou terminal é o vértice que possui grau 1

• Vizinhos de um vértice são os vértices adjacentes a ele.

b

a

cd

e

d é um vértice folha e e é um vértice isoladob e c são vizinhos de a

Page 26: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Teoria dos Grafos

Conceitos

• Pares de vértices (ou de arestas) não adjacentes são denominadas independentes.

• Um conjunto de vértices (ou arestas) é independente se nenhum par de seus elementos é adjacente.

Page 27: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

CC/EC/Mestrado Teoria dos Grafos

Exemplo

a

b c

d

f

eg

e10

e1 e2

e3

e4e5

e6e7

e8

e9

•e1 e e5 são independentes•a e d são independentes•{b,e,g} é um conjunto independente•{e1, e5 } é um conjunto independente

Page 28: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Algumas aplicações

As aplicações de grafos nos dias de hoje são vistas nas mais diversas áreas da ciência, por exemplo:

Mapas (localização de caminhos mínimos, alternativos, etc)

Redes de computadores (roteamento de pacotes) Teoria de Linguagens (autômatos) Química (moléculas) Física (circuitos) Otimização (fluxo em redes) Arquitetura de Computadores (Grafos planares)

Page 29: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Representando um grafo em um programa Que tipos de estruturas de software são

adequadas para modelar um grafo? Começando pelos nós

Geralmente é conveniente representar um nó por um objeto de uma classe de nó.

Ex:

Page 30: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Representação computacional: Arestas Uma abordagem diferente para

representar arestas é preferível àquela usada para árvores.

Dois métodos são comumente utilizados para grafos: Matriz de adjacência e Lista de adjacência.

Page 31: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Matriz de Adjacência Uma matriz de adjacência é um vetor

bidimensional no qual os elementos indicam se uma aresta está presente em dois nós. Se um grafo tem N nós, a matriz de

adjacência será uma matriz NxN. O nós são cabeçalhos tanto para linha como

para coluna.

Page 32: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Lista de Adjacência A lista em lista de adjacência refere-se a

uma lista encadeada. Na verdade é um vetor de listas

Cada lista individual mostra a quais nós um dado nó é adjacente.

Page 33: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Adicionando nós e arestas á um grafo Para adicionar um nó a um grafo, é

preciso inserir um objeto em um vetor de nó. vetorVertices[nVertices] = new Vertice(‘R’);

Uma aresta pode ser adicionada utilizando uma matriz ou lista de adjacência. Usando uma matriz: matrizAdj[1][3] = 1; matrizAdj[1][3] = 1;

A classe Grafo.java

Page 34: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Buscas Assuma que se tenha criado um grafo. Agora precisará de um algoritmo que

forneça uma maneira de iniciar em um nó especificado

e então se mova ao longo das arestas para outros nós.

De tal modo que ao final tenha a garantia de ter visitados todo nó conectado ao inicial.

Há duas abordagens comuns Busca em profundidade Busca em largura

Page 35: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Busca em Profundidade Usa uma pilha para lembrar para onde

deve ir quando atingir um ponto sem saída.

Page 36: Teoria dos Grafos Conceitos Preliminares Prof. Renato Melo

Busca em Largura Nesta busca visita-se todos os nós

adjacentes ao nó inicial e apenas então vai mais adiante.

Esse tipo de busca é usado implementando uma fila.