ESTRUTURAS DE DADOS. prof. Alexandre César Muniz de Oliveira. 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8.

Documentos relacionados
ESTRUTURAS DE DADOS II prof. Alexandre César Muniz de Oliveira

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos

Conceito Básicos da Teoria de Grafos

Definições Básicas para Grafos

Grafos: árvores geradoras mínimas. Graça Nunes

Conceitos Básicos da Teoria de Grafos

Grafos: componentes fortemente conexos, árvores geradoras mínimas

CONCEITOS BÁSICOS EM GRAFOS

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

Árvores: Conceitos Básicos e Árvore Geradora

Percursos em um grafo

Alg l ori r t i m t os e E str t u r tu t ra r s d e D ados I I Intr t o r duçã ç o ã a a Gr G a r f a o f s P of o a. M. C r C ist s ina n a /

Algoritmos e Estruturas de Dados II Introdução a Grafos. Divisão do arquivo

Teoria dos Grafos Aula 5

Teoria dos Grafos Aula 2

Definição e Conceitos Básicos

Teoria dos Grafos. Edson Prestes

TEORIA DOS GRAFOS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS MATEMÁTICA DISCRETA II PROFº MARCOS NASCIMENTO

Matemática Discreta - Exercícios de Grafos

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II

CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo:

Grafos: algoritmos de busca

INF1010 Lista de Exercícios 2

Grafos: caminhos (matriz adjacência)

Grafos Orientados (digrafos)

Teoria dos Grafos Aula 6

Problema da Árvore Geradora Mínima

Pesquisa Operacional II. Professor João Soares de Mello

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

Doutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA

Grafos Planares. Grafos e Algoritmos Computacionais. Prof. Flávio Humberto Cabral Nunes

Matemática Discreta 10

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

Grafos Parte 2. SCC-603 Algoritmos e Estruturas de Dados II. Profª. Rosane Minghim / Baseado em material de professores dos anos anteriores

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

IFRN. Introdução à Teoria dos Grafos. Prof. Edmilson Campos

2 Relação entre soma dos graus e número de arestas

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Teoria dos Grafos. Edson Prestes

5COP096 TeoriadaComputação

Programa. 1 Parte 1 - Conjuntos e Aplicações. 1 Conjuntos. 4 Indução Matemática e Divisibilidade. 5 Congruências Lineares

Introdução à Teoria dos Grafos. Isomorfismo

Árvores UFES. Teoria dos Grafos. CC/EC/Mestrado

Teoria dos Grafos. Teoria dos Grafos. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. agosto

Teoria dos Grafos Aula 2

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Toffolo 2012/1

Cortes (cut sets) 2010/2 Teoria dos Grafos (INF 5037/INF2781) CC/EC/UFES

Grafos: aplicações. Grafos: árvore geradora mínima

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

Matemática Discreta. Aula nº 22 Francisco Restivo

Noções da Teoria dos Grafos. André Arbex Hallack

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

1.3 Isomorfismo 12 CAP. 1 CONCEITOS BÁSICOS

Conteúdo. Conceitos e Resultados Gerais. 11 Combinatória. Introdução

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

PCC173 - Otimização em Redes

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

TEORIA DOS GRAFOS UMA APLICAÇÃO DE LOGÍSTICA PARA O ENSINO MÉDIO. Profº M. Sc. Marcelo Mazetto Moala

Grafos Eulerianos e o Problema do Carteiro Chinês

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

PESQUISA OPERACIONAL TEORIA DOS GRAFOS

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

IFRN. Conexidade e Distância. Prof. Edmilson Campos

Definição 1.1 : Uma árvore é um grafo simples conexo e sem ciclos.

Teoria dos Grafos. Edson Prestes

CONCEITO DE ÁRVORE CES-11. A raiz é o único nó que não possui ancestrais. As folhas são os nós sem filhos. Exemplos:

Grafos Msc. Daniele Carvalho Oliveira. Doutoranda em Computação UFU Mestre em Computação - UFU Bacharel em Computação - UFJF 1

14 Coloração de vértices Considere cada um dos grafos abaixo:

Algoritmos e Estruturas de Dados II

Matemática Aplicada às Ciências Sociais- 11º ano (Versão: para o manual a partir de 2016/17)

Caminhos Mais Curtos Fluxo Máximo Árvores Geradoras Mínimas

Teoria dos Grafos. Edson Prestes

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

Projeto e Análise de Algoritmos

Tecnicas Essencias Greedy e Dynamic

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

Teoria dos Grafos. Edson Prestes

PCC173 - Otimização em Redes

15 - Coloração Considere cada um dos grafos abaixo:

Teoria dos Grafos. Componentes, Conj. Indep., Cliques

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Árvores. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

INE Fundamentos de Matemática Discreta para a Computação

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira

Grafos: caminhos mínimos

Grafos: caminhos mínimos em Listas de Adjacência. Profa. Graça Nunes

Tópicos de Matemática Finita Data: I II-1 II-2 II-3 II-4 III-1 III-2 III-3 III-4 IV-1 IV-2 IV-3 IV-4 Nota Final

Grafos IFRN. Robinson Alves

Pesquisa Operacional

Teoria dos grafos. Caminho euleriano e Hamiltoniano. Prof. Jesuliana N. Ulysses

Grafo planar: Definição

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

MÓDULO 3 - PROBLEMAS DE COBERTURAS DE ARCOS E NÓS

Teoria dos Grafos AULA 3

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

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

Transcrição:

ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Ordenação 7. Busca 8. Grafos Sugestão bibliográfica: ESTRUTURAS DE DADOS USANDO C Aaron M. Tenenbaum, et alli DATA STRUCTURES, AN ADVANCED APPROACH USING C Jeffrey Esakov & Tom Weiss ESTRUTURAS DE DADOS E ALGORITMOS EM JAVA (2ED) Michael Godrich & Roberto Tamassia

GRAFOS 1 Fundamentos Um grafo G = {V,A}, onde V= conjunto de vértices, não vazio, e A= conjunto de arestas, formadas por pares de vértices a=(v,w) que formam uma relação binária entre eles. Logo: G={(v 1,v 2 ),(v 3,v 4 ),...,(v n-1,v n )}, onde cada um destes pares é chamado de aresta e {v 1,v 2,...v n } V (vértices de G). 2 Classificação e conceitos básicos 2.1 Dígrafos Quando as arestas são pares ordenados de vértices, tem-se um grafo orientado (ou dígrafo). Caso contrário, tem-se um grafo não orientado. Fig 1 Grafos orientados e não orientados 2.2 Completos Quando o número máximo de arestas é atingido. Nesse caso, com base no número de vértices, pode-se calcular o número de arestas. Num grafo completo orientado é n (n-1). Os grafos completos não orientados são também denominados cliques. Um clique pode ser representado por K n, onde n = número de vértices do grafo completo. Fig 2 Grafos completos

GRAFOS 3 Grafo Bipartido Um grafo G é bipartido quando for possível obter uma partição de conjuntos de vértices V com dois subconjuntos V 1 e V 2, de forma que, não existam arestas unindo elementos de V 1 ou unindo elementos de V 2. Grafos completos bipartidos podem ser denotados por K pq, onde p e q são as cardinalidades das duas partições do grafo. Se o grafo da Fig 3 fosse não orientado poderia ser denotado por K 3,2. Fig 3 Grafo Bipartido 3.1 Grafo Ponderado ou Rede Um Grafo G, orientado ou não, é dito ponderado (ou valorado) se tem valores (pesos) associados aos vértices e/ou arestas. Estes valores, em geral, podem corresponder a distâncias, capacidade, localização ou custos em função das características ou propriedades de cada elemento de G. Em um dígrafo, quando se destacam um nó fonte e outro nó sumidouro, tem-se uma rede. Fig 4 Grafo ponderado

GRAFOS 3.2 Grau de um grafo Dado um grafo G=(V,E), se <v i,v j > E, v i v j, então os vértices v i e v j são adjacentes. O grau de um vértice v i V é igual ao número de vértices adjacentes a v i e grau g(g) = max { g(v 1 ), g (v 2 ), g(v 3 ),..., g(v n ) } para vi V. 4 Caminho, percurso, ciclo, circuito e comprimento Um caminho de um vértice v i0 para v ik é uma seqüência de arestas <v i0, v i1 >, <v i1, v i2 >,... <v ik-1, v ik >. Um caminho é dito elementar se passa exatamente uma vez por cada vértice e é simples se passa uma vez por cada aresta. Quando o grafo não é orientado o conceito de caminho é substituído por cadeia. Percurso pode ser utilizado genericamente nos dois casos. Se v i0 = v ik, diz-se que o percurso é fechado e forma um ciclo (não orientado) ou circuito (orientado). O comprimento de um percurso é a soma dos pesos associados a cada uma das arestas (ou vértices) envolvidos (para um grafo valorado) ou o número de arestas que compõe o percurso (para um grafo não valorado). v v Fig 5 - Percursos Existe ainda os conceitos de: Nós adjacentes (ou vizinhos) em grafos não orientados; Nó sucessor e antecessor em grados orientados;

GRAFOS 4.1 Ciclo Hamiltoniano e Euleriano Um ciclo e(g) simples que passa por todas as arestas de um grafo G é dito Euleriano. Um ciclo h(g) elementar que passa por todos os vértices de um grafo G é dito Hamiltoniano. Fig 6 Pontes de Koenigsberg, junto com as terras A,B,C e D não formam um grafo de Euler, mas possue um ciclo Hamiltoniano h(g) = {<A,C>,<C,B>,<B,D>,<D,A>} 4.2 Grafo Desconexo Um grafo G não orientado é conexo se para todo par de vértices (v,w) existe pelo menos uma cadeia entre eles. Caso haja pelo menos um par de vértice de G que não possua uma cadeia entre eles, diz-se que G é desconexo. Em grafos orientados não existe a obrigatoriedade de haver um caminho entre todo par de vértice. Se isso ocorrer, diz-se que o grafo é fortemente conexo. Fig 7 Grafo conexo (G1) e desconexo (G2)

GRAFOS 5 Grafo Planar Arestas podem se interceptar em um ponto onde não há um vértice. Um grafo G onde toda intercessão de arestas corresponde a um vértice é dito planar. Fig 8 Grafo planar 5.1 Grafo Árvore A definição clássica de árvore: estrutura de dados que possui uma estrutura hierárquica entre seus elementos conjunto finito de nós onde um deles é denominado raiz e os demais, recursivamente, são também árvore (sub-árvores) Existem variações de conceitos para árvores que não guardam relação de conectividade. Árvores não conexas, isto é, orchards. Uma árvore conexa que possui um nó raiz, é chamada árvore enraizada (rooted tree). E cada sub-árvore de uma árvore é por si uma árvore que formam um conjunto de árvores que são conhecidas como floresta de uma árvore. Com relação a grafos, pode-se dizer que uma árvore de n nós é um grafo conexo, sem ciclos e com exatamente (n-1) arestas. Por não haver ciclos, existe uma só cadeia que liga dois vértices (v e w) diferentes.

GRAFOS 6 Representação de grafos Matricial Utiliza uma matriz bidimensional para mapear todas as arestas existentes em um grafo. Cada elemento a ij significa presença (T) ou ausência (F) de uma aresta ligando o vértice i ao vértice j. Pode-se acrescentar uma informação referente ao peso associado a essa aresta. Representação Ligada Utiliza listas de vértices e arestas para representar grafos. Economia de memória para grafos com muitos vértices e poucas arestas.

GRAFOS

GRAFOS 7 Fechamento Transitivo Observando a matriz adjacência ADJ, que representa as arestas interligando os vértices de um dado grafo G, pode-se concluir que: Se ( ADJ[i][j] = V ) Existe um caminho de comprimento 1(ou aresta) entre i e j. Se ( ADJ[i][1] = V.E. ADJ[1][j] = V.OU. ADJ[i][2] = V.E. ADJ[2][j] = V.OU. ADJ[i][3] = V.E. ADJ[3][j] = V.OU.... ADJ[i][N] = V.E. ADJ[N][j] = V.OU. ) Existe pelo menos um caminho de comprimento 2 entre i e j. O mesmo pode ser feito para mais arestas, o que tornaria o princípio válido para caminhos de qualquer comprimento. Quando ADJ contém 1 s e 0 s, pode-se reescrever ADJ[i][k] = V.E. ADJ[k][j] = V.OU. como ADJ[i][k] * ADJ[k][j] + Assim, a matriz dos caminhos de comprimento 2 ADJ 2 = ADJ * ADJ (multiplicação de matrizes) e de comprimento 3 ADJ 3 = ADJ 2 * ADJ... ADJ n = ADJ n-1 * ADJ Fechamento transitivo ou matriz caminho é definida como sendo a matriz de todos os caminhos de qualquer comprimento em um grafo G: PATH[i][j] = ADJ[i][j] ADJ 2 [i][j] ADJ 3 [i][j]... ADJ n [i][j]

GRAFOS 8 Matriz Custo A matriz adjacência pode conter também informações sobre o custo associado a uma aresta. A figura seguir mostra um grafo e a matriz custo inicial com a notação, simbolizando ausência de arestas (custo infinito). A matriz custo mínimo de um grafo G considera, de todos os caminhos (de qualquer comprimento) possíveis entre dois vértices, aqueles que possuem menor custo associado. É equivalente ao fechamento transitivo, mas não mostra apenas a presença ou não de caminho entre i e j (vértices de G), mas também o menor custo entre i e j. Se entre dois vértices não existir caminho de comprimento algum (PATH[i][j]=0), a matriz custo mínimo deverá apresentar para aquela aresta (i,j). Portanto a matriz custo mínimo é a matriz dos caminhos de menor custo, obtida a partir da matriz de custo inicial. Assim

GRAFOS MatrizCustoMínimo (Cm) := min { Ci, Ci 2, Ci 3,... Ci n } Cm := Ci // O(n 2 ) Para x=1, n Para i=1,n Para j=1,n Se i <> j Para k=1, n Cm(i,j) := min (Cm(i,j), Cm(i,k) + Cm( k, j )// O(n 4 ) Fim Fim Fim Fim Fim 9 Percursos em Grafos não orientados v Em Profundidade Profundidade ( vértice v) Visitado (v) :=.T. Para cada vértice w adjacente a v Se (não Visitado (v)) então Profundidade ( w ) Fim Fim v Em Largura Largura ( vértice v) Visitado (v) :=.T. Inicia (Q) Faça (.T.) Para cada vértice w adjacente a v Se (não Visitado (v)) então Insere (Q, w ) Visitado (w) :=.T. Fim Fim Se Vazia(Q) return; Senão v := Remove (Q) Fim Fim

GRAFOS 10 Árvores Geradoras Árvores geradas a partir de percursos em grafos não orientados, onde apenas o nó raiz dessa árvore não possui predecessor. O termo floresta geradora é mais genérico, pois trata de um conjunto de árvores geradas nessas mesmas condições, ou seja, mais de um nó não possui predecessor. Assim deseja-se encontrar um subgrafo acíclico (árvore) T G que conecta todos os vértices de G. Para tanto é necessário que G seja não orientados e conexo. Diz-se que T espalha G (spanning tree). Assim, pode-se ter árvores geradoras em profundidade (AGP) e árvores geradoras em largura (AGL). Observe os exemplos a seguir: Seja o grafo G: 2 1 3 4 5 6 7 AGP: 8 2 1 3 4 5 6 7 2 AGL: 1 8 3 4 5 6 7 8

GRAFOS 11 Árvore Geradora Mínima (minimum-spanning-tree) Árvore T gerada a partir de um grafo não orientado, conexo e ponderado G de forma a minimizar: w(t) = w(u,v), onde (u,v) T Algoritmo MST-Krushal(G,w) // O(A log A) T := φ Enquanto não vazio(g) Encontre (u,v), w(u,v) < w(x,y) para (x,y) G G := G - {(u,v)} T := T + {(u,v)} Se Caminhos (u,v) > 1 // forma ciclo T := T - {(u,v)} Fim Fim Pode-se usar uma fila de prioridades para ordenar os pesos das arestas. Assim, inicialmente, Algoritmo MST-Krushal(G,w) Q p := w[g]; // pesos das arestas de G T := φ Outros algoritmos: Prim-Dijkstra: O(A log V)

GRAFOS 12 Aplicações de grafos 12.1 Problema do caminho mínimo (Djikstra, p.706) 12.2 Escalonamento (Schedule)

GRAFOS 12.3 Fluxo Máximo Grafo para o problema do fluxo máximo

CAP254:Otimização Combinatória Luiz A. N. Lorena LAC/INPE lorena@lac.inpe.br http://www.lac.inpe.br/~lorena 2002

GRAFOS

Grafos - resumo

Grafos - resumo

Grafos - resumo

Grafos - resumo