SlideShare ist ein Scribd-Unternehmen logo
1 von 6
Downloaden Sie, um offline zu lesen
Teoria dos Grafos - Exerc´ıcios do Cap´ıtulo 3
Algoritmo de Dijkstra e Bellmann-Ford
Michel Alves dos Santos ∗
Abril de 2011
∗Bacharelando em Ciˆencia da Computa¸c˜ao, Universidade Federal do Estado de Alagoas(UFAL). E-mails: mi-
chel.mas@gmail.com, michelalavessantos@hotmail.com. Disciplina: Teoria dos Grafos. Docente Respons´avel: Leo-
nardo Viana Pereira.
1
Conte´udo
Lista de Figuras 2
Lista de Tabelas 2
1 Algoritmo de Dijkstra. 3
2 Algoritmo de Bellmann-Ford. 4
3 Algoritmos de Dijkstra e Bellmann-Ford. 4
4 Sa´ıda Produzida Pela Aplica¸c˜ao. 4
Lista de Figuras
1 Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de
Dijkstra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Arborescˆencia de distˆancias obtida atrav´es da aplica¸c˜ao do Algoritmo de Dijkstra.
Esta arborescˆencia pode ser constru´ıda com base nos valores armazenados na tabela
de distˆancias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de
Bellmann-Ford. Ao final do processo obtivemos a mesma arborescˆencia de distˆancias. 4
Lista de Tabelas
1 Constru¸c˜ao da tabela de distˆancias entre v´ertices. . . . . . . . . . . . . . . . . . . . 3
2 Depois da avalia¸c˜ao de todos os v´ertices finalizamos a constru¸c˜ao da tabela com
todas as distˆancias a partir da origem. Com base nesta tabela tamb´em podemos
construir a arborescˆencia de distˆancias. . . . . . . . . . . . . . . . . . . . . . . . . . 4
2
1 Algoritmo de Dijkstra.
Para verifica¸c˜ao dos resultados utilizando o algoritmo de Dijkstra, usamos primeiramente o
grafo observado abaixo. Informalmente, sem nenhuma criteriosidade ou formalidade matem´atica
Figura 1: Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de Dijkstra.
podemos descrever o Algoritmo de Dijkstra da seguinte maneira: procuramos o v´ertice mais pr´o-
ximo de A, depois, sucessivamente, procuramos entre os v´ertices n˜ao visitados aquele que tem a
menor distˆancia desde A, diretamente ou passando por algum v´ertice j´a visitado, anotando sem-
pre o percurso escolhido. Estamos considerando que nunca teremos distˆancias negativas, pois isso
atrapalharia o algoritmo, j´a que o mesmo n˜ao sabe lidar com distˆancias negativas(ele pode entrar
em looping). Come¸camos por construir uma tabela de distˆancias entre os v´ertices. Para os v´ertices
n˜ao ligados consideraremos a distˆancia como infinita. Para efeitos de implementa¸c˜ao a distˆancia
A B C D
A 0 12 2 ∞
B ∞ 0 ∞ ∞
C ∞ 5 0 2
D ∞ 1 ∞ 0
Tabela 1: Constru¸c˜ao da tabela de distˆancias entre v´ertices.
infinita foi representada pelo m´aximo n´umerico que poderia ser indexado pelo computador hospe-
deiro da aplica¸c˜ao/programa. Em C++ (linguagem utilizada para implementar o algoritmo) esse
m´aximo n´umerico ´e obtido atrav´es da biblioteca limits com o uso da classe numeric limits. Um
exemplo de uso dessas instru¸c˜oes ´e dado logo abaixo:
// Abaixo um exemplo de obten¸c~ao de limite n´umerico. Oten¸c~ao do maior inteiro
// com sinal que pode ser indexado, bem como o maior ponto flutuante de precis~ao
// dupla que pode ser representado na m´aquina hospedeira da aplica¸c~ao.
int maximo_int = numeric_limits<int>::max(); /*M´aximo inteiro*/
double maximo_dbl = numeric_limits<double>::max(); /*M´aximo ponto flutuante*/
Figura 2: Arborescˆencia de distˆancias obtida atrav´es da aplica¸c˜ao do Algoritmo de Dijkstra. Esta
arborescˆencia pode ser constru´ıda com base nos valores armazenados na tabela de distˆancias.
3
A B C D
Distˆancia 0 5 2 4
Anterior - D A C
Tabela 2: Depois da avalia¸c˜ao de todos os v´ertices finalizamos a constru¸c˜ao da tabela com todas as
distˆancias a partir da origem. Com base nesta tabela tamb´em podemos construir a arborescˆencia
de distˆancias.
2 Algoritmo de Bellmann-Ford.
Para verifica¸c˜ao dos resultados utilizando o algoritmo de Bellmann-Ford, usamos o mesmo
grafo com o qual averiguamos a capacidade do algoritmo de Dijkstra.
Figura 3: Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de
Bellmann-Ford. Ao final do processo obtivemos a mesma arborescˆencia de distˆancias.
Abaixo verificamos os passos utilizados para c´alculo das rotas a partir das informa¸c˜oes de
distˆancias entre os v´ertices.
(A, B) : dAB(∞) > dAA(0) + vAB(12) → dAB = 12 anterior(B) = A
(A, C) : dAC(∞) > dAA(0) + vAC(2) → dAC = 2 anterior(C) = A
(C, B) : dAB(12) > dAC(2) + vCB(5) → dAB = 7 anterior(B) = C
(C, D) : dAD(∞) > dAC(2) + vCD(2) → dAD = 4 anterior(D) = C
(D, B) : dAB(7) > dAD(4) + vDB(1) → dAB = 5 anterior(B) = D
Em uma segunda itera¸c˜ao n˜ao haver´a mudan¸cas nos valores das distˆancias c´alculadas atrav´es do
Algoritmo de Bellmann-Ford.
3 Algoritmos de Dijkstra e Bellmann-Ford.
Os algoritmos de Dijkstra e Bellmann-Ford foram implementados atrav´es da linguagem C++.
Os fontes com as respectivas classes e objetos de teste podem ser encontrados em anexo. As
funcionalidades das partes integrantes dos fontes podem ser facilmente entendidas, j´a que todas as
instru¸c˜oes foram exaustivamente documentadas. Para uma melhor compreens˜ao dos mecanismos
utilizados recomendamos a leitura dos livros Algorithms de Robert Sedgewick, The Algorithm
Design Manual de Steven S. Skiena, C++: The Complete Reference de Herbert Schildt, C++
by Dissection de Ira Pohl, The C++ Programming Language de Bjarne Stroustrup e finalmente
Effective C++ de Scott Meyers.
4 Sa´ıda Produzida Pela Aplica¸c˜ao.
A seguir ser´a exibida a sa´ıda produzida pela aplica¸c˜ao com base no exemplo dado anteriormente
(ver figura 1). Verifique a evolu¸c˜ao da tabela de distˆancias para a sa´ıda do algoritmo de Dijkstra
e o n´umero de itera¸c˜oes necess´arias, para que nesse exemplo, possamos chegar a um estado final.
4
Matriz de Adjac^encias:
[e11,0] [e12,1] [e13,1] [e14,0]
[e21,1] [e22,0] [e23,1] [e24,1]
[e31,1] [e32,1] [e33,0] [e34,1]
[e41,0] [e42,1] [e43,1] [e44,0]
Lista de V´ertices:
[A,0] [B,0] [C,0] [D,0]
Graus dos V´ertices:
[A,0] : 2
[B,0] : 3
[C,0] : 3
[D,0] : 2
Matriz de Dist^ancias:
0 12 2 2147483647
2147483647 0 2147483647 2147483647
2147483647 5 0 2
2147483647 1 2147483647 0
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][1.79769e+308] [1.79769e+308] [1.79769e+308] [1.79769e+308]
[Anterior] [ ] [ ] [ ] [ ]
Executando o Algoritmo de Dijkstra:
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [12] [2] [1.79769e+308]
[Anterior] [ ] [A] [A] [ ]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [7] [2] [1.79769e+308]
[Anterior] [ ] [C] [A] [ ]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [7] [2] [1.79769e+308]
[Anterior] [ ] [C] [A] [ ]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [7] [2] [4]
[Anterior] [ ] [C] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [7] [2] [4]
[Anterior] [ ] [C] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
5
[Dist^ancias][0] [5] [2] [4]
[Anterior] [ ] [D] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [5] [2] [4]
[Anterior] [ ] [D] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [5] [2] [4]
[Anterior] [ ] [D] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [5] [2] [4]
[Anterior] [ ] [D] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [5] [2] [4]
[Anterior] [ ] [D] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [5] [2] [4]
[Anterior] [ ] [D] [A] [C]
Tabela de Dist^ancias:
[A] [B] [C] [D]
[Dist^ancias][0] [5] [2] [4]
[Anterior] [ ] [D] [A] [C]
6

Weitere ähnliche Inhalte

Was ist angesagt?

8mat ft4 mar2013_sol
8mat ft4 mar2013_sol8mat ft4 mar2013_sol
8mat ft4 mar2013_sol
silvia_lfr
 
L mat07(estudo.com)
L mat07(estudo.com)L mat07(estudo.com)
L mat07(estudo.com)
Arthur Prata
 
Proposta de teste intermédio 9ano
Proposta de teste intermédio 9anoProposta de teste intermédio 9ano
Proposta de teste intermédio 9ano
Martinha Alexandre
 
L mat06(estudo.com)
L mat06(estudo.com)L mat06(estudo.com)
L mat06(estudo.com)
Arthur Prata
 
Proposta correção teste_intermédio_matemática_2013-
Proposta correção teste_intermédio_matemática_2013-Proposta correção teste_intermédio_matemática_2013-
Proposta correção teste_intermédio_matemática_2013-
Luísa Silva
 
Matematica 4 exercicios gabarito 13
Matematica 4 exercicios gabarito 13Matematica 4 exercicios gabarito 13
Matematica 4 exercicios gabarito 13
comentada
 
L mat03(estudo.com)
L mat03(estudo.com)L mat03(estudo.com)
L mat03(estudo.com)
Arthur Prata
 
Integral Substituicao Trigonometrica
Integral Substituicao TrigonometricaIntegral Substituicao Trigonometrica
Integral Substituicao Trigonometrica
btizatto1
 
Volumes de sólidos integral
Volumes de sólidos integralVolumes de sólidos integral
Volumes de sólidos integral
HugoTavares82
 
Matematica 3 exercicios gabarito 07
Matematica 3 exercicios gabarito 07Matematica 3 exercicios gabarito 07
Matematica 3 exercicios gabarito 07
comentada
 
Matematica 3 exercicios gabarito 15
Matematica 3 exercicios gabarito 15Matematica 3 exercicios gabarito 15
Matematica 3 exercicios gabarito 15
comentada
 

Was ist angesagt? (20)

Ficha t comum-9_ano
Ficha   t comum-9_anoFicha   t comum-9_ano
Ficha t comum-9_ano
 
8mat ft4 mar2013_sol
8mat ft4 mar2013_sol8mat ft4 mar2013_sol
8mat ft4 mar2013_sol
 
Apostila matematica
Apostila matematicaApostila matematica
Apostila matematica
 
L mat07(estudo.com)
L mat07(estudo.com)L mat07(estudo.com)
L mat07(estudo.com)
 
Proposta de teste intermédio 9ano
Proposta de teste intermédio 9anoProposta de teste intermédio 9ano
Proposta de teste intermédio 9ano
 
L mat06(estudo.com)
L mat06(estudo.com)L mat06(estudo.com)
L mat06(estudo.com)
 
Proposta correção teste_intermédio_matemática_2013-
Proposta correção teste_intermédio_matemática_2013-Proposta correção teste_intermédio_matemática_2013-
Proposta correção teste_intermédio_matemática_2013-
 
Matemática – função segundo grau 03 – 2013
Matemática – função segundo grau 03 – 2013Matemática – função segundo grau 03 – 2013
Matemática – função segundo grau 03 – 2013
 
Matematica 4 exercicios gabarito 13
Matematica 4 exercicios gabarito 13Matematica 4 exercicios gabarito 13
Matematica 4 exercicios gabarito 13
 
L mat03(estudo.com)
L mat03(estudo.com)L mat03(estudo.com)
L mat03(estudo.com)
 
Livro de fichas_6ºAno
Livro de fichas_6ºAnoLivro de fichas_6ºAno
Livro de fichas_6ºAno
 
Integral Substituicao Trigonometrica
Integral Substituicao TrigonometricaIntegral Substituicao Trigonometrica
Integral Substituicao Trigonometrica
 
Prova do ita
Prova do itaProva do ita
Prova do ita
 
1 gabarito 7ªa e 8
1 gabarito 7ªa e 81 gabarito 7ªa e 8
1 gabarito 7ªa e 8
 
Funçao quadratica-revisao 10º Ano
Funçao quadratica-revisao 10º AnoFunçao quadratica-revisao 10º Ano
Funçao quadratica-revisao 10º Ano
 
Recuperação paralela
Recuperação paralelaRecuperação paralela
Recuperação paralela
 
Volumes de sólidos integral
Volumes de sólidos integralVolumes de sólidos integral
Volumes de sólidos integral
 
Função polinomial do 1º grau.
Função polinomial do 1º grau.Função polinomial do 1º grau.
Função polinomial do 1º grau.
 
Matematica 3 exercicios gabarito 07
Matematica 3 exercicios gabarito 07Matematica 3 exercicios gabarito 07
Matematica 3 exercicios gabarito 07
 
Matematica 3 exercicios gabarito 15
Matematica 3 exercicios gabarito 15Matematica 3 exercicios gabarito 15
Matematica 3 exercicios gabarito 15
 

Ähnlich wie Graph Theory - Exercises - Chapter 3 - Algorithms of Dijkstra and Bellman-Ford

TUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLESTUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLES
Rodrigo Salles
 
Capitulo 1scilab
Capitulo 1scilabCapitulo 1scilab
Capitulo 1scilab
wjunior
 

Ähnlich wie Graph Theory - Exercises - Chapter 3 - Algorithms of Dijkstra and Bellman-Ford (20)

Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizes
 
Scilab estatistica
Scilab estatisticaScilab estatistica
Scilab estatistica
 
Calculo numérico
Calculo numéricoCalculo numérico
Calculo numérico
 
Aula 7 a1 cap9 expansaotaylor
Aula 7 a1 cap9 expansaotaylorAula 7 a1 cap9 expansaotaylor
Aula 7 a1 cap9 expansaotaylor
 
TUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLESTUTORIAL_HYDROLOGY_RODRIGO_SALLES
TUTORIAL_HYDROLOGY_RODRIGO_SALLES
 
Aula 4 Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
Aula 4   Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17Aula 4   Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
Aula 4 Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17
 
Cap9 - exemplos resolvidos em matlab
Cap9 - exemplos resolvidos em matlabCap9 - exemplos resolvidos em matlab
Cap9 - exemplos resolvidos em matlab
 
Calculo numerico
Calculo numerico Calculo numerico
Calculo numerico
 
Curso de Matlab avancado 1
Curso de Matlab avancado 1Curso de Matlab avancado 1
Curso de Matlab avancado 1
 
Notas de aula 1 cinematica mecanismos
Notas de aula 1 cinematica mecanismosNotas de aula 1 cinematica mecanismos
Notas de aula 1 cinematica mecanismos
 
Tutorial Octave Matlab
Tutorial Octave MatlabTutorial Octave Matlab
Tutorial Octave Matlab
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)
 
Capitulo 1scilab
Capitulo 1scilabCapitulo 1scilab
Capitulo 1scilab
 
Guia Matlab
Guia MatlabGuia Matlab
Guia Matlab
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao Octave
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)
 
Utilizando o Winplot como recurso ao ensino da matemática
Utilizando o Winplot como recurso ao ensino da matemáticaUtilizando o Winplot como recurso ao ensino da matemática
Utilizando o Winplot como recurso ao ensino da matemática
 
Math
MathMath
Math
 
Introdução ao MATLAB
Introdução ao MATLABIntrodução ao MATLAB
Introdução ao MATLAB
 
Utilizandoo winplot
Utilizandoo winplotUtilizandoo winplot
Utilizandoo winplot
 

Mehr von Michel Alves

Mehr von Michel Alves (20)

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU Use
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color Palettes
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color Measures
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment Indexes
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel Functions
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV Space
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - Results
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin Noise
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM Index
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJ
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in R
 
Sigmoid Curve Erf
Sigmoid Curve ErfSigmoid Curve Erf
Sigmoid Curve Erf
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel Prototype
 
Cosine Curve
Cosine CurveCosine Curve
Cosine Curve
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh Plot
 
Triangle Plot
Triangle PlotTriangle Plot
Triangle Plot
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video Slides
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function Catalog
 

Kürzlich hochgeladen

Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 

Kürzlich hochgeladen (20)

PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 

Graph Theory - Exercises - Chapter 3 - Algorithms of Dijkstra and Bellman-Ford

  • 1. Teoria dos Grafos - Exerc´ıcios do Cap´ıtulo 3 Algoritmo de Dijkstra e Bellmann-Ford Michel Alves dos Santos ∗ Abril de 2011 ∗Bacharelando em Ciˆencia da Computa¸c˜ao, Universidade Federal do Estado de Alagoas(UFAL). E-mails: mi- chel.mas@gmail.com, michelalavessantos@hotmail.com. Disciplina: Teoria dos Grafos. Docente Respons´avel: Leo- nardo Viana Pereira. 1
  • 2. Conte´udo Lista de Figuras 2 Lista de Tabelas 2 1 Algoritmo de Dijkstra. 3 2 Algoritmo de Bellmann-Ford. 4 3 Algoritmos de Dijkstra e Bellmann-Ford. 4 4 Sa´ıda Produzida Pela Aplica¸c˜ao. 4 Lista de Figuras 1 Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de Dijkstra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Arborescˆencia de distˆancias obtida atrav´es da aplica¸c˜ao do Algoritmo de Dijkstra. Esta arborescˆencia pode ser constru´ıda com base nos valores armazenados na tabela de distˆancias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de Bellmann-Ford. Ao final do processo obtivemos a mesma arborescˆencia de distˆancias. 4 Lista de Tabelas 1 Constru¸c˜ao da tabela de distˆancias entre v´ertices. . . . . . . . . . . . . . . . . . . . 3 2 Depois da avalia¸c˜ao de todos os v´ertices finalizamos a constru¸c˜ao da tabela com todas as distˆancias a partir da origem. Com base nesta tabela tamb´em podemos construir a arborescˆencia de distˆancias. . . . . . . . . . . . . . . . . . . . . . . . . . 4 2
  • 3. 1 Algoritmo de Dijkstra. Para verifica¸c˜ao dos resultados utilizando o algoritmo de Dijkstra, usamos primeiramente o grafo observado abaixo. Informalmente, sem nenhuma criteriosidade ou formalidade matem´atica Figura 1: Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de Dijkstra. podemos descrever o Algoritmo de Dijkstra da seguinte maneira: procuramos o v´ertice mais pr´o- ximo de A, depois, sucessivamente, procuramos entre os v´ertices n˜ao visitados aquele que tem a menor distˆancia desde A, diretamente ou passando por algum v´ertice j´a visitado, anotando sem- pre o percurso escolhido. Estamos considerando que nunca teremos distˆancias negativas, pois isso atrapalharia o algoritmo, j´a que o mesmo n˜ao sabe lidar com distˆancias negativas(ele pode entrar em looping). Come¸camos por construir uma tabela de distˆancias entre os v´ertices. Para os v´ertices n˜ao ligados consideraremos a distˆancia como infinita. Para efeitos de implementa¸c˜ao a distˆancia A B C D A 0 12 2 ∞ B ∞ 0 ∞ ∞ C ∞ 5 0 2 D ∞ 1 ∞ 0 Tabela 1: Constru¸c˜ao da tabela de distˆancias entre v´ertices. infinita foi representada pelo m´aximo n´umerico que poderia ser indexado pelo computador hospe- deiro da aplica¸c˜ao/programa. Em C++ (linguagem utilizada para implementar o algoritmo) esse m´aximo n´umerico ´e obtido atrav´es da biblioteca limits com o uso da classe numeric limits. Um exemplo de uso dessas instru¸c˜oes ´e dado logo abaixo: // Abaixo um exemplo de obten¸c~ao de limite n´umerico. Oten¸c~ao do maior inteiro // com sinal que pode ser indexado, bem como o maior ponto flutuante de precis~ao // dupla que pode ser representado na m´aquina hospedeira da aplica¸c~ao. int maximo_int = numeric_limits<int>::max(); /*M´aximo inteiro*/ double maximo_dbl = numeric_limits<double>::max(); /*M´aximo ponto flutuante*/ Figura 2: Arborescˆencia de distˆancias obtida atrav´es da aplica¸c˜ao do Algoritmo de Dijkstra. Esta arborescˆencia pode ser constru´ıda com base nos valores armazenados na tabela de distˆancias. 3
  • 4. A B C D Distˆancia 0 5 2 4 Anterior - D A C Tabela 2: Depois da avalia¸c˜ao de todos os v´ertices finalizamos a constru¸c˜ao da tabela com todas as distˆancias a partir da origem. Com base nesta tabela tamb´em podemos construir a arborescˆencia de distˆancias. 2 Algoritmo de Bellmann-Ford. Para verifica¸c˜ao dos resultados utilizando o algoritmo de Bellmann-Ford, usamos o mesmo grafo com o qual averiguamos a capacidade do algoritmo de Dijkstra. Figura 3: Grafo utilizado para averiguar a efetividade da implementa¸c˜ao do Algoritmo de Bellmann-Ford. Ao final do processo obtivemos a mesma arborescˆencia de distˆancias. Abaixo verificamos os passos utilizados para c´alculo das rotas a partir das informa¸c˜oes de distˆancias entre os v´ertices. (A, B) : dAB(∞) > dAA(0) + vAB(12) → dAB = 12 anterior(B) = A (A, C) : dAC(∞) > dAA(0) + vAC(2) → dAC = 2 anterior(C) = A (C, B) : dAB(12) > dAC(2) + vCB(5) → dAB = 7 anterior(B) = C (C, D) : dAD(∞) > dAC(2) + vCD(2) → dAD = 4 anterior(D) = C (D, B) : dAB(7) > dAD(4) + vDB(1) → dAB = 5 anterior(B) = D Em uma segunda itera¸c˜ao n˜ao haver´a mudan¸cas nos valores das distˆancias c´alculadas atrav´es do Algoritmo de Bellmann-Ford. 3 Algoritmos de Dijkstra e Bellmann-Ford. Os algoritmos de Dijkstra e Bellmann-Ford foram implementados atrav´es da linguagem C++. Os fontes com as respectivas classes e objetos de teste podem ser encontrados em anexo. As funcionalidades das partes integrantes dos fontes podem ser facilmente entendidas, j´a que todas as instru¸c˜oes foram exaustivamente documentadas. Para uma melhor compreens˜ao dos mecanismos utilizados recomendamos a leitura dos livros Algorithms de Robert Sedgewick, The Algorithm Design Manual de Steven S. Skiena, C++: The Complete Reference de Herbert Schildt, C++ by Dissection de Ira Pohl, The C++ Programming Language de Bjarne Stroustrup e finalmente Effective C++ de Scott Meyers. 4 Sa´ıda Produzida Pela Aplica¸c˜ao. A seguir ser´a exibida a sa´ıda produzida pela aplica¸c˜ao com base no exemplo dado anteriormente (ver figura 1). Verifique a evolu¸c˜ao da tabela de distˆancias para a sa´ıda do algoritmo de Dijkstra e o n´umero de itera¸c˜oes necess´arias, para que nesse exemplo, possamos chegar a um estado final. 4
  • 5. Matriz de Adjac^encias: [e11,0] [e12,1] [e13,1] [e14,0] [e21,1] [e22,0] [e23,1] [e24,1] [e31,1] [e32,1] [e33,0] [e34,1] [e41,0] [e42,1] [e43,1] [e44,0] Lista de V´ertices: [A,0] [B,0] [C,0] [D,0] Graus dos V´ertices: [A,0] : 2 [B,0] : 3 [C,0] : 3 [D,0] : 2 Matriz de Dist^ancias: 0 12 2 2147483647 2147483647 0 2147483647 2147483647 2147483647 5 0 2 2147483647 1 2147483647 0 Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][1.79769e+308] [1.79769e+308] [1.79769e+308] [1.79769e+308] [Anterior] [ ] [ ] [ ] [ ] Executando o Algoritmo de Dijkstra: Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [12] [2] [1.79769e+308] [Anterior] [ ] [A] [A] [ ] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [7] [2] [1.79769e+308] [Anterior] [ ] [C] [A] [ ] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [7] [2] [1.79769e+308] [Anterior] [ ] [C] [A] [ ] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [7] [2] [4] [Anterior] [ ] [C] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [7] [2] [4] [Anterior] [ ] [C] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] 5
  • 6. [Dist^ancias][0] [5] [2] [4] [Anterior] [ ] [D] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [5] [2] [4] [Anterior] [ ] [D] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [5] [2] [4] [Anterior] [ ] [D] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [5] [2] [4] [Anterior] [ ] [D] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [5] [2] [4] [Anterior] [ ] [D] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [5] [2] [4] [Anterior] [ ] [D] [A] [C] Tabela de Dist^ancias: [A] [B] [C] [D] [Dist^ancias][0] [5] [2] [4] [Anterior] [ ] [D] [A] [C] 6