Conceito Básicos da Teoria de Grafos

Documentos relacionados
Definições Básicas para Grafos

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

Conceitos Básicos da Teoria de Grafos

Teoria dos grafos. FATEC Carapicuíba Augusto de Toledo Cruz Junior

Estruturas de Dados Grafos

Grafos Orientados (digrafos)

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Percursos em um grafo

Grafos IFRN. Robinson Alves

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

Parte B Teoria dos Grafos

MATEMÁTICA DISCRETA. Patrícia Ribeiro 2018/2019. Departamento de Matemática, ESTSetúbal 1 / 47

Percursos em um grafo

CONCEITOS BÁSICOS EM GRAFOS

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

Definição e Conceitos Básicos

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.

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 8 Grafos. Estrutura de Dados 1

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

Instituto de Computação Universidade Federal Fluminense. Notas de Aula de Teoria dos Grafos. Prof. Fábio Protti Niterói, agosto de 2015.

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 /

GRAFOS E ALGORITMOS TEORIA DE GRAFOS

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

GRAFOS ORIENTADOS. PSfrag replacements. Figura 1: Exemplo de um grafo orientado.

Teoria dos Grafos. Profa. Alessandra Martins Coelho

Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios

PCC173 - Otimização em Redes

Noções da Teoria dos Grafos

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

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

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

Instituto de Computação - Universidade Federal Fluminense Teoria dos Grafos - Lista de exercícios

Grafos Parte 1. Aleardo Manacero Jr.

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

Árvores: Conceitos Básicos e Árvore Geradora

Teoria dos Grafos AULA 3

Teoria do Grafos. Prof. Luiz Fernando L. Nascimento

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 5 a Lista de Exercícios

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

GRAFOS BUSCAS E MENOR CAMINHO. Prof. André Backes

Volmir Eugênio Wilhelm Departamento de Engenharia de Produção UFPR 45

1.3 Isomorfismo 12 CAP. 1 CONCEITOS BÁSICOS

Teoria dos Grafos Aula 2

Teoria dos Grafos Aula 5

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

Introdução à Teoria dos Grafos. Isomorfismo

CI065 CI755 Algoritmos e Teoria dos Grafos

Comunicação e redes. Aula 2: Teoria dos Grafos Conceitos básicos. Professor: Guilherme Oliveira Mota.

INF 1010 Estruturas de Dados Avançadas

Lista de Exercícios 9 (Extra): Soluções Grafos

Grafos: Busca. Algoritmos e Estruturas de Dados 2. Graça Nunes

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

Teoria dos Grafos Caminhos. Profª. Alessandra Martins Coelho

Fábio Protti - UFF Loana T. Nogueira - UFF Sulamita Klein UFRJ

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

x y Grafo Euleriano Figura 1

Matemática Discreta 10

Matemática Discreta. Aula 06: Teoria dos Grafos. Tópico 01: Grafos e suas Representações. Observação

Teoria dos Grafos. Edson Prestes

Introdução a Grafos Letícia Rodrigues Bueno

Teoria dos Grafos Aula 1 - Introdução

Pesquisa Operacional II. Professor João Soares de Mello

GRAFOS: UMA INTRODUÇÃO

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

Redes Complexas. Renato Vicente. Complex Systems EACH USP

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Valeriano A. de Oliveira, Socorro Rangel, Silvio A. de Araujo. Capítulo 5: Grafos Conexos. Departamento de Matemática Aplicada

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

grafo nós vértices arcos arestas

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

Teoria dos Grafos. Edson Prestes

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

AULA 11 PROJETO E ANÁLISE DE ALGORITMOS. Conceitos básicos e representação de grafos Karina Valdivia Delgado

Transcrição:

1 Conceito Básicos da Teoria de Grafos GRAFO Um grafo G(V,A) é definido pelo par de conjuntos V e A, onde: V - conjunto não vazio: os vértices ou nodos do grafo; A - conjunto de pares ordenados a=(v,w), v e w V: as arestas do grafo. Seja, por exemplo, o grafo G(V,A) dado por: V = { p p é uma pessoa } A = { (v,w) < v é amigo de w > } Esta definição representa toda uma família de grafos. Um exemplo de elemento desta família (ver G 1 ) é dado por: G 1 : V = { Maria, Pedro, Joana, Luiz } A = { (Maria, Pedro), (Joana, Maria), (Pedro, Luiz), (Joana, Pedro) } Neste exemplo estamos considerando que a relação <v é amigo de w> é uma relação simétrica, ou seja, se <v é amigo de w> então <w é amigo de v>. Como conseqüência, as arestas que ligam os vértices não possuem qualquer orientação DIGRAFO (Grafo Orientado) Considere, agora, o grafo definido por: V = { p p é uma pessoa da família Castro } A = { (v,w) < v é pai/mãe de w > } Um exemplo de deste grafo (ver G 2 ) é: V = { Emerson, Isadora, Renata, Antonio, Rosane, Cecília, Alfredo } A = {(Isadora, Emerson), (Antonio, Renata), (Alfredo, Emerson), (Cecília, Antonio), (Alfredo, Antonio)} G 2 : A relação definida por A não é simétrica pois se <v é pai/mãe de w>, não é o caso de <w é pai/mãe de v>. Há, portanto, uma orientação na relação, com um correspondente efeito na representação gráfica de G. O grafo acima é dito ser um grafo orientado (ou digrafo), sendo que as conexões entre os vértices são chamadas de arcos.

2 ORDEM A ordem de um grafo G é dada pela cardinalidade do conjunto de vértices, ou seja, pelo número de vértices de G. Nos exemplos ao lado: ordem(g 1 ) = 4 ordem(g 2 ) = 5 ADJACÊNCIA Em um grafo simples (a exemplo de G 1 ) dois vértices v e w são adjacentes (ou vizinhos) se há uma aresta a=(v,w) em G. Está aresta é dita ser incidente a ambos, v e w. É o caso dos vértices Maria e Pedro em G 1. No caso do grafo ser dirigido (a exemplo de G 2 ), a adjacência (vizinhança) é especializada em: Sucessor: um vértice w é sucessor de v se há um arco que parte de v e chega em w. Em G 2, por exemplo, diz-se que Emerson e Antonio são sucessores de Alfredo. Antecessor: um vértice v é antecessor de w se há um arco que parte de v e chega em w. Em G 2, por exemplo, diz-se que Alfredo e Cecília são antecessores de Antonio. GRAU O grau de um vértice é dado pelo número de arestas que lhe são incidentes. Em G 1, por exemplo: grau(pedro) = 3 grau(maria) = 2 No caso do grafo ser dirigido (a exemplo de G 2 ), a noção de grau é especializada em: Grau de emissão: o grau de emissão de um vértice v corresponde ao número de arcos que partem de v. Em G 2, por exemplo: graudeemissão(antonio) = 1 graudeemissao(alfredo) = 2 graudeemissao(renata) = 0 Grau de recepção: o grau de recepção de um vértice v corresponde ao número de arcos que chegam a v. Em G 2, por exemplo: grauderecepção(antonio) = 2 grauderecepção(alfredo) = 0 grauderecepção(renata) = 1 FONTE Um vértice v é uma fonte se grauderecepção(v) = 0. É o caso dos vértices Isadora, Alfredo e Cecília em G 2.

3 SUMIDOURO Um vértice v é um sumidouro se graudeemissão(v) = 0. É o caso dos vértices Renata e Emerson em G 2. LAÇO Um laço é uma aresta ou arco do tipo a=(v,v), ou seja, que relaciona um vértice a ele próprio. Em G 3 há três ocorrências de laços para um grafo não orientado. G 3 : GRAFO REGULAR Um grafo é dito ser regular quando todos os seus vértices tem o mesmo grau. O grafo G 4, por exemplo, é dito ser um grafo regular-3 pois todos os seus vértices tem grau 3. GRAFO COMPLETO Um grafo é dito ser completo quando há uma aresta entre cada par de seus vértices. Estes grafos são designados por K n, onde n é a ordem do grafo. G 4 : Um grafo K n possui o número máximo possível de arestas para um dados n. Ele é, também regular-(n-1) pois todos os seus vértices tem grau n-1. GRAFO BIPARTIDO Um grafo é dito ser bipartido quando seu conjunto de vértices V puder ser particionado em dois subconjuntos V 1 e V 2, tais que toda aresta de G une um vértice de V 1 a outro de V 2. Para exemplificar, sejam os conjuntos H={h h é um homem} e M={m h é um mulher} e o grafo G(V,A) (ver o exemplo G 5 ) onde: V = H U M A = {(v,w) (v H e w M) ou (v M e w H) e <v foi namorado de w>} G 5 : O grafo G 6 é uma K 3,3, ou seja, um grafo bipartido completo que contém duas partições de 3 vértices cada. Ele é completo pois todos os vértices de uma partição estão ligados a todos os vértices da outra partição. G 6 : K 3,3

4 GRAFO ROTULADO Um grafo G(V,A) é dito ser rotulado em vértices (ou arestas) quando a cada vértice (ou aresta) estiver associado um rótulo. G 5 é um exemplo de grafo rotulado. GRAFO VALORADO Um grafo G(V,A) é dito ser valorado quando existe uma ou mais funções relacionando V e/ou A com um conjunto de números. Para exemplificar (ver o grafo G 7 ), seja G(V,A) onde: G 7 : V = {v v é uma cidade com aeroporto} A = {(v,w,t) <há linha aérea ligando v a w, sendo t o tempo esperado de voo>} MULTIGRAFO Um grafo G(V,A) é dito ser um multigrafo quando existem múltiplas arestas entre pares de vértices de G. No grafo G 8, por exemplo, há duas arestas entre os vértices A e C e entre os vértices A e B, caracterizando-o como um multigrafo. SUBGRAFO Um grafo G s (V s, A s ) é dito ser subgrafo de um grafo G(V,A) quando V s V e A s A. O grafo G 9, por exemplo, é subgrafo de G 8. G 8 : G 9 : HIPERGRAFO Um hipergrafo H(V,A) é definido pelo par de conjuntos V e A, onde: V - conjunto não vazio; A - uma família e partes não vazias de V. Seja, por exemplo, o grafo H(V,A) dado por: V = { x 1, x 2, x 3, x 4 } A = { {x 1, x 2, x 4 }, {x 2, x 3, x 4 }, {x 2, x 3 }} G 10 :

5 CADEIA Uma cadeia é uma seqüência qualquer de arestas adjacentes que ligam dois vértices. O conceito de cadeia vale também para grafos orientados, bastando que se ignore o sentido da orientação dos arcos. A seqüência de vértices (x 6, x 5, x 4, x 1 ) é um exemplo de cadeia em G 11. Uma cadeia é dita ser elementar se não passa duas vezes pelo mesmo vértice. É dita ser simples se não passa duas vezes pela mesma aresta (arco). O comprimento de uma cadeia é o número de arestas (arcos) que a compõe. G 11 : CAMINHO Um caminho é uma cadeia na qual todos os arcos possuem a mesma orientação. Aplica-se, portanto, somente a grafos orientados. A seqüência de vértices (x 1, x 2, x 5, x 6, x 3 ) é um exemplo de caminho em G 11. CICLO Um ciclo é uma cadeia simples e fechada (o vértice inicial é o mesmo que o vértice final). A seqüência de vértices (x 1, x 2, x 3, x 6, x 5, x 4, x 1 ) é um exemplo de ciclo elementar em G 11. CIRCUITO Um circuito é um caminho simples e fechado. A seqüência de vértices (x 1, x 2, x 5, x 4, x 1 ) é um exemplo de circuito elementar em G 11. FECHO TRANSITIVO O fecho transitivo direto (ftd) de um vértice v é o conjunto de todos os vértices que podem ser atingidos por algum caminho iniciando em v. O ftd do vértice x 5 do grafo G 17, por exemplo, é o conjunto: {x 1, x 2, x 3, x 4, x 5, x 6 }. Note que o próprio vértice faz parte do ftd já que ele é alcançável partindo-se dele mesmo. O fecho transitivo inverso (fti) de um vértice v é o conjunto de todos os vértices a partir dos quais se pode atingir v por algum caminho. O fti do vértice x 5 do grafo G 17, por exemplo, é o conjunto: {x 1, x 2, x 4, x 5, x 7 }. Note que o próprio vértice faz parte do fti já que dele se pode alncançar ele mesmo. GRAFO CONEXO Um grafo G(V,A) é dito ser conexo se há pelo menos uma cadeia ligando cada par de vértices deste grafo G. G 12 :

6 G 13 : GRAFO DESCONEXO Um grafo G(V,A) é dito ser desconexo se há pelo menos um par de vértices que não está ligado por nenhuma cadeia. G 14 : COMPONENTE CONEXA Um grafo G(V,A) desconexo é formado por pelo menos dois subgrafos conexos, disjuntos em relação aos vértices e maximais em relação à inclusão. Cada um destes subgrafos conexos é disto ser uma componente conexa de G. GRAFO FORTEMENTE CONEXO No caso de grafos orientados, um grafo é dito ser fortemente conexo (f-conexo) se todo par de vértices está ligado por pelo menos um caminho em cada sentido, ou seja, se cada par de vértices participa de um circuito. Isto significa que cada vértice pode ser alcançável partindo-se de qualquer outro vértice do grafo. COMPONENTE FORTEMENTE CONEXA Um grafo G(V,A) que náo é fortemente conexo é formado por pelo menos dois subgrafos fortemente conexos, disjuntos em relação aos vértices e maximais em relação à inclusão. Cada um destes subgrafos é disto ser uma componente fortemente conexa de G, a exemplo dos subgrafos identificados por S 1, S 2 e S 3 em G 17. G 15 : G 16 : G 17 : VÉRTICE DE CORTE Um vértice é dito ser um vértice de corte se sua remoção (juntamente com as arestas a ele conectadas) provoca um redução na conexidade do grafo. Os

7 vértices x 2 em G 13 e G 14 são exemplos de vértices de corte. PONTE Uma aresta é dita ser um a ponte se sua remoção provoca um redução na conexidade do grafo. As arestas (x 1, x 2 ) em G 13 e G 14 são exemplos de pontes. BASE Uma base de um grafo G(V,A) é um subconjunto B V, tal que: dois vértices quaisquer de B não são ligados por nenhum caminho; todo vértice não pertencente a B pode ser atingido por um caminho partindo de B. ANTI-BASE Uma anti-base de um grafo G(V,A) é um subconjunto A V, tal que: G 18 : dois vértices quaisquer de A não são ligados por nenhum caminho; de todo vértice não pertencente a A pode ser atingir A por um caminho. RAIZ Se a base de um grafo G(V,A) é um conjunto unitário, então esta base é a raiz de G. ANTI-RAIZ Se a anti-base de um grafo G(V,A) é um conjunto unitário, então esta anti-base é a antiraiz de G. G 19 : ÁRVORE Uma árvore é um grafo conexo sem ciclos. Seja G(V,A) um grafo com ordem n > 2; as propriedades seguintes são equivalentes para caracterizar G como uma árvore: 1. G é conexo e sem ciclos; 2. G é sem ciclos e tem n-1 arestas; 3. G é conexo e tem n-1 arestas; 4. G é sem ciclos e por adição de uma aresta se cria um ciclo e somente um; 5. G é conexo, mas deixa de sê-lo se uma aresta é suprimida (todas as arestas são pontes); 6. todo par de vértices de G é unido por G 20 :

8 uma e somente uma cadeia simples. ARBORESCÊNCIA Uma arborescência é uma árvore que possui uma raiz. Aplica-se, portanto, somente a grafos orientados. G 21 : FLORESTA Uma floresta é um grafo cujas componentes conexas são árvores. G 22 : GRAFO PLANAR Um grafo G(V,A) é dito ser planar quando existe alguma forma de se dispor seus vértices em um plano de tal modo que nenhum par de arestas se cruze. K 4 : Ao lado aparecem três representações gráficas distintas para uma K 4 (grafo completo de ordem 4). Apesar de haver um cruzamento de arestas na primeira das representações gráficas, a K 4 é um grafo planar pois admite pelo menos uma representação num plano sem que haja cruzamento de arestas (duas possíveis representações aparecem nas figuras ao lado). Já uma K 5 e uma K 3,3 são exemplos de grafos não planares. Estes dois grafos não admitem representações planares. COLORAÇÃO Seja G(V,A) um grafo e C um conjunto de cores. Uma coloração de G é uma atribuição de alguma cor de C para cada vértice de V, de tal modo que a dois vértices adjacentes sejam atribuídas cores diferentes. Assim sendo, uma coloração de G é uma função f: V C tal que para cada par K 3,3 : K 5 :

9 de vértices v,w V tem se (v,w) E f(v) f(w). Uma k-coloração de G é uma coloração que utiliza um total de k cores. O exemplo ao lado mostra um 4- coloração para o grafo. NÚMERO CROMÁTICO Denomina-se número cromático X(G) de um grafo G ao menor número de cores k, para o qual existe uma k- coloração de G. O exemplo ao lado mostra uma 3-coloração para o grafo, que é o número cromático deste grafo. ISOMORFISMO Sejam dois grafos G 1 (V 1,A 1 ) e G 2 (V 2,A 2 ). Um isomorfismo de G 1 sobre G 2 é um mapeamento bijetivo f: V 1 V 2 tal que {x,y} A 1 se e somente se {f(x),f(y)} A 2, para todo x,y V 1. Os grafos ao lado são isomorfos pois há a função { (a 2), (b 1), (c 3), (d 4), (e 6), (f 5) } que satisfaz a condição descrita acima. SCIE (Subconjunto Internamente Estável) (por vezes também conhecido como conjunto independente) Seja G(V,A) um grafo não orientado. Diz-se que S V é um subconjunto internamente estável se dois vértices quaisquer de S nunca são adjacentes entre si. Para o grafo ao lado, são exemplos de SCIE os conjuntos: { 2, 3}, {1, 4} e {2, 3, 4} Agora, se dada um SCIE S não existe um outro SCIE S' tal que S' S, então S é dito ser um SCIE maximal. Para o grafo ao lado, são exemplos de SCIE maximais os conjuntos: { 2, 3, 4}, {1, 6} e {4, 5}

10 SCEE (Subconjunto Externamente Estável) (por vezes também conhecido como conjunto absorvente) Seja G(V,A) um grafo orientado. Diz-se que T V é um subconjunto externamente estável se todo vértice não pertencente a T tiver pelo menos um vértice de T como sucessor. Agora, se dada um SCEE S não existe um outro SCEE S' tal que S' S, então S é dito ser um SCEE minimal. Para o grafo ao lado, são exemplos de SCEE minimais os conjuntos: { x 2, x 4, x 6 } e {x 1, x 5, x 3 } Este conceito também pode ser aplicado a grafos não orientados, bastando que consideremos que todo vértice exterior a T deva ter como adjacente pelo menos um vértice de T. IMPLEMENTAÇÕES Ações da classe Grafo (grafo não orientado) Ações Básicas G.adicionaVértice(v) "Adiciona um novo vértice em G" G.removeVértice(v) "Remove um vértice de G, juntamente com todas as conexões" G.conecta(v 1,v 2 ) "Conecta os vértices v 1 e v 2 em G" G.desconecta(v 1,v 2 ) "Desconecta os vértices v 1 e v 2 em G" G.ordem Inteiro "Retorna o número de vértices de G" G.vértices Conjunto "Retorna um conjunto contendo os vértices de G" G.umVértice Vertice "Retorna um vértice qualquer de G" G.adjacentes(v) Conjunto G.grau(v) Inteiro "Retorna um conjunto contendo os vértices adjacentes a v em G" "Retorna o número de vértices adjacentes a v em G" Ações Derivadas

11 G.éRegular G.éCompleto Boolean Boolean G.fechoTransitivo(v) Conjunto G.éConexo Boolean "Verifica se todos os vértices de G possuem o mesmo grau" "Verifica se cada vértice de G está conectados a todos os outros vértices" "Retorna um conjunto contendo todos os vértices de G que são transitivamente alcancáveis partindo-se de v" "Verifica se existe pelo menos um caminho que entre cada par de vértices de G" G.éÁrvore Boolean "Verifica se não há ciclos em G" Ações da classe Digrafo (grafo orientado) G.adicionaVértice(v) "Adiciona um novo vértice em G" G.removeVértice(v) "Remove um vértice de G, juntamente com todas as conexões" G.conecta(v 1,v 2 ) "Conecta os vértices v 1 e v 2 em G" G.desconecta(v 1,v 2 ) "Desconecta os vértices v 1 e v 2 em G" G.ordem Inteiro "Retorna o número de vértices de G" G.vértices Conjunto "Retorna um conjunto contendoos vértices de G" G.umVértice Vertice "Retorna um vértice qualquer de G" G.sucessores(v) G.antecessores(v) G.grauDeEmissão(v) Inteiro G.grauDeRecepção(v) Inteiro Conjunto Conjunto "Retorna um conjunto contendo os vértices que são sucessores de v em G" "Retorna um conjunto contendo os vértices que são antecessores de v em G" "Retorna o número de vértices sucessores de v em G" "Retorna o número de vértices antecessores de v em G" Busca em grafos: Busca em Grafos

12 explorar um grafo, ou seja, obter um processo sistemático de como caminhar por seus vértices e arestas. Raiz da busca: o vértice inicial da busca. Considere o grafo que se segue: São apresentados a seguir dois algoritmos básicos de busca, em grafos: Busca em Profundidade: Dados: Busca em profundidade Busca em largura um grafo G(V,A) conexo, e a raiz da busca, um vértice qualquer r V(G) buscaemprofundidade(lista.nova, r)

13 1. buscaemprofundidade(q:lista,v) 2. G.marcar(v) 3. Q.adicionaNoInício(v) 4. para w G.adjacentes(v) 5. se G.marcado(w) então 6. se w Q e v, w não são consecutivos em Q então 7. visitar(v,w)... 8. fim se 9. senão 10. visitar(v,w)... 11. buscaemprofundidade(q, w) 12. fim se 13. fim para 14. Q.removePrimeiro 15. fim Busca em Largura: Dados: um grafo G(V,A) conexo, e a raiz da busca, um vértice qualquer r V(G) 1. F Lista.com(r) 2. G.marcar(r) 3. enquanto F 4. v F.primeiro 5. para w G.adjacentes(v) 6. se G.marcado(w) então 7. se w F então 8. visitar(v,w)... 9. fim se 10. senão 11. visitar(v,w)... 12. G.marcar(w) 13. F.adicionaNoFim(w) 14. fim se 15. fim para 16. F.removePrimeiro

17. fim enquanto 14