Você está na página 1de 15

Relatório

Intermédio do
Projeto de LAPR1
Subtítulo adequado do
trabalho(editar)

Gryffindor – Grupo 06
1180604 _ Vasco Reid
1180651 _ Jorge Rodrigues
1161216 _Vasco Rocha
1151399 _ Afonso Pimentel
11811481_Pedro Costa

Docente(s)/Orientador(es)
Carlos, Ferreira (cgf)
Ana, Barata (abt)
Sandra, Luna (slu)

Cliente
Carlos, Ferreira (cgf)

Unidade Curricular
Laboratório/Projeto I

12/2018
1
Índice
Índice de figuras ............................................................................................................................ 3
Introdução .................................................................................................................................... 4
Metodologia de Trabalho .............................................................................................................. 5
EduScrum .................................................................................................................................. 5
Planeamento e distribuição de tarefas ..................................................................................... 5
Análise de Redes Sociais .............................................................................................................. 6
Introdução teórica ................................................................................................................... 7
O que é um nó? ..................................................................................................................... 7
O que é uma rede? ............................................................................................................... 7
O que é um valor próprio e um vetor próprio? ................................................................. 7
Mas para que servem estes valores? .................................................................................. 8
Grau de um nó ...................................................................................................................... 8
Centralidade de Vetor Próprio ............................................................................................ 9
Grau médio ........................................................................................................................... 9
Densidade ............................................................................................................................. 9
Potências da Matriz de Adjacências ................................................................................. 10
Desenvolvimento e implementação da aplicação ...................................................................... 11
Conclusão .................................................................................................................................... 14
Referências .................................................................................................................................. 15

2
Índice de figuras
Figura 1 - Exemplo de grafo (Zafarini, 2014) ................................................................................. 7
Figura 2 - Vetores Próprios (Weisstein, s.d.) ................................................................................. 7
Figura 3 - Matriz de Vetores Próprios (Weisstein, s.d.) ................................................................ 7
Figura 4 – Matriz de Valores próprios (Weisstein, s.d.) ................................................................ 7
Figura 5 - Um grafo e a sua matriz de adjacência correspondente (Zafarini, 2014) ..................... 8
Figura 6 -Exemplo de grafo que representa uma rede social de pessoas (Figura 1 enunciado) .. 8
Figura 7 - Walk, Path, Trail, Tour e Cycle. Nesta figura, v4,v3,v6,v4,v2 é um walk; v4,v3 é um
path; v4,v3,v6,v4,v3 é um trail; e v4,v3,v6,v4 é um tour e um cycle ao mesmo tempo. (Zafarini,
2014) ........................................................................................................................................... 10
Figura 8 - Opção 1 menu ............................................................................................................. 11
Figura 9 - Opção 2 menu ............................................................................................................. 11
Figura 10 - Método para Cálculo de Grau dos nós ...................................................................... 11
Figura 11 - Opção 3 menu ........................................................................................................... 11
Figura 12 - Método para cálculo da centralidade do vetor próprio............................................ 11
Figura 13 - Método para exportar coluna de uma matriz ........................................................... 12
Figura 14 – Opção 4 menu .......................................................................................................... 12
Figura 15 - Método para cálculo do grau médio ......................................................................... 12
Figura 16 - Opção 5 menu ........................................................................................................... 12
Figura 17 - Método para cálculo da densidade ........................................................................... 12
Figura 18 - Opção 6 menu ........................................................................................................... 13
Figura 19 - Método para cálculo da potência k da matriz de adjacências .................................. 13
Figura 20 - Última opção do menu .............................................................................................. 13

3
Introdução

Este projeto tem como principal objetivo criar uma aplicação que auxilie na análise a
redes sociais. A análise é feita através de medidas e algoritmos de Análise de Redes Sociais
(Zafarini, 2014).

A aplicação é desenvolvida em Java e passa pela implementação de métodos para


leitura e escrita de ficheiros, cálculos das métricas necessárias à análise, a apresentação dos
resultados e também o desenvolvimento de testes unitários que permitam avaliar o
funcionamento de cada método.

A escrita de um relatório é importante não só para a apresentação de resultados,


mas também para escrutinar os métodos de trabalho usados para o desenvolvimento do
projeto.

O relatório é constituído por Capa, Índice, Introdução, Análise de Redes Sociais,


Desenvolvimento e implementação da aplicação, Conclusão e Referências Bibliográficas.

4
Metodologia de Trabalho
EduScrum
Adotamos uma metodologia de trabalho dinâmica em que o scrum master distribui
as tarefas pelo grupo e cada elemento faz a sua parte de maneira a chegarmos ao objetivo
final.

Como auxílio para nos organizarmos utilizamos o trello, bitbucket e certas apps de
mensagens, assim podemos trocar ideias e distribuir tarefas mesmo quando não estamos
reunidos em pessoa.

Planeamento e distribuição de tarefas


A distribuição de tarefas ficou encarregue ao scrum master, sendo que este tenta
organizar da melhor maneira as tarefas pelo grupo.

O nosso planeamento é feito de maneira simples, mas eficaz na execução pois cada
membro cumpre o que lhe foi atribuído.

No nosso projeto, o scrum master foi o Afonso Pimentel e as tarefas foram


estipuladas da seguinte forma: A criação da matriz foi feita pelo Pedro Costa e Vasco Rocha,
a gestão do Trello por Pedro Costa, configuração do repositório por Vasco Rocha, medidas
ao nível de nós e ao nível de rede por Afonso Pimentel, testes unitários por Vasco Silva e
relatório por Afonso Pimentel, Vasco Silva e Jorge Rodrigues.

5
Análise de Redes Sociais
Análise de redes sociais (SNA – Social Network Analysis) é um processo de análise
quantitativa e qualitativa de uma rede social. Refere-se ao mapeamento e à medição de
relacionamentos e fluxos entre pessoas, grupos, organizações, computadores e outras
entidades relacionadas. O principal objetivo desta técnica é examinar tanto os conteúdos
quanto os padrões de relacionamento nas redes sociais, a fim de compreender as relações
entre os atores e as implicações dessas relações. Tarefas comuns em SNA envolvem a
identificação dos atores mais influentes, prestigiados ou centrais, usando métricas. Estas
métricas são aprofundadas mais no capítulo seguinte.

Uma rede social pode ser representada por um grafo em que as entidades são
representadas através de nós e os relacionamentos são representados por ramos/arestas.
No capítulo seguinte todas estas definições são explicadas e demonstradas.

6
Introdução teórica
Para o cálculo das medidas ao nível dos Nós e da Rede é necessário ter bem presente o que
são nós, redes, um valor próprio e, consequentemente, um vetor próprio.

O que é um nó?
Um nó representa uma entidade. Neste caso podemos considerar que um nó representa
uma rede social. Os nós estão conectados entre si. A essas conexões chamamos de Ramos.
Para perceber melhor o conceito ver Figura 1 - Exemplo de grafo.

O que é uma rede?


Uma rede é um conjunto de nós. Na figura temos
exemplificada uma rede.

O que é um valor próprio e um vetor próprio?


Um valor próprio, em álgebra, é representado por λ.

Consideremos uma matriz nxn.


Figura 1 - Exemplo de grafo (Zafarini,
2014) Na equação 𝐴𝑥 = 𝜆𝑥 temos o λ
a representar um valor próprio, x
a representar um vetor próprio e A a representar a matriz. Disto
tiramos que o vetor próprio e valor próprio assumem essa
Figura 2 - Vetores Próprios
designação quando multiplicados um pelo outro igualam o produto
(Weisstein, s.d.)
entre a matriz e o vetor próprio.

A determinação destes valores é um processo bastante complexo dependendo da


dimensão da matriz e por isso o uso das livrarias la4j é recomendado.

A obtenção dos valores próprios é um processo em que,


resumindo, subtrai-se aos valores da diagonal uma variável λ,
iguala-se a matriz à matriz nula e calcula-se o determinante.
Obtêm-se n valores próprios. A determinação dos vetores
próprios tem mais que se lhe diga.

A livraria la4j utiliza o método da decomposição de


Figura 3 - Matriz de Vetores
Próprios (Weisstein, s.d.) Eigen.

Como já vimos, 𝐴𝑥 = 𝜆𝑥. Atendendo á Figura 4 e


Figura 3 podemos antes considerar que AP = DP.

Assim sendo, os valores dos vetores próprios obtêm-se resolvendo a equação Figura 4 – Matriz de
Valores próprios
matricial em ordem a P. É o que a decomposição de Eigen faz. (Weisstein, s.d.)

7
Mas para que servem estes valores?
Os nós e as redes podem ser representados através
de matrizes chamadas de matrizes de Adjacência
(ver Figura 5), logo, para a realização de estudos
neste contexto é preciso estudar estes valores.

No estudo das redes sociais há métricas que


ajudam à análise das mesmas. Permitem fazer uma
Figura 5 - Um grafo e a sua matriz de adjacência
correspondente (Zafarini, 2014) análise quantitativa.

O cliente requere que elaboremos uma aplicação que, entre outros métodos, calcule cinco
métricas:

• Grau de um nó (Node Degree)


• Centralidade de Vetor Próprio (Eigenvector Centrality)
• Grau Médio (Average Degree)
• Densidade (Density)
• Potências da Matriz de Adjacências (Powers of the adjacency matrix)

Grau de um nó
O grau de um nó é uma medida da adjacência imediata e do envolvimento do nó na rede.
Esta medida representa o número de arestas incidentes num determinado nó.
Consideremos a Figura 6 e Tabela 1 -
Matriz de adjacências que representa a

Figura 6 -Exemplo de grafo que representa


uma rede social de pessoas (Figura 1
enunciado) Tabela 1 - Matriz de adjacências que representa a rede social
apresentada na Figura 6 (Tabela 1 enunciado)

rede social apresentada na Figura 6


(Tabela 1 enunciado)Tabela 1:

Na primeira linha da matriz de adjacência temos representadas as ligações da Alice com


outras pessoas. O 0 representa que não há ligação e o 1 que há. Podemos, ao analisar a
matriz, verificar que a Alice tem 3 ligações. Podemos então afirmar que o Grau desse nó é 3.

8
Centralidade de Vetor Próprio
Na medida de grau de um nó é importante um nó ter o maior grau possível, ou seja, o maior
número de ligações possível. Na centralidade de Vetor Próprio é diferente. Não interessa o
maior número de ligações, mas sim, digamos, a intensidade das ligações que se tem.

Em termos de redes sociais podemos dizer que, mais do que ter muitos amigos, é melhor
termos mais amigos importantes. (Zafarini, 2014)

É uma medida que generaliza a medida grau do nó, incorporando a importância dos nós
vizinhos (Zafarini, 2014). Este valor obtém-se seguindo estes passos:

1. Determina-se a matriz de valores próprios e vetores próprios.


2. Determina-se o máximo valor próprio e toma-se como referência a coluna do
mesmo.
3. Na matriz dos vetores próprios retira-se a coluna tomada como referência.
4. Dessa coluna retira-se o valor mais elevado.

Grau médio
Representa a média de todos os nós de uma rede e permite medir a conectividade global
desta rede (Zafarini, 2014).

Considerando a matriz da Tabela 1 temos 7 nós (Alice, Bob, … George). Se somarmos os


graus de nós de cada um ficamos com 18 no total. Faz-se a média e ficamos com um grau
18
médio de 7
≅ 2,6.

Densidade
Esta medida é importante para explicar o nível geral de conectividade de uma rede. Este
valor representa a proporção de ramos na rede em relação ao número máximo possível de
ramos (Zafarini, 2014).

Considerando novamente a matriz da Tabela 1, temos uma matriz de 7x7. Se considerarmos


que o número máximo de ramos possível (é certo que cada nó não se pode ligar a si mesmo
neste caso) é (7𝑥7) − 7 = 42. A densidade será então:
18
𝜌= ≅ 0,429
42
A densidade é sempre um valor entre 0 e 1.

9
Potências da Matriz de Adjacências
A matriz de adjacência dá-nos o número de paths de comprimento 1 existentes entre cada
par de nós. Cada potência de uma matriz dá-nos o número de paths de comprimento 𝑘
existentes entre cada par de nós. 𝑘 é a potência da matriz que pretendemos.

Por exemplo, se 𝑘 = 2, a matriz de adjacência ao quadrado diz quantos paths de


comprimento 2 existem entre dois nós.

Apesar de confusas inicialmente, as definições de Walk, Path, Trail, Tour e Cycle


compreendem-se mais facilmente através da análise da Figura 7.

Para a análise de redes sociais temos ainda mais


métodos de análise quantitativa que se pode
utilizar mas neste caso concreto estes são os
mais importantes.

Figura 7 - Walk, Path, Trail, Tour e Cycle.


Nesta figura, v4,v3,v6,v4,v2 é um walk; v4,v3
é um path; v4,v3,v6,v4,v3 é um trail; e
v4,v3,v6,v4 é um tour e um cycle ao mesmo
tempo. (Zafarini, 2014)

10
Desenvolvimento e implementação da aplicação
A aplicação desenvolvida ao longo das aulas de LAPR1 utilizamos vários métodos para
preencher matrizes, calcular valores próprios, etc.

Nesta aplicação criamos um menu que funciona dividindo as funcionalidades por cases:

Figura 8 - Opção 1 menu

Primeira opção do menu mostra a matriz de adjacências.

Figura 9 - Opção 2 menu

A segunda calcula o grau de nós utilizando este metodo:

Figura 10 - Método para Cálculo de Grau dos nós

Figura 11 - Opção 3 menu

A opção 3 determina a centralidade do vetor próprio utilizando este método:

Figura 12 - Método para cálculo da centralidade do vetor próprio

11
E por si, este método chama outro

Figura 13 - Método para exportar coluna de uma matriz

Figura 14 – Opção 4 menu

O quarto método calcula o grau médio com este metodo

Figura 15 - Método para cálculo do grau médio

Figura 16 - Opção 5 menu

Depois, no quinto caso calcula-se a densidade com um metodo assim

Figura 17 - Método para cálculo da densidade

12
Figura 18 - Opção 6 menu

No penúltimo caso é calculada a potência tendo em conta o input do utilizador neste método:

Figura 19 - Método para cálculo da potência k da matriz de adjacências

E por fim, a maneira de acabar a utilização do menu é escolhendo o 0.

Figura 20 - Última opção do menu

13
Conclusão
Este é um projeto que requer não só um bom entendimento entre os membros da equipa
como uma boa capacidade de organização.

O trabalho passou por várias fases, inicialmente passava por compreender o que era pedido
especificamente não só para termos noção do que temos que fazer como também para fazer
uma divisão correta das tarefas.

A questão do cálculo das métricas teve todo um estudo por trás para perceber bem não só
como calcular cada métrica como também saber qual a sua finalidade.

Quanto ao desenvolvimento da aplicação houve algumas dificuldades iniciais, mas acabou-se


sempre por encontrar soluções para os erros encontrados.

A maior dificuldade foi de facto a organização de modo a que as tarefas fossem igualmente
divididas e também o uso de ferramentas como o bitbucket/sourcetree que muitas vezes não
facilitava o trabalho porque enunciava conflitos sem sentido.

Se recomeçássemos o trabalho agora temos a certeza que há coisas que seriam


completamente diferentes, seriam feitas de maneira mais eficiente e eficaz.

Apesar de tudo, temos um projeto que acaba por responder ao pedido, talvez não da melhor
maneira, mas sim da maneira que fomos desenvolvendo.

14
Referências
Weisstein, E. W. (s.d.). Eigen Decomposition. Obtido de MathWorld - A Wolfram Web
Resource: http://mathworld.wolfram.com/EigenDecomposition.html

Zafarini, R. A. (2014). Social media mining: An introduction. New York, NY, USA: Cambridge
University Press.

15