Sei sulla pagina 1di 12

Teoria da Computação

Aula 2: Teoria dos Grafos – parte 1

Apresentação
Esta aula consiste em apresentar as de nições básicas de alfabeto e linguagens e de nições e propriedades de árvores e
grafos.

Objetivos
Identi car o contexto teórico de alfabeto;

Descrever as propriedades de grafos;

Narrar os conteúdos a serem estudados, como: Autômatos Finitos e Expressões Regulares, Linguagens Livres de
Contexto, Gramática Livre de Contexto, Máquina de Turing e Complexidade.

Alfabeto e grafos
Como visto anteriormente, alfabeto e linguagens dependem de uma sequência de símbolos.

1
2

Símbolo
Sequência
Símbolo é uma entidade abstrata que não é de nida
Sequência é uma justaposição nita de símbolos.
formalmente;

Alfabeto
Um alfabeto é um conjunto nito de símbolos, representado por ∑ (sigma). Existem vários tipos de alfabetos:
Alfabeto Árabe Alfabeto Grego

Alfabeto da língua portuguesa Alfabeto fonético internacional

Linguagem formal
Dizemos que uma linguagem formal ∑* é um conjunto de sequências formadas contendo os símbolos de ∑. Ainda é possível
uma Linguagem Formal ser representada por Σ+, em que Σ+ = Σ* - {ε}.

Exemplo: Seja ∑ = {2, 3} então:

∑* = {Є, 2, 3, 22, 23, 32, 33, 222...}

Σ+ = {2, 3, 22, 23, 32, 33, 222...}

Propriedades de linguagem formal

Conjunto vazio
Palíndromos
O conjunto vazio é denotado por {
Palíndromos são palavras que têm
}, onde o conjunto formado por
a mesma leitura da esquerda para a
uma palavra vazia é representado
direita e vice-versa, sendo também
por {ε}.
conhecida como linguagem in nita.
Exemplo:
{ε, 0, 1, 00, 11, 010, 101, ....}
Operações em linguagem formal

Clique nos botões para ver as informações.

Concatenação 

Concatenação é a operação binária de nida sobre uma linguagem ou palavra formada pela justaposição das palavras
Associatividade:

v(wt) = (vw)t
Elemento neutro:

εw = w = wε

Concatenação sucessiva 

Concatenação sucessiva é a justaposição de uma palavra com ela mesma.


Exemplo:
a5 = aaaaa
an = aaa...a (a repetido n vezes)
w0 = ε para w ≠ ε

Os grafos de nidos historicamente


Pontes de Königsberg
O problema das pontes de Königsberg é apontado como o primeiro em que se recorre à modelação de Teoria dos Grafos. Essa
técnica é utilizada para modelar problemas das mais variadas áreas, como:

Redes de transportes;
Problemas de telecomunicações;
Teoria da Computação.

O problema das Pontes de Königsberg


O problema é baseado na cidade de Königsberg (território da Prússia até 1945, atual Kaliningrado), que é cortada pelo Rio
Prególia. A cidade tem duas grandes ilhas que, juntas, formam um complexo que na época continha sete pontes. A pergunta
que frequentemente era feita nas ruas foi apresentada ao matemático suíço Leonhard Euler:

“É possível realizar um percurso através da cidade que inclua as sete pontes sem
atravessar a mesma ponte duas vezes?”
 Sete pontes de Königsberg. | Fonte: Wikipedia

Para resolver este problema aparentemente simples, Euler considerou quatro pontos (dois para representar as margens e
outros dois para representar as ilhas) e sete linhas (representando as pontes).

 Grafo com 4 pontos. | Fonte: Wikipedia.

O que é um grafo?

Grafo (graph) é um conjunto de vértices (ou nodos), interconectados dois a


dois por arestas (ou arcos).

Um objeto combinatório é conhecido como grafo, podendo também ser chamado de grafo dirigido ou, ainda, grafo orientado;

Grafos são importantes modelos para uma grande variedade de problemas de Engenharia, Computação, Matemática,
Economia, Biologia etc.
Exemplo de um grafo:
Garfo desconexto = (não existe um caminho ligando certas partes do garfo)

Nesse grafo onde G = (V, E) sendo V o número de vértices e E o número de arestas, temos que os vértices são representados
por V = {1, 2, 3, 4, 5} e as ligações das arestas são representadas por E = { (1, 3), (3, 1), (3, 4), (4, 3), (5, 2), (2, 5), (2, 2) }.

Leia com atenção, o texto a seguir, sobre as propriedades de um grafo.

 Propriedades de um grafo

 Clique no botão acima.


Propriedades de um grafo
Um grafo é um par de conjuntos: Um conjunto de vértices e um conjunto de arcos. Cada arco é um par ordenado
de vértices. O primeiro vértice do par é a ponta inicial do arco e, o segundo, a ponta nal.

Grafo dirigido ou direcionado é um grafo onde cada arco “começa” na sua ponta inicial e “termina” na sua ponta
nal. A ponta nal de todo arco é diferente da ponta inicial.

O tamanho de um grafo com V vértices e A arcos é a soma V + A.

O grau de um grafo indica o número de arestas que conectam um vértice do grafo a outros vértices, ou seja, o
número de vizinhos que aquele vértice tem no grafo (que chegam ou partem dele). Para grafos direcionados são
indicados dois tipos de grau: grau de entrada (número de arestas que chegam ao vértice) e grau de saída (número
de arestas que partem do vértice).

Um subgrafo de um grafo é uma parte do grafo.

Um multigrafo é um grafo que tem mais de uma aresta conectada a um par de vértices em um grafo.

Um laço em um grafo é representado por uma aresta (chamada de laço), onde o vértice de partida é o mesmo
que o vértice de chegada.

Um caminho em um grafo é uma ligação entre dois vértices, ou seja, uma sequência de vértices onde cada
vértice está conectado ao vértice seguinte por meio de uma aresta. O comprimento do caminho é o número de
vértices que é necessário percorrer de um vértice até o outro.

Um ciclo em um grafo é o caminho onde o vértice inicial e o vértice nal são o mesmo.

Tipos de grafos

Grafo trivial Grafo simples Grafo completo


Grafo que tem um único vértice e Grafo não direcionado, sem laços Grafo simples onde cada vértice
nenhuma aresta. e sem arestas paralelas se conecta a todos os outros
(multigrafo). vértices do grafo.
Grafo regular Subgrafo Grafo ponderado
Grafo onde todos os seus Subgrafo de um grafo dado por Grafo que tem pesos (valor
vértices têm o mesmo grau G(V,A) onde se o conjunto de numérico) associados a cada
(número de arestas ligadas a vértices (Vs) for um subconjunto uma de suas arestas.
ele). Todo grafo completo é de V, então Vs ⊆ V (Vs é um
também regular. subconjunto próprio de V), e se o
conjunto de arestas (As) for um
subconjunto de A, então As ⊆ A
(As é um subconjunto próprio de
A).

Grafo bipartido
Grafo onde seus vértices podem ser divididos em dois
conjuntos disjuntos, tais que cada aresta ligue apenas
vértices de grupos diferentes. As arestas conectam apenas
os vértices que estão em subconjuntos diferentes. Um grafo
bipartido não tem ciclo de tamanho ímpar e seu número de
cores é menor ou igual a dois. Isso signi ca que é possível
colorir todos os vértices usando apenas duas cores de
maneira que uma aresta nunca ligue dois vértices da
mesma cor.

Grafos isomorfos
Para determinar que dois grafos são isomorfos é preciso
que encontremos a bijeção, ou seja, uma função que faça o
mapeamento de vértices e arestas de modo que os dois
grafos se tornem coincidentes. Uma função f é bijetiva se
for ao mesmo tempo injetiva e sobrejetiva. A função bijetora,
também chamada de bijetiva, é um tipo de função
matemática que relaciona elementos de duas funções.
Desse modo, os elementos de uma função A têm
correspondentes em uma função B. Importante notar que
elas apresentam o mesmo número de elementos em seus
conjuntos.
Condições sob as quais se torna fácil ver que dois grafos não são isomorfos:

Um grafo ter mais vértices do que outro.


Um grafo ter mais arestas do que outro.
Um grafo ter arestas paralelas e o outro não.
Um grafo ter laço e o outro não.
Um grafo ter um vértice de grau k e o outro não.
Um grafo ser conexo e o outro não.
Um grafo ter um ciclo e o outro não.

Grafo Euleriano Grafo Semi-euleriano Grafo Hamiltoniano


Grafo que tem um ciclo que visita Grafo que tem um caminho Grafo que tem um caminho que
todas as suas arestas apenas aberto (não é um ciclo) que visita visita todos os seus vértices
uma vez, iniciando e terminando todas as suas arestas apenas apenas uma vez, com exceção
no mesmo vértice. uma vez. do inicial e do nal e pode ser um
ciclo.

Representando grafos em computadores


Existem duas abordagens muito utilizadas para a representação de grafos em computadores, a matriz de adjacência e a lista
de adjacência. A matriz de adjacência utiliza uma matriz N x N para armazenar o grafo, onde N é o número de vértices. Têm
alto custo computacional e a aresta é representada por uma marca na posição (i, j) da matriz (aresta liga o vértice i ao j).

Exemplo:

A lista de adjacência utiliza uma lista de vértices para descrever as relações entre os vértices. Um grafo contendo N vértices
utiliza um array de ponteiros de tamanho N para armazenar os vértices do grafo. Para cada vértice é criada uma lista de
arestas, onde cada posição da lista armazena o índice do vértice a qual aquele se conecta.
Atividades
Atividade do objetivo 1:

Dado o grafo da gura abaixo, dê os vértices e arestas correspondentes.

Atividade do objetivo 2:

Sabendo que um grafo é representado por G = (V, E) e sendo V o número de vértices e E o número de arestas, construa um grafo
que tenha V = {1, 2, 3, 4, 5, 6, 7, 8, 9} e as ligações das arestas E = { (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 6), (2, 7), (3, 1), (4, 1), (4, 8), (5,
1), (5, 9), (6, 2), (7, 2), (8, 4), (9, 5)}.

Observação: A raiz do grafo é 1.


Atividade do objetivo 3:

Seja um grafo G, cujos vértices são os inteiros de 1 a 8 e os vértices adjacentes a cada vértices são dados pela tabela abaixo,
desenhe o grafo G.

Vértices Vértices Adjacentes

1 2, 3

2 1

3 2, 3, 4

4 3

Atividade do objetivo 4:

Dado o grafo abaixo, faça a matriz de adjacência.


Atividade do objetivo 5:

Dado o grafo abaixo, faça a lista de adjacência.

Notas

Título modal 1

Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ ca e de impressos. Lorem Ipsum é simplesmente
uma simulação de texto da indústria tipográ ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da
indústria tipográ ca e de impressos.

Título modal 1

Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ ca e de impressos. Lorem Ipsum é simplesmente
uma simulação de texto da indústria tipográ ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da
indústria tipográ ca e de impressos.

Referências

HOPCROFT, Ullman and Motwani. Introdução à teoria dos autômatos, linguagens e computação. Tradução da 2.ed. original de
Vandenberg D. de Souza. Rio de Janeiro: Elsevier, 2002 (tradução de: Introduction to automata theory, languages, and
computation – ISBN 85-352-1072-5).

SIPSER, Michael. Introdução à teoria da computação. Tradução técnica de Rui José Guerra Barretto de Queiroz. Revisão
técnica de Newton José Vieira. São Paulo: Thomson Learning, 2007 (título original: Introduction to the theory of computation.
“Tradução da segunda edição norte-america” – ISBN 978-85-221-0499-4).
Próxima aula

Árvores e sistema de estados nitos;

Árvores;

Propriedades de árvores;

Sistema de estados nitos.

Explore mais

Leia os seguintes livros:

Linguagens Formais e Autômatos, de Paulo Blauth Menezes (Editora Sagra Luzzatto).

Automata Theory with Modern Applications, de James A. Anderson (Cambridge University Press).

Potrebbero piacerti anche