Sem resumo de edição |
imported>Kaktus Kid (Ajustes) |
||
(14 revisões intermediárias por 11 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
Uma '''matriz de adjacência''' é uma das formas de se representar um [[grafo]]. | Uma '''matriz de adjacência''' é uma das formas de se representar um [[Teoria dos grafos|grafo]]. | ||
Dado um grafo ''G'' com ''n'' [[vértice]]s, podemos representá-lo em uma [[Matriz (matemática)|matriz]] ''n'' x ''n'' ''A(G)=[a<sub>ij</sub> | Dado um grafo ''G'' com ''n'' [[vértice]]s, podemos representá-lo em uma [[Matriz (matemática)|matriz]] ''n'' x ''n'' ''A(G)=''[''a<sub>ij</sub>''] (ou simplesmente ''A''). | ||
A definição precisa das entradas da matriz varia de acordo com as propriedades do grafo que se | A definição precisa das entradas da matriz varia de acordo com as propriedades do grafo que se | ||
deseja representar, porém de forma geral o valor a<sub>ij</sub> guarda informações sobre como os | deseja representar, porém de forma geral o valor ''a<sub>ij</sub>'' guarda informações sobre como os | ||
vértices v<sub>i</sub> e v<sub>j</sub> estão relacionados (isto é, informações sobre a | vértices ''v<sub>i</sub>'' e ''v<sub>j</sub>'' estão relacionados (isto é, informações sobre a | ||
adjacência de ''v<sub>i</sub>'' e ''v<sub>j</sub>''). | |||
Para representar um grafo não direcionado, simples e sem pesos nas arestas, basta que as entradas | Para representar um grafo não direcionado, simples e sem pesos nas arestas, basta que as entradas | ||
''a<sub>ij</sub>'' da matriz ''A'' contenham 1 se ''v<sub>i</sub>'' e ''v<sub>j</sub>'' são adjacentes e 0 caso | |||
contrário. Se as arestas do grafo tiverem pesos, a<sub>ij</sub> pode conter, ao invés de 1 quando | contrário. Se as arestas do grafo tiverem pesos, ''a<sub>ij</sub>'' pode conter, ao invés de 1 quando | ||
houver uma aresta entre v<sub>i</sub> e v<sub>j</sub>, o peso dessa mesma aresta. | houver uma aresta entre ''v<sub>i</sub>'' e ''v<sub>j</sub>'', o peso dessa mesma aresta. | ||
[[Ficheiro:6n-graph2.svg|200px|right]] | [[Ficheiro:6n-graph2.svg|200px|right]] | ||
Por exemplo, a matriz de adjacência do grafo ao lado é | Por exemplo, a matriz de adjacência do grafo ao lado é | ||
<math>A=\begin{bmatrix} | <math>A=\begin{bmatrix} | ||
Linha 29: | Linha 29: | ||
da matriz é 1 se há um arco de ''v<sub>i</sub>'' para ''v<sub>j</sub>'' e 0 caso contrário. | da matriz é 1 se há um arco de ''v<sub>i</sub>'' para ''v<sub>j</sub>'' e 0 caso contrário. | ||
Um resultado interessante ocorre quando consideramos a '''potência''' ''k'' da matriz de adjacência, ou seja, o produto | Um resultado interessante ocorre quando consideramos a '''potência''' ''k'' da matriz de adjacência, ou seja, o produto | ||
:<math> {{A^k = } \atop {\ }} {{\underbrace{A \times \cdots \times A}} \atop k}.</math> | :<math> {{A^k = } \atop {\ }} {{\underbrace{A \times \cdots \times A}} \atop k}.</math> | ||
Antes de apresentar o resultado, vamos definir um '''percurso''' em um grafo ''G''. Um percurso corresponde a uma sequência, finita e não vazia, de vértices do grafo, na qual (''v<sub>0</sub>, v<sub>1</sub>, ..., v<sub>i</sub>, ..., v<sub>k-1</sub>, v<sub>k</sub>'') é tal que, para todo 0 ''≤ i ≤ k-1'', ''v<sub>i</sub>'' e ''v<sub>i+1</sub>'' são vértices adjacentes. Os vértices ''v<sub>0</sub>'' e ''v<sub>k</sub>'' são chamados, respectivamente, de origem e fim do percurso, enquanto ''v<sub>1</sub>, v<sub>2</sub>, ..., v<sub>k-1</sub>'' são os vértices internos ao caminho. O inteiro ''k'' é o comprimento do percurso. Um '''caminho''' em um digrafo é um percurso no qual todos os arcos estão orientados no sentido origem do percurso-fim do percurso. | |||
Pode-se mostrar esse resultado por [[Indução | Se ''A'' é a matriz de adjacência de um grafo ''G'' com conjunto de vértices dado por ''V(G) = ''{''v<sub>1</sub>, v<sub>2</sub>, ..., v<sub>n</sub>''}, então a entrada (''i,j'') de ''A''<sup>''k''</sup>, com ''k'' ≥ 1, corresponde ao número de percursos (distintos) de comprimento ''k'' existentes entre os vértices ''v<sub>i</sub>'' e ''v<sub>j</sub>''. | ||
Pode-se mostrar esse resultado por [[Indução matemática|indução]]. Quando ''k'' = 1, o resultado segue de modo natural da definição de matriz de adjacência, uma vez que existe um percurso de comprimento 1 entre o vértice ''v<sub>i</sub>'' e o vértice ''v<sub>j</sub>'' se e só se {''v<sub>i</sub>, v<sub>j</sub>''} é uma aresta de ''G''. Seja | |||
:<math>{A^{k-1}= \left[a_{ij}^{(k-1)}\right]},</math> | :<math>{A^{k-1}= \left[a_{ij}^{(k-1)}\right]},</math> | ||
e assuma que ''a<sub>ij</sub> <sup>(k-1)</sup>'' é o número de | e assuma que ''a<sub>ij</sub> <sup>(k-1)</sup>'' é o número de percursos distintos de comprimento ''k -'' 1 entre os vértices ''v<sub>i</sub>'' e ''v<sub>j</sub>'' em ''G''. Considerando | ||
:<math>{A^k= \left[a_{ij}^{(k)}\right]},</math> | :<math>{A^k= \left[a_{ij}^{(k)}\right]},</math> | ||
e como ''A''<sup>''k''</sup> = ''A''<sup>''k-1''</sup> . ''A'', temos que | e como ''A''<sup>''k''</sup> = ''A''<sup>''k-1''</sup> . ''A'', temos que | ||
:<math>{{a_{ij}^{(k)} =} {\sum_{p=1}^{n} a_{ip}^{(k-1)} a_{pj}}}.</math> | :<math>{{a_{ij}^{(k)} =} {\sum_{p=1}^{n} a_{ip}^{(k-1)} a_{pj}}}.</math> | ||
Observe que, na expressão acima, o elemento ''a<sub>ij</sub> <sup>(k)</sup>'' é obtido multiplicando-se os elementos da linha ''i'' de ''A''<sup>''k-1''</sup> pelos respectivos elementos da coluna ''j'' de ''A'' e, em seguida, efetuando-se a soma dos produtos obtidos. | |||
Todo percurso entre ''v<sub>i</sub>'' e ''v<sub>j</sub>'' de comprimento ''k'' em ''G'' consiste de um percurso entre ''v<sub>i</sub>'' e ''v<sub>p</sub>'' de comprimento ''k -'' 1, onde ''v<sub>p</sub>'' é adjacente a ''v<sub>j</sub>'', seguido da aresta {''v<sub>p</sub>, v<sub>j</sub>''} e do vértice ''v<sub>j</sub>''. O resultado decorre da hipótese de indução e da última equação. | |||
O resultado permanece válido para digrafos, fazendo-se as devidas adequações: trocando arestas por arcos e percursos por caminhos. | |||
Para ilustrar o resultado acima, observe as potências 2 e 3 da matriz de adjacência ''A'' correspondente ao grafo da figura: | |||
<math>A^2=\begin{bmatrix} | <math>A^2=\begin{bmatrix} | ||
3 & 2 & 1 & 1 & 2 & 0\\ | 3 & 2 & 1 & 1 & 2 & 0\\ | ||
Linha 59: | Linha 64: | ||
2 & 1 & 2 & 0 & 3 & 1\\ | 2 & 1 & 2 & 0 & 3 & 1\\ | ||
0 & 0 & 1 & 0 & 1 & 1\\ | 0 & 0 & 1 & 0 & 1 & 1\\ | ||
\end{bmatrix} | \end{bmatrix}, | ||
A^3=\begin{bmatrix} | |||
7 & 6 & 3 & 3 & 6 & 1\\ | 7 & 6 & 3 & 3 & 6 & 1\\ | ||
6 & 3 & 5 & 1 & 7 & 2\\ | 6 & 3 & 5 & 1 & 7 & 2\\ | ||
Linha 68: | Linha 72: | ||
6 & 7 & 1 & 6 & 3 & 0\\ | 6 & 7 & 1 & 6 & 3 & 0\\ | ||
1 & 2 & 0 & 3 & 0 & 0\\ | 1 & 2 & 0 & 3 & 0 & 0\\ | ||
\end{bmatrix}</math>, | \end{bmatrix}</math>. | ||
O elemento (4,6) de ''A<sup>2</sup>'' indica que não há nenhum caminho de comprimento 2 ligando os vértices 4 e 6 do grafo acima. Por outro lado, o elemento (4,6) de ''A<sup>3</sup>'' indica que existem 3 caminhos de comprimento 3 ligando os vértices 4 e 6. São eles: (4,3,4,6), (4,5,4,6) e (4,6,4,6). | |||
==Bibliografia== | |||
*CHARTRAND, G., LESNIAK, L. ''Graphs & Digraphs''. Editora CRC Press, 2004. | |||
==Ver também== | ==Ver também== | ||
*[[Teoria dos grafos]] | *[[Teoria dos grafos]] | ||
*[[Matriz de incidência]] | *[[Matriz de incidência]] | ||
*[[Lista de adjacência]] | *[[Lista de adjacência]] | ||
{{Classes de matriz}} | |||
{{Esboço-matemática}} | |||
{{DEFAULTSORT:Matriz Adjacencia}} | |||
[[Categoria:Teoria dos grafos]] | [[Categoria:Teoria dos grafos]] | ||
[[Categoria:Matrizes]] | [[Categoria:Matrizes]] | ||
[[Categoria:Estruturas de dados]] | [[Categoria:Estruturas de dados]] | ||
Edição atual tal como às 15h57min de 6 de janeiro de 2017
Uma matriz de adjacência é uma das formas de se representar um grafo.
Dado um grafo G com n vértices, podemos representá-lo em uma matriz n x n A(G)=[aij] (ou simplesmente A). A definição precisa das entradas da matriz varia de acordo com as propriedades do grafo que se deseja representar, porém de forma geral o valor aij guarda informações sobre como os vértices vi e vj estão relacionados (isto é, informações sobre a adjacência de vi e vj).
Para representar um grafo não direcionado, simples e sem pesos nas arestas, basta que as entradas aij da matriz A contenham 1 se vi e vj são adjacentes e 0 caso contrário. Se as arestas do grafo tiverem pesos, aij pode conter, ao invés de 1 quando houver uma aresta entre vi e vj, o peso dessa mesma aresta.
Por exemplo, a matriz de adjacência do grafo ao lado é
Em grafos não direcionados, as matrizes de adjacência são simétricas ao longo da diagonal principal - isto é, a entrada aij é igual à entrada aji. Matrizes de adjacência de grafos direcionados, no entanto, não são assim. Num digrafo sem pesos, a entrada aij da matriz é 1 se há um arco de vi para vj e 0 caso contrário.
Um resultado interessante ocorre quando consideramos a potência k da matriz de adjacência, ou seja, o produto
Antes de apresentar o resultado, vamos definir um percurso em um grafo G. Um percurso corresponde a uma sequência, finita e não vazia, de vértices do grafo, na qual (v0, v1, ..., vi, ..., vk-1, vk) é tal que, para todo 0 ≤ i ≤ k-1, vi e vi+1 são vértices adjacentes. Os vértices v0 e vk são chamados, respectivamente, de origem e fim do percurso, enquanto v1, v2, ..., vk-1 são os vértices internos ao caminho. O inteiro k é o comprimento do percurso. Um caminho em um digrafo é um percurso no qual todos os arcos estão orientados no sentido origem do percurso-fim do percurso.
Se A é a matriz de adjacência de um grafo G com conjunto de vértices dado por V(G) = {v1, v2, ..., vn}, então a entrada (i,j) de Ak, com k ≥ 1, corresponde ao número de percursos (distintos) de comprimento k existentes entre os vértices vi e vj.
Pode-se mostrar esse resultado por indução. Quando k = 1, o resultado segue de modo natural da definição de matriz de adjacência, uma vez que existe um percurso de comprimento 1 entre o vértice vi e o vértice vj se e só se {vi, vj} é uma aresta de G. Seja
e assuma que aij (k-1) é o número de percursos distintos de comprimento k - 1 entre os vértices vi e vj em G. Considerando
e como Ak = Ak-1 . A, temos que
Observe que, na expressão acima, o elemento aij (k) é obtido multiplicando-se os elementos da linha i de Ak-1 pelos respectivos elementos da coluna j de A e, em seguida, efetuando-se a soma dos produtos obtidos.
Todo percurso entre vi e vj de comprimento k em G consiste de um percurso entre vi e vp de comprimento k - 1, onde vp é adjacente a vj, seguido da aresta {vp, vj} e do vértice vj. O resultado decorre da hipótese de indução e da última equação.
O resultado permanece válido para digrafos, fazendo-se as devidas adequações: trocando arestas por arcos e percursos por caminhos.
Para ilustrar o resultado acima, observe as potências 2 e 3 da matriz de adjacência A correspondente ao grafo da figura:
.
O elemento (4,6) de A2 indica que não há nenhum caminho de comprimento 2 ligando os vértices 4 e 6 do grafo acima. Por outro lado, o elemento (4,6) de A3 indica que existem 3 caminhos de comprimento 3 ligando os vértices 4 e 6. São eles: (4,3,4,6), (4,5,4,6) e (4,6,4,6).
Bibliografia
- CHARTRAND, G., LESNIAK, L. Graphs & Digraphs. Editora CRC Press, 2004.