Vous êtes sur la page 1sur 185

U NIVERSIDADE F EDERAL DE G OIS I NSTITUTO DE I NFORMTICA E RICSSON S ANTANA M ARIN

Fluzz
Redes sociais: gerao, visualizao e buscas que maximizam a probabilidade de inuncia entre indivduos

Goinia 2013

U NIVERSIDADE F EDERAL DE G OIS I NSTITUTO DE I NFORMTICA

AUTORIZAO PARA P UBLICAO DE D ISSERTAO


EM

F ORMATO E LETRNICO

Na qualidade de titular dos direitos de autor, AUTORIZO o Instituto de Informtica da Universidade Federal de Gois UFG a reproduzir, inclusive em outro formato ou mdia e atravs de armazenamento permanente ou temporrio, bem como a publicar na rede mundial de computadores (Internet) e na biblioteca virtual da UFG, entendendo-se os termos reproduzir e publicar conforme denies dos incisos VI e I, respectivamente, do artigo 5o da Lei no 9610/98 de 10/02/1998, a obra abaixo especicada, sem que me seja devido pagamento a ttulo de direitos autorais, desde que a reproduo e/ou publicao tenham a nalidade exclusiva de uso por quem a consulta, e a ttulo de divulgao da produo acadmica gerada pela Universidade, a partir desta data. Ttulo: Fluzz Redes sociais: gerao, visualizao e buscas que maximizam a probabilidade de inuncia entre indivduos Autor(a): Ericsson Santana Marin

Goinia, 25 de Fevereiro de 2013.

Ericsson Santana Marin Autor

Cedric Luiz de Carvalho Orientador

E RICSSON S ANTANA M ARIN

Fluzz
Redes sociais: gerao, visualizao e buscas que maximizam a probabilidade de inuncia entre indivduos

Dissertao apresentada ao Programa de PsGraduao do Instituto de Informtica da Universidade Federal de Gois, como requisito parcial para obteno do ttulo de Mestre em Cincia da Computao. rea de concentrao: Sistemas de Informao. Orientador: Prof. Cedric Luiz de Carvalho

Goinia 2013

E RICSSON S ANTANA M ARIN

Fluzz
Redes sociais: gerao, visualizao e buscas que maximizam a probabilidade de inuncia entre indivduos

Dissertao defendida no Programa de PsGraduao do Instituto de Informtica da Universidade Federal de Gois como requisito parcial para obteno do ttulo de Mestre em Cincia da Computao, aprovada em 25 de Fevereiro de 2013, pela Banca Examinadora constituda pelos professores:

Prof. Cedric Luiz de Carvalho Instituto de Informtica UFG Presidente da Banca

Prof. Thierson Couto Rosa Instituto de Informtica UFG

Profa. Rita Maria da Silva Julia Faculdade de Computao UFU

Todos os direitos reservados. proibida a reproduo total ou parcial do trabalho sem autorizao da universidade, do autor e do orientador(a).

Ericsson Santana Marin

Graduou-se em Cincia da Computao na PUC Gois - Pontifcia Universidade Catlica de Gois. Durante e aps sua graduao, trabalhou com desenvolvimento de software comercial nas plataformas Microsoft, como Visual Basic 6.0 (VB), Active Server Pages (ASP) e Microsoft .NET. Possui experincia com desenvolvimento Desktop e Web desde 1998. Especializou-se em Qualidade e Gesto de Software tambm pela PUC Gois, onde realizou o projeto conceitual de uma rede social online. Durante o Mestrado, na Universidade Federal de Gois (UFG), foi bolsista da CAPES, ministrando seminrios e aulas sobre diversos temas vinculados Inteligncia Articial, como Processamento de Linguagem Natural, Algoritmos Genticos, Tcnicas de Busca, dentre outros. Como trabalho prtico de Mestrado, desenvolveu na plataforma Java, uma aplicao multiagente para visualizao de redes sociais, capaz de realizar buscas que maximizam a probabilidade de inuncia entre indivduos. Atualmente pesquisador em Cincia das Redes, Inteligncia Articial e entusiasta da Web 3.0.

Dedico este trabalho a toda minha famlia, pelo apoio e suporte emocional, em especial aos meus pais, que proporcionaram condies favorveis realizao desta obra. minha querida companheira Rose Dlia, pelo incentivo inicial de ingresso no mestrado. Sem ela, possivelmente as direes intrnsecas minha jornada acadmica, poderiam ter sido diferentes. Rose, you raise me up! Aos matemticos Leonhard Euler, Paul Erds e Alfrd Rnyi pela inestimvel contribuio sociedade acadmica, principalmente no referente Teoria dos Grafos. Aos socilogos Anatol Rapoport, tambm matemtico, e Mark Granovetter por tanto contriburem para os progressos realizados no entendimento das redes sociais. Aos fsicos e matemticos Duncan Watts, Steven Strogatz, Mark Newman, Albert Barabsi, Rka Albert, Mark Buchanan e Augusto de Franco pelos esforos em transformar a Teoria das Redes em Cincia, e por tentarem de forma incansvel desvendar obscuros mistrios da natureza. Aos cientistas da computao Alan Turing, Oliver Selfridge, John Holland, Marco Dorigo, Luca Maria Gambardella, Warrem McCulloch, Walter Pitts pelos trabalhos criados, inspirados na aprendizagem bottom-up da natureza. Aos cientistas Charles Darwin, Evelyn Fox Keller, Lee Segel, Richard Dawkins e Steven Johnson pelas importantes revelaes sobre a evoluo das espcies. Ao meu orientador, Professor Doutor Cedric Luiz de Carvalho, por sua grande colaborao para com os desdobramentos deste projeto. Foi graas sua pessoa, que ingressei ao mundo da Cincia das Redes, alm do universo da Inteligncia Articial. Sem esses dois alicerces fundamentais o trabalho no poderia ter sido construdo. A Deus pela fora e inspirao obtida durante toda a elaborao desta obra. Muitos de seus mistrios ainda anseiam por ser elucidados, mas para isso Ele nos propiciou a Cincia, que a cada dia caminha um passo nesta sinuosa direo.

Agradecimentos

A realizao deste trabalho s foi possvel graas colaborao e ao apoio de algumas pessoas, s quais transmito os meus sinceros agradecimentos: Aos meus pais pelo suporte nos inmeros dias de trabalho laborioso. A presena deles foi meu alicerce onipresente, e por isso, minha dvida ser eterna. Agradeo innitamente Rose Dlia pelos momentos de compreenso s minhas intempries emocionais, o que certamente contribuiu com meu xito. Sou extremamente grato por ter como companheira e incentivadora essa pessoa estimvel, de ndole to sublime. Am-la, estar mais prximo de Deus. Este trabalho tambm seu Rose. Aos meus companheiros de mestrado, to fundamentais durante os estudos. Eduardo, Sandino, Max, Francisco, Otvio, Walid, Carlos, Iacer, Gustavo, Mariana, Marcos, Edjalma. Sem a cooperao deles a estrada teria sido bem mais rdua. Ao amigo Jair Ab Alarcn pelas orientaes sobre o framework JADE. Aos cientistas da computao Glen Wasson e Brett Tjaden pela criao do site The Oracle of Kevin Bacon, fonte de inspirao para os contornos deste projeto. Ao instrutor de Java Bruno Zafalo da 3Way Networks, imprescindvel para que meu conhecimento sobre a plataforma fosse sedimentado. Aos pesquisadores Joshua OMadadhain, Danyel Fisher e Tom Nelson pela criao e disponibilizao do framework JUNG, amplamente utilizado neste trabalho. A Augusto de Franco por idealizar e viabilizar a Escola de Redes, comunidade virtual fundamental para minhas investigaes, pesquisas e questionamentos sobre redes. Raquel Recuero, que por sua obra Redes Sociais na Internet, serviu como minha fonte de pesquisa inicial, abrindo portas por onde transitei durante a pesquisa. CAPES, pelo importante incentivo ao me conceder a bolsa de estudos. Aos meus professores de mestrado, Thierson, Joo Carlos, Diane, Kleber, Les e Telma, que tiveram fundamental importncia na minha formao acadmica. Ao meu orientador, Professor Doutor Cedric Luiz de Carvalho, pelo suporte constante oferecido. Agradeo pela pacincia quando no fui objetivo, pela participao quando no fui ecaz, e especialmente, pela cordialidade quando me faltou inspirao. A Deus pelo dom da vida e pela ddiva do pensamento.

... s porque os mistrios da era da conectividade frequentemente parecem incompreensveis, no signica que realmente o sejam. Duncan Watts, Fsico, socilogo, pesquisador da Microsoft, e um dos principais arquitetos da Cincia das Redes.

Resumo

Marin, Ericsson S.. Fluzz. Goinia, 2013. 183p. Dissertao de Mestrado. Instituto de Informtica, Universidade Federal de Gois. O propsito desta dissertao a realizao de um estudo sobre redes, mais especicamente das redes sociais, visando criao de modelos, tcnicas e ferramentas para simular a sua gerao, produzir o seu mapeamento estrutural grco, e viabilizar a realizao de buscas nos ambientes que as representam. A gerao e visualizao de redes, ou grafos, assim como a realizao de buscas, compem um ramo continuamente estudado por diversos prossionais que ingressaram recentemente em uma nova cincia interdisciplinar, enraizada em pesquisas sociolgicas e na Teoria dos Grafos: a Cincia das Redes. Alguns resultados provenientes das pesquisas desta cincia subverteram conceitos previamente denidos, e apresentaram caractersticas reveladoras sobre o universo social interconectado. Dentre eles destacam-se a desmisticao dos seis graus de separao com a comprovao do fenmeno do "mundo pequeno". Tais revelaes inserem-se particularmente no estudo das redes sociais, mas demonstraram ser uma caracterstica onipresente nas demais redes pesquisadas pelos cientistas. Consequentemente, as pesquisas sobre redes sociais principiaram o estudo sobre redes de forma mais geral, produzindo inmeros trabalhos sobre o tema. Dentro deste contexto, a aplicao Fluzz, engendrada sob os alicerces dos Sistemas Multiagentes e dos princpios da contempornea Cincia das Redes, introduzida para prover ferramentas de visualizao e de simulao da gerao de redes sociais, baseadas nos modelos j propostos na literatura e em um novo modelo concebido nesta obra. Para o processo de busca, agentes de software capazes de atuar de forma distribuda e paralela, foram implementados utilizando-se de diversas abordagens intrnsecas Inteligncia Articial, como Algoritmo de Dijkstra, Otimizao por Colnia de Formigas e Algoritmos Genticos. Tais agentes foram projetados para maximizar a probabilidade de inuncia entre os indivduos das redes sociais, contribuindo para o aumento da atividade de conexo, de interao, e consequentemente de cooperao entre os mesmos.
Palavraschave

Cincia das Redes, Redes Sociais, Otimizao, Visualizao da Informao, Sistemas Multiagentes, Algoritmos de Busca de Caminhos

Abstract

Marin, Ericsson S.. Social networks: generation, visualization and search that maximize the probability of inuence between individuals. Goinia, 2013. 183p. MSc. Dissertation. Instituto de Informtica, Universidade Federal de Gois. The purpose of this dissertation is to conduct a study of networks, specically social networks, aimed at creating models, tools and techniques to simulate their generation, to produce their structural graphical mapping, and to enable conducting searches in the environments that represent them. The generation and visualization of networks or graphs, along with conducting searches, compose a branch continuously studied by several professionals who have joined recently in a new interdisciplinary science, rooted in sociological research and Graph Theory: the Science of Networks. Some results from the research of this science subverted concepts previously dened and presented revealing characteristics about the interconnected social universe. Among them stand the demystication of six degrees of separation with proof of the "small world" phenomenon. Such revelations are inserted particularly in the study of social networks, however they have proved to be an ubiquitous feature on other networks surveyed by the scientists. Consequently, research on social networks made the study on networks more general, producing numerous works regarding the subject. Within this context, the application Fluzz engendered under the foundations of Multiagent Systems and principles of contemporary Science of Networks, is introduced to provide tools to visualize and simulate the generation of social networks, based on models already proposed in literature and a new model designed in this work. For the search process, software agents capable of acting in distributed and parallel ways were implemented using several approaches intrinsic to Articial Intelligence such as Dijkstras Algorithm, Ant Colony Optimization, and Genetic Algorithms. These agents have been designed to maximize the probability of inuence of the social networks members, contributing to the increased activity of connection, interaction, and therefore cooperation between them.
Keywords

Science of Networks, Social Networks, Optimization, Information Visualization, Multiagent Systems, Search Paths Algorithms

Sumrio

Lista de Figuras Lista de Tabelas Lista de Algoritmos Lista de Cdigos de Programas 1 Introduo
1.1 1.2 1.3 1.4 Motivao Objetivos Metodologia Organizao da Dissertao

13 16 17 18 19 21 23 25 26 27 27 29 30 32 34 36 37 37 40 41 44 46 50 55 59 60 62 66 71 78 79 82

Cincia das Redes


2.1 2.2 2.3 2.4 2.5 2.6 Complexidade e Emergncia Grafos ou Redes Redes Sociais
2.3.1 Redes Sociais Online

Seis Graus de Separao Trs Graus de Inuncia Modelagem de Redes


2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 Universo Randmico No Aleatoriedade Pontes entre Mundos O Modelo Alfa Redes de Mundo Pequeno Redes Sem Escala Redes por Aliao

Algoritmos de Busca de Caminhos


3.1 3.2 3.3 3.4 Problema do Caminho Mnimo Algoritmo de Dijkstra Otimizao por Colnia de Formigas Algoritmos Genticos

Agentes e Sistemas Multiagentes


4.1 4.2 Agentes Sistemas Multiagentes

Visualizao da Informao
5.1 Tcnicas de Visualizao de Informaes

84 90 91 92 93 94 95 96 97 98 99 100 101 102 102 103 105 105 107 108 109 111 112 112 112 112 112 113 113 113 113 113 113 113 114 114 114 115 115 115 115 115 115 116

Frameworks Multiagentes Java


6.1 JADE - Java Agent DEvelopment framework
6.1.1 6.1.2 6.1.3 6.1.4 Arquitetura do JADE Ciclo de Vida de Agentes Tarefas de Agentes Comunicao entre Agentes

Frameworks Grcos Java


7.1 JUNG - Java Universal Network/Graph Framework
7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.1.6 Arquitetura do JUNG Criao de Grafos Visualizao de Grafos Filtros Algoritmos Recursos de Interao

Anlise de Trabalhos Correlatos


8.1 8.2 8.3 8.4 The Oracle of Kevin Bacon Vizster SocNetV Facebook Visualiser, TagGraph, Mentionmapp

Projeto da Aplicao
9.1 Requisitos Funcionais
9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.1.7 9.1.8 9.1.9 9.1.10 9.1.11 9.1.12 9.1.13 9.1.14 9.1.15 9.1.16 9.1.17 9.1.18 9.1.19 9.1.20 9.1.21 Persistncia dos dados gerados em um banco de dados Visualizao bidimensional das redes por meio de grafos Distino visual dos vrtices pela intensidade de cores Seleo individual dos vrtices e das arestas Distino de cores para vrtices e arestas selecionados Movimentao individual ou em grupo dos vrtices Movimentao do grafo inteiro Variao da escala de visualizao do grafo Rotao do grafo em torno de seus eixos Deformao do grafo de maneira uniforme Visualizao do grafo por meio de diversos layouts Clculo automtico dos pesos das arestas Visualizao dos pesos das arestas de forma opcional Visualizao do perl de uma pessoa Visualizao do perl de uma relao de amizade Apresentao da quantidade de vrtices do grafo Apresentao da quantidade de arestas do grafo Apresentao do coeciente de aglomerao da rede Apresentao da distncia geodsica mdia da rede Gerao de redes atravs dos modelos da literatura Gerao de redes de acordo com um novo modelo

9.1.22 9.1.23 9.1.24 9.1.25 9.1.26 9.1.27 9.1.28

Importao dos dados de redes pr-denidas Adio de conexes s redes existentes Deteco de caminhos entre duas pessoas Deteco de caminhos entre uma pessoa e vrias outras Criao de ltros para visualizao dos caminhos Salvamento da imagem da rede gerada Deleo da base de dados

9.2 9.3 9.4 9.5

Requisitos No Funcionais Diagramas de Caso de Uso Modelagem da Estrutura de Dados da Aplicao Arquitetura da Aplicao
9.5.1 9.5.2 9.5.3 O agentePrincipal A Sociedade de Agentes de Pesquisa O Repositrio de Dados

118 118 118 120 120 120 121 121 121 123 124 124 125 129 130 130 130 131 131 132 132 133 134 134 135 136 137 137 138 139 139 139 139 140 140 141 142 143 144 145 145 145 145 145 146 150

10 Desenvolvimento da Aplicao
10.1 Tecnologias Empregadas
10.1.1 10.1.2 10.1.3 10.1.4 10.1.5 10.1.6 10.1.7 10.1.8 10.2.1 10.2.2 10.2.3 10.2.4 10.2.5 10.2.6 10.2.7 10.2.8 10.2.9 Java 7 Eclipse Indigo JADE 3.7 JUNG 4.2 PostgreSQL 9.0.1 Sistema Operacional Windows 7 Arquitetura MVC (Modelo-Viso-Controle) Congurao de Hardware RF: Persistncia dos dados gerados em um banco de dados RF: Visualizao bidimensional das redes por meio de grafos RF: Distino visual dos vrtices pela intensidade de cores RF: Seleo individual dos vrtices e das arestas RF: Distino de cores para vrtices e arestas selecionados RF: Movimentao individual ou em grupo dos vrtices RF: Movimentao do grafo inteiro RF: Variao da escala de visualizao do grafo RF: Rotao do grafo em torno de seus eixos

10.2 Implementao dos Requisitos

10.2.10 RF: Deformao do grafo de maneira uniforme 10.2.11 RF: Visualizao do grafo por meio de diversos layouts 10.2.12 RF: Clculo automtico dos pesos das arestas 10.2.13 RF: Visualizao dos pesos das arestas de forma opcional 10.2.14 RF: Visualizao do perl de uma pessoa 10.2.15 RF: Visualizao do perl de uma relao de amizade 10.2.16 RF: Apresentao da quantidade de vrtices do grafo 10.2.17 RF: Apresentao da quantidade de arestas do grafo 10.2.18 RF: Apresentao do coeciente de aglomerao da rede 10.2.19 RF: Apresentao da distncia geodsica mdia da rede 10.2.20 RF: Gerao de redes atravs dos modelos da literatura 10.2.21 RF: Gerao de redes de acordo com um novo modelo

10.2.22 RF: Importao dos dados de redes pr-denidas 10.2.23 RF: Adio de conexes s redes existentes 10.2.24 RF: Deteco de caminhos entre duas pessoas 10.2.25 RF: Deteco de caminhos entre uma pessoa e vrias outras 10.2.26 RF: Criao de ltros para visualizao dos caminhos 10.2.27 RF: Salvamento da imagem da rede gerada 10.2.28 RF: Deleo da base de dados 10.2.29 RNF: Modularidade 10.2.30 RNF: Simplicidade 10.2.31 RNF: Paralelismo 10.2.32 RNF: Ecincia 10.2.33 RNF: Conabilidade 10.2.34 RNF: Portabilidade 10.2.35 RNF: Manutenibilidade 10.2.36 RNF: Usabilidade

152 154 155 165 167 170 170 170 171 171 171 171 171 171 171 172 173 174 176

11 Consideraes Finais
11.0.37 Contribuies 11.0.38 Limitaes e Trabalhos Futuros

Referncias Bibliogrcas

Lista de Figuras

1.1 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11

Metodologia da Dissertao. O Evento. Grafo do Evento. Jefferson High School. Colorado Springs. Amostra de Usurios do Facebook. Rede Social Hipottica. Rede Social Real. Grco de Conexes Aleatrias. Tringulo Social. Buraco Estrutural. Pontes Sociais. A Sociedade de Granovetter. Modelo Alfa. Comprimento dos Caminhos no Modelo Alfa. Coeciente de Aglomerao. Modelo Beta. Impacto das Religaes Aleatrias no Modelo Beta. Distribuio Normal. Distribuio por Lei de Potncia. Mapas Rodovirios e de Linhas Areas dos EUA. Modelo Sem Escala. Rede Gerada pelo Modelo Sem Escala. Desigualdade Triangular. Multidimenses. Rede Bipartida. Grafo da Distncia Entre Oito Locais de uma Cidade. Relaxamento da Aresta (u,v). Heap Mnimo. Inicializao do Algoritmo de Dijkstra. Iteraes do Algoritmo de Dijkstra. Experimento da Ponte Binria. Obstculo Sendo Superado Pelas Formigas. Processo Forrageador das Formigas. Representao de um Cromossomo. Node Based Crossover (NBX). Processo de Reparao do Cromossomo.

25 29 29 31 32 34 35 36 38 42 42 43 43 45 46 47 47 48 50 51 52 54 54 56 57 58 61 63 65 65 65 66 67 67 74 75 76

3.12 Processo de Mutao do Cromossomo. 4.1 4.2 4.3 4.4 4.5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 6.1 6.2 7.1 7.2 7.3 7.4 7.5 7.6 7.7 8.1 8.2 8.3 8.4 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.1 10.2 10.3 10.4 10.5 10.6 Arquitetura de um Agente. Perspectiva Funcional de um Agente. Hierarquia de Agentes. Tipos de Ambientes. Neurnios do Crebro Humano. Detectando Objeto Dessemelhante. Melhoria da Percepo Humana. Pontes de Knigsberg. Modelo de Referncia. Transformaes de Dados. Smbolos Grcos Representacionais. Mapeamento Visual. Transformaes Visuais. Arquitetura do JADE. Ciclo de Vida dos Agentes. Arquitetura do JUNG. Grafo Gerado pelo JUNG. Algoritmo EdgeBetweennessClusterer. Algoritmo DijkstraShortestPath. Grafo Inicial e Estabilizado. Grafo Ampliado. Grafo Rotacionado e Distorcido. The Oracle of Kevin Bacon. Vizster. SocNetV. Facebook Visualiser, TagGraph, Mentionmapp. Modelo Gama. Diagrama de Casos de Uso. Modelo Conceitual da Aplicao Fluzz. Modelo Relacional da Aplicao Fluzz. Arquitetura da Aplicao Fluzz. Primeiro Elemento do Modelo BestWay. Segundo Elemento do Modelo BestWay. Terceiro Elemento do Modelo BestWay. Representao do Modelo BestWay. Arquitetura MVC da Aplicao Fluzz. Layout da Aplicao Fluzz. Seleo dos Componentes do Grafo. Movimentao dos Componentes do Grafo. Mecanismos de Zoom do Grafo. Rotao e Deformao do Grafo.

77 79 79 80 81 83 85 85 86 88 88 88 89 89 93 94 99 101 102 103 104 104 104 106 108 109 110 117 122 123 123 124 126 127 127 127 134 135 138 139 140 140

10.7 Layouts da Aplicao Fluzz. 10.8 Visualizao do Peso das Conexes. 10.9 Visualizao do Perl de Vrtices e Conexes. 10.10Modelos de Gerao de Redes. 10.11Processo de Adio de Conexes. 10.12Processo de Busca. 10.13Processo de Filtragem de Solues. 11.1 reas Envolvidas no Projeto da Aplicao Fluzz.

141 143 144 147 155 163 167 172

Lista de Tabelas

2.1 9.1 9.2 9.3 9.4 9.5 10.1 10.2 10.3 10.4 10.5

Mundos Pequenos Avaliao dos Modelos de Gerao de Redes Apresentaes em Sociedade Mapeamento de Requisitos Funcionais e Casos de Uso Dicionrio de Dados do Modelo Conceitual Dicionrio de Dados do Modelo Relacional Congurao de Hardware Valores Obtidos Pelos Modelos de Rede Avaliao dos Modelos de Gerao de Redes Performance dos Heaps Perante as Listas Performance dos Agentes de Pesquisa

49 116 119 122 123 124 134 150 152 159 164

Lista de Algoritmos

3.1 3.2 3.3

Di jkstra(G, w, s, t ) ACO(G, w, s, t ) GA(G, w, s, t )

64 71 77

Lista de Cdigos de Programas

10.1 Inicializao da Aplicao Fluzz 10.2 Criao do Banco e das Tabelas do Fluzz no PostgreSQL 10.3 Visualizando Grafos no Fluzz 10.4 Colorao dos Vrtices do Grafo 10.5 Alterando Layouts de Visualizao das Redes 10.6 Clculo do Peso das Arestas 10.7 Escondendo os Rtulos das Arestas 10.8 Apresentando os Rtulos das Arestas 10.9 Clculo do Coeficiente de Aglomerao 10.10 Clculo da Distncia Geodsica Mdia 10.11 Gerao de Redes 10.12 Instruo para Gerao de Redes de Pequena Escala 10.13 Montando o Grafo 10.14 Adicionando Conexes s Redes 10.15 Iniciando Agentes de Pesquisa 10.16 Escutando e Encerrando os Agentes de Pesquisa 10.17 Marcando o Menor Caminho no Grafo 10.18 agenteDijkstra 10.19 agenteACS e agenteAS 10.20 agenteGA 10.21 Definindo Alvos Para Pesquisa 10.22 Criando Predicados aos Vrtices 10.23 Aplicando Filtros s Redes 10.24 Criando Subgrafos

136 136 137 138 142 142 143 144 144 146 149 152 153 154 156 156 157 158 160 162 166 169 169 170

CAPTULO 1

Introduo

Se a poca atual da histria humana tivesse de ser caracterizada de forma simples, sua descrio poderia ser feita como o perodo mais altamente, globalmente e inesperadamente conectado j noticado [106]. Para que essa era da conectividade pudesse ser entendida, pesquisadores de diversas reas como matemtica, fsica, biologia, sociologia e Cincia da Computao uniram esforos para descrev-la cienticamente, atravs do estudo intensivo das redes. A anlise de redes sociais sempre foi objeto de interesse sociolgico, especialmente a partir de meados do sculo XX. Todavia, estudos mais aprofundados da dinmica de redes recentemente foram desenvolvidos, para procurar alternativas s tratativas clssicas que consideravam a formao de redes um processo puramente randmico [23]. Tais estudos passaram a se utilizar da evoluo da Teoria dos Grafos com abordagem de dinmica de sistemas e uso intensivo de recursos computacionais. Esse alicerce transdisciplinar desaou a comunidade cientca a superar os compartimentos estanques do reducionismo e a explorar, conexo por conexo, a revoluo cientca adveniente: a nova Cincia das Redes [14]. Proposta originalmente por Duncan Watts, Steven Strogatz e Albert Barabsi, a ideia preeminente prescreveu que um padro oculto est por trs do modo como as pessoas interagem. Os estudos evidenciaram que apesar do crescimento populacional, a distncia entre os indivduos est decrescendo, deixando-os em lados opostos do mundo conectados apenas por seis graus de separao. Inmeras revelaes referentes a essa cincia inserem-se particularmente no mbito das redes sociais, mas foram evidenciadas similarmente nas demais redes pesquisadas pelos cientistas. Consequentemente, as pesquisas sobre redes sociais contriburam com o estudo sobre redes de forma geral, que passaram a ser vistas como parte integral de um sistema em evoluo e autoconstituio contnua, e no mais como objetos de estrutura pura, cujas propriedades so xas no tempo. Acompanhando os cientistas, que se interessaram em explicar as redes, o incio do sculo XXI caracterizou-se pelo crescente interesse demonstrado pela populao mundial sobre o assunto. Isso basicamente se deve ao surgimento da Internet juntamente com a Web nos lares, que possibilitou s pessoas uma noo de como as coisas podem

20

estar interconectadas. Os indivduos em sociedade comearam a perceber que esto to conectados quanto seus computadores, e que, de certa forma, o mundo est encolhendo. Encolhendo, no no sentindo fsico ou demogrco, e sim social, reforando sem precedentes a condio de que a humanidade realmente vive em um mundo pequeno. Estas conexes tornaram-se to explcitas que hoje quase todas as pessoas esto familiarizadas com as redes sociais online, como o Facebook [112], que recentemente atingiu a marca recorde de 1.000.000.000 de usurios ativos [1]. As interaes, estimuladas e suportadas por novas tecnologias, criam novos fenmenos sociais que transcendem a experincia individual, provocando implicaes signicativas para o bem coletivo [30]. As redes sociais possibilitam que a humanidade se torne maior do que a soma de suas partes, e a criao de novos modelos de conexo promete contribuir para elevar a interconexo humana a um nvel jamais experimentado. O recurso distintivo das redes sociais online que elas tornam a rede de conexes dos indivduos visvel aos usurios. Alm disso, por sua prpria denio, as redes sociais online so organizadas em torno de pessoas, divergindo-se de outros tipos de grupos online ou comunidades, como as wikis, que se organizam com base em tpicos. Bilhes de pessoas tm integrado o uso de redes sociais online em seu cotidiano. Elas procuram por antigas amizades, fazem novas conexes, postam links favoritos, percorrem as redes de amizades de seus amigos. Compartilhar informaes nestes ambientes, compartilhar descobertas importantes, so benefcios que ajudam as pessoas a agirem de forma rpida e eciente em um mundo dinmico de transformaes frequentes [30]. A cooperao envolvida neste processo gera sinergia, permitindo que a produo humana cresa de forma exponencial. As redes sociais online facilitam a localizao e a interao com um enorme nmero de potenciais amigos, com alto nvel de especicidade, alm de viabilizar o encontro de pessoas em diferentes domnios. Os indivduos pertencentes a estes ambientes engendram padres em que a abertura, conectividade e cooperao, deslocam os limites do impossvel ou at do inimaginvel, para a regio do possvel adjacente. Dentro desse contexto, compreende-se hoje, que a resposta para o sucesso das pessoas em sociedade, encontra-se tanto na estrutura das redes em que operam quanto na possibilidade das mesmas serem navegadas. De muitas formas, os trabalhos realizados pelo matemtico Leonard Euler que originaram a Teoria dos Grafos, simbolizam uma importante mensagem desta obra: a construo e a anlise de grafos ou redes podem ser determinantes para a compreenso do complexo mundo que rodeia a humanidade. neste momento que a Cincia das Redes toma forma, perfazendo um caminho de pesquisas para compreender como mudanas na topologia, afetando somente alguns ns ou links, podem abrir portas ocultas, permitindo a emergncia de novas possibilidades.

1.1 Motivao

21

1.1

Motivao

O crebro humano alcanou sua evoluo atual auto-organizando-se a partir de uma forma primitiva de combinao de padres. Os seres humanos so muito mais hbeis em reconhecer padres do que em pensar atravs de combinaes lgicas, uma vez que este tipo de reconhecimento abrange a maior parte do circuito neural humano. Segundo Steven Johnson, essas faculdades compensam a velocidade extremamente baixa dos neurnios, que so milhes de vezes mais lentos, por exemplo, que os computadores para resolver problemas de maneira serial [60]. No obstante, por ser um sistema paralelo de grande porte, com 100 bilhes de neurnios trabalhando simultaneamente, o crebro pode protagonizar proezas admirveis de reconhecimento de padres, como a identicao ou interpretao de imagens [60]. Com esta capacidade, as pessoas podem classicar situaes como distantes ou similares, relevantes ou irrelevantes, ou at mesmo encaixar pequenas pistas, formando uma imagem bem denida de dados muitas vezes difceis de serem interpretados pelo computador. Dessa forma, se um mapeamento estrutural grco das redes sociais pudesse ser disponibilizado, o crebro humano utilizaria de sua principal habilidade cognitiva para prover informaes, muitas vezes despercebidas pelas melhores mquinas. Em um primeiro momento, as tecnologias capazes de representar redes sociais, como as redes sociais online, surgiram para mostrar o interesse intrnseco do ser humano em se conhecer e conhecer seus amigos em rede [30]. Em um ambiente capaz de representar gracamente as redes sociais, em vez de apenas conhecerem quem so seus amigos e, possivelmente, os amigos de seus amigos, os indivduos poderiam olhar alm de seus horizontes sociais e visualizar seu espao em uma vasta rede social mundial. Atualmente so raras as aplicaes que disponibilizam esse tipo de recurso, o que prejudica uma anlise aprimorada e instintiva das pessoas. Por outro lado, a utilizao da alta velocidade de processamento serial dos computadores no poderia ser negligenciada para a realizao de outro importante procedimento nas redes sociais: o processo de busca. Segundo o fsico Mark Buchanan, a concepo de uma sociedade em rede foi evidenciada na dcada de 1980, quando os indivduos perceberam que a melhor estratgia para encontrar informaes sobre questes abstrusas, era explorar os tentculos de sua rede social, na busca de provveis colaboradores. Para o pesquisador, "as pessoas estendiam antenas a amigos e conhecidos, e esperavam que, em algum ponto da cadeia, alguma preciosidade aparecesse em seu caminho. Um amigo do vizinho do tio poderia ser a pessoa-chave procurada por algum" [23]. Encontrar determinada pessoa, que supostamente poderia disponibilizar uma informao procurada, tornou-se ainda mais importante atualmente, quando problemas tm de ser resolvidos s pressas e ningum tem uma ideia clara de como resolv-los. No

1.1 Motivao

22

obstante, denir qual pessoa procurar, e qual o melhor caminho percorrer para encontrla em um emaranhado de ns e conexes, invariavelmente confundiria e estressaria at a mais vigorosa mente que se aventurasse sobre tal domnio. Isso ocorre, pois o cerne da interconectividade humana no est na simples estrutura das dades, ou conexes formadas pelos contatos diretos de uma pessoa. Diferentemente disso, a compreenso fundamental de que estas dades se agregam para formar teias enormes de laos sociais que vo muito alm das conexes diretas, implicando em uma complexidade de ramicao exponencial [30]. Dessa forma, distncias de dois graus de separao nas redes sociais j tornam o processo de busca extremamente difcil de ser realizado pelos seres humanos, e acima deste nvel, tornam-no praticamente inconcebvel. Alm disso, um importante fator, certamente considerado pelos indivduos ao utilizarem suas redes sociais para realizarem o processo de busca: a inuncia. Este tipo de prestgio social faz-se presente na maioria das relaes de amizade, e pode ser preponderante para a efetivao de uma nova conexo, intermediada por elos comuns. Diversos nveis de inuncia existem nos distintos caminhos que unem direta ou indiretamente duas pessoas, e algumas variveis so cruciais para esta diferenciao, como a fora dos laos de amizade, e o comprimento dos caminhos. Tais variveis precisam ser respectivamente maximizadas e minimizadas para que se aumente o fator de inuncia, e consequentemente a possibilidade de conexo e cooperao em rede. A diculdade fundamental constituda em todo o processo de busca social ocorre pela tentativa de resolver um problema global, usando apenas informaes locais sobre a rede. Em consequncia, impossvel saber qual dos caminhos que partem dos indivduos chega at a pessoa-alvo com o maior fator de inuncia. A cada grau de separao, uma nova deciso deve ser tomada, e a escolha por determinado caminho na rede pode inicialmente levar para o que parece ser a direo errada, pois no existe um mapa completo do percurso. Neste momento, alm da disponibilizao de um mapeamento grco das redes sociais, seria de extrema utilidade a disponibilizao de recursos inteligentes capazes de perfazer rapidamente longos e sinuosos caminhos a procura de alvos denidos dentro das redes sociais. Agentes computacionais, que possam atravs de suas heursticas e inferncias, identicar alvos, classic-los em ordem de relevncia, e reconhecer quais so os melhores caminhos que levam a pessoa-origem pessoa-destino. Na prxima gerao de redes sociais online, portanto, ser inaceitvel pensar em sites que no ofeream recursos grcos de visualizao da rede e que no permitam a busca inteligente de potenciais parceiros ou colaboradores. Tais mecanismos de busca sero capazes de explorar as conexes sociais existentes nas redes, maximizando a possibilidade de inuncia entre os indivduos, e consequentemente elevando o nvel de interao e cooperao humana a patamares sem precedentes.

1.2 Objetivos

23

1.2

Objetivos

O principal objetivo deste trabalho a realizao de um estudo cientco sobre redes sociais, visando reunir conhecimentos importantes sobre seu processo evolutivo, para a proposio de modelos e ferramentas capazes de atender a trs metas especcas: Representar as redes sociais gracamente, oferecendo diversos recursos para visualizao e interao com as mesmas; Simular a gerao das redes sociais de acordo com os principais modelos propostos na literatura, e conforme um novo modelo concebido nesta obra; Disponibilizar mecanismos de busca para a localizao de pessoas especcas nas redes sociais, alicerados em modelos que possam maximizar a probabilidade de inuncia entre os indivduos. A denio dessas metas alicerou-se em um intuito social maior, de promover interaes e futuras conexes entre os integrantes das redes analisadas, e para que elas pudessem ser atendidas, tcnicas computacionais e modelos conceituais foram desenvolvidos e implementados em uma aplicao prtica. Tal aplicao foi tambm responsvel pelo processo de vericao e validao de todo o arcabouo terico proposto, uma vez que os recursos de simulao disponibilizados pela mesma produziram dados passveis de anlise exploratria e conrmatria de evidncias. A aplicao foi denominada Fluzz, em homenagem ao livro do fsico, escritor, socilogo e um dos principais estudiosos sobre redes no Brasil, Augusto de Franco. O livro de Franco intitulado, "Fluzz: Vida humana e convivncia social nos novos mundos altamente conectados do terceiro milnio" [46], realiza uma abordagem sociolgica sobre os diversos benefcios de convivncia em rede. Em uma das principais passagens do livro, Franco menciona:
O mundo das redes no um mundo: um multiverso de interaes. No existe uma mesma realidade para todos: so muitos os mundos. Tudo depende das uies em que cada um se move, dos emaranhamentos que se tramam, das conguraes de interaes que se constelam e se desfazem, intermitentemente. Quanto mais distribuda for a topologia de uma rede, mais-uzz ela ser. Quer dizer, mais interatividade haver. Conhecer as redes interpretar modos-de-interagir (reconhecendo padres). O que s se pode conseguir interagindo (estabelecendo conexes).

expressiva e contundente a mensagem transmitida por Franco durante toda a obra citada. Reconhecer padres e estabelecer conexes reetem inextrincavelmente a tnica principal enredada pela aplicao desenvolvida neste trabalho, que empresta orgulhosamente o ttulo de seu livro.

1.2 Objetivos

24

Para contribuir com o aumento da atividade conectiva e interativa das pessoas em rede, a aplicao utiliza-se, por exemplo, de modelos para a avaliao dos laos de amizade construdos. O emprego de tais modelos mostra-se como premissa essencial dentro desta conjectura, pois viabiliza a possibilidade de analisar a distncia, e consequentemente o nvel de proximidade existente entre os indivduos, criando condies para a realizao de medies relevantes da probabilidade de inuncia recproca. A aplicao foi construda sobre os moldes dos sistemas multiagentes, capazes de utilizar as habilidades de diferentes agentes de software, que interagem na resoluo de problemas. Este tipo de sistema pode apresentar maior rapidez na realizao de tarefas, devido ao paralelismo obtido [12]. A modularidade garantida com os sistemas multiagentes outra caracterstica relevante, pois quando estes no conseguem resolver determinada tarefa, geralmente, mais simples projetar e incluir um novo agente do que substituir o sistema inteiro. Alm do objetivo principal apresentado, esta obra pretende alcanar os seguintes objetivos secundrios que concorrem ao mesmo ponto prevalecente: Disseminar a compreenso dos conceitos e linguagem da Cincia das Redes, objetivando suas utilizaes no tratamento de problemas complexos em rede; Expor os principais fundamentos sobre Sistemas Multiagentes, indicando as principais tecnologias utilizadas nesta subrea da Inteligncia Articial, e apresentando os pontos diferenciais da ferramenta escolhida no trabalho; Utilizar a aplicao desenvolvida para inferir informaes referentes aos dados processados; Exibir os conceitos e indicar tecnologias capazes de trabalhar com visualizao grca de dados, apresentando as vantagens da ferramenta utilizada na aplicao; Esclarecer e contextualizar o critrio utilizado no trabalho para denir a fora dos laos sociais entre os integrantes das redes; Introduzir o modelo de rede criado para viabilizar a avaliao qualitativa dos diversos caminhos que conectam duas pessoas especcas nas redes sociais; Apresentar a arquitetura projetada para denir as formas de interao entre os agentes de software responsveis pela realizao das buscas, bem como seus respectivos modos de convergncia; Introduzir os conceitos de otimizao do problema do caminho mnimo, bem como as caractersticas dos algoritmos utilizados na aplicao, como Algoritmo de Dijkstra, Otimizao por Colnia de Formigas e Algoritmos Genticos.

1.3 Metodologia

25

1.3

Metodologia
A criao desta obra foi decomposta em 10 etapas, ilustradas na Figura 1.1.

Figura 1.1: Metodologia da Dissertao.

Iniciando o processo, a primeira etapa consistiu no estudo terico necessrio para a compreenso dos conceitos erigidos pela Cincia das Redes, o que viabilizou a proposio fundamentada dos modelos sociais criados nesta dissertao. A prxima etapa caracterizou-se por uma explorao realizada na rea de algoritmos de busca de caminhos, objetivando comparar algumas tcnicas de busca propostas na literatura, que pudessem ser utilizadas para a criao de um mecanismo de busca social. Por conseguinte, iniciou-se um processo de estudo do paradigma de programao orientado agentes, abordando sua mltipla utilizao em Sistemas Multiagentes. A cincia Visualizao da Informao recebeu o foco do estudo em sequncia, sendo avaliadas as tcnicas e orientaes referentes representao grca de dados. Finalizado o estudo terico, foi iniciada uma pesquisa sobre frameworks construdos na plataforma Java. O objetivo era encontrar uma ferramenta de cdigo aberto que possibilitasse a criao de sistemas sob o paradigma multiagente, simplicando e facilitando este desenvolvimento. O framework JADE (Java Agent DEvelopment framework) foi adotado devido a sua adequao maioria dos pr-requitos estipulados para uma arquitetura de comunicao exvel e eciente, alm de atender a todas as especicaes da principal organizao padronizadora de tecnologias baseadas em agentes. Na etapa subsequente, uma nova pesquisa sobre frameworks Java entrou em vigor. Desta vez, a inteno foi de analisar as ferramentas disponibilizadas na academia para criao e manipulao de componentes grcos, mais especicamente que reunissem condies de trabalhar com grafos. A ferramenta JUNG (Java Universal Network/Graph

1.4 Organizao da Dissertao

26

Framework) apresentou as melhores caractersticas dentre todas as observadas, sendo ento a designada para a construo da aplicao. Ao iniciar a etapa de trabalhos relacionados, foram levantados alguns projetos com objetivos semelhantes ao desta pesquisa, ou que de alguma forma estavam, direta ou indiretamente relacionados com o tema. A ideia preeminente foi conhecer projetos e ferramentas que pudessem colaborar com os propsitos essenciais da aplicao a ser desenvolvida, atravs de tcnicas ou modelos pr-concebidos. Em sequncia foi iniciado o projeto da aplicao Fluzz, pelo qual foram identicados e concebidos os requisitos e os modelos a serem implementados, visando atender integralmente os objetivos desta obra. Finalizando todo o processo, a ltima etapa consistiu no desenvolvimento efetivo da aplicao Fluzz, com a estipulao congruente das tecnologias e processos adotados. A documentao, fundamentada essencialmente na escrita da dissertao, relatrios e artigos, foi realizada concomitantemente no decorrer de todas as outras etapas.

1.4

Organizao da Dissertao

Este trabalho encontra-se organizado em 10 captulos, alm desta introduo. No Captulo 2, so apresentados os principais conceitos e estudos realizados na rea de Cincia das Redes, atravs de uma abordagem interdisciplinar. No Captulo 3, so apresentados alguns algoritmos estudados, detalhando suas respectivas lgicas ou heursticas utilizadas na busca otimizada de caminhos. O Captulo 4 destina-se discusso sobre Agentes e Sistemas Multiagentes, considerando as principais vantagens de suas utilizaes. O Captulo 5 aborda a temtica envolvida com a Visualizao de Informao, analisando como construir representaes grcas expressivas e ecientes. No Captulo 6, so introduzidos alguns dos principais frameworks Java para construo de Sistemas Multiagentes, justicando a escolha por determinado framework. O Captulo 7 informa alguns dos principais frameworks Java para construo de aplicaes grcas, tambm justicando a opo pelo framework utilizado no trabalho. No Captulo 8, so descritos os principais trabalhos relacionados com a aplicao desenvolvida, destacando-se: The Oracle of Kevin Bacon, Prefuse e SocNetV. O Captulo 9 apresenta os requisitos funcionais e no funcionais, alm dos modelos que serviram como base para o projeto da aplicao Fluzz. O Captulo 10 dedicado ao desenvolvimento da aplicao Fluzz, utilizando as especicaes do captulo anterior. Finalmente, o Captulo 11 fornece algumas consideraes nais, enumerando contribuies e possveis trabalhos futuros.

CAPTULO 2

Cincia das Redes

Um dos aspectos mais fascinantes do surgimento de uma nova cincia a linguagem particular que ela engendra, permitindo discorrer sobre ideias e questes complexas de serem descritas antes de sua emergncia. Ao construir uma linguagem para expor sobre redes, que seja precisa o bastante para descrever no apenas o que so, mas tambm que tipos de diferentes redes existem no mundo, a Cincia das Redes est fornecendo ao conceito uma fora analtica real. O pensamento de redes est em via de invadir todos os domnios da atividade humana e a maioria dos campos de investigao [14]. mais do que uma simples perspectiva. As redes so, por sua prpria natureza, a urdidura dos sistemas complexos, e os ns e links impregnam profundamente todas as estratgias voltadas para a abordagem do universo interconectado [106]. Proposta inicialmente pelos pesquisadores Duncan Watts, Steven Strogatz e Albert Barabsi a Cincia das Redes adota uma nova viso da sociedade orientada por redes, alm de tentar compreender as consequncias da interconectividade. Neste contexto, os ltimos anos vm propiciando uma exploso de pesquisas e interesse mundial em busca de um novo paradigma com o qual se possa descrever, explicar e, em ltima anlise, compreender a era da conectividade. O propsito essencial desta cincia consiste em ajudar os indivduos a entender, tanto a estrutura dos sistemas conectados quanto as formas pelas quais diferentes tipos de inuncia se propagam atravs deles [106]. Obviamente, reconhecer esses padres e compreender suas origens apenas um primeiro passo. Ser tambm necessrio saber como inuenci-los, e como utilizar as propriedades das redes a favor dos seres humanos.

2.1

Complexidade e Emergncia

O reducionismo foi a fora propulsora de boa parte da pesquisa cientca do sculo XX. Para compreender a natureza, segundo seus preceitos, necessrio inicialmente que seus componentes sejam decifrados. A premissa que uma vez compreendida as partes, consequentemente aprende-se o todo [23]. Naturalmente, durante dcadas os cien-

2.1 Complexidade e Emergncia

28

tistas viram o mundo por suas partes constitutivas. Foram instrudos a estudar os tomos para entender o universo, as molculas para compreender a vida, os genes individuais para entender o complexo comportamento humano. Atualmente, os cientistas adquiriram um grande conhecimento sobre as partes, porm ainda esto longe de entender a natureza como um todo, j que a remontagem revelou-se muito mais difcil do que o previsto. Para Buchanan a razo simples: "sob a gide do reducionismo, logo se depararam com a dura muralha da complexidade" [23]. Os cientistas entenderam que a natureza no um quebra-cabea bem projetado, que apresenta uma nica forma de montagem. Em sistemas complexos, cujas propriedades no so uma consequncia natural de seus elementos constituintes, os componentes podem articular-se de modos to diversos que os pesquisadores levariam bilhes de anos para tentar todos. No obstante, a natureza rene as partes com uma preciso aguada ao longo de toda sua histria [106]. Ela o faz explorando as leis gerais da auto-organizao, cujas razes, em ampla medida, ainda constituem um mistrio para quem as estudam [60]. O recente sequenciamento do genoma humano revelou que o cdigo bsico de toda a vida humana consiste em cerca de apenas trinta mil genes, muito menos do que os cientistas haviam imaginado, por volta de cem mil [103]. Isso particularmente intrigante, j que algumas plantas tm cerca de vinte e cinco mil genes. Consequentemente, como arma Buchanan, "ou as pessoas no so to sosticadas quanto imaginam ou no apenas o nmero de genes que determina a complexidade de um organismo" [23]. Logo, a explicao de toda a complexidade da biologia humana, claramente no provm da complexidade dos elementos individuais do genoma, que se totalizam em um nmero pouco maior do que o encontrado no mais singelo dos organismos. Ao contrrio, ela provavelmente deriva do fato de que traos genticos so raramente expressados por genes isolados. Embora os genes, como as pessoas, existam como unidades individuais, eles funcionam por interao, e os padres de interao correspondentes podem exibir complexidade quase ilimitada. Um crebro humano, por exemplo, em certo sentido, bilhes de neurnios conectados em uma grande massa eletroqumica. Mas, na realidade, ele claramente bem mais do que isso, com propriedades como conscincia, memria e personalidade, cuja natureza no pode ser simplicada como um agregado de neurnios. Essa propriedade relativa aos sistemas complexos, de um padro organizacional no planejado que pode emergir devido auto-organizao de seus componentes, conhecida como emergncia. Mais do que conhecer as partes, necessrio compreender a dinmica organizacional por trs da formao da rede, que faz emergir sua congurao em determinado momento, transcendendo assim, o reducionismo. Entender as inter-relaes simultneas e seus resultados no planejados essencial para tratar os problemas complexos em rede, e, portanto, torna-se o alicerce diferencial da nova cincia apresentada.

2.2 Grafos ou Redes

29

2.2

Grafos ou Redes

Reduzida ao seu esqueleto bsico, uma rede constitui simplesmente um conjunto de objetos conectados entre si de certo modo. Roteadores na Internet ou neurnios em um crebro so exemplos de redes, mas que so completamente distintas de alguma forma. Atualmente, o ramo da matemtica conhecido como Teoria dos Grafos, proposto originalmente pelo matemtico Leonhard Euler, constitui a base do pensamento acerca de redes. Sculos depois de Euler, ele se tornou um campo perfeitamente desenvolvido, que tem recebido a contribuio de grandes pesquisadores. Para exemplicar a formao de uma rede, o fsico Albert Barabsi criou a ilustrao de um evento com dez convidados como representado na Figura 2.1 [14], em que, a princpio, nenhum deles se conhecem. Os laos, ou vnculos sociais, so formados medida que os convidados comeam a conversar em pequenos grupos.

Figura 2.1: O Evento.

No incio, os grupos esto isolados uns dos outros, como no painel esquerdo. Com o passar do tempo, trs convidados migram para diferentes grupos, emergindo um grande agrupamento, ilustrado no painel direito. Embora nem todos se conheam, existe agora uma nica rede social constituda por todos os convidados. possvel encontrar um caminho por entre dois indivduos quaisquer, simplesmente seguindo os vnculos sociais. Os convidados so os ns, e cada encontro cria um elo social entre eles. assim que surge uma rede de conhecidos, ou um grafo, congurando um aglomerado, ou um cluster, de ns conectados por links. Independente da identidade e da natureza dos ns e dos links, matematicamente eles formam uma mesma estrutura: um grafo ou uma rede [14]. A representao em forma de grafo da Figura 2.1 pode ser visualizada na Figura 2.2.

Figura 2.2: Grafo do Evento.

2.3 Redes Sociais

30

Inicialmente no h nenhuma novidade nessa explanao. O cerne da questo, porm, que no passado, redes foram vistas como objetos de estrutura pura, cujas propriedades so xas no tempo, o que se distancia da realidade. As redes reais representam populaes de componentes que esto em atividade constante, gerando energia, e a estrutura das relaes entre estes componentes afeta o comportamento individual, e consequentemente o comportamento do sistema como um todo. Alm disso, redes so objetos dinmicos no apenas porque coisas acontecem em seu interior, mas porque elas prprias evoluem no tempo, impelidas pelas aes de seus componentes. Na era da conectividade, portanto, o que acontece e o modo como acontece depende da rede, que por sua vez, depende do que havia acontecido antes. esta nova viso de rede que verdadeiramente nova na Cincia das Redes [106].

2.3

Redes Sociais

Em um sentido bsico, uma rede social um conjunto de dois tipos de elementos: seres humanos e suas conexes entre si [87]. A organizao destas redes no costuma ser imposta por algum mecanismo, evoluindo organicamente da tendncia natural de cada pessoa buscar e fazer suas relaes conjugais, prossionais, e sociais de maneira geral. Existem duas caractersticas fundamentais que regem este tipo de rede, sejam estas pequenas comunidades ou a rede social mundial. Primeiro, h uma conexo, que indica quem est conectado a quem [30]. Quando um grupo constitudo como uma rede, h um padro especco de links que conectam os componentes envolvidos, descrevendo como os mesmos esto interligados: a topologia. Em redes sociais, estas conexes so constitudas pelos complexos laos de amizade criados pelos seres humanos, e o modo como a rede construda ou visualizada depende de como estes laos so denidos. Segundo, h contgio, que diz respeito ao que ui ao longo dos laos sociais. Poderiam ser informaes, ou vrus. Cada um desses uxos se comporta de acordo com suas prprias regras [30]. Entender por que as redes sociais existem e como elas funcionam, exige que as regras em relao conexo e ao contgio sejam entendidas. Esses princpios explicam como os laos fazem das redes sociais verdadeiros sistemas complexos, transformando-as em algo bem maior do que uma mera coleo de indivduos. Em um estudo experimental, que agrupava um conjunto de dados contendo indicadores de emoes e conexes sociais ao longo do tempo, os pesquisadores Nicholas Christakis e James Fowler mapearam os grafos da felicidade, da obesidade, dos fumantes, dentre outros, de uma amostra de 12.067 pessoas de Framingham, Massachussets. Eles estavam especialmente interessados em determinar se a disseminao das emoes ocorria alm das amizades diretas, e por intermdio deste estudo, deniram as regras fundamentais, que regulamentam tanto a formao quanto a operao das redes sociais [30]:

2.3 Redes Sociais

31

Regra 1: As pessoas modelam suas redes. As pessoas denem a estrutura de suas redes de trs modos: decidem com quantas pessoas desejam se conectar, inuenciam a densidade de interconexo de seu amigos, servindo como mediadores, e controlam quem est no centro da rede atravs da dinmica de encontros; Regra 2: As redes sociais modelam as pessoas. Quando as pessoas com as quais um indivduo est conectado tornam-se mais bem conectadas, isso reduz a distncia que o mesmo tem de percorrer para alcanar todos na rede. O indivduo se torna mais central, o que o deixa mais suscetvel ao que esteja uindo pelos laos sociais; Regra 3: Os amigos de uma pessoa a afetam diretamente. Um determinante fundamental do uxo a tendncia dos seres humanos se inuenciarem. Cada um dos laos diretos oferece oportunidades para inuenciar e ser inuenciado; Regra 4: Os amigos dos amigos de uma pessoa a afetam indiretamente. Os amigos podem inuenciar as pessoas, mas os amigos deles tambm podem inuencilas. Isso uma ilustrao da disseminao hiperdidica, ou tendncia de os efeitos se disseminarem para alm das conexes sociais diretas; Regra 5: A rede tem vida prpria. As redes sociais possuem propriedades e funes que no so controladas ou percebidas pelas pessoas em seu interior, sendo estas somente entendidas, ao se estudar o grupo inteiro, e no indivduos isolados. A relevncia do estudo da estrutura de redes sociais consiste no entendimento de como esta estrutura afeta o uxo. Os socilogos James Moody, Katherine Stovel e Peter Bearman visualizaram esta dinmica, ao mapearem redes sociais americanas [17]. Na rede da Jefferson High School, apresentada na Figura 2.3 [17], uma pessoa X pode ser atingida por um vrus, ou por uma inovao qualquer. A pessoa A est a cinco passos distantes da pessoa X, o que possibilita ao vrus em cinco saltos alcan-la.

Figura 2.3: Jefferson High School.

2.3 Redes Sociais

32

Ocasionalmente, se um lao social a dois passos de distncia da pessoa A, A, for cortado, ela no pode concluir que est evitando a doena, pois a estrutura permite que o vrus circule por um outro caminho maior e, mesmo assim, alcance-a. Ainda na Figura 2.3, a pessoa B, assim como a A, tambm est conectada a trs pessoas, distante cinco passos da pessoa X. Mas agora, se um lao a duas pessoas distantes da pessoa B, B, for cortado, a pessoa B estar isolada da epidemia. Sua posio na rede bastante diferente da pessoa A, mas ela no tem a perspectiva para visualizar isso. Sem essa viso completa da rede, no h como obter tal perspectiva. A pessoa B est a merc da rede em que reside, com algum controle sobre suas conexes diretas, mas sem controle em relao s pessoas com quem est conectada indiretamente [30]. Comparando com outra rede de pessoas em Colorado Springs, Figura 2.4 [17], percebe-se que a pessoa A tambm tem trs contatos, neste caso mais bem conectados, tornando-a mais suscetvel ao que ui na rede. Por essa perspectiva, as pessoas tornam-se vulnerveis ao que circula nas redes no por quem so, mas por quem conhecem [30].

Figura 2.4: Colorado Springs.

2.3.1

Redes Sociais Online

A inveno de cada novo mtodo de comunicao contribuiu para a extenso e a suplementao dos meios convencionais das pessoas formarem conexes. No caso particular da Internet, as relaes surgidas online podem ser desimpedidas por vrias circunstncias ou caractersticas como geograa, timidez e at discriminao. As redes sociais online, essencialmente as mais populares durante os ltimos anos, so sites de servios que permitem aos usurios criarem um perl pessoal pblico, ou semipblico, em um ambiente de acesso limitado [22]. Exibindo uma lista de outros usurios com que cada um compartilha uma conexo, estes sites tornam possvel a visualizao das conexes dos usurios no sistema.

2.3 Redes Sociais

33

A amplitude e o imediatismo da cultura da rede social online, possibilitam muito mais a disseminao de comportamentos. O feedback instantneo obtido pode ser fornecido para um breve impulso, que poderia ter desaparecido sozinho em geraes anteriores que ainda no contavam com essa tecnologia. O primeiro site de rede social reconhecvel, SixDegress.com, foi lanado em 1997 [30]. Mesmo atraindo muitos usurios, o site falhou como negcio em 2000, pois o mercado ainda no estava pronto para o conceito. Em 2002, o Friendster foi lanado para competir com o site de relacionamento Match.com [30]. Diferentemente do Match.com, que se concentrava em facilitar a apresentao de estranhos, o Friendster explorou a ideia de que os amigos de amigos seriam um grupo mais interessante para atrair parceiros romnticos. Alm disso, o Friendster revelou que saber algo sobre os amigos de algum poderia dizer mais sobre esta pessoa do que ela estaria preparada para revelar. Este site denitivamente mostrou o interesse duradouro de muitas pessoas em saber a quem esto conectadas, e como tais conexes so viabilizadas. Com a queda de popularidade do Friendster, o MySpace, lanado em 2003, acabou ganhando grande notoriedade, especialmente entre os artistas. No obstante, ele foi logo obscurecido por um forte concorrente: o Facebook [30]. A rede social online Facebook teve incio em Harvard, em 2004, mas sua histria est, de fato, arraigada em um fenmeno real. O nome vem de uma instituio existente h dcadas em Harvard. Anualmente a instituio publicava e distribua um livro, facebook, que mostrava fotos de todos os estudantes de cada classe e onde viviam no campus [30]. Vinte e cinco anos depois, Mark Zuckerberg colocou o facebook online, e isso se tornou to popular que rapidamente se espalhou para outras instituies. Em Junho de 2008, o Facebook ultrapassou mundialmente o MySpace em nmero total de usurios, tornando-se a maior rede social online j existente [30]. Segundo Christakis e Fowler, a Internet permite quatro novas caractersticas, que so modicaes radicais de tipos existentes de interao social [30]: Enormidade: Vasto aumento na escala das redes pessoais e no nmero de pessoas que podem ser alcanadas; Vizinhana social: Expanso da escala da qual as pessoas podem compartilhar informaes e contribuir com esforos coletivos; Especicidade: Aumento impressionante na particularidade dos laos formados; Virtualidade: Capacidade de assumir identidades visuais. A congruncia dos laos sociais online pode ser vista gracamente. A Figura 2.5 ilustra a diferena na capacidade de conexo entre a vida real e a online de 140 estudantes

2.4 Seis Graus de Separao

34

universitrios do estudo de Christakis e Fowler sobre o Facebook [30]. O que era uma tnue rede tornou-se um novelo entrelaado de os.

Figura 2.5: Amostra de Usurios do Facebook.

A mudana drstica ocorrida, que no passado, costumava-se exigir muito para a obteno de qualquer tipo de reforo, ou inuncia, o que hoje pode depender de apenas um clique. Essa condio oferece um nvel de contato humano jamais outrora visto. Toda essa capacidade de conexo pode contribuir signicativamente para a localizao de indivduos especcos nas redes sociais online. No obstante, esse benefcio tambm vem com um preo. Estar mais conectado signica poder localizar mais pessoas, o que torna a tarefa de encontrar a pessoa certa, um exerccio de extrema pacincia. Em breve, tudo o que se dissemina entre as pessoas se propagar a distncias maiores e mais rapidamente, solicitando novos recursos que acompanhem a escala de interaes.

2.4

Seis Graus de Separao

Em 1967, o psiclogo social Stanley Milgram estava interessado em uma hiptese no resolvida da comunidade sociolgica da poca [74]. A hiptese armava que o mundo, se visualizado como uma enorme rede de relaes sociais, de alguma forma era pequeno. O fenmeno do mundo pequeno, como era conhecido, garantia que qualquer pessoa pudesse ser contatada atravs de uma rede de amigos em apenas alguns passos. Milgram realizou um experimento, cujo objetivo era descobrir quantas pessoas seriam necessrias para conectar dois indivduos selecionados ao acaso nos Estados Unidos. Ele escolheu duas pessoas-alvo, em Sharon, e em Boston, no estado de Massachusetts. Escolheu Wichita, em Kansas, e Omaha, em Nebraska, como pontos de origem para o estudo, pois estas cidades pareciam bem distantes, tanto geogrca, como socialmente de seus destinos. Na poca, havia pouco consenso em torno de quantos links seriam necessrios para realizar estas conexes, sendo a estimativa tpica, na casa de centenas [14]. O experimento de Milgram envolveu a remessa de cartas a moradores aleatoriamente selecionados de Wichita e Omaha pedindo-lhes que participassem de um estudo

2.4 Seis Graus de Separao

35

sobre contato social, cuja tarefa era tentar contatar uma das pessoas-alvo, atravs de suas redes de amizades. As cartas continham breve sumrio do propsito do estudo, uma foto, o nome e o endereo, bem como outras informaes sobre uma das pessoas-alvo. Caso no conhecesse diretamente a pessoa-alvo, a pessoa-origem deveria optar por algum em sua rede, que por sua vez pudesse conhec-la, e assim sucessivamente at que a pessoa-alvo fosse localizada. Para o psiclogo, se a quantidade de links oscilasse em torno de uma centena, provavelmente o experimento malograria, pois sempre existem indivduos ao longo da cadeia que no cooperam. De forma surpreendente, 43 das 160 cartas chegaram, o que permitiu o clculo do nmero mdio de pessoas intermedirias, constatado por Milgram pela pequena cifra de 5,5 [14]. Arredondando-se, portanto, chega-se aos famosos seis graus de separao, que de fato, representam seis passos ou seis links de distncia. Em 2002, os pesquisadores Peter Dodds, Roby Muhamad e Duncan Watts replicaram o experimento de Milgram em uma escala global utilizando o e-mail como modo de comunicao. Eles recrutaram milhares de voluntrios para enviar uma mensagem a alvos espalhados em todo o mundo. Surpreendentemente, tambm foram necessrios, grosso modo, seis passos em mdia para enviar o e-mail a cada pessoa-alvo, raticando a estimativa original de Milgram [39]. Os seis graus de separao intrigam por dois motivos. Primeiro, por sugerirem que a sociedade mundial pode ser navegada pelos links sociais de uma pessoa a outra. Segundo, porque em uma rede de mais de 7 bilhes de ns, qualquer par de ns encontrase, em mdia, a seis links um do outro, evidenciando a problemtica. Em uma tentativa de modelar o problema, Watts exemplicou a situao em que determinada pessoa, Ego, possui cem amigos [106]. Cada amigo de Ego tambm possui cem amigos. Portanto, a um grau de separao, Ego est conectada a cem pessoas, e a dois graus, dez mil. A trs graus, chega-se a um milho. A quatro, cem milhes, e a cinco dez bilhes de pessoas. Desta forma, se todos no mundo tivessem cem amigos, em seis passos seria possvel contatar toda a populao, raciocnio ilustrado na Figura 2.6 [106].

Figura 2.6: Rede Social Hipottica.

2.5 Trs Graus de Inuncia

36

O mnimo de inclinaes sociolgicas j permite a deteco do principal erro desse raciocnio. Se uma pessoa pensar nos seus melhores amigos, e em sequncia, se lembrar dos melhores amigos destes ltimos, certamente ela vericar a sobreposio de indivduos neste crculo de amizade. Essa observao se revelou como uma caracterstica quase universal, no apenas de redes sociais, mas de redes em geral. Elas exibem o que se chama de aglomerao, ou clustering, o que equivale a dizer que a maioria dos amigos de algum tambm tem, em algum nvel, amizade entre si, criando redundncia [106]. De fato, como observou Watts, redes sociais lembram muito mais a Figura 2.7 [106]. Isso ocorre, pois as pessoas tendem a ter grupos de amigos, sendo cada grupo um pequeno aglomerado baseado em experincias, localizao ou interesses compartilhados.

Figura 2.7: Rede Social Real.

O paradoxo das redes sociais que o experimento de Milgram ressaltou, que apesar do mundo ser altamente aglomerado, as pessoas ainda podem contatar qualquer indivduo em uma mdia de poucos passos. Embora a hiptese do mundo pequeno tenha permanecido incontestada por mais de trs dcadas, continua surpreendente at hoje.

2.5

Trs Graus de Inuncia

O fato das pessoas estarem conectadas a seis graus de separao, no signica que dominam todas as outras. A pesquisa de Christakis e Fowler mostrou que a disseminao da inuncia nas redes sociais obedece quilo que chamaram de Regra dos Trs Graus de Inuncia [30]. Tudo o que um indivduo faz, tende a reverberar pela rede, exercendo um impacto que se dissipa a cada grau de separao, at um provvel limite. Eles concluram que, apesar da possibilidade de conexo, alm da fronteira dos trs graus de separao, a inuncia humana para de ter efeito perceptvel. Quando o objeto de estudo, portanto, o contgio ou a inuncia, os trs graus de separao parecem limit-los em profundidade.

2.6 Modelagem de Redes

37

De acordo com a pesquisa, h trs possveis razes para essa inuncia ser limitada. Primeiro, existe deteriorao na delidade das informaes durante sua transmisso. Christakis e Fowler nominaram este motivo de explicao do decaimento intrnseco [30]. Segundo, a inuncia pode diminuir devido a uma transformao inevitvel na rede que torna instveis os elos alm dos trs graus de separao, dada a rotatividade constante nos laos sociais por todo o caminho. Para uma pessoa A que est a quatro graus de distncia de uma pessoa B, qualquer um dos quatro laos intermedirios pode ser cortado, e B perder pelo menos um caminho at A. Consequentemente, para Christakis e Fowler, as pessoas no inuenciam indivduos a mais de trs graus de separao. Este motivo foi nominado pelos pesquisadores de explicao da instabilidade da rede [30]. Por m, a biologia evolutiva pode ser um fator preponderante. Os seres humanos talvez no sejam capazes de inuenciar pessoas a quatro graus de distncia, pois em seu passado homindeo, no havia distncias maiores do que trs graus. Christakis e Fowler nominaram este motivo de explicao do objetivo evolutivo [30]. Assim, embora a observao de que h seis graus de separao entre duas pessoas quaisquer se aplique ao grau de conexo, a observao de que h trs graus de inuncia se aplica ao grau de contgio. Para Christakis e Fowler, estas propriedades, conexo e contgio, so a estrutura e a funo das redes sociais.

2.6

Modelagem de Redes

No obstante sua sosticao, simplicar todas as redes em grafos algo que suscita alguns desaos formidveis. Se a sociedade, a Internet, a clula ou o crebro podem ser representados por grafos, cada um deles claramente diferente entre si. Como evidencia Barabsi [14], difcil imaginar que exista muito em comum entre a sociedade, na qual amigos e conhecidos so criados por intermdio de encontros casuais e decises conscientes, e a clula, na qual leis inexorveis da qumica e da fsica governam todas as reaes entre as molculas. Obviamente, deve haver uma diferena nas regras que governam a localizao de links nas vrias redes encontradas na natureza. Descobrir um modelo para descrever todos esses diferentes sistemas pode parecer, primeira vista, um desao intransponvel, ousadamente aceito pela Cincia das Redes.

2.6.1

Universo Randmico

Na dcada de 50, os brilhantes matemticos Paul Erds e Alfrd Rnyi aceitaram o desao de descrever todos os grafos complexos com um nico esquema, propondo uma formulao matemtica. Como cada sistema, particularmente obedece a regras dspares

2.6 Modelagem de Redes

38

na congurao de sua rede, Erds e Rnyi deliberadamente propuseram a soluo mais simples que a natureza poderia adotar: conectar os ns aleatoriamente [14]. Antes de Erds e Rnyi a Teoria dos Grafos no lidava com redes sociais ou grafos aleatrios, concentrando-se quase exclusivamente em grafos regulares, sem qualquer ambiguidade acerca de sua estrutura. No obstante, quando o objeto de estudo so sistemas complexos, os grafos regulares so a exceo, e no a regra. Erds e Rnyi reconheceram que os grafos reais, das redes sociais s linhas telefnicas, no so regulares, e sim, irremediavelmente complicados [14]. Subjugados por sua complexidade, ambos os matemticos admitiram que essas redes fossem randmicas. Os grafos regulares so os nicos que garantem para cada n, exatamente o mesmo nmero de links, formando verdadeiras redes igualitrias. Essa regularidade est claramente ausente nos grafos randmicos. Todavia, a premissa do modelo randmico profundamente igualitria, pois como os links so estabelecidos de maneira aleatria, cada n possui a mesma chance de obt-los. A Figura 2.8 [106] um grco da frao da rede, ou do grafo aleatrio, ocupado por seu maior componente conectado versus o nmero de links presentes. Watts mostrou, que quando se tem poucos links, nada se conecta [106]. Como as conexes so criadas de forma aleatria, quase sempre se conecta um n isolado a outro e, mesmo que um deles j possua uma conexo, ela provavelmente s levar a um pequeno nmero de ns. Intrigantemente, quando se acrescenta conexes para que cada n tenha na mdia uma conexo, a frao do grafo ocupada pelo maior componente salta, rapidamente, de quase 0 para cerca de 1. Na fsica essa mudana repentina conhecida como transio de fase, e o ponto em que isso comea a acontecer, chamado de ponto crtico [106].

Figura 2.8: Grco de Conexes Aleatrias.

Dessa forma, Erds e Rnyi explicaram que 1 o limiar. Se os ns tiverem menos de uma conexo em mdia, ento a rede se fragmentar em pequenos aglomerados incomunicveis, caso contrrio esse risco tornar-se- remoto. Essa observao relevante, pois se dois ns no so parte do mesmo componente, no podem se afetar mutuamente. Seria como se estivessem em sistemas diferen-

2.6 Modelagem de Redes

39

tes, com o comportamento de um no tendo nenhuma relao com o comportamento do outro [106]. A presena de um nico componente, conhecido na literatura tambm por componente gigante, signica que tudo o que acontece em um ponto da rede pode potencialmente afetar qualquer outro ponto. Sua ausncia, ao contrrio, implica que eventos locais s sero sentidos localmente. A natureza, via de regra, excede o mnimo de um link. Os socilogos estimam que as pessoas conheam entre 200 e 5 mil pessoas por nome. Um neurnio mdio est conectado a dezenas de outros, alguns a milhares. No corpo humano, muitas molculas participam de mais de uma nica reao, algumas, como a gua, de centenas. Erds descobriu que, independente da quantidade de ns, uma pequena porcentagem de ligaes aleatrias sempre suciente para ligar a rede como um todo quase que completamente conectado. Ainda mais surpreendente, que a porcentagem necessria diminui medida que a rede cresce [23]. Em uma rede de 300 pontos, h cerca de 45.000 ligaes possveis entre eles, mas, no mais que 2% dessas ligaes garantem rede um componente gigante completamente conectado. Para 1.000 pontos, a frao crucial de menos de 1%. Para 10 milhes de pontos, de apenas 0,00016%. Matematicamente, o resultado que em uma rede com N vrtices, a porcentagem necessria de ligaes para amarrar a rede em um componente gigante dada por: ln(N )/N , onde ln(N) o logaritmo natural de N [23]. Para uma rede de sete bilhes de pessoas, a frao revelada pelos clculos de Erds no seria mais do que 0,000000004, ou cerca de quatro em um bilho. Este nmero implica que, se as pessoas realmente estivessem ligadas aleatoriamente, uma pessoa tpica teria de conhecer cerca de uma pessoa a cada 305 milhes para que toda populao do mundo estivesse ligada em uma teia social inteiramente conectada. No total, isso signica apenas 23 conhecidos para cada uma das pessoas, um nmero bastante baixo se comparado ao estabelecido pela sociedade atual. Sob esse raciocnio, no seria surpreendente que duas pessoas quaisquer no mundo pudessem estar conectadas atravs de um caminho de ligaes sociais. Dentro dessa perspectiva, no incio de 1999, Barabsi juntamente com Rka Albert e Hawoong Jeong propuseram uma frmula matemtica que prediz a separao em uma rede randmica como uma funo do nmero de ns [16]. A origem da pequena distncia revelada neste tipo de rede devida funo logartmica presente na frmula. Para N ns em uma rede, que tenham em mdia k links, d links distantes, tem-se: d = logN /logk [16] Dessa forma, em duas redes, ambas com uma mdia de 10 links por ns, sendo uma delas cem vezes maior do que a outra, a separao na rede maior ser apenas dois graus superior separao na rede menor.

2.6 Modelagem de Redes

40

Porm, por mais sosticada que seja a teoria dos grafos aleatrios, as descobertas recentes sobre as redes reais, de redes sociais a redes neuronais, sugerem que elas no so nem um pouco similares aos grafos de Erds e Rnyi. Caso as pessoas realmente escolhessem seus amigos aleatoriamente, seria muito mais provvel que elas zessem amizade com algum de outro continente do que com algum em suas prprias vizinhanas. Alm disso, mesmo que as pessoas tivessem mil amigos, a chance de quaisquer dois amigos dessas pessoas se conhecerem seria grosseiramente uma em sete bilhes [106]. Pela experincia cotidiana, sabe-se que os amigos de uma pessoa tendem a se conhecer, logo, grafos aleatrios no podem ser uma boa representao do mundo social. Desta forma, para se entender as propriedades e o comportamento de redes no mundo real, a questo da estrutura no randmica teve de ser enfrentada.

2.6.2

No Aleatoriedade

Contempornea pesquisa de Erds e Rnyi, o matemtico Anatol Rapoport e seus colaboradores iniciaram uma pesquisa sobre redes aleatoriamente conectadas e tentaram enfrentar o que viram como falhas essenciais [86]. Incumbidos de compreender a disseminao de doenas na sociedade, os pesquisadores logo perceberam que para algumas delas, a rede subjacente crtica. Dentre algumas indagaes que o grupo de Rapoport levantou, destacam-se: Algumas relaes deveriam ser reconhecidas como mais importantes do que outras? A maioria das pessoas tem aproximadamente o mesmo nmero de amigos, ou algumas tm muito mais amigos do que a mdia? Como se explica a existncia de grupos, dentro dos quais os laos de amizade so densos, mas entre os quais as conexes so relativamente esparsas? Tais indagaes provavam que a no aleatoriedade era muito mais difcil de denir, j que praticamente todos os grafos aleatrios so essencialmente os mesmos. A homolia, tendncia consciente ou inconsciente de se associar a pessoas similares, de certa forma ajuda a explicar como as pessoas se conhecem em sociedade. No obstante, a pesquisa de Rapoport se concentrava na questo de como os indivduos que as pessoas conhecem hoje determinam os que elas conhecero no futuro. Para isso, ele introduziu o conceito de pensamento tridico [86]. Em redes sociais, o nvel seguinte em simplicidade da dade, e base de toda estrutura de grupo, um tringulo, ou trade, que surge sempre que um indivduo tem dois amigos que tambm se conhecem. A incluso da dinmica nesta perspectiva conduz situao natural, de que dois estranhos que possuam um amigo em comum tendero a

2.6 Modelagem de Redes

41

se conhecer com o tempo [86]. Redes sociais, portanto, ao contrrio de redes aleatrias, evoluiro de forma que as trades tendem a se fechar sobre si mesmas. Rapoport identicou que a aleatoriedade falha em capturar alguns dos princpios ordenadores mais poderosos que tambm governam as escolhas que as pessoas fazem. Percebendo que deveria de alguma forma, equilibrar esses dois conjuntos de foras em um nico modelo, o matemtico concluiu que as redes reais seguem alguns princpios ordenadores importantes, sendo em todo o resto, aleatrias. Ele chamou sua nova classe de modelos de redes aleatrias inexionadas [106]. Nas redes sociais, as pessoas agem em parte devido posio estrutural que ocupam, e em parte devido s suas preferncias e caractersticas inatas. A estrutura da rede ao tecer uma teia social, faz com que os indivduos que uma pessoa conhecer amanh dependam, ao menos em algum nvel, dos que ela j conhece hoje. Todavia, as caractersticas intrnsecas dos indivduos os levam a conhecer pessoas que no tm conexo alguma com seus amigos anteriores. Portanto, a evoluo de uma rede social impelida por um jogo entre essas duas foras, conhecidas em sociologia por estrutura e agncia. Como a agncia a parte do processo de deciso de um indivduo restrita s suas caractersticas intrnsecas, aes derivadas da mesma parecem eventos aleatrios [106]. Uma vez que as aliaes aparentemente aleatrias tenham sido feitas, a estrutura novamente entra em cena, e as interseces recm-criadas se tornam as pontes por onde outros indivduos podem atravessar, formando novas aliaes.

2.6.3

Pontes entre Mundos

Ao contrrio da maioria dos pesquisadores de redes sociais, o socilogo Mark Granovetter investigou qual poderia ser o segredo dos mundos pequenos, inspirado nos trabalhos de Rapoport [50]. Os trabalhos sobre redes sociais anteriores ao de Granovetter, no diferenciaram a fora das amizades ou dos laos entre as pessoas, que obviamente possuem diferenas de intensidade. Em termos gerais, o socilogo denominou de laos fortes, aqueles que existem entre membros de uma mesma famlia, ou entre bons amigos, ao passo que laos fracos unem apenas conhecidos. Vrios autores que tentaram operacionalizar as diferenas entre os dois tipos de laos, vericaram a existncia dos seguintes traos caractersticos [66]: Os laos fortes do origem a relaes mais frequentes do que os laos fracos, sendo os servios recprocos mais comuns nos primeiros; H igualmente mais intensidade emocional nos laos fortes do que nos laos fracos; A multiplexidade da relao maior nos laos fortes, o que signica que os amigos ento ligados entre si em reas mais diversas do que os conhecidos.

2.6 Modelagem de Redes

42

A grande introspeco de Granovetter foi perceber que o fechamento tridico, percebido por Rapoport, s concretizado quando as pessoas esto fortemente ligadas. Em um grafo, esse princpio implica que os laos fortes no existem isoladamente. Desta forma, eles tendem a aparecer em tringulos, como exemplicado na Figura 2.9, e tringulos incompletos devem ser raros [23].

Figura 2.9: Tringulo Social.

O cientista social Ronald Burt denominou esses tringulos incompletos de buracos estruturais, armando que os mesmos so encontrados essencialmente nos grupos onde predominam os laos fracos [24]. Consequentemente, os buracos estruturais so numerosos nos grupos de fraca densidade em que se verica a ausncia de conexes diretas entre vrios pares de indivduos. A Figura 2.10, ilustra a situao onde o n A se encontra na posio de buraco estrutural.

Figura 2.10: Buraco Estrutural.

Essa ideia, aparentemente irrelevante, conduz a uma concluso paradoxal. Se um lao forte de uma rede social for removido, isso causar pouco efeito no nmero de graus de separao. Como os laos fortes quase sempre surgem em tringulos, ainda seria possvel ir de uma ponta a outra do elo rompido, em apenas dois passos, movendo-se pelas duas bordas restantes do tringulo. O que torna as coisas paradoxais que, por intuio, laos fortes parecem ser os laos responsveis por manter a rede coesa. Mas quando se trata dos graus de separao de uma rede, os laos cruciais, como Granovetter veio a demonstrar, so os laos fracos entre as pessoas, especialmente os que ele chamou de pontes sociais [50].

2.6 Modelagem de Redes

43

No contexto social, uma ponte tm o signicado de um caminho que proporciona fcil acesso entre dois indivduos. Na ilustrao de Buchanan, vericada na Figura 2.11 [23], laos fortes so representados por linhas contnuas, e laos fracos por linhas pontilhadas. O nmero de graus de separao entre os indivduos A e B salta de um para oito ao se remover o nico lao entre eles, demonstrando a importncia das pontes sociais.

Figura 2.11: Pontes Sociais.

Dessa forma, Granovetter chegou a uma concluso surpreendente: laos fracos tm frequentemente mais importncia do que laos fortes, porque agem como ligaes cruciais que costuram o tecido social. So eles os responsveis por criar os atalhos que ao serem eliminados, levam a rede a se desmanchar em componentes desconectados. Para Granovetter, pontes entre mundos propiciam um arranjo estrutural, que certamente favorece a condio de existncia de um mundo pequeno. Se os seis graus de separao realmente so verdade, atalhos sociais devem cumprir algum papel crucial. O argumento de Granovetter prope uma imagem de sociedade bem diferente do universo randmico de Erds e Rnyi. Se sua esquematizao estiver correta, trata-se se uma coleo de grafos completos, unidos uns aos outros por algumas ligaes fracas entre conhecidos que pertencem a diferentes crculos de amigos. A ilustrao de Barabsi apresentada na Figura 2.12 [14], demonstra claramente este tipo de arranjo social.

Figura 2.12: A Sociedade de Granovetter.

2.6 Modelagem de Redes

44

Para entender plenamente a estrutura da sociedade, a teoria das redes randmicas deveria ser conciliada, de certa forma, com a realidade das aglomeraes descritas por Granovetter. Combinada descoberta de Milgram dos seis graus de separao, estas linhas de pensamento preparavam o terreno para uma revoluo que hoje est repercutindo em reas to dspares entre si quanto a medicina, a sociologia e a economia.

2.6.4

O Modelo Alfa

Inconformados com a resignao ao problema do mundo pequeno por parte da comunidade cientca, os pesquisadores da Universidade de Cornell, Duncan Watts e Steven Strogatz, olharam para o problema sob uma nova perspectiva. Ao invs de se preocuparem sobre quo pequeno era o mundo, eles pesquisaram o que era necessrio para que um mundo se tornasse pequeno. Consequentemente, eles se propuseram a construir um modelo de rede social, aplicando sobre ele a fora da matemtica e dos computadores. Em vez de tentar determinar o equilbrio ideal entre desejo individual e estrutura social pr-identicados por Rapoport no mundo real, Watts e Strogatz comearam a examinar diversas perspectivas possveis. Sob este novo prisma, eles deniram a importncia relativa da ordem e da aleatoriedade como parmetros a serem ajustados, a m de percorrer um espao de possibilidades. Por conseguinte, os pesquisadores revelaram uma maneira engenhosa de conectar as ideias de Granovetter s de Milgram. Eles descobriram uma forma sutil de ligar os pontos no grafo que no era nem ordenada nem aleatria, mas algo entre estas duas formas, um padro incomum no qual o caos e a ordem se misturavam em equilbrio [23]. Analisando variaes deste grafo intermedirio, Watts e Strogatz descobriram que ele era a chave para revelar o enigma dos seis graus de separao. Para tornar compreensvel o modelo, Watts e Strogtaz propuseram a criao de dois mundos distintos [106]. No primeiro, nomeado por eles de cavernas, as relaes so vividas em laos coesos auto-reforados, deixando praticamente inconcebvel o incio de uma relao entre indivduos estranhos. No segundo, intitulado Solaria, as interaes so igualmente acessveis, fazendo com que relacionamentos anteriores sejam relativamente irrelevantes para o estabelecimento de novos laos sociais. Para criarem esses mundos, e alicerados sobre o modelo de sociedade previsto por Granovetter, os pesquisadores pensaram sobre a probabilidade de uma pessoa conhecer outra, em funo de quantos amigos possuam em comum em um dado momento. Para tanto, introduziram uma grandeza chamada coeciente de aglomerao [106]. Para exemplicar o clculo dessa mtrica, Watts ilustra a situao em que algum tem quatro amigos, que tambm so amigos entre si. Desta forma, obtm-se ao todo seis links de amizade. Se alguns desses quatro amigos no forem amigos uns dos outros, a

2.6 Modelagem de Redes

45

conta chegar a menos de seis links. Caso a quantidade de links estabelecida fosse quatro, o coeciente de aglomerao do crculo de amigos dessa pessoa seria 0,66, que se obtm dividindo-se o nmero de links entre os amigos de algum, pelo nmero de links possveis de amizade [106]. O coeciente de aglomerao informa o nvel de coeso do crculo de amigos dos indivduos. Pela tica de Granovetter, a sociedade deve comportar inmeras aglomeraes, o que consequentemente produz um alto valor para esta mtrica. Seguindo esse raciocnio, Watts deniu que no mundo das cavernas, uma ausncia de conhecidos em comum, sugere vidas em cavernas diferentes, logo, provavelmente as pessoas nunca se encontraro. Mas, se elas tiverem pelo menos um amigo em comum, a implicao que vivem na mesma comunidade, possuindo extrema probabilidade de se conhecer. No outro extremo, em Solaria, a histria social irrelevante para o futuro das pessoas. Mesmo que duas pessoas possuam vrios amigos em comum, tero quase a mesma probabilidade de se conhecer caso possuam nenhum [106]. Os dois tipos de mundo podem ser capturados pelas regras apresentadas no modelo da Figura 2.13 [106]. Neste modelo, verica-se que a tendncia de duas pessoas se tornarem amigas determinada pelo nmero atual de amigos em comum, mas que a maneira pela qual esta tendncia determinada difere drasticamente entre as duas regras. Esse foi o primeiro modelo matemtico de uma rede social, batizado por Watts de modelo alfa e, assim, seu parmetro ajustvel de controle se tornou alfa. Entre os dois extremos, uma famlia de regras de interao, especicada por um valor particular para . Quando = 0, tem-se o mundo das cavernas, quando se torna innito, Solaria[106].

Figura 2.13: Modelo Alfa.

A origem do fenmeno do mundo pequeno parecia depender da presena de dois mundos contraditrios [106]. O mundo das cavernas era bastante aglomerado, o que dicultava conectar todas as pessoas do mundo em apenas alguns passos. Em contraste, o mundo de Solaria tinha muito mais probabilidade de exibir caminhos curtos na rede,

2.6 Modelagem de Redes

46

pois um resultado padro da teoria dos grafos aleatrios que, em mdia, o comprimento tpico dos caminhos pequeno. No entanto, em um grafo aleatrio, a probabilidade de quaisquer dois amigos de uma pessoa se conhecerem se torna desprezvel para uma populao muito grande, o que consequentemente, deixa o coeciente de aglomerao com valores baixos. Este contexto, portanto, sugeria que um mundo poderia ser pequeno ou aglomerado, mas no as duas coisas simultaneamente, evidenciando o intrigante paradoxo das redes sociais.

2.6.5

Redes de Mundo Pequeno

Atravs da Figura 2.14 [106], Watts ilustrou o paradoxo das redes sociais. O comprimento tpico dos caminhos pequeno quando o valor de alfa baixo, se computado apenas entre ns de um mesmo componente. Similarmente, este comprimento apresenta o mesmo comportamento para valores altos de alfa. Todavia, para valores intermedirios do parmetro, o valor do comprimento dos caminhos dispara indiscriminadamente.

Figura 2.14: Comprimento dos Caminhos no Modelo Alfa.

esquerda do pico da Figura 2.14, as diversas cavernas esto se juntando, resultando em um aumento dos comprimentos de caminho. O mundo torna-se maior, pois os componentes anteriormente isolados comearam a se conectar. Naturalmente, cada vez mais pessoas podem ser contatadas, tornando este processo um pouco mais complicado. A direita do pico da Figura 2.14 representa a regio onde todos os componentes da rede se conectaram em um componente gigante. O comprimento dos caminhos decai medida que a regra de interao se torna mais aleatria. O pico em si representa o ponto crtico, no qual todo mundo ca conectado, mas os comprimentos tpicos dos caminhos tendem a ser grandes. O grande insight de Watts e Strogatz ocorreu quando os pesquisadores vericaram a localizao da transio do coeciente de aglomerao relativamente transio correspondente do comprimento dos caminhos. Eles perceberam que estes pontos de transio no eram correspondentes, como mostra a Figura 2.15 [106].

2.6 Modelagem de Redes

47

Figura 2.15: Coeciente de Aglomerao.

Como os pesquisadores concluram, a compreenso dessa perspectiva que o coeciente de aglomerao, C, no cai na mesma taxa do comprimento dos caminhos, L. Sob esta conjectura, as redes reais seriam capazes de exibir alta aglomerao, alm de uma pequena distncia entre seus componentes. Watts e Strogtaz denominaram essa classe de redes de redes de mundo pequeno. A comparao entre comprimentos de caminho e coeciente de aglomerao, realizada na Figura 2.15, mostra que a regio sombreada entre as curvas, onde L baixo e C alto, representa a presena de redes de mundo pequeno. O parmetro alfa representa um equilbrio entre as restries da estrutura social e a liberdade da agncia individual. Como no mundo real, cada pessoa pode se conectar a qualquer outra, na viso dos pesquisadores, este mundo certamente ca direita do pico da Figura 2.15. Mas por no saberem exatamente o que um valor especco de alfa poderia signicar, Watts e Strogatz perceberam que era necessrio, encontrar uma forma simplicada de ajustar cada rede entre a completa ordem e a completa desordem. Por conseguinte, comearam a interpolar redes de modo que se passasse por todos os estgios intermedirios em um novo modelo, designado modelo beta. Criaram inicialmente, um reticulado regular como o mostrado esquerda da Figura 2.16 [108], no qual cada n est conectado a um nmero xo de vizinhos mais prximos no anel. Em seguida, escolheram elos aleatoriamente e comearam a relig-los.

Figura 2.16: Modelo Beta.

2.6 Modelagem de Redes

48

Na prtica, o que eles zeram foi dar um valor, entre zero e um, ao novo parmetro ajustvel beta e, ento, visitaram cada elo no reticulado, religando-os aleatoriamente, com probabilidade beta [108]. Assim, quando = 0, nenhuma religao acontece, e as pessoas acabavam ligadas como no reticulado regular inicial. No outro extremo, quando = 1, todos os elos so religados, e o resultado uma rede muito prxima a um grafo aleatrio, completamente desordenada. A grande indenio era o que acontecia no meio desses extremos. Com uma pequena probabilidade de religao, ilustrada no centro da Figura 2.16, o objeto resultante assemelha-se a um reticulado regular, se diferenciando pela presena de algumas conexes aleatrias. Quando Watts e Strogatz examinaram o coeciente de clusterizao, alguns poucos elos aleatrios no faziam muita diferena, pois a maioria dos amigos das pessoas ainda se conhecia, logo, a aglomerao continuava alta. No obstante, o comprimento dos caminhos diminua dramaticamente, pois como os elos eram ligados uniformemente de forma aleatria, e como, em um grande reticulado, havia muito mais pontos longe dessa pessoa do que perto, a probabilidade era que ela fosse conectada a algum que estava distante [108]. E, ao faz-lo, no apenas estes indivduos cavam mais perto entre si, como tambm grandes pedaos do resto da rede cavam muito mais prximos. A principal descoberta dos pesquisadores consiste na vericao de que apenas alguns elos aleatrios, o que implica em uma pequena possibilidade de agncia individual, podem gerar um efeito surpreendente, visualizado na Figura 2.17 [106]. Quando beta deixa de ser zero, o comprimento dos caminhos, L, entra em queda livre, despencando exponencialmente, quase que como um eixo vertical. Consequentemente, ao diminuir a distncia entre os ns, cada atalho reduz o efeito marginal dos atalhos subsequentes [106].

Figura 2.17: Impacto das Religaes Aleatrias no Modelo Beta.

Nesse modelo simples, outro resultado surpreendente observado pelos pesquisadores que, na mdia, as primeiras cinco religaes aleatrias reduzem o comprimento

2.6 Modelagem de Redes

49

mdio dos caminhos da rede pela metade, independentemente do seu tamanho [106]. Assim como Erds descobriu que, independente da quantidade de ns, a porcentagem de ligaes aleatrias para ligar a rede em um grafo conexo diminui medida que a rede cresce, Watts e Strogatz identicaram que quanto maior a rede, maior o efeito da adio de cada elo aleatrio para a diminuio do comprimento dos caminhos. Desta forma, o impacto do acrscimo de elos se torna, na prtica, independente do tamanho. Essas redes intermedirias estavam realmente conseguindo unir o melhor de dois mundos, ser um mundo pequeno e altamente aglomerado. Uma rede com dez pessoas, ligadas de maneira puramente aleatria, possui as propriedades de redes de mundo pequeno. Mas, para 1.000 pessoas ligadas aleatoriamente, o coeciente de aglomerao de cerca de 0,006, o que no chega nem perto do que se encontra em uma rede social real. O que Watts e Strogatz provaram com o modelo beta, foi que a consequncia inevitvel da incorporao de ordem e algum nvel de desordem por parte dos sistemas conectados, ser a formao das redes de mundo pequeno. Como pista de uma aparente universalidade deste processo, os pesquisadores perceberam que este tipo de rede deveria surgir no apenas no mundo social, mas em outros tipos de rede encontrados na natureza. No muito tempo depois que os estudantes de computao Glen Wasson e Brett Tjaden disponibilizaram o site The Oracle of Kevin Bacon [105], Watts e Strogatz tiveram acesso base de dados utilizada no projeto. Este site capaz de calcular a distncia entre dois atores quaisquer de Hollywood, listando a cadeia de lmes e atores pelos quais esto conectados. De posse desta base de dados, os pesquisadores puderam calcular o comprimento mdio dos caminhos e o coeciente de aglomerao de toda a rede. O resultado pode ser visualizado na Tabela 2.1 [108]. Em um mundo com milhares de indivduos, cada ator pode ser conectado a qualquer outro em uma mdia de menos de quatro passos. Alm disso, os coadjuvantes de cada ator tinham alta probabilidade, 80% das vezes, de haver estrelado juntos em algum lme. Para Watts e Strogatz no havia dvida de que aquela era uma rede de mundo pequeno [108].
Tabela 2.1: Mundos Pequenos
Atores de Cinema Rede Eltrica C. elegans Lreal 3,65 18,70 2,65 Laleatrio 2,99 12, 40 2,25 Creal 0,79 0,080 0,28 Caleatrio 0,00027 0,005 0,05

L=Comprimento dos Caminhos e C=Coeciente de Aglomerao.

Curiosos para entender como as redes sociais se distinguem de outros tipos de rede, Watts e Strogatz comearam a estudar a rede de energia eltrica dos Estados Unidos e a rede de neurnios do nematdeo Caenorhabditis elegans, uma criatura to simples que os bilogos dos anos 80 foram capazes de mapear seu sistema nervoso inteiro [108].

2.6 Modelagem de Redes

50

A rede eltrica americana foi criada pela mente humana, e o sistema nervoso de um nematdeo, pela evoluo. No obstante, ambas as redes provaram ter quase exatamente a mesma estrutura apresentada pelo universo social, como tambm pode ser visualizado na Tabela 2.1. Como arma Buchanan, "por alguma razo, os grafos de Watts e Strogatz pareciam apontar para algum princpio organizador do mundo" [23]. Assim, Watts e Strogatz tinham agora trs exemplos de rede que, no apenas satiszeram a condio de mundo pequeno, como o zeram apesar de suas enormes diferenas de tamanho, densidade e, mais importante, natureza bsica. Subsequentemente, a comunidade cientca comeou a estudar vrios outros tipos distintos de rede. As propriedades de redes de mundo pequeno j foram identicadas na Web e nas redes fsicas que conectam os computadores na Internet. Os bilogos as descobriram na rede de molculas envolvidas em uma clula. Os ecologistas as encontraram nas cadeias alimentares. Os cientistas da computao as observaram nas redes de colaborao entre cientistas. A descoberta da aglomerao alou-a de caracterstica especca da sociedade posio de propriedade genrica das redes complexas, subvertendo a tratativa de que estas redes so randmicas.

2.6.6

Redes Sem Escala

Como as motivaes de Watts e Strogatz vinham de um estudo sobre mundos pequenos, eles no se interessaram pela anlise da quantidade de conexes que os indivduos possuem em suas redes [106], subjugando esta informao como irrelevante. A distribuio de graus de uma rede apresenta em uma nica imagem, como ilustrado na Figura 2.18, a probabilidade p(k) de um membro da rede, aleatoriamente selecionado, ter um nmero especco k de amigos, ou seu relativo grau de conexo.

Figura 2.18: Distribuio Normal.

A suposio que Watts e Strogatz zeram sobre as redes de forma geral, foi que elas teriam uma distribuio de graus semelhante da Figura 2.18, conhecida como curva de sino [106]. Ou seja, no apenas existiria um grau mdio denido, como a maioria dos ns tambm teria graus no muito distantes da mdia.

2.6 Modelagem de Redes

51

A distribuio deste tipo de curva decai de forma extremamente rpida em ambos os lados do pico pronunciado, geralmente em escala exponencial. Desta forma, a probabilidade de qualquer indivduo ter mais amigos do que a mdia torna-se desprezvel. Esse tipo de distribuio satisfazia uma importante exigncia dos modelos de Watts e Strogatz, que ningum na rede estivesse conectado a nada alm de uma pequena frao da populao inteira [106]. Diversas distribuies no mundo real, inclusive, as concernentes aos grafos aleatrios, possuem exatamente essas propriedades, motivo pelo qual usualmente esta distribuio conhecida como distribuio normal. Quando o trabalho pioneiro de Watts e Strogatz foi publicado, o grupo de pesquisa de Barabsi estava tentando entender a estrutura das redes complexas, enfocando a Web. Para isso, os cientistas construram um computador "rob", crawler, programado para surfar pela rede. O crawler comeava por um site qualquer, reunindo todos os links existentes no mesmo. Em seguida, ele seguia cada um dos links isoladamente, e repetia o procedimento para cada nova pgina encontrada. Ao encaixarem o histograma da conectividade de um n em um grco log-log, Barabsi e seus colaboradores vericaram que a distribuio de links em vrias pginas da Web seguia uma expresso matemtica denominada lei de potncia [15]. Leis de potncia so outro tipo de distribuio dos sistemas naturais, com dois diferenciais cruciais perante as distribuies normais. Primeiro, uma lei de potncia no tem um pico em seu valor mdio, comeando no valor mximo e decrescendo at o innito, como exemplicado na Figura 2.19. Segundo, o ritmo em que a lei de potncia decai muito mais lento do que o da distribuio normal, constituindo sua "cauda longa".

Figura 2.19: Distribuio por Lei de Potncia.

Comparadas com as curvas de sino, as curvas baseadas em leis de potncia tendem a zero mais lentamente, o que implica uma maior probabilidade de existirem ns dotados de um nmero realmente grande de links. O grupo de Barabsi nomeou estes ns bem conectados de hubs, constatando que os mesmos detm 80 a 90% do nmero total de ligaes da rede, em detrimento de uma maioria de ns com poucas conexes [15]. Aps a descoberta sobre a Web, ao analisarem a rede de atores de Hollywood, o grupo de Barabsi vericou que o nmero de atores que tinham links com exatamente

2.6 Modelagem de Redes

52

k outros atores decaa seguindo uma lei de potncia. A rede existente no interior da clula integrou a lista quando vericaram que o nmero de molculas que interagem com exatamente k outras molculas decresce seguindo uma lei de potncia. O mesmo ocorreu com a distribuio de graus da rede de citaes cientcas [15]. O expoente de uma distribuio por lei de potncia rege como a mesma muda em funo da varivel subjacente. Se o nmero de elementos com especco grau de conexo decai na razo inversa do seu grau de conexo, a distribuio tem expoente 1. Caso a distribuio decresa na razo inversa do quadrado do tamanho, o expoente ser igual a 2. Subsequentemente, em diversas redes que o grupo de Barabsi e outros cientistas tiveram a oportunidade de investigar, surgiu um padro incrivelmente simples. O nmero de ns com exatamente k links obedece a uma lei de potncia, cada qual com um expoente que, para a maioria dos sistemas, varia entre 2 e 3. Isso implica que o nmero de pginas da Web com exatamente k links apontando para si, denotado por N(k), dado por [5]: N (k) ky , sendo o expoente y para a Web 2,1. Percebe-se melhor as diferenas visuais e estruturais entre redes randmicas e regidas por leis de potncia, ao se comparar os mapas rodovirios e de linhas areas dos Estados Unidos, como precisamente ilustrou Barabsi na Figura 2.20 [14].

Figura 2.20: Mapas Rodovirios e de Linhas Areas dos EUA.

Nos mapas rodovirios, as cidades so os ns e as estradas que as conectam, os links. Esta rede apresenta caractersticas de distribuio uniforme, pois cada cidade grande tem pelo menos um link com o sistema rodovirio, e no h cidades servidas por

2.6 Modelagem de Redes

53

centenas de estradas [14]. Desta forma, muitos ns possuem aproximadamente o mesmo nmero de links, propriedade inerente s redes randmicas. O mapa das linhas areas difere fortemente do mapa rodovirio. Na rede area, os ns so aeroportos conectados por voos diretos. A maioria dos aeroportos pequena, representando ns que possuem poucos links, que por sua vez, os conectam com um ou diversos hubs, dos quais partem voos para quase todos os outros aeroportos do pas [14]. A ausncia de um pico em uma distribuio de grau por lei de potncia implica a inexistncia de um n caracterstico neste tipo de rede, que apresenta uma contnua hierarquia de ns, desde os raros hubs aos numerosos ns menores. A ateno para os hubs merecida, pois eles dominam a estrutura de todas as redes nas quais esto presentes [14]. De fato, com links para uma quantidade extraordinariamente grande de ns, os hubs criam atalhos entre dois ns quaisquer do sistema, denindo sob sua perspectiva, verdadeiros mundos pequenos. Subjugada inicialmente por sua irrelevncia, a distribuio de grau das redes reais passou a partir de ento, a ocupar o seu devido lugar nos estudos sobre redes e sistemas complexos. Diante das comprovaes expostas pelo grupo de pesquisa de Barabsi, as leis de potncia obrigavam os cientistas a abandonar a ideia de uma escala ou de um n caracterstico nas redes estudadas. Por esse motivo, elas comearam a ser descritas pelo prprio grupo como redes sem escala, ou redes livres de escala [15]. A descoberta das leis de potncia por si s j era muito importante, mas o que realmente atraiu o interesse da comunidade cientca, foi o mecanismo de crescimento, proposto por Barabsi juntamente com Rka Albert, pelo qual as redes poderiam evoluir no tempo [106]. O modelo de Watts e Strogatz props uma explicao simples para a aglomerao, colocando-a junto com as redes randmicas sobre a mesma gide. No obstante, este modelo no esclareceu como surgem os hubs. Inicialmente, Barabsi percebeu que a maioria das redes reais compartilha um trao essencial: o crescimento [15]. Qualquer tipo de rede, certamente comea com poucos ns, cresce de forma incremental adicionando novos ns, e atinge o tamanho atual. Tanto o modelo de Erds e Rnyi quanto o de Watts e Strogatz no previam esse crescimento, pois se preocupavam somente com as ligaes entre um nmero xo de ns. Ao tentar explicar a existncia dos hubs, Barabsi e seus colaboradores incorporaram o crescimento aos modelos de rede [106]. No entanto, eles demonstraram que somente esta propriedade no explica a emergncia das leis de potncia. A concluso do grupo do cientista foi perceber que nas redes reais, a conexo nunca aleatria, pois ela depende da popularidade. "As pginas da Web com mais conexes tm maior probabilidade de serem conectadas novamente, pessoas mais conhecidas fazem mais novos amigos" [14]. Por esta perspectiva, a evoluo das redes governada pela conexo preferencial [15]. Guiados por ela, inconscientemente os indivduos adicio-

2.6 Modelagem de Redes

54

nam links a uma taxa mais elevada para escolher ns que j so altamente conectados. Encaixando as peas do quebra-cabea, Barabsi e Albert descobriram que as redes so governadas por duas leis: crescimento e conexo preferencial. Para responder se estas leis so sucientes para explicar os hubs e as leis de potncia, ambos os pesquisadores propuseram um modelo de rede que incorporava as duas leis, atravs de um algoritmo denido pelas regras seguintes [15]: Crescimento: para cada iterao, adiciona-se um novo n rede; Conexo preferencial: cada novo n deve se conectar aos ns existentes com dois links, sendo a probabilidade de escolha proporcional ao nmero de links dos ns. Esse modelo representado na Figura 2.21, combinando crescimento e conexo preferencial, foi a primeira tentativa bem sucedida de explicar os hubs. As simulaes computadorizadas de Albert logo indicavam que ele sempre gerava leis de potncia, sendo posteriormente denominado pelo grupo de pesquisa como modelo sem escala [14].

Figura 2.21: Modelo Sem Escala.

Albert rodou esse processo inmeras vezes, e mesmo mudando o nmero de ns iniciais ou de links adicionados a cada iterao, a distribuio de graus permaneceu a mesma. As redes que emergiam eram sempre similares em termos de arquitetura. Todas eram mundos pequenos, com caminhos curtos entre os elementos, apresentavam aglomerao, e revelavam a peculiaridade dos hubs, como ilustrado na Figura 2.22.

Figura 2.22: Rede Gerada pelo Modelo Sem Escala.

2.6 Modelagem de Redes

55

O crescimento desempenha papel importante, pois a expanso da rede signica que os primeiros ns dispem de mais tempo do que os ltimos para adquirir links. A antiguidade, contudo, como concluiu Barabsi, no explica sozinha as leis de potncia. Os hubs requerem a ajuda da conexo preferencial. Como novos ns preferem conectar-se a ns mais conectados, os primeiros ns com mais links sero escolhidos com mais frequncia. Assim, eles crescero mais rapidamente do que os ns mais jovens e menos conectados, criando um fenmeno conhecido como rico ca mais rico [15]. Um processo semelhante parece estar por trs do crescimento das redes sociais. No experimento original de Milgram, as cartas que conseguiram chegar pessoa-alvo no percorreram a ltima etapa at o destino nal vindas de qualquer lugar. De todas as que chegaram, dois teros foram enviadas por um nico contato [14]. Estas pessoas so os hubs, os eixos altamente conectados do mundo social. A simples generalidade do modelo de Barabsi e Albert prometia uma nova forma de entender a estrutura das redes como sistemas em evoluo dinmica, no importando sua natureza. Enquanto o sistema obedecesse aos dois princpios bsicos de crescimento e conexo preferencial, a rede resultante seria livre de escala. Se a descoberta de Watts e Strogatz foi um primeiro passo para a compreenso do mundo das redes complexas, o reconhecimento dos hubs e das leis de potncia para a distribuio das ligaes foi um segundo passo igualmente importante.

2.6.7

Redes por Aliao

Da mesma forma que Barabsi percebeu a falha de Watts e Strogatz em reconhecer os hubs e as leis de potncia, Watts igualmente identicou falhas nos modelos livres de escala. A limitao essencial deste ltimo modelo, que os laos so tratados como processos sem custo, podendo um n ter tantos links quanto capaz de acumular [106]. Sendo assim, o modelo adota uma viso que desconsidera restries de limitao relativa aos ns, assumindo que os mesmos no possuem diculdades de criar e manter conexes. Para Watts, apesar de ter cado claro o efeito das conexes preferenciais em relao Web, o mesmo processo conectivo no poderia ser efetivamente garantido para outros tipos de redes, como sistemas humanos, biolgicos, ou de engenharia. Alm disso, em uma sociedade, uma vez que as pessoas tenham feito seus contatos iniciais, a estrutura social em que esto inseridas torna alguns indivduos mais acessveis que outros, independente de seus respectivos graus de conexo. Este era o efeito que Watts e Strogatz tentaram capturar em seus modelos de mundos pequenos, pois os modelos livres de escala no tinham elementos de estrutura e dinmica social. Por conseguinte, juntamente com Steven Strogatz, Mark Newman e Peter Dodds, Watts iniciou o projeto de um novo modelo de redes, mas que desta vez, no se baseasse

2.6 Modelagem de Redes

56

em reticulados articiais [106]. No obstante, assim que a mtrica do reticulado era removida, no existia mais a possibilidade de se determinar a distncia entre os ns e, portanto, sua probabilidade de estarem conectados. Foi neste momento, que o grupo de pesquisa observou como as pessoas computam distncias sociais de uma forma bastante complexa, geralmente caracterizando uma possvel violao da condio formal matemtica conhecida como desigualdade triangular. Segundo essa desigualdade, o comprimento de qualquer lado de um tringulo sempre menor ou igual soma dos comprimentos dos outros dois lados. Na Figura 2.23, a condio da desigualdade triangular garante que:

Figura 2.23: Desigualdade Triangular.

Para entender como a violao dessa condio acontece, necessrio entender inicialmente como distncias podem ser medidas nesse contexto. A primeira forma a distncia atravs da rede, ou o nmero de laos do menor caminho capaz de conectar dois pontos. No caso dos pontos i e j da Figura 2.23, este caminho seria Xi j . Mas essa no a denio de distncia que as pessoas usam normalmente quando pensam sobre quo distantes esto de algum. Os indivduos tendem a se identicar em termos de contextos, fazendo uso de mltiplas dimenses. A distncia geogrca um exemplo bvio, mas prosso, educao, religio e interesses pessoais, tambm inuem nas avaliaes de proximidade das pessoas [107]. Com essa perspectiva, os pesquisadores perceberam que estar prximo em uma determinada dimenso no implica necessariamente proximidade em outra. Obviamente, se duas pessoas esto prximas em apenas uma dimenso, podem se considerar prximas em um sentido absoluto, mesmo que estejam bastante distantes em outras dimenses [107]. As pessoas s precisam ter um contexto de interao, o que pode ser suciente para que elas se autoconheam. Como exemplicado na Figura 2.24 [107], os mesmos indivduos i e k da Figura 2.23, podem se perceber ambos como prximos de j, onde i est prximo em uma determinada dimenso d, por exemplo, geograa, e k em outra, por exemplo, ocupao. Como apenas as menores distncias contam, no importa que j esteja bem distante tanto de i quanto de k em outros aspectos. Mas, como i e k esto distantes em ambas as dimenses, percebem-se mutuamente como distantes [107].

2.6 Modelagem de Redes

57

Figura 2.24: Multidimenses.

Essa situao geralmente ocorre quando uma pessoa tem dois amigos que foram conhecidos em circunstncias diferentes, sem que os mesmos possuam algo em comum, o que dene a situao de um buraco estrutural. Mas, o fato que eles possuem algo em comum, a pessoa que os une, deixando-os prximos mesmo que de forma inconsciente. Como concluram os pesquisadores, a identidade social exibe uma natureza multidimensional. Indivduos em diferentes contextos sociais podem explicar a violao da desigualdade triangular. A Figura 2.24 mostra que o n i reconhece o n k como distante, pois inexiste uma dimenso em que ambos estejam presentes e se autorreconheam. Desta forma, apesar da condio da desigualdade triangular garantir que o caminho (i,k) seja menor que o caminho (i,j,k), por esta perspectiva, exatamente o oposto que acontece. Como o n i est intimamente ligado ao n j, e o n j est intimamente ligado ao n k, o que representa curtas distncias entre os ns, a distncia a ser percorrida de i at k, menor se percorrida pelo caminho (i,j,k). Para Watts, a natureza multidimensional da identidade social "o que encurta as distncias entre as pessoas nas redes sociais" [107]. Consequentemente, quanto mais contextos as pessoas compartilham, mais prximas esto, e, portanto, mais chances possuem de se conectar. Mesmo quando suas associaes sejam altamente homlas, ao pertencer a determinados grupos, indivduos adquirem caractersticas que lhes do mais probabilidade de interagir entre si. Dentro dessa perspectiva, Watts concluiu no projeto que em vez de comear com uma noo de distncia para construir os grupos, seria interessante comear com os grupos para denir uma medida de distncia [106]. Em vez de indivduos que se escolhem diretamente, esses indivduos poderiam optar por juntar-se a certo nmero de grupos. A tcnica que ajudou Watts a denir o conceito de distncia em funo da estrutura de grupo foi express-lo em uma rede por aliao [106]. Dois ns neste tipo de rede podem ser considerados aliados se participam do mesmo grupo. Para Watts, sem aliaes, a chance de duas pessoas se conectarem se torna desprezvel, e quanto mais aliaes elas tiverem, maior a probabilidade de que interajam como amigos ou conhecidos. Os grupos, por sua vez, tambm podem ser aliados em virtude de membros em comum, o que permite que eles se sobreponham ou apresentem interseco. Como redes por aliao consistem em dois tipos distintos de ns, os mesmos foram denominados pelo pesquisador de atores e grupos, e representados atravs de uma rede bipartida [106]. Observa-se, atravs do painel central da Figura 2.25 [106], que em

2.6 Modelagem de Redes

58

uma rede bipartida, os dois conjuntos de ns so representados separadamente e apenas ns de tipos diferentes podem ser conectados, criando relaes de pertencimento.

Figura 2.25: Rede Bipartida.

As redes unipartidas so representaes das relaes observadas nos dados mensurveis da rede, como uma lista de quem conhece quem. Todavia, este tipo de dado no pode precisar de onde vm estas relaes [106]. Ao esboarem uma representao da estrutura social, com a representao bipartida completa, o grupo de pesquisa conseguiu vericar a origem das relaes interpessoais, apresentando a estrutura das redes por aliao de atores e de interseco de grupos simultaneamente. Tomando as duas distribuies da rede bipartida, grupos por ator e atores por grupo, os pesquisadores assumiram que a correlao entre atores e grupos ocorresse de forma aleatria. Obviamente, esta dinmica no procede no mundo real, mas como haviam denido em modelos anteriores, os cientistas esperavam que as decises individuais de escolha de grupos fossem completamente imprevisveis, tornando-se impossvel distingui-las da mera aleatoriedade. Redes aleatrias no possuem aglomerao, o que, como caracterstica, tornou a representao bipartida das redes por aliao de extrema utilidade. Os pesquisadores demonstraram que mesmo uma rede aleatria bipartida, sem propriedades estruturais, ser aglomerada. Por outro lado, a aleatoriedade garante que estas redes quem altamente conectadas e apresentem caminhos globais curtos. Portanto, representando o problema no que parecia uma forma sociologicamente plausvel, os pesquisadores concluram que redes por aliao aleatrias sero sempre redes de mundo pequeno. Elas consistem de conjuntos superpostos, ligados entre si pela coparticipao de indivduos em mltiplos grupos, algo que remete imagem de sociedade visualizada por Granovetter.

CAPTULO 3

Algoritmos de Busca de Caminhos

Informalmente, um algoritmo pode ser denido como uma sequncia de aes executveis para a obteno de uma soluo referente a determinado tipo de problema. De acordo com Dijkstra, um algoritmo corresponde a um padro de comportamento particularmente descrito e expresso em termos de um conjunto nito de aes [38]. Embora algoritmos tenham uma longa histria em matemtica, sua noo propriamente dita no estava denida precisamente at o sculo XX [92]. Antes disso, os matemticos somente possuam uma noo intuitiva sobre os mesmos, atravs da qual passavam a utiliz-los e a descrev-los. A denio formal s se concretizou nos artigos de 1936 de Alonzo Church e Alan Turing [92]. Apesar da utilizao de tcnicas distintas por parte de ambos os pesquisadores, as duas denies foram demonstradas ser equivalentes. Para denir algoritmos, Church usou um sistema notacional chamado clculo, enquanto Turing o fez com suas mquinas, congurando a tese de Church-Turing [92]. Conforme apontou Knuth, na rea de anlise de algoritmos, existem dois tipos de problemas a serem observados [63]: Anlise de um algoritmo particular: Refere-se ao custo de execuo e quantidade de memria utilizada por um algoritmo na resoluo de um problema; Anlise de uma classe de algoritmos: Compreende a anlise de uma famlia de algoritmos, a m de identicar o de menor custo para resolver um problema. O projeto de algoritmos fortemente inuenciado pelo estudo de seus comportamentos. Depois que um problema analisado e decises de projeto so nalizadas, o algoritmo tem que ser implementado. neste momento que o projetista estuda as vrias opes de algoritmos a serem utilizadas, cujos aspectos de tempo de execuo e espao ocupado so relevantes [111]. Muitos destes algoritmos so encontrados em reas como pesquisa operacional, otimizao, teoria dos grafos, entre outras, sendo estas citadas, fundamentais para a concepo das tcnicas de busca implementadas nesta obra. Os projetistas de software utilizam a crescente capacidade dos computadores para resolver problemas cada vez mais complexos. Todavia, os problemas a serem

3.1 Problema do Caminho Mnimo

60

resolvidos pelos computadores, em ltima anlise, no podem depender do seu poder computacional, o que torna fundamental uma comparao da ecincia dos algoritmos. Nesse contexto, a complexidade dos problemas reais levou ao surgimento de abordagens dspares, como o paradigma biolgico ou conexionista, que se apresentam como uma alternativa ao paradigma computacional simblico, para a resoluo eciente destes problemas. por esta razo, que os avanos no estudo de algoritmos so capitais para o aprimoramento de tcnicas computacionais. As ltimas dcadas se caracterizaram pela crescente produo de trabalhos importantes nesta rea, que se habilitaram a desenvolver solues com diferentes abordagens para os mais variados problemas, em especial para o que se relaciona com a criao de tcnicas de busca, fundamental nesta dissertao: o problema do caminho mnimo.

3.1

Problema do Caminho Mnimo

Um dos problemas reais mais estudados em otimizao, que vem recebendo recentemente grande ateno da comunidade cientca, o problema do caminho mnimo. Com um papel essencial nesta dissertao, este problema consiste genericamente, em encontrar o caminho de menor custo entre dois ns na rede, considerando a soma dos custos associados s arestas percorridas. Os algoritmos especializados em solucionar este tipo de problema recebem a denominao de algoritmos de busca de caminhos. Formalmente, em um problema do caminho mnimo, tem-se um grafo ponderado G = (V, E ), com funo peso w : E R mapeando arestas para pesos de valores reais. O peso do caminho p = (v0 , v1 , ..., vk ) a soma dos pesos de suas arestas constituintes [32]. w( p) = k i=1 w(vi1 , vi ) Dene-se o peso do caminho mais curto de u at v por [32]: (u, v) =
p v se existe um caminho de u at v, min { w ( p) : u

em caso contrrio.

Um caminho mnimo desde o vrtice u at o vrtice v ento denido como qualquer caminho p com peso w( p) = (u, v). O problema apresenta subestrutura tima, pois qualquer subcaminho de um caminho mnimo, tambm um caminho mnimo. A ttulo de exemplicao, tm-se o grafo representado na Figura 3.1, correspondente ao mapeamento da distncia em km entre oito locais especcos de uma cidade. O caminho mnimo entre os ns S e T , assinalado na imagem com traos pontilhados, corresponde ao caminho (S 3 6 5 4 T ), totalizando um peso de 10 km. Este seria o menor trajeto possvel entre os dois pontos determinados.

3.1 Problema do Caminho Mnimo

61

Figura 3.1: Grafo da Distncia Entre Oito Locais de uma Cidade.

Basicamente, so quatro as variantes do problema do caminho mnimo [32]: Problema de nico destino: consiste em determinar o menor caminho entre cada um dos ns do grafo e um determinado n de destino; Problema de nica origem: consiste em determinar o menor caminho entre um determinado n e todos os outros ns do grafo; Problema de origem destino: consiste em determinar o menor caminho entre dois ns especcos, como apresentado na ilustrao anterior. Esta foi a modalidade analisada na dissertao para a criao do mecanismo de busca social; Problema de todos os pares: consiste em determinar o menor caminho entre todos os pares de ns presentes no grafo. O problema do caminho mnimo se adapta a diversas situaes prticas, que de alguma forma possuam grandezas como distncia, tempo ou despesas, acumuladas linearmente ao longo do percurso da rede. Em redes de computadores, por exemplo, os ns podem representar equipamentos diversos, as arestas correspondem a trechos de cabeamento, e os custos ou pesos podero estar associados taxa mxima de transmisso de dados. Neste caso, a soluo do problema seria a rota de transmisso mais rpida. Uma das possibilidades de se resolver esse tipo de problema calcular a distncia de todas as rotas e escolher a menor encontrada. Este raciocnio usa o famoso mtodo de "fora bruta" ou de "busca exaustiva", o que acaba requerendo muito poder computacional para resolver o problema [32]. Este mtodo resulta em um nmero de opes igual a n(n 1)(n 2)...(2)(1) = n!. Se houver 100 ns interligados, existem 10158 opes de rota. Caso fosse possvel testar um bilho de solues por segundo, seria necessrio um tempo igual a 10141 anos para encontrar a melhor soluo [11]. Pode-se perceber que por esta perspectiva o problema se torna intratvel e, tendo em vista sua importncia, so necessrias outras tcnicas capazes de resolv-lo.

3.2 Algoritmo de Dijkstra

62

Existem basicamente dois tipos de estrutura de algoritmos de busca para o clculo de caminhos mnimos: rvores e matrizes [25]. Os algoritmos em rvore determinam os caminhos mnimos de um n para todos os outros ns da rede ou simplesmente entre um par de ns. Neste tipo de algoritmo, a soluo obtida construindo-se passo a passo uma rvore de caminhos mnimos. J os algoritmos com estrutura de matriz so capazes de obter os caminhos mnimos entre todos os pares de ns da rede, sendo estes caminhos mnimos obtidos simultaneamente. Na literatura, existem alguns algoritmos de busca capazes de resolver o problema de forma exata. Dentre estes, os mais comumente utilizados com estrutura em rvore so Dijkstra e Ford/Moore, e com estrutura em matriz: Floyd, Dantzig e Double Sweep [25]. Se alguma dessas tcnicas for capaz de resolver o problema de forma eciente, o mais indicado que sejam utilizadas. Entretanto, ao encontrar um problema intratvel, uma boa soluo utilizar tcnicas de aproximao. Existem outros algoritmos propostos que buscam minimizar o tempo gasto nesse tipo de processamento, utilizando-se de abordagens inspiradas nos processos evolutivos e orgnicos da natureza, tais como os Algoritmos Genticos ou a Otimizao por Colnia de Formigas. Estes ltimos, assim como o Algoritmo de Dijkstra, sero objetos de estudo deste trabalho, e, portanto, merecem o destaque apropriado.

3.2

Algoritmo de Dijkstra

O Algoritmo de Dijkstra, concebido pelo cientista da computao holands Edsger Dijkstra em 1956 e publicado em 1959, soluciona o problema do caminho mnimo em um grafo dirigido ou no dirigido. Este algoritmo utilizado para determinar o menor caminho de um n para outro n ou para todos os outros ns da rede, desde que as arestas contenham pesos no negativos [32]. Essa caracterstica valorada das arestas ou dos arcos exatamente o diferencial do Algoritmo de Dijkstra perante o algoritmo BFS - Breadth First Search [32], ou tcnica de busca em largura, tambm capaz de localizar o caminho mnimo entre dois pontos, desde que os grafos no sejam ponderados. O que permite esta capacidade ao Algoritmo de Dijkstra o tipo de estrutura de dados utilizado pelo mesmo. Ao invs de trabalhar com um la FIFO inerente ao BFS, o Algoritmo de Dijkstra percorre uma la de prioridades. Possuindo uma estratgia "gulosa", o Algoritmo de Dijkstra sempre toma uma deciso que parece ser a melhor no momento. Para a Teoria dos Grafos, esta estratgia se torna altamente conveniente, j que todo subcaminho de um caminho mnimo tambm um menor caminho entre dois vrtices. Desta forma, constri-se o menor caminho entre dois pontos no grafo determinando todos os menores caminhos intermedirios.

3.2 Algoritmo de Dijkstra

63

Os ns so divididos em dois grupos: os que j tiveram os caminhos mais curtos determinados, S, e os candidatos ou de fronteira, Q, que ainda esto na la de prioridade, correspondentes ao conjunto V S. O conjunto S inicializado para conter apenas o n de origem. Os vizinhos imediatos da origem so colocados no conjunto Q, sendo registrados os custos para poder atingi-los a partir da mesma. A cada passo do algoritmo, os ns de Q so vericados para determinar qual seria a melhor opo para expandir a pesquisa. Ser escolhido e transferido para S aquele n cujo custo acumulado seja o menor dentre os candidatos, e consequentemente todos os vizinhos deste n sero ento adicionados ao conjunto Q [35]. A pesquisa para quando o n de destino for alcanado, ou quando no houver mais ns a serem percorridos, o que implica em inexistncia de caminho entre os ns de origem e destino. Trata-se, portanto, de um algoritmo iterativo que se utiliza da seguinte frmula de recorrncia [25]: d (v)i = min { d (v)i1 , d (u) + d (u, v)

onde: d (v)i corresponde ao tamanho do caminho da origem s at o n v na iterao corrente, d (u) corresponde ao tamanho do caminho da origem s at o n u, e d (u, v) corresponde ao tamanho do arco (u, v). Esse processo de minimizao, apresentado na frmula de recorrncia do algoritmo, denominado de relaxamento [32]. Esta tcnica consiste em testar se possvel melhorar o caminho mais curto para v encontrado at o momento, pela passagem atravs de u, e em caso armativo, atualizar a respectiva distncia e o n predecessor. A demonstrao pode ser visualizada na Figura 3.2 [32].

Figura 3.2: Relaxamento da Aresta (u,v).

Em ambos os casos apresentados no exemplo acima, a estimativa de caminhos mnimos de cada vrtice mostrada em seu interior, sendo o peso de w(u, v) = 2. Na situao do painel esquerdo como d (v) maior que d (u) + w(u, v) antes do relaxamento, o valor de d (v) diminui. J na situao do painel direito, d (v) <= d (u) + w(u, v) antes da etapa de relaxamento e, assim no tem seu valor alterado pela tcnica. De forma genrica o algoritmo 3.1 apresenta o Algoritmo de Dijkstra.

3.2 Algoritmo de Dijkstra

64

Algoritmo 3.1: Di jkstra(G, w, s, t ) Entrada: grafo G(V, E ), vetor de pesos no negativos das arestas w e vrtices de origem s e destino t . Sada: vetor de distncia d (v) e vetor de predecessores (v).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

para cada v V faa d [v] (v) Null m d [s] 0 S {} QV enquanto |Q| = 0 faa u extrairMinimo(Q) S S {u} para cada v Ad j[u] faa se d[v] > (d[u] + w(u,v)) ento d [v] d [u] + w(u, v) (v) u m m m

A funo extrairMinimo(Q) utilizada na linha 9 do algoritmo 3.1 responsvel por escolher o n cujo custo acumulado seja o menor dentre os candidatos. O cdigo entre as linhas 11 a 16 realiza a tcnica do relaxamento citada anteriormente. O Algoritmo de Dijkstra vem sendo aperfeioado desde sua criao atravs do uso de estruturas de dados mais ecientes. O tempo de execuo do algoritmo depende de como a la de prioridade Q implementada. Quando o grafo sucientemente esparso, interessante implementar a la de prioridade atravs de um heap mnimo binrio, o que diminui a complexidade computacional do algoritmo de O(V 2 ) para O(V lg V ) [32]. Em cincia da computao, um heap binrio uma estrutura de dados organizada como rvore binria balanceada. Existem dois tipos de heap binrios, o heap mximo, caracterizado por cada n na rvore possuir chave maior que todos os seus lhos, e o heap mnimo, caracterizado exatamente pelo inverso [32]. O heap mnimo implementado no Algoritmo de Dijkstra possuindo como chave os valores de distncia do vrtice fonte at os ns correspondentes. medida que esta distncia diminui, as prioridades dos respectivos ns aumentam, deixando-os cada vez mais prximos de serem processados. A Figura 3.3 ilustra um heap mnimo binrio:

3.2 Algoritmo de Dijkstra

65

Figura 3.3: Heap Mnimo.

A sequncia de diagramas das Figuras 3.4 e 3.5 ilustra o funcionamento do Algoritmo de Dijkstra, detectando o menor caminho entre o n 1 e todos os demais [70]:

Figura 3.4: Inicializao do Algoritmo de Dijkstra.

Figura 3.5: Iteraes do Algoritmo de Dijkstra.

3.3 Otimizao por Colnia de Formigas

66

3.3

Otimizao por Colnia de Formigas

No m da dcada de quarenta do sculo XX, o francs entomologista Pierre Paul Grass observou que algumas espcies de cupins reagiam ao que ele chamou de estmulos importantes [52]. Ele percebeu que os efeitos de tais reaes podem atuar como novos estmulos relevantes tanto para os insetos que os produziu quanto para o restante da colnia. Grass utilizou o termo estigmergia para descrever este tipo particular de comunicao em que os trabalhadores so estimulados pelo desempenho alcanado [53]. O comportamento de coleta de alimentos de muitas sociedades de formigas baseia-se exatamente nesse tipo de comunicao, que de fato consiste em uma troca indireta de mensagens atravs de uma substncia qumica voltil denominada feromnio [36]. Enquanto caminham do formigueiro para as fontes de alimento e vice-versa, as formigas depositam feromnio na superfcie, formando uma trilha qumica. Em uma experincia realizada pelo grupo de pesquisa do cientista Jean-Louis Deneubourg, conhecida como a ponte binria [36] [49], um ninho de uma colnia de formigas argentinas foi conectado a uma fonte de alimento por duas pontes de comprimentos diferentes, como observado na Figura 3.6 [28].

Figura 3.6: Experimento da Ponte Binria.

Inicialmente, cada formiga escolhia aleatoriamente uma das duas pontes atravs da qual alcanavam a fonte de comida, depositando feromnio ao longo de sua trajetria ninho-comida-ninho. Com o tempo, as utuaes estocsticas da escolha inicial tornavam-se reduzidas e um segundo mecanismo desempenhava um papel importante. Como as formigas que escolheram o menor caminho faziam o percurso mais rapidamente que as outras, este caminho acabava recebendo uma maior quantidade de feromnio em relao ao outro, em um mesmo intervalo de tempo. O resultado deste processo de retroalimentao conhecido por feedback positivo que depois de algum tempo, a colnia inteira convergia no sentido da utilizao da mesma ponte [36]. A ideia bsica, que se em um determinado ponto uma formiga tem de escolher entre caminhos diferentes, aqueles que foram fortemente escolhidos por formigas anteriores, possuiro elevado nvel de feromnio, e sero escolhidos com maior probabilidade.

3.3 Otimizao por Colnia de Formigas

67

A grande importncia dessa descoberta, que altos nveis de feromnio so sinnimo de caminhos curtos [49]. Dessa forma, mesmo sem grandes propriedades visuais, este comportamento simples de seguir trilhas possibilita s formigas a emergncia de um comportamento mais complexo: encontrar caminhos mnimos entre dois pontos. Alm disso, as formigas podem se adaptar a alteraes no meio ambiente. Por exemplo, elas so capazes de encontrar um novo caminho mnimo, caso o antigo no seja mais vivel devido ao surgimento de um obstculo, situao ilustrada na Figura 3.7 [41].

Figura 3.7: Obstculo Sendo Superado Pelas Formigas.

A m de formalizar todo o processo forrageador criado pelas formigas, Marco Dorigo props o seguinte modelo matemtico apresentado na Figura 3.8 [43]. As distncias entre os pontos D e H , entre B e H , e entre B e D via C so iguais a 1, e o ponto C est posicionado a meio caminho entre D e B, como ilustrado na posio (a) da Figura 3.8.

Figura 3.8: Processo Forrageador das Formigas.

Existem 30 novas formigas vindo at o ponto B a partir de A, e 30 indo at D a partir de E . Cada formiga percorre a distncia d = 1 em uma unidade de tempo, depositando durante este percurso, um rastro de feromnio com intensidade 1.

3.3 Otimizao por Colnia de Formigas

68

Quando t = 0 no h trilha ainda, mas 30 formigas esto em B e 30 em D. A escolha sobre qual caminho percorrer completamente aleatria. Portanto, em mdia, 15 formigas de cada n iro para H e 15 para C, como ilustrado na posio (b) da Figura 3.8. Em t = 1, as 30 novas formigas que vm para B de A encontram um rastro de feromnio de intensidade 15 sobre o caminho que leva H , depositado pelas 15 formigas que vieram de B. No obstante, elas tambm farejam um rastro de feromnio de intensidade 30 no caminho para C, obtido com a soma da trilha estabelecida pelas 15 formigas que vieram de B e pelas 15 formigas que j atingiram B proveniente de D via C, situao ilustrada na posio (c) da Figura 3.8. Como a distncia do lado direito do percurso (B, C, D) ou (D, C, B) a metade do seu lado esquerdo (B, H , D) ou (D, H , B), em t = 1, as formigas que optaram pelo lado menor atingiram o ponto nal do percurso, enquanto que as outras ainda esto na metade do caminho. Dessa forma, este lado menor possuir o dobro do feromnio depositado no lado maior, tornando tendenciosa a probabilidade de escolha de um dos caminhos, por parte das novas formigas. Consequentemente, o nmero esperado de novas formigas que vo para C e H , em t = 1, ser 20 versus 10, respectivamente [43], o mesmo ocorrendo com as 30 novas formigas em D, que vieram a partir de E . A pesquisa realizada pelo grupo de Deneubourg foi a principal fonte de inspirao para o desenvolvimento de algoritmos baseados no comportamento forrageador das formigas. O primeiro algoritmo criado, alicerado nestes conceitos, foi proposto por Dorigo no incio dos anos noventa, sendo denominado como Ant System - (AS) [43]. O AS utiliza-se de formigas articiais que constroem solues para o problema de otimizao considerado. Estes seres trocam informaes sobre a qualidade de suas solues atravs de um esquema de comunicao similar ao adotado por formigas reais. Embora no exista uma estrutura centralizada de controle que estabelece como as formigas articiais devem se comportar, e mesmo no havendo um modelo explcito do ambiente, as interaes locais entre as mesmas geralmente levam ao surgimento de um comportamento global que se aproxima da soluo do problema. Esse algoritmo foi aplicado pela primeira vez ao problema do caixeiro viajante [92], sendo recentemente modicado, tanto para melhorar o seu desempenho quanto para aplic-lo a outros problemas de otimizao, como o problema do caminho mnimo. Dentre as verses destacam-se: Ant Colony System (ACS), Max-Min Ant System, e ASrank. Estas novas verses, bem como a original, obtiveram resultados para alguns problemas de otimizao que esto entre as melhores heursticas disponveis atualmente [40]. A metaheurstica Ant Colony Optimization (ACO) foi o resultado de um esforo realizado por Dorigo para denir um quadro comum, ou framework, para todas as verses do AS [40], proporcionando uma viso unitria da investigao em curso neste campo. Dessa forma, a ACO se tornou uma tcnica robusta inerente s diversas vertentes

3.3 Otimizao por Colnia de Formigas

69

de pesquisa sobre a Inteligncia de Enxames, ou Swarm Intelligence, que hoje um campo perfeitamente desenvolvido da Inteligncia Articial. Segundo essa metaheurstica, as formigas articiais constroem solues de forma probabilstica utilizando duas informaes. A trilha de feromnio articial, que muda dinamicamente durante a execuo do programa de modo a reetir a experincia adquirida, e a informao heurstica especca do problema a ser resolvido [40]. De acordo com o algoritmo original, AS, a probabilidade da formiga k que est no vrtice i escolher o vrtice j dada pela seguinte regra de transio [43]:

pk ij =

l ni

(i j ) (ni j ) k (il ) (nil )

onde: i j feromnio da aresta (i, j), e so parmetros que determinam a inuncia do feromnio e da informao heurstica, e nk i a vizinhana factvel da formiga, ou o conjunto de vrtices l no visitados pela formiga k, posicionada em i. , repreTambm est associado aresta (i, j) um valor heurstico ni j dado por d1 ij sentando a atratividade da mesma. O valor ni j inversamente proporcional a distncia di j entre os vrtices i e j, contribuindo para que os caminhos curtos sejam melhor avaliados. No feromnio i j ocorrem particularmente dois eventos. A evaporao, que evita que o mesmo se acumule e cresa indenidamente, alm de favorecer o esquecimento de decises ruins tomadas no passado da busca, e o depsito de feromnio das formigas que passaram sobre (i, j). Dessa forma, aps todas as formigas construrem suas viagens, o feromnio i j atualizado pela seguinte frmula: i j = (1 )i j + m k=1 i j
(k)

onde: 0 < <= 1 a taxa de evaporao de feromnio. (k) A expresso i j refere-se quantidade de feromnio que a formiga k deposita sobre a aresta (i, j), sendo seu clculo obtido por: i j =
(k) 1 Lk

se a aresta (i, j) pertence a viagem Sk , em caso contrrio.

onde: Lk representa o comprimento do caminho construdo pela formiga k. O critrio de parada do algoritmo estabelecido entre um nmero mximo de iteraes ou quando ca evidente sua estagnao, devido situao na qual todas as formigas seguem sempre o mesmo percurso. A complexidade do AS foi calculada por Dorigo como O(NCn2 m) [43], onde n o nmero de vrtices, m, o nmero de formigas, e NC, o nmero mximo de iteraes ou ciclos denidos para o algoritmo. Caso, experimentalmente, possa ser encontrada uma relao linear entre o nmero de vrtices e o melhor nmero de formigas, a complexidade do algoritmo ser O(NCn3 ) [43].

3.3 Otimizao por Colnia de Formigas

70

Dentre todas as variaes desse algoritmo, a que mais tem sido utilizada por suas grandes contribuies foi o AntColonySystem(ACS), proposto por Dorigo em 1996 [42]. O ACS difere do AS anterior por causa de trs aspectos principais [42]: a regra de transio fornece uma maneira direta de equilbrio entre a explorao de novas arestas e a explotao do conhecimento acumulado sobre o problema; a regra de atualizao global, ou atualizao ofine de feromnio, aplicada apenas para as arestas que pertencem ao melhor caminho das formigas; enquanto as formigas constroem uma soluo, uma regra de atualizao local, ou atualizao online de feromnio, aplicada. No algoritmo ACS, a regra de transio utilizada pelas formigas durante o processo de construo foi modicada para uma regra de transio pseudorandmica. A probabilidade de uma formiga se deslocar do vrtice i para o vrtice j depende de uma varivel q aleatria uniformemente distribuda sobre [0,1], e um parmetro q0 tambm escolhido aleatoriamente entre [0,1]. Se q <= q0 , ento a escolha do vrtice j dada por: j = arg maxl nk (il ) (nil )
i

Caso q > q0 , ento utilizada a regra de transio do algoritmo AS. A segunda mudana expressiva do ACS em relao ao AS, que apenas a melhor formiga, ou a formiga que encontrou o menor caminho, deposita feromnio aps cada iterao, ao invs de todas as formigas que completaram um percurso vlido. Esta atualizao de feromnio ofine obtida por: i j = (1 )i j + i j somente se (i, j) pertencer ao caminho da melhor formiga. A atualizao online de feromnio a ltima alterao implementada no ACS. Esta tcnica realizada por todas as formigas aps cada etapa de construo, sendo ento aplicada em todas as arestas percorridas. Este clculo realizado pela seguinte frmula: i j = (1 )i j + 0 onde: 0 < <= 1 o coeciente de decaimento de feromnio, e 0 o valor inicial do feromnio. O principal objetivo da atualizao online diversicar a pesquisa realizada por formigas subsequentes durante uma iterao, atravs da diminuio da concentrao de feromnio nas arestas percorridas.

3.4 Algoritmos Genticos

71

A complexidade do ACS foi calculada por Dorigo como O(n2t ), onde n o nmero de vrtices e t , o nmero de tours, ou caminhos gerados pelas formigas [41]. O algoritmo 3.2 apresenta o Algoritmo de Otimizao por Colnia de Formigas (ACO) em sua forma genrica. Algoritmo 3.2: ACO(G, w, s, t ) Entrada: grafo G(V, E ), vetor de pesos no negativos das arestas w e vrtices de origem s e destino t . Sada: vetor de vrtices S , representando o caminho da melhor formiga.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

coloque as formigas no vrtice de origem inicializa os feromnios das arestas L para t = 1 at nmero mximo de iteraes faa para k = 1 at m faa enquanto a formiga k no construir a viagem Sk faa selecione o prximo vrtice pela regra pk ij se atualizao online de feromnio ento atualize feromnio da aresta (i, j) m m calcule a distncia Lk da viagem Sk se Lk < L ento S = Sk L = Lk m m se atualizao ofine de feromnio elitista ento atualize feromnio das arestas de S seno atualize feromnio das arestas de todas Sk m m

3.4

Algoritmos Genticos

Em 1958, o pesquisador Oliver Selfridge, interessado no estudo sobre como os sistemas se modicam, evoluem e aprendem, apresentou um trabalho intitulado como Pandemmio: Um Paradigma para Aprendizagem [60]. Sua inspirao foi a pesquisa de

3.4 Algoritmos Genticos

72

Alan Turing sobre o mistrio da morfognese, ou a capacidade de inmeras formas de vida de desenvolverem corpos mais elaborados a partir de incios incrivelmente simples. Na realidade, o Pandemmio consistia mais em um modo de abordar um problema do que em um software especco. Como os recursos computacionais eram precrios na poca, o objetivo do pesquisador era ensinar um computador a reconhecer padres mal denidos ou inconstantes, como o som da linguagem falada. Consequentemente, Selfridge criou uma quantidade de miniprogramas limitados, aos quais denominou de demnios. Sua ideia consistia em ter um conjunto destes demnios agindo ao longo de uma hierarquia, cooperando na resoluo de problemas complexos por intermdio do simples conhecimento inerente a cada elemento. Segundo Selfridge o esquema esboado era uma seleo natural dos demnios processadores. Se eles servissem a uma funo til, sobreviveriam, e talvez fossem a fonte para outros subdemnios que seriam julgados por seus prprios mritos [60]. Na dcada de 60, John Holland estava disposto a fazer com que a lenta mquina calculadora 701 da IBM aprendesse de modo mais orgnico, bottom-up, no diferente do Pandemnio de Selfridge [60]. Como Turing, Holland queria explorar o modo pelo qual regras simples podiam levar a comportamentos complexos; como Selfridge, ele queria criar um software que fosse capaz de aprendizado ilimitado. O maior avano de Holland foi controlar o poder de outro sistema aberto e bottom-up: a seleo natural. Construindo sobre o modelo do Pandemnio, ele tomou a lgica da evoluo darwiniana e da gentica de Mendel e as transformou em cdigo, nomeando sua criao de Algoritmo Gentico (AG) [60]. O Algoritmo Gentico uma metaheursitca de pesquisa estocstica que apresenta a evoluo biolgica como uma tcnica para resoluo de problemas de otimizao. Os indivduos gerados por este algoritmo evoluem para encontrar a soluo de um dado problema, sendo cada um deles uma representao possvel da soluo procurada [12]. Com a dinmica do algoritmo, esses indivduos competem entre si, e os mais aptos, em detrimento dos candidatos mais fracos, so selecionados para serem cruzados em uma prxima gerao, como reza o princpio da teoria da evoluo das espcies de Darwin. Consequentemente, a cada nova gerao, devem surgir indivduos mais adaptados, implicando em uma convergncia natural dos mesmos para a soluo do problema. A aptido mdia da populao aumenta a cada iterao, e a repetio deste processo inmeras vezes permite a descoberta de melhores resultados. Algoritmos Genticos so estudados em vrios campos de pesquisa, fornecendo mtodos alternativos para a resoluo de problemas complexos, geralmente pertencentes rea de otimizao. Dentre as principais caractersticas do algoritmo destacam-se [64]: So paralelos por natureza, explorando o espao de soluo em vrias direes simultaneamente;

3.4 Algoritmos Genticos

73

Funcionam bem em problemas com propriedades dinmicas, ou que possuem muitos timos locais; No requerem conhecimento especializado sobre o problema. Por seus diferenciais comprovados, recentemente Algoritmos Genticos tm integrado o quadro de tcnicas aplicadas resoluo do problema de caminho mnimo em grafos. Uma rea que tem produzido importantes trabalhos a que envolve roteamento de redes de computadores, cuja funo minimizar a rota dos pacotes de dados transmitidos. O roteamento um dos processos mais importantes que possuem impacto signicativo sobre o desempenho da rede, especialmente pela caracterstica dinmica deste ambiente. Um algoritmo de roteamento ideal deve se esforar para encontrar um melhor caminho para a transmisso de pacotes dentro de um tempo especicado, de modo a satisfazer a Qualidade de Servio (QoS) [29]. Algoritmos Genticos so capazes de encontrar mltiplas solues em uma nica simulao executada, devido sua abordagem baseada em populao. Desta forma, conseguem se adaptar a situaes inesperadas, sejam estas aleatrias ou deliberadas, utilizando-se deste conjunto de solues durante o processo dinmico de roteamento [29]. O processo de funcionamento de um Algoritmo Gentico comea com a criao de uma populao de indivduos. Em geral, existem dois problemas que devem ser considerados para a inicializao da populao: o seu tamanho inicial e sua inicializao. O tamanho da populao denido com base no problema a ser solucionado. Se este tamanho demasiado pequeno, no provvel que o algoritmo encontre solues de grande qualidade. No entanto, se o tamanho da populao muito grande, o algoritmo ir desperdiar o tempo de processamento, provocando a demora de sua convergncia [4]. Outra questo referente populao refere-se s duas maneiras de inicializ-la: de forma heurstica ou aleatria. Embora a aptido mdia da inicializao heurstica seja alta, o que ajuda o algoritmo a encontrar solues mais rpidas, ela provoca que o algoritmo explore apenas uma pequena parte do espao de soluo [4]. Consequentemente, ele pode nunca se aproximar da soluo ideal, devido falta de diversidade na populao. Em uma inicializao aleatria esse risco torna-se remoto. Cada indivduo, ou cromossomo, pertencente a essa populao, representa uma soluo codicada candidata para o problema. Apesar de existirem vrias formas de representao dos cromossomos, nos problemas com caminhos mnimos em grafos, normalmente adota-se um mtodo de codicao direta, cujos genes so representados pelos nmeros inteiros que identicam os vrtices. Sendo assim, cada cromossomo corresponde um caminho a partir do vrtice de origem at o vrtice de destino. Cromossomos so compostos por genes em sequncia. Cada gene identica um vrtice especco, e o seu respectivo locus representa a posio em que ele est localizado

3.4 Algoritmos Genticos

74

no cromossomo. O comprimento dos cromossomos para o contexto dos caminhos mnimos costuma ser varivel, pois caminhos de tamanhos diferentes podem ser encontrados, desde que este comprimento no exceda o nmero total de vrtices do grafo. Dessa forma, um cromossomo compreende uma lista de ns ao longo do caminho construdo (S N1 N2 . . . Nk1 Nk D), como ilustrado na Figura 3.9 [4].

Figura 3.9: Representao de um Cromossomo.

Existem diversas maneiras de criar cada cromossomo da populao utilizada pelo Algoritmo Gentico. A maneira que tem se mostrado mais eciente em minimizar custos computacionais utiliza a lista de adjacncia de cada vrtice. Por conseguinte, os genes so escolhidos aleatoriamente de forma a satisfazer as restries dos vrtices de vizinhana e de factibilidade dos cromossomos simultaneamente. Entende-se por factibilidade nesse contexto, vrtices intermedirios desconsiderando origem e destino, que ainda no foram escolhidos para integrar o cromossomo, o que evita a formao de loops. O processo inicia no n origem e termina no n destino, em um processo similar ao da busca em profundidade em grafos [55]. Finalizado esse processo de gerao dos indivduos iniciais, os mesmos so submetidos avaliaes de mrito individual. A inteno gerar oportunidades reprodutivas de forma que os cromossomos que representam as melhores solues tenham mais chances de se reproduzir. A denio de soluo melhor ou pior est relacionada ao problema e quanticada de acordo com uma funo de aptido. Para o problema de caminhos mnimos, a funo de aptido analisa a distncia entre cada par de ns em sequncia no caminho representado por um cromossomo. Este valor totalizado refere-se ao custo associado ao caminho, que pela relao com o problema, deve ser minimizado. A funo de aptido fornece uma medida da proximidade da soluo em relao ao parmetro de distncia, visando encontrar o ponto timo. Uma vez avaliados os cromossomos, diversos operadores genticos inspirados na gentica de Mendel, entram em cena com o intuito de produzir indivduos mais aptos. Uma caracterstica dos Algoritmos Genticos a seleo de indivduos para a prxima gerao. O processo de seleo consiste na escolha dos melhores indivduos que

3.4 Algoritmos Genticos

75

funcionaro como cromossomos reprodutores. Desta forma, aqueles com maior aptido so selecionados para reproduo, enquanto que os outros so descartados. Existem diversas tcnicas para a realizao da seleo desses indivduos como: roleta, torneio, elitista, estocstica, dentre outras. De uma forma geral, o operador de seleo destina-se a melhorar a qualidade mdia da populao, dando a cromossomos de alta qualidade uma chance maior de serem transmitidos para a prxima gerao [4]. Atravs de um processo de recombinao e mutao, a populao evolui no sentido de uma soluo tima. Depois de terem sido selecionados para reproduo, os cromossomos so recombinados, utilizando um operador de cruzamento, e mutados, utilizando um operador de mutao, para gerar descendncia [12]. Os descendentes deste processo juntam-se aos antigos cromossomos mais aptos para formar uma nova populao, a partir do qual o processo repetido at a convergncia. A primeira operao gentica realizada nos cromossomos durante o acasalamento o cruzamento, ou crossover. Com uma probabilidade prxima a 80% de ocorrer, a ideia da operao criar um intercmbio de informaes entre dois cromossomos, fazendo o algoritmo explorar novos caminhos na tentativa de encontrar solues melhores. Existem diversas tcnicas para realizao do cruzamento gentico entre cromossomos tais como: cruzamento com um ponto de corte ou vrios pontos de corte, PartiallyMatched Crossover (PMX), Node Based Crossover (NBX), etc [4]. Para o problema do caminho mnimo em grafos geralmente utilizado o operador NBX , devido a sua caracterstica particular. Dois cromossomos podem ser cruzados se tiverem pelo menos um gene em comum, desconsiderando-se os genes correspondentes aos vrtices de origem e de destino. Se houver mais pares de genes comuns, um par escolhido aleatoriamente e os locus de cada n tornam-se um local de passagem dos cromossomos. Nessa tcnica, os locus de ambos os indivduos no precisam ser os mesmos. O cientista da computao Chang Ahn apresentou uma exemplicao dessa tcnica, detalhando a situao dos cromossomos antes e depois do cruzamento, como pode ser visualizado na Figura 3.10 [4].

Figura 3.10: Node Based Crossover (NBX).

3.4 Algoritmos Genticos

76

Aps realizado o cruzamento com a tcnica NBX , h uma possibilidade de serem criadas rotas com loops. A m de evitar o problema, uma funo reparadora usada como medida preventiva. Loops podem ser reparados atravs da realizao de uma pesquisa ao longo do cromossomo para detectar ns repetidos [4]. Os ns entre o maior loop so ento removidos, como exemplicado por Ahn na Figura 3.11 [4].

Figura 3.11: Processo de Reparao do Cromossomo.

Para evitar que o Algoritmo Gentico convirja muito cedo para mnimos locais, a operao de mutao realizada com pequena probabilidade. Esta operao promove a alterao de um ou mais genes de um cromossomo sorteado aleatoriamente. Assim como a operao de cruzamento, a mutao tambm pode ser realizada de diversas maneiras, utilizando-se de tcnicas como intercmbio, inverso, insero, remoo, dentre outras. Os pontos de mutao so selecionados aleatoriamente no cromossomo, e o n mutado dever tambm respeitar as restries de adjacncia dos genes e de factibilidade do cromossomo. Com a concluso da mutao, a descendncia gerada tem de ser validada com o mesmo processo usado no cruzamento. Um exemplo da operao de mutao sendo realizada apresentado por Ahn na Figura 3.12 [4] .

3.4 Algoritmos Genticos

77

Figura 3.12: Processo de Mutao do Cromossomo.

Finalmente, a condio de terminao do Algoritmo Gentico pode ser estabelecida por um nmero xo de iteraes, ou quando nenhuma mudana na aptido da populao vericada durante certo perodo de tempo. O limite superior para o tempo de otimizao do Algoritmo Gentico, na busca de caminhos mnimos em grafos ponderados, foi determinado por Scharnow como O(n2 l log n), onde n o nmero de vrtices e l , o nmero mximo de arestas em um suposto caminho mnimo que conecta o vrtice de origem ao vrtice de destino [89]. O algoritmo 3.3 apresenta o Algorimo Gentico em sua forma padro. Algoritmo 3.3: GA(G, w, s, t ) Entrada: grafo G(V, E ), vetor de pesos no negativos das arestas w e vrtices de origem s e destino t . Sada: vetor de vrtices P , representando o cromossomo mais adaptado.
1 2 3 4

7 8 9

criar aleatoriamente uma populao P de indivduos determinar a qualidade de P enquanto condio de parada no satisfeita faa selecionar um subconjunto N de P para reproduo, de acordo com sua qualidade usar, estocasticamente, o operador de cruzamento sobre cada par de N , gerando dois (novos) lhos usar, estocasticamente, o operador de mutao sobre cada indivduo resultante da etapa anterior atualizar P selecionando indivduos de P N avaliar qualidade dos indivduos da nova populao P m

CAPTULO 4

Agentes e Sistemas Multiagentes

Independente da classicao que os seres humanos adotam para os efeitos advindos da complexidade, o que parece certo a onipresena dos mesmos na natureza, assim como brilhantemente exemplicou Duncan Watts [106]:
Se quisermos desencadear uma avalanche nas montanhas, podemos lanar uma bomba atmica, mas isso no seria necessrio. Um nico esquiador passando pelo tipo errado de neve, na parte errada da montanha, na hora errada do dia, pode liberar uma fria totalmente desproporcional pequenez da origem.

Condicionados por essa excntrica conduta da natureza, os ltimos anos da existncia humana foram invadidos pela emergncia articial. Sistemas construdos com o conhecimento consciente do que a emergncia, capazes de explorar suas leis para a resoluo de problemas reais, muitos deles verdadeiramente complexos. O que une esses diferentes sistemas um padro recorrente: uma rede de auto-organizao, de agentes dessemelhantes que, embora muitas vezes constitudos por elementos simplrios, inadvertidamente criam uma ordem de nvel superior [60]. O termo agente domina a Inteligncia Articial e invadiu denitivamente a prpria informtica. Uma viso centralizadora determinou no incio desta cincia, a concepo do agente s e isolado, dependente do seu interlocutor humano. Tal concepo s sofreu modicaes quando surgiu o movimento da descentralizao da computao, no m dos anos 70. A consagrao da distribuio, ao longo da dcada de 80, possibilitou o dilogo com as Cincias Sociais, e apoiou posteriormente o regresso das Neurocincias trama multidisciplinar da sua base de apoio [90]. A hierarquizao do poder, outrora em voga, foi substituda por novas formas de organizao, aliceradas em experincias plurais. Em vez de comportamentos isolados, surgiram comportamentos coletivos, atravs da coordenao e da cooperao entre agentes em situaes de grande complexidade [90]. Foi a partir deste momento que se conduziram as novas incurses em prol de uma renovao dos mtodos e das tcnicas, garantindo condies para a entrada segura na segunda era da Inteligncia Articial. O que se segue um circuito por reas que no costumam estar includas em um mesmo trabalho como: os xitos do Deep Blue II sobre Gary Kasparov; o poder

4.1 Agentes

79

de mecanismos de raciocnio probabilstico automtico para enfrentar a incerteza; a explorao de tcnicas de procura para as mquinas de busca na Internet; o uso do software de animao Massive, para as cenas de batalha da trilogia O Senhor dos Anis; o programa de composio musical SARA, capaz de imitar Bach, Chopin, Mozart [90]. Atualmente a Inteligncia Articial busca solues para a construo de agentes autnomos capazes de aprender e de lidar com a incerteza, alm de serem capazes de evoluir, adaptando-se aos mltiplos ambientes em que podem viver. Todavia, tais agentes no percorrem este sinuoso caminho de forma isolada, mas atravs de sociedades de agentes que cooperam na resoluo de problemas verdadeiramente complexos.

4.1

Agentes

Apesar de inexistir uma denio singular, entende-se por agente toda entidade capaz de interagir com o ambiente, guiado em geral, mas no unicamente, por objetivos [90]. Estruturalmente, um agente algo simples, como ilustrado na Figura 4.1 [90].

Figura 4.1: Arquitetura de um Agente.

Basicamente, um agente possui mecanismos que lhe permite recolher informao do ambiente (percepo), bem como atuar sobre o mesmo (ao). Alm disso, um agente possui processos que viabilizam sua denio sobre a melhor ao a ser realizada (deciso), sendo tais processos to complexos quanto sua tarefa ou seu ambiente [90]. Alicerado em suas propriedades, um agente cria comportamentos estratgicos que lhe permitem ser casualmente bem sucedido em suas tarefas, sejam elas impostas pelo ambiente, ou determinadas por seus objetivos. A Figura 4.2 [90] ilustra esta perspectiva.

Figura 4.2: Perspectiva Funcional de um Agente.

4.1 Agentes

80

Os agentes podem apresentar muitas variaes de comportamento, o que est relacionado com o subconjunto de propriedades pertinente a cada um. Algumas das mais importantes propriedades idealizadas para um agente so [12]: Autonomia: capacidade de adotar aes direcionadas execuo das tarefas e dos objetivos a serem alcanados, sem a interferncia do usurio nal; Aprendizagem: permite a alterao de seu comportamento baseado em experincias anteriores; Comunicabilidade: capacidade para acessar informaes sobre o estado atual do ambiente; Conabilidade: credibilidade apresentada na realizao de suas aes e a certeza de que no processar informaes falsas; Cooperatividade: capacidade para trabalhar junto com outros agentes, objetivando a realizao de uma tarefa em comum; Degradao: capacidade para completar a execuo de uma tarefa, mesmo quando ocorre alguma anomalia no sistema; Inteligncia: capacidade de negociar em situaes novas de incerteza; Mobilidade: capacidade de transportar-se de um local para outro; Persistncia: habilidade de manter-se preciso atravs do tempo; Personalidade: capacidade para demonstrar opinio. Com base na ideia de um conjunto de propriedades possvel denir uma hierarquia de agentes, atravs da qual os mesmos dividem-se inicialmente em trs grandes grupos: biolgicos, robticos e computacionais. A Figura 4.3 [90] ilustra esta hierarquia.

Figura 4.3: Hierarquia de Agentes.

Os primeiros caracterizam os agentes naturais. Os segundos so os agentes articiais em que o corpo assume um papel fundamental. Finalmente, os terceiros somente

4.1 Agentes

81

existem como programas de computador, sendo subclassicados em dois grupos distintos: os agentes de software e os agentes de vida articial. Enquanto os primeiros so supostos serem eternos, os segundos morrem [90]. Normalmente, pensando nos agentes de software que se usa a palavra agente. As tarefas de um agente geralmente so variadas, o que implica em classicaes por diferentes perspectivas. Segundo Ernesto Costa, toda tipologia de tarefas possui subjetividades, porm os seguintes aspectos permitem que elas sejam caracterizadas [90]: Deliberao: algumas tarefas obrigam o agente a possuir processos de deciso sosticados enquanto outras no; Mudana: algumas tarefas envolvem mudanas importantes, seja ao nvel do agente, como mecanismos de deciso, seja ao nvel do prprio ambiente; Interao: muitas tarefas s podem ser resolvidas graas a uma forte interao entre o agente e o ambiente; Imposio: existem tarefas que so determinadas essencialmente pelo ambiente. Os agentes tm de enfrentar diferentes tipos de ambientes, que variam em graus de complexidade. Alm disso, o modo como um agente analisa e compreende o ambiente depende fortemente de suas capacidades. Na viso de Costa existem trs aspectos principais que podem ser usados para classicar os ambientes [90]: Acessveis: o agente pode retirar do ambiente toda a informao que necessita para determinar a melhor ao; Deterministas: quando a evoluo do ambiente pode ser determinada de forma nica a partir da situao corrente e da ao do agente sobre o ambiente; Estticos: no se alteram, enquanto o agente est decidindo a ao a ser executada. Os ambientes mais complexos so aqueles que so inacessveis, no deterministas e dinmicos, conforme visualizado no ponto 2 da Figura 4.4 [90]. No outro extremo, os ambientes caracterizam-se por serem acessveis, deterministas e estticos, como ilustrado no ponto 1 da mesma gura, onde residem as situaes mais favorveis para o agente.

Figura 4.4: Tipos de Ambientes.

4.2 Sistemas Multiagentes

82

O sculo XXI habilitou os seres humanos a lidar com agentes que executam tarefas especcas. Agentes de interface, que tentam fazer o que os usurios pretendem e no o que informam quando interagem com uma aplicao. Agentes de procura, que na Web tentam encontrar informao relevante. Agentes de ltragem, que permitem aos correios eletrnicos selecionar mensagens e arrum-las devidamente. Agentes assistentes, especcos de um dado domnio, que ajudam as pessoas a manter suas agendas organizadas. Em algumas dessas situaes, especialmente as caracterizadas por grande complexidade, os agentes vivem mergulhados em ambientes dotados de outros agentes, que interagem entre si de formas dspares durante a resoluo de suas tarefas, formando em conjunto um Sistema Multiagente.

4.2

Sistemas Multiagentes

Uma populao de agentes, cada um possivelmente com estratgias particulares, que se unem em prol da criao de um macrocomportamento observvel, caracteriza um Sistema Multiagente. Em diversas situaes reais interessante utilizar as habilidades de diferentes agentes para resolver problemas, e os Sistemas Multiagentes so exmios combinadores de tais habilidades. Alm disso, apresentam maior rapidez na resoluo de tarefas complexas, devido ao paralelismo que pode ser obtido [12]. perceptvel tambm nestes sistemas uma melhora na conana dos resultados, pois podem ser includos agentes capazes de validar e corrigir os resultados outrora fornecidos por seus pares. Por m, a modularidade obtida com os Sistemas Multiagentes outra caracterstica relevante. Caso o sistema no consiga resolver uma tarefa especca, a utilizao de um novo agente, melhor projetado ao contexto, pode ser realizada, sem a necessidade da completa substituio do sistema. A arquitetura mais simples e utilizada no controle desses agentes a arquitetura Quadro Negro. Esta arquitetura no prev uma comunicao direta entre os agentes, sendo todas as comunicaes feitas por uma estrutura central compartilhada [12]. A estratgia oposta ao Quadro Negro prope a troca de mensagens entre os prprios agentes, o que os obriga a possuir uma identicao precisa, como um nome nico no sistema e, tambm, a adoo de algum protocolo de comunicao [12]. Outra diferenciao importante quanto ao tipo de interao realizada pelos agentes no sistema. Um grupo de agentes que cooperam na resoluo de problemas que esto alm da capacidade de resoluo individual de um agente, caracteriza um sistema colaborativo. No obstante, quando os agentes no colaboram por um objetivo em comum, trabalhando apenas por uma meta particular, o sistema dito como concorrente [6]. Quanto composio de seus elementos individuais, os Sistemas Multiagentes podem ser classicados como homogneos ou heterogneos. O primeiro caracteriza um

4.2 Sistemas Multiagentes

83

grupo de agentes idnticos, possuidores dos mesmos objetivos, aes e domnios de conhecimento. J o sistema heterogneo constitudo por agentes distintos, que de alguma forma possuem objetivos, aes ou domnios de conhecimento diferentes [6]. A organizao dos Sistemas Multiagentes pode ser classicada de diferentes maneiras, sendo as mais comuns [12]: Hierrquica: o controle e a tomada de deciso so concentrados em nveis, ou seja, a interao entre os agentes ocorre atravs de uma comunicao vertical do agente superior para os agentes subordinados; Comunidade de especialistas: a organizao mantm todos no mesmo nvel, porm cada agente tem uma especialidade em certo domnio. Nesta organizao, a interao entre os agentes ocorre de acordo com regras previamente estabelecidas; Comunidade cientca: as solues para os problemas so localmente construdas e, em seguida, testadas e renadas, a partir de uma comunicao com outros agentes solucionadores de problemas. De maneira geral, Sistemas Multiagentes utilizam-se de agentes interativos que criam um comportamento de nvel superior em uma escala acima da ocupada pelos agentes individuais, e por isso adaptam-se apropriadamente para diversos tipos de ambientes. As aplicaes fazem-se cada vez mais presentes na histria da humanidade, atuando em reas to dspares quanto a Web, os Jogos ou a Medicina. No por acaso que as diversas escolas da Inteligncia Articial, a simblica, a conexionista, a evolucionria e a robtica, transformaram a perspectiva reducionista, em uma perspectiva holstica e global. Desta forma, aceitaram com humildade que cada uma das escolas apenas contempla uma parcela sobre os fenmenos da inteligncia, e que estas parcelas so complementares mantendo relaes entre si. Abaixo, ilustrado na Figura 4.5 [2], um dos maiores e mais misteriosos exemplos de sistema complexo adaptativo, e que indubitavelmente objeto de pesquisas e inspiraes para os Sistemas Multiagentes da Inteligncia Articial.

Figura 4.5: Neurnios do Crebro Humano.

CAPTULO 5

Visualizao da Informao

Representaes grcas de toda sorte tm sido usadas como instrumento de comunicao desde os primrdios da humanidade. H milnios, no Egito, seus habitantes utilizavam uma linguagem baseada em smbolos, os hierglifos [37]. Este modelo de linguagem era composto por representaes grcas, guras que expressavam alguma informao, transmitindo mensagens que inclusive atualmente podem ser compreendidas. O oferecimento de imagens, ou qualquer outro tipo de recurso grco com o intuito de apresentar uma informao, na maioria dos casos produz a compreenso da mensagem transmitida, j que esta se torna mais natural aos seres humanos. No processo cognitivo do ser humano apresentado por Card, as informaes captadas pelos rgos so armazenadas na memria de curta durao (MCD). No caso de uso frequente de uma informao, sua transferncia realizada para a memria de longa durao (MLD). A MCD formada por chunks, elementos ativados da MLD que podem ser organizados em unidades maiores. O chunk funo tanto do usurio quanto da tarefa a ser realizada, uma vez que se trata da ativao de sua MLD [27]. Para esclarecer esse processo, Dias apresenta o seguinte teste. Se a sequncia das letras V-I-B-R-M-C-D for lida sem qualquer entonao ou separao de tempo, pode ser difcil lembr-la posteriormente. Todavia, quando lida com entonao e separao: Visualizao da Informao BR MCD, o processo de memorizao facilitado. No primeiro caso 7 chunks devem ser recordados, enquanto no segundo, apenas 3 [37]. Os sentidos so a base da percepo humana, que se caracteriza por um sistema sensorial constantemente estimulado por um uxo contnuo de acontecimentos envolventes. Apesar das sensaes externas valerem-se dos cinco sistemas sensoriais, recursos grcos exploram essencialmente o sentido humano mais apto a captar informao temporal: a viso. Alm de ser o primeiro componente do sistema sensorial, a viso o sentido adquirido mais rapidamente pelo crebro [8]. Outra caracterstica importante desse sentido sua capacidade de paralelismo, o que lhe permite observar a circunvizinhana de um determinado objeto visual, mesmo tendo a ateno focada em um ponto especco do mesmo [8]. Esta capacidade permite aos seres humanos o reconhecimento de padres, como ilustrado na Figura 5.1 [75].

85

Figura 5.1: Detectando Objeto Dessemelhante.

Em seus experimentos, Dias e Carvalho inspirados em Card, apresentam a capacidade da viso captar informaes atravs de imagens em comparao com palavras. A Figura 5.2 mostra uma adaptao de um destes experimentos, que consistia no processo de deteco de tringulos inseridos em um ambiente repleto de quadrados [37].

Figura 5.2: Melhoria da Percepo Humana.

Durante um tempo t , constata-se que existem trs palavras tringulo na situao (a), sendo as mesmas apresentadas de forma desalinhada. Alterando a congurao do experimento, de acordo com a situao (b), possvel obter um melhor desempenho na busca. Isto ocorre devido ao alinhamento das palavras, que permite cognio humana a possibilidade de detectar e comparar padres [37]. Ao repetir a mesma experincia, agora aplicada na situao (c), possvel notar com facilidade, a presena dos tringulos atravs do uso de smbolos. Finalmente, na situao (d), observa-se a utilizao de outro importante recurso da representao grca, a saturao de cor, que torna a tarefa do experimento trivial. Esta exemplicao demonstra como a representao de informaes por intermdio de recursos grcos pode ser poderosa, contribuindo com o processo cognitivo humano. Um importante acontecimento da histria da cincia foi envolvido diretamente pelo forte poder da percepo visual humana, provando que muitos dados abstratos podem ser condensados em uma simples imagem. A cidade prussiana de Knigsberg banhada pelo rio Pregel que, ao cortar a cidade se ramica formando uma ilha, que no sculo XVIII se ligava ao restante da cidade por sete pontes, como exemplicado esquerda da Figura 5.3. Os habitantes da cidade

86

tentavam efetuar um percurso que atravessasse todas as pontes, porm passando somente uma nica vez em cada. Como eles sempre falhavam em suas tentativas, acabavam acreditando que no era possvel encontrar tal percurso, sem saberem o real motivo [10].

Figura 5.3: Pontes de Knigsberg.

Em 1736, Leonard Euler, um dos maiores matemticos de todos os tempos, conseguiu decifrar tal enigma, se valendo de um recurso fundamental. Usando um raciocnio simples, o matemtico transformou os caminhos em retas e suas interseces em pontos, criando possivelmente o primeiro grafo da histria [14]. A sequncia do raciocnio do matemtico pode ser acompanhada no centro e direita da Figura 5.3. Euler percebeu que s seria possvel atravessar o caminho sob as restries impostas, se houvesse exatamente zero ou dois pontos de onde sasse um nmero mpar de caminhos, restrio no satisfeita pelas condies estruturais da cidade [14]. Neste ponto, Euler no s resolveu o problema de Knigsberg, mas acabou desbravando um imenso ramo da matemtica, a Teoria dos Grafos, muito particularmente devido sua forte percepo ao reconhecer padres na imagem do grafo gerada. Um modelo simplicado do sistema de processamento de informao atravs da percepo visual humana, invariavelmente se torna fundamental para anlises mais aprofundadas neste contexto. Tal sistema foi dividido por Colin Ware em trs fases [104]: Processamento paralelo para extrair propriedades de baixo nvel da cena visual em causa: A informao visual a primeira a ser processada por bilhes de neurnios que paralelamente extraem caractersticas de partes da imagem visual considerada. Tais neurnios recuperam informaes como orientao dos contornos, cor e textura, determinando o principal ponto visual da imagem analisada; Percepo de padres na imagem formada: Na segunda etapa, processos ativos decompem rapidamente o campo visual em regies e padres simples, como contornos contnuos e regies de cores ou textura semelhantes. Os padres de movimento so extremamente importantes nesta fase; Processamento sequencial dirigido: Num nvel superior da percepo esto as imagens contidas na memria visual atravs das demandas da ateno ativa, e

87

ser esta memria que contribuir com as pesquisas visuais. neste nvel que a informao armazenada anteriormente permitir a construo de padres. Em resumo, a utilizao de tcnicas de visualizao de informaes para ampliar a cognio sobre dados abstratos tem um forte apelo quando comparada com outras formas de transmitir ou analisar informaes. Foi esta percepo que possibilitou o desenvolvimento de uma nova rea repleta de desaos, a Visualizao da Informao. Proposta inicialmente por Robertson, Card e Mackinlay em 1989, a Visualizao da Informao tem por objetivo o estudo das principais formas de representaes grcas de informaes, a m de contribuir para o seu entendimento, bem como favorecer a percepo de novos conhecimentos [37]. Os estudos sobre o assunto recebem contnuas contribuies advindas de diversos ramos da cincia. Sendo assim, a Visualizao da Informao se encontra primeiramente relacionada Psicologia, Lingustica e s Artes Visuais, no que se refere forma como o ser humano v e interpreta imagens. No obstante, ela tambm possui grande relao com subreas da Computao, como Computao Grca, Viso Computacional, Interao Homem-Computador e Minerao de Dados [75]. A Visualizao da Informao tem se beneciado com as inovaes geradas pela evoluo dos computadores, os quais proporcionam meios cada vez mais ecientes de melhorar a gerao de imagens e de aumentar a interatividade em tempo real. Assim, ferramentas computacionais de visualizao podem apoiar os indivduos no processo de anlise dos dados, favorecendo trs atividades [8]: Anlise exploratria: Descobrimento de novos conhecimentos contidos nos dados, atravs de um processo analtico de explorao de sua representao visual, com subsequente procura de indcios que possam indicar tendncias ou relaes; Anlise conrmatria: Determinao de evidncias para aceitao ou rejeio de hipteses especcas; Apresentao: Representao grca e apresentao do relacionamento, estrutura, comportamento e outras caractersticas intrnsecas aos dados analisados. de fundamental importncia perceber o recente papel da Visualizao da Informao, que incluiu a ferramenta computacional como suporte natural ao processo de apresentar e interagir com visualizaes. Tal cenrio contrasta-se com as visualizaes da poca pr-computacional, formadas basicamente por imagens estticas, desprovidas de qualquer interatividade. A Figura 5.4 [75] ilustra um modelo de referncia para o processo de visualizao de informaes apresentado por Card [26], constitudo por trs etapas.

88

Figura 5.4: Modelo de Referncia.

A primeira etapa chamada de Transformaes de Dados, na qual um conjunto de dados brutos organizado em uma forma lgica mais estruturada, geralmente na forma de tabelas. A Figura 5.5 exemplica este processo, mapeando em uma matriz de adjacncia as relaes entre os elementos do modelo esquerda da gura.

Figura 5.5: Transformaes de Dados.

A prxima etapa contempla o Mapeamento Visual, ou a construo de uma composio grca que visualmente represente os dados. Este mapeamento se decompe em trs partes: substrato espacial, marcas visuais e propriedades grcas das marcas. O substrato visual caracteriza o espao para a visualizao, geralmente representado por eixos, como os eixos X e Y do plano cartesiano. As marcas visuais so smbolos grcos utilizados para representar os itens de dados. A Figura 5.6 [75] demonstra os smbolos mais comuns como pontos, linhas, reas, volumes e cones.

Figura 5.6: Smbolos Grcos Representacionais.

As propriedades grcas so os atributos visveis que caracterizam as marcas visuais. Algumas propriedades amplamente utilizadas so: a posio da marca dentro do substrato espacial, a forma, a cor, o tamanho, a rea ou o volume, a orientao, o sentido e

89

a inclinao do tipo de linha, a textura, dentre outras. A Figura 5.7 realiza o mapeamento visual dos dados apresentados na Figura 5.5.

Figura 5.7: Mapeamento Visual.

As Transformaes Visuais so a ltima fase desse processo, no qual possvel modicar e estender as estruturas visuais interativamente atravs de operaes como: Testes de localizao: possibilitam obter informaes adicionais sobre um item da tabela de dados; Controles de ponto de vista: permitem ampliar, reduzir e deslocar a imagem com o objetivo de oferecer vises diferentes; Distores da imagem: visam criar ampliaes de uma regio especca em detrimento de outra. Segundo Nascimento, os mecanismos de interao implementados nessa etapa possibilitam ao usurio explorar diferentes cenrios, ou perspectivas, para uma melhor compreenso dos dados visualizados. O autor tambm enfoca que o esforo de explorao destes dados repassado em parte para o computador, que redesenha a imagem enquanto o usurio observa como a visualizao se modica [75]. Muitas vezes padres podem ser facilmente descobertos pelo ser humano nesse processo, como exemplicado na Figura 5.8, onde emerge uma estrutura hierrquica em uma diferente visualizao do grafo da Figura 5.7.

Figura 5.8: Transformaes Visuais.

importante ressaltar que nem toda visualizao de informao til para o usurio, sendo dois aspectos cruciais para este m: a expressividade e a efetividade [71].

5.1 Tcnicas de Visualizao de Informaes

90

Uma visualizao pode ser considerada expressiva quando capaz de apresentar todos os dados de interesse do usurio, sem qualquer informao sobressalente. J a efetividade se relaciona com a apresentao das informaes de forma clara, objetivando sua percepo de forma fcil e rpida, minimizando possveis erros de interpretao. De acordo com Nascimento, expressividade e efetividade so aspectos essenciais, pois suas ausncias implicam em visualizaes incapazes de enfatizar padres relevantes nos dados, no acrescentando algo signicativo ao j trivialmente conhecido [75]. Mesmo em uma poca em que Computao e Visualizao da Informao eram estudos distantes, o grafo construdo por Euler representou as pontes de Knigsberg de formas expressiva e efetiva, contribuindo fundamentalmente para o avano da cincia.

5.1

Tcnicas de Visualizao de Informaes

A escolha da metfora visual mais adequada para visualizao de estruturas fundamental para facilitar o entendimento humano sobre os dados. Nesse sentido, nas vrias tcnicas de visualizao de informaes, frequentemente, os autores buscaram inspirao em objetos do mundo real ou geomtricos, para mapear o conjunto de informaes. Dentre as tcnicas mais utilizadas destacam-se [75]: Grafos: Utilizado para demonstrar relaes entre objetos ou pessoas ou estruturas hierrquicas; Fisheye: Permite uma viso mais detalhada de uma regio de interesse como o utilizado no menu do Mac OS; Browser Hiperblico: Destacam uma rea especca de interesse com desenho radial de rvores, para auxiliar na explorao de grandes hierarquias; Bifocal Display: Itens de informao so apresentados em trs reas distintas, uma central que contm a informao em foco, e o restante nas laterais; Perspective Wall: Utiliza vises detalhadas e contextuais para suportar a visualizao linear de espaos de informaes estruturadas; Coordenadas paralelas: Mapeia um espao n-dimensional em uma estrutura bidimensional que usa n eixos paralelos verticais equidistantes. Para o propsito desta dissertao, grafos so estruturas visuais interessantes, pois, alm de serem intuitivos, possuem alto poder como ferramenta de modelagem e representao de dados relacionais. Muitos dos aplicativos que utilizam grafos necessitam deste poder para que a informao que eles representam possa ser melhor compreendida e utilizada. Assim, a construo de grafos desempenha um papel importante no campo de Visualizao da Informao, sendo aplicada em diferentes reas da cincia.

CAPTULO 6

Frameworks Multiagentes Java

A caracterstica essencial das plataformas livres consiste na abstrao de conhecimento viabilizada aos seus usurios, que usufruindo de seus importantes recursos, conseguem criar inovaes em diferentes escalas. Uma das plataformas mais produtivas que se desenvolveu notoriamente foi a Web. Segundo Johnson, "a Web pode ser imaginada como uma espcie de stio arqueolgico, com camadas sobre camadas de plataformas enterradas sob cada pgina" [61]. Em 1990, Tim Berners-Lee foi capaz de projetar sozinho esse poderoso meio porque pde construir livremente sobre os protocolos abertos da Internet [61]. Logicamente, no foi necessrio criar um sistema inteiro para que a comunicao entre computadores se espalhasse mundialmente, um problema outrora resolvido. Bastou-lhe construir uma estrutura padro para descrever pginas de hipertexto (HTML) e compartilh-las atravs de canais da Internet (HTTP). At mesmo o HTML se baseou em outra plataforma, a SGML, desenvolvida pela IBM na dcada de 60 [61]. Menos de duas dcadas depois, quando Hurley, Chen e Karim criaram o YouTube [48], maior repositrio mundial de vdeos, o zeram combinando elementos de trs plataformas distintas: a Web, a plataforma Flash [3], e a linguagem de programao Javascript [45]. Para Johnson, a habilidade de construir sobre estas plataformas preexistentes explicam como trs sujeitos conseguiram criar o YouTube em apenas seis meses [61]. Em um processo anlogo, o uso de uma plataforma devidamente homologada, e disponibilizada livremente para a criao de sistemas multiagentes torna-se fundamental, pois minimiza o esforo de desenvolvimento de aplicaes sob este paradigma. Consequentemente, ao se valer de uma ferramenta com estas propriedades, o desenvolvedor estimulado a utilizar os recursos que j esto prontos e validados, evitando assim que os mesmos sejam refeitos desnecessariamente. De acordo com o cientista da computao Jair Alarcn, alguns atributos no podem ser negligenciados em uma plataforma de desenvolvimento para criao de agentes e sistemas multiagentes, destacando-se como essenciais [7]: Linguagem: utilizar uma linguagem orientada a objetos, ter portabilidade e sintaxe

6.1 JADE - Java Agent DEvelopment framework

92

simples, ser distribuda, aberta, segura, robusta e possuir diversos recursos necessrios programao de sistemas multiagentes; Licena: poder ser utilizada e modicada gratuitamente sem nenhuma restrio, como especicado pela FSF (Free Software Foundation) [94]; Atualidade: possuir algum tempo de surgimento, alm de se manter devidamente atualizada, o que indica respectivamente, maturidade e continuidade; Caractersticas: disponibilizar o maior nmero de servios e recursos, seguir padres para implementao de sistemas multiagentes, e ser eciente; Suporte: disponibilizar uma documentao adequada atravs de tutoriais, manuais, guias, livros, alm de fruns e listas de discusso. Em 2010, Alarcn realizou um breve comparativo entre vinte diversas ferramentas que trabalham sob o paradigma multiagente, objetivando denir a melhor plataforma [7]. JADE, JESS, CARTAGO, Jadex, Zeus, AgentBuilder, Voyager e Grasshopper so alguns exemplos das ferramentas analisadas de acordo com suas adequaes, aos atributos tcnicos e de qualidade levantados pelo cientista. Segundo Alarcn, a escolha pela ferramenta JADE foi feita com facilidade, pois foi a nica a atender todos os critrios estipulados em sua avaliao. Valendo-se desta anlise pr-concebida pelo cientista, e vericando que a referida plataforma, alm de ter sido escrita em Java, mantm-se devidamente atualizada perante a data desta dissertao, a adoo do framework multiagente JADE foi realizada para compor esta obra.

6.1

JADE - Java Agent DEvelopment framework

JADE (Java Agent DEvelopment framework) um framework, arcabouo, ou biblioteca de software, que possibilita o desenvolvimento de aplicaes baseadas em agentes, conforme as especicaes da FIPA (The Foundation for Intelligent Physical Agents) [59]. A FIPA uma organizao de padronizao IEEE que promove este tipo de tecnologia, alm de viabilizar a interoperabilidade destes padres com outras abordagens. Segundo Alarcn, antes das especicaes da FIPA existiam cerca de 60 sistemas proprietrios de agentes em competio, sendo a maioria fechada e incompatvel, reetindo um atraso no desenvolvimento deste tipo de sistema. Atualmente, estas especicaes formam o maior movimento de padronizao nesta rea da tecnologia, sendo o JADE considerado o principal framework de cdigo aberto que as implementa [7]. O desenvolvimento do JADE iniciou-se em 1998 pela Telecom Italia. Logo aps, no ano de 2000, o framework adentrou a comunidade de software livre, e desde ento, tem

6.1 JADE - Java Agent DEvelopment framework

93

sido distribudo sob a licena LGPL, que diferentemente da GPL, no impe qualquer restrio de utilizao do software. Atualmente, o JADE pode ser adquirido em [96]. Uma caracterstica importante dessa ferramenta se deve ao fato de ser possvel distribu-la atravs de diversas mquinas com sistemas operacionais diferentes. Outro benefcio, refere-se possibilidade de toda sua congurao, gerenciamento e depurao poderem ser feitos em tempo de execuo atravs de ferramentas grcas remotas [6]. O JADE possui uma arquitetura de comunicao exvel e eciente, uma vez que o modelo de comunicao FIPA foi todo implementado. O mecanismo de transporte capaz de se adaptar a qualquer situao, atravs da escolha do protocolo mais adequado. Alm disso, a maioria dos protocolos de interao FIPA tambm foi implementada, o mesmo ocorrendo para com os protocolos de gerenciamento de ontologias [6].

6.1.1

Arquitetura do JADE

Na arquitetura do JADE, cada computador possui um continer onde vrios agentes podem ser executados, como ilustrado na Figura 6.1 [7]. As plataformas podem ser compostas por um conjunto de contineres, sendo somente um deles o continer principal (Main-Container), dotado de dois agentes particulares: o Sistema Gerenciador de Agentes (Agent Management System - AMS) e o Diretrio Facilitador (Directory Facilitator - DF) [20].

Figura 6.1: Arquitetura do JADE.

O AMS supervisiona a plataforma por completo, controlando o ciclo de vida de todos os agentes. Alm disso, atravs de um servio particular denominado servio de pginas brancas (white-pages), o AMS mantm os estados e identicadores dos agentes, que devem ento se registrar nele para obter um AID (Agent Identier) vlido. O DF responsvel pelo servio de pginas amarelas (yellow-pages), usado por qualquer agente que queira registrar ou procurar servios disponveis. A noticao dos agentes sobre um novo servio registrado ou modicado tambm realizada pelo DF.

6.1 JADE - Java Agent DEvelopment framework

94

Os agentes se comunicam atravs do Sistema de Transporte de Mensagens (Messaging Management System - MMS), tambm chamado de Canal de Comunicao de Agentes (Agent Communication Channel - ACC). O MMS responsvel por toda comunicao entre agentes dentro e fora da plataforma, j que o agente pode se relacionar tanto com a aplicao externa quanto com o JADE [7]. O transporte de mensagens em um mesmo continer realizado pelos mtodos Java. J o transporte de mensagens entre contineres viabilizado pela JRM (Java Remote Message). Fechando o ciclo, o transporte entre plataformas pode ser feito pelo protocolo IIOP (Internet Inter-Orb Protocol) [7].

6.1.2

Ciclo de Vida de Agentes

Os estados possveis de um agente no JADE, que denem seu ciclo de vida, a implementao do modelo especicado pela FIPA, conforme ilustrado na Figura 6.2 [19].

Figura 6.2: Ciclo de Vida dos Agentes.

Estes estados so representados como constantes estticas da classe Agent, podendo ser modicados atravs de mtodos especcos. Os principais estados so [19]: INITIATED: o agente foi instanciado mas ainda no se registrou no AMS. Desta forma ele ainda no possui nome e endereo, o que inviabiliza sua comunicao com outros agentes; ACTIVE: o agente est registrado no AMS, portanto possui nome e endereo, alm de possuir todas as funcionalidades de um agente; SUSPENDED: o agente est interrompido, assim sua thread permanece suspensa e nenhum comportamento executado;

6.1 JADE - Java Agent DEvelopment framework

95

WAITING: o agente est bloqueado, esperando por determinada ocorrncia. Normalmente um agente acordado atravs de uma mensagem; DELETED: o agente est denitivamente excludo, j que sua thread encerrou a execuo, desvinculando-o automaticamente do AMS; TRANSIT: o agente est migrando para uma nova localizao.

6.1.3

Tarefas de Agentes

As tarefas no JADE representam as aes a serem realizadas por um agente, obtendo a denominao de comportamentos (behaviours). Cada agente JADE ocupa uma thread separada, que por sua vez, tambm compartilhada por todas as suas tarefas. Embora possam ser criadas tarefas que utilizem threads separadas, este recurso no visto como uma boa prtica, pois a mudana de threads 100 vezes mais lenta se comparada a uma chamada de mtodo, alm de prover problemas de sincronizao [102]. O escalonador de tarefas ca escondido do programador, realizando um agendamento no preemptivo colaborativo round-robin [20]. Isto signica que cada execuo de tarefa corresponde a uma nica fase ativa, tornando-a ininterrupta enquanto recebe os recursos de processamento. A seguir feita uma descrio das classes que implementam behaviours [7]: Behaviour: superclasse de todas as classes que implementam tarefas, possuindo a estrutura dos comportamentos dos agentes JADE; SimpleBehaviour: modela tarefas atmicas, ou seja, aquelas que so realizadas inteiramente sem nenhuma interrupo; OneShotBehaviour: modela tarefas atmicas que no podem ser bloqueadas e s podem ser executadas uma nica vez; SenderBehaviour: implementa a classe OneShotBehaviour para envio de mensagens ACL (Agent Communication Language); ReceiverBehaviour: implementa uma tarefa para recebimento de mensagens ACL; CyclicBehaviour: modela tarefas atmicas que devem ser executadas ininterruptamente; WakerBehaviour: implementa um OneShotBehaviour que executado somente aps um tempo em milissegundos transcorrido;

6.1 JADE - Java Agent DEvelopment framework

96

TickerBehaviour: implementa um CyclicBehaviour que deve ser executado periodicamente; CompositeBehaviour: constitui-se por outros behaviours (lhos), que controlam sua execuo; SequentialBehaviour: executa suas subtarefas sequencialmente, enquanto alguma delas ainda no foi nalizada; ParallelBehaviour: executa suas subtarefas concorrentemente e termina quando uma condio particular nas mesmas ocorre; FSMBehaviour: executa suas subtarefas de acordo com uma mquina de estados nitos.

6.1.4

Comunicao entre Agentes

A comunicao entre os agentes no JADE viabilizada atravs do transporte de mensagens ACL (Agent Communication Language). Para que seja possvel o envio destas mensagens, inicialmente necessrio instanciar um objeto da classe ACLMessage que as representem. Em seguida, campos deste objeto como o destinatrio, o contedo da mensagem, alm de opes como ontologias, devem ser corretamente preenchidos, para que nalmente seu envio possa ser realizado por um mtodo especco [7]. Antes da criao do objeto da classe ACLMessage necessrio criar um objeto da classe AID que representar o identicador do agente destinatrio, que ao ser instanciado, recebe como parmetro o endereo de destino da mensagem a ser enviada [7]. Aps esse processo, possvel ento criar o objeto da classe ACLMessage, passando como parmetro ao construtor a performativa da mensagem. Esta performativa, tambm chamada de ato de comunicao, indica ao receptor a inteno da mensagem, podendo ser identicadas como: Agree, Cancel, Conrm, Failure, Inform, Not Understood, Propose, Refuse, Request, dentre outras [7]. Todas essas performativas so baseadas na teoria do ato da fala que dene funes da comunicao, e que objetivam classicar as mensagens segundo a funo que exercem, como Interrogativas, Exercitivas, Referenciais, Fticas, etc [96]. Para que um agente possa receber mensagens, o passo inicial a criao de uma tarefa capaz de perceber as mesmas. Em seguida, torna-se necessrio a construo de uma instncia do contedo da mensagem atravs de um mtodo especco da plataforma. Finalmente, basta process-la e, se necessrio, retornar alguma resposta [7]. O JADE tambm disponibiliza o servio de pginas amarelas, pelo qual os agentes podem fornecer e procurar por servios. Em um ambiente heterogneo, com agentes especializados em tarefas especcas, fundamental este tipo de recurso cooperativo.

CAPTULO 7

Frameworks Grcos Java

O modelo de referncia para o processo de visualizao de informaes apresentado por Card, ilustrado na Figura 5.4, compe-se de trs etapas: as Transformaes de Dados, o Mapeamento Visual e as Transformaes Visuais. As duas ltimas etapas deste modelo so fatores determinantes para o propsito da elaborao visual dos dados, uma vez que a imagem nal pode simplicar informaes ou revelar padres ocultos. Para Lima, o Mapeamento Visual possibilita que os dados nalmente ganhem vida atravs de uma forma grca deliberada [68]. Ele leva em considerao fatores importantes como cor, contraste, espaamento, posio, tamanho e forma, contemplando no apenas mdulos individuais, mas tambm a composio de todo o ambiente contguo. J as Transformaes Visuais representam uma ferramenta de descoberta e interatividade, fornecendo a camada nal de coalescncia para explorao. Esta camada de unicao do modelo fundamental para a anlise exploratria, permitindo aos usurios investigar, ltrar, manipular, remodelar e examinar o resultado visual, a m de identicar propriedades, relaes, regularidades, ou padres nos dados referentes. Em uma denio ampla de visualizao, consensual que a informao pode ser transmitida com sucesso atravs de execues estticas ou interativas. No entanto, relevante o questionamento do que realmente dene Visualizao da Informao para alm de outros campos paralelos, como Design de Informao ou Grcos de Informao. De fato, a sua natureza suportada por computador interativo o que realmente a torna diferente, perante o alto grau de complexidade dos sistemas analisados [68]. Por essa razo, a escolha de determinado framework para a criao do Mapeamento Visual, bem como para a viabilizao das Transformaes Visuais, torna-se preponderante para que anlises mais profundas venham a ser realizadas. Tais frameworks iro fornecer os meios para a criao de um sistema de visualizao de informao, e como tal, devem proporcionar alto nvel de personalizao e uma maneira fcil de usar os recursos grcos do hardware. Pode-se distinguir dois tipos principais de frameworks grcos: de alto e baixo nvel. Cada um fornece diferentes nveis de controle sobre o hardware grco de uma mquina. Enquanto os primeiros podem proporcionar uma maior gama de recursos

7.1 JUNG - Java Universal Network/Graph Framework

98

visuais, os segundos podem produzir uma renderizao mais rpida ou um controle mais efetivo sobre o que est sendo desenhado na tela [34]. No obstante, em se tratando de redes complexas, a utilizao de frameworks de alto nvel fundamental, pois alm de usufrurem de um forte poder de abstrao, disponibilizam vastos recursos interacionais, geralmente ausentes em seus contrapartes. Diversos frameworks pertencentes a esta classe foram analisados durante a construo desta dissertao como: JUNG [78], Prefuse [58], JavaView [85], Piccolo [18], yFiles [110], e Gephi [47]. De forma geral, os frameworks JUNG e Prefuse destacamse na academia como os mais utilizados em projetos com grafos que representam redes complexas, como pode ser observado nestes trabalhos [34] [5] [21] [54] [93]. Escrito em Java, com verso e documentao atualizados, e possuidor de diversos recursos para mapeamento e transformaes visuais, alm de disponibilizar algoritmos para criao e anlise de grafos, o JUNG foi a ferramenta mais completa para os propsitos desta obra, sendo consequentemente a escolha mais prudente.

7.1

JUNG - Java Universal Network/Graph Framework

JUNG um framework de cdigo aberto extensvel, desenvolvido e mantido desde 2003 para permitir a modelagem, anlise e visualizao de dados passveis de serem representados na forma de grafos [79], podendo ser obtido atualmente em [78]. Fornecido livremente sob a licena de cdigo aberto BSD (Berkeley Software Distribution) [100], o JUNG permite que qualquer pessoa crie obras derivadas de suas bibliotecas, desde que elas reconheam a contribuio do framework para o seu trabalho. Como uma biblioteca, o JUNG pode ser utilizado tanto para a construo de ferramentas orientadas por redes, como para fornecer tal orientao para sistemas existentes. A natureza de cdigo aberto do projeto facilita os processos de criao de cdigos, e de compreenso do funcionamento da ferramenta. Como resultado, os membros da comunidade do JUNG tm sido capazes de contribuir com um grande nmero de extenses, algoritmos e correes relevantes. As principais caractersticas do JUNG incluem [79]: Suporte para diversas representaes de entidades e suas relaes, incluindo grafos orientados e no orientados, grafos multimodais, multigrafos e hipergrafos; Mecanismos para anotar grafos, entidades e relaes com metadados. Estas capacidades facilitam a criao de ferramentas de anlise de conjuntos de dados complexos que podem examinar as relaes entre as entidades, bem como os metadados anexados a cada entidade e relao;

7.1 JUNG - Java Universal Network/Graph Framework

99

Implementao de uma srie de algoritmos da Teoria dos Grafos, anlise exploratria de dados, anlise de redes sociais, e aprendizagem de mquina. Estes incluem rotinas para clustering, otimizao de decomposio, gerao de grafos aleatrios, anlise estatstica e clculo de distncias da rede, uxos, e as medidas de classicao (centralidade, PageRank, HITS, etc); Recursos de visualizao que facilitam a construo de ferramentas para a explorao interativa dos dados da rede. Os usurios podem escolher entre os layouts fornecidos e os algoritmos de visualizao, ou usar a estrutura para criar seus prprios algoritmos personalizados; Mecanismos de ltragem que extraem subconjuntos de uma rede, permitindo aos usurios centralizarem sua ateno em pores especcas da mesma. Esses recursos fazem do JUNG uma excelente plataforma para anlise exploratria de dados relacionais. Ele pode ser utilizado em fragmentos simples de cdigo em teste, ou para auxiliar no desenvolvimento de uma ferramenta sosticada, com uma interface grca de usurio. O JUNG no por si s uma ferramenta autnoma, mas sim uma biblioteca que pode ser utilizada para apoiar a construo de ferramentas especcas.

7.1.1

Arquitetura do JUNG

Uma importante caracterstica do JUNG o seu modelo de arquitetura, apresentado na Figura 7.1 [79].

Figura 7.1: Arquitetura do JUNG.

7.1 JUNG - Java Universal Network/Graph Framework

100

A biblioteca foi criada de modo a abranger as mais diversas necessidades, sendo assim bastante genrica, capaz de representar grafos de diversas formas [84]. No nvel mais elevado, existe a interface denominada ArchetypeGraph que dene as diretrizes dos grafos. No nvel imediatamente inferior, especializando a interface ArchetypeGraph, encontra-se a interface Graph. Esta objetiva representar elementos de grafos sem arestas paralelas. Para se trabalhar com grafos direcionados e no direcionados, distinguindo-os dos demais, foram criadas duas interfaces: DirectedGraph e UndirectedGraph. Estas interfaces permitem validaes em tempo de compilao, no permitindo referncias a elementos fora de seus domnios [84]. A seguir so disponibilizadas as implementaes destas interfaces, atravs das classes UndirectedSparseGraph para grafos no direcionados, e DirectedSparseGraph para grafos direcionados. Em uma camada intermediria, existe uma classe implementando funcionalidades comuns a grafos direcionados e no direcionados denominada AbstractSparseGraph. Todas essas implementaes utilizam a representao de grafos em forma de listas de adjacncia, o que pode ser observado atravs dos prprios nomes das classes que contm a palavra Sparse [84]. A justicativa que grafos esparsos, cujo nmero de arestas da ordem de O(n), so em geral representados de maneira mais eciente e econmica usando este tipo de estrutura de dados. J os grafos densos, que possuem a quantidade de arestas da ordem de O(n2 ), so melhor projetados com matrizes de adjacncia.

7.1.2

Criao de Grafos

Existem trs formas para a criao de grafos no JUNG. A primeira pode ser feita a partir da leitura de dados em um arquivo. O framework suporta o formato Pajek, baseado em uma estrutura de arquivo texto, e o formato GraphML, baseado em arquivos XML [79]. A segunda maneira de gerar um grafo no framework atravs da criao individual dos vrtices e das arestas [79]. Para isto, anteriormente deve ser criada uma instncia das classes UndirectedSpareGraph ou DirectedSparseGraph que determinar o objeto referente ao grafo. Em seguida, vrtices e arestas devem ser adicionados sequencialmente, com a restrio de arestas s podendo ser criadas entre dois vrtices existentes. Um grande diferencial da ferramenta refere-se ao tipo de dado que pode representar um vrtice ou uma aresta. No JUNG, qualquer objeto vlido pode fazer esta representao, o que viabiliza a utilizao de classes especcas como estrutura de cada um destes elementos do grafo. Com este recurso, aumenta-se enormemente a exibilidade, principalmente quando se trata de armazenar e recuperar os atributos desses elementos. Uma ltima forma de produzir um grafo no framework atravs de algoritmos preexistentes. Small-World Graphs, Power-Law Graphs, Random Graphs [78], so alguns

7.1 JUNG - Java Universal Network/Graph Framework

101

dos exemplos de algoritmos implementados na plataforma. Consequentemente, o usurio precisa apenas de informar os respetivos parmetros de cada algoritmo e process-lo.

7.1.3

Visualizao de Grafos

Para visualizar um grafo no JUNG so necessrias trs implementaes consecutivas. Primeiro, cria-se a estrutura do grafo no cdigo. Em seguida, um layout para a organizao dos vrtices e arestas deve ser vinculado ao grafo. Finalmente, um componente para exibir o grafo com o layout anteriormente denido deve ser produzido [88]. Na visualizao e renderizao do grafo so utilizadas as bibliotecas Swing e Awt do Java. A Swing responsvel pela criao dos componentes grcos, e a Awt utilizada para criao de interfaces com o usurio e para a pintura de grcos e imagens [79]. Na Figura 7.2 apresentado um grafo no direcionado criado pelo framework JUNG, com sua congurao padro de visualizao.

Figura 7.2: Grafo Gerado pelo JUNG.

A disposio dos vrtices e arestas no JUNG gerada automaticamente atravs do uso de layouts pr-denidos. A Figura 7.2 demonstrou o uso do layout KKLayout. Alm deste, existem outros layouts fornecidos pelo framework como: ISOMLayout, CircleLayout, FRLayout e SpringLayout [79], detalhados a seguir: KKLayout: (Algoritmo: Kamada-Kawai) - Usa um layout de n, no respeitando as chamadas de ltro; ISOMLayout: (Mapa de Auto-Organizao Meyer) - Implementa um algoritmo que realiza uma auto-organizao de layout; CircleLayout: (Layout simples de posies randmicas de vrtices em um crculo) - Posiciona os vrtices igualmente espaados em um crculo regular; FRLayout: (Algoritmo: Fruchterman-Reingold) - A disposio dos ns segue um algoritmo baseado na concepo de que ns prximos acabam por repelir-se; SpringLayout: Possui ns lhos associados com determinados tipo de regras.

7.1 JUNG - Java Universal Network/Graph Framework

102

7.1.4

Filtros

O JUNG pode suportar a utilizao de ltros, atravs dos quais possvel converter um grafo em algum de seus subgrafos [79]. Os vrtices e as arestas podem ser ltrados de acordo com um predicado especicado, valendo-se de algum atributo referente a estes elementos. Isso permite aos usurios ltrar sem a necessidade de criar novos grafos menores, poupando logicamente, tempo e recursos computacionais. Embora o usurio possa escrever um ltro personalizado apenas pela implementao da interface Filter, geralmente torna-se mais fcil estender uma das classes base de ltro fornecidas pela plataforma. Para o primeiro caso necessrio a reescrita do mtodo booleano que dene o status de visualizao de cada vrtice ou aresta do grafo.

7.1.5

Algoritmos

Diversos algoritmos de rede so disponibilizados pela plataforma, sendo suas aplicaes especcas para cada categoria. Os algoritmos de aglomerao ou clustering se baseiam nos conjuntos de objetos semelhantes de alguma forma. Em uma rede, a semelhana muitas vezes vericada por propriedades topolgicas como a conectividade, mas tambm pode ser identicada pelas propriedades dos vrtices ou arestas. Um destes algoritmos de agrupamento o EdgeBetweennessClusterer, que calcula aglomerados para um grafo com base na propriedade de intermediao das arestas [95], como visualizado na Figura 7.3 [80].

Figura 7.3: Algoritmo EdgeBetweennessClusterer.

7.1 JUNG - Java Universal Network/Graph Framework

103

Os algoritmos topolgicos, de caminhos e uxos, executam operaes em grafos relacionadas com sua topologia. Um exemplo importante desta categoria o DijkstraShortestPath, que calcula o comprimento do caminho mnimo ponderado a partir dos vrtices origem e destino especicados [95]. A Figura 7.4 [80] exemplica esta tcnica.

Figura 7.4: Algoritmo DijkstraShortestPath.

Outra categoria contemplada pelo framework so os algoritmos de importncia, que avaliam quo relevante cada vrtice ou aresta para a rede, de acordo com critrios geralmente baseados no posicionamento deles perante o resto do grafo. Dentre estes algoritmos inclui-se o BetweennessCentrality, que rotula cada vrtice e aresta de um grafo com um valor obtido a partir do nmero de caminhos mnimos que passam por eles [95]. Algoritmos de medidas estatsticas referentes aos grafos tambm so fornecidos pelo JUNG. Alguns contemplados so: coeciente de aglomerao, dimetro da rede, distncia geodsica mdia e grau de distribuio [95].

7.1.6

Recursos de Interao

Os recursos de interao providos pelo JUNG destacam-se por sua grande contribuio ao processo de Transformaes Visuais. Adio, remoo, seleo e movimentao de vrtices e arestas, colorao, mudana de forma, rotao do eixo da imagem, deformao, aumento e diminuio da escala (zoom), so alguns dos recursos interacionais disponibilizados pelo framework. Combinados com os layouts de visualizao, tais recursos tornam-se imprescindveis para a anlise dos grafos gerados. A possibilidade de interagir com o mesmo grafo em diferentes visualizaes, sendo estas ainda passveis de deformaes deliberadas, aumenta a chance de descoberta de padres despercebidos. A Figura 7.5 mostra em seu lado esquerdo a congurao inicial de um grafo gerado por Santos no JUNG com o layout SpringLayout2, utilizando-se de determinada

7.1 JUNG - Java Universal Network/Graph Framework

104

base de dados [88]. O lado direito corresponde estabilizao do layout promovido automaticamente pela plataforma.

Figura 7.5: Grafo Inicial e Estabilizado.

Ambos os lados da Figura 7.6 mostram diferentes ampliaes do grafo da gura anterior (zoom).

Figura 7.6: Grafo Ampliado.

O lado esquerdo da Figura 7.7 refere-se rotao do eixo da imagem preservando as orientaes de seus rtulos. O lado direito corresponde inclinao da imagem para se obter uma nova perspectiva.

Figura 7.7: Grafo Rotacionado e Distorcido.

CAPTULO 8

Anlise de Trabalhos Correlatos

Neste captulo, uma breve descrio de alguns dos trabalhos relacionados com o propsito desta obra apresentada. The Oracle of Kevin Bacon, Vizster, SocNetV, Facebook Visualiser, TagGraph e MentionMapp so as aplicaes analisadas, que possuem caractersticas semelhantes s da aplicao Fluzz. Algumas delas trabalham a questo visual, dispondo de recursos grcos para a representao de redes. Outras, alm deste ltimo recurso, se propem a disponibilizar algoritmos de busca, e algoritmos para a criao e anlise de redes sociais, limitando-se, porm, aos modelos j existentes na literatura. Uma excelente fonte de pesquisa sobre outros projetos desta natureza pode ser encontrada no site VisualComplexity.com [67]. Idealizado pelo pesquisador da Microsoft, Manoel Lima, este site foi criado com o intuito de ser um espao unicado para todos os interessados na questo de visualizao de redes complexas. Nenhum dos projetos analisados pertence iniciativa brasileira, demonstrando que a pesquisa nacional nesta rea recente, ainda carece de uma ateno signicativa.

8.1

The Oracle of Kevin Bacon

No por acaso que este foi o primeiro trabalho correlato pesquisa a ser analisado. Pouco tempo depois que os estudantes de computao Glen Wasson e Brett Tjaden disponibilizaram o site The Oracle of Kevin Bacon [105], Duncan Watts e Steven Strogatz obtiveram sua primeira conrmao real da existncia de redes de mundo pequeno. O mesmo site tambm serviu para Albert Barabsi vericar a existncia dos hubs. Ironicamente, os possveis padres estruturais ocultos da natureza foram descobertos pelos cientistas, atravs de uma aplicao originada por uma simples brincadeira. No incio de 1994, um jogo conhecido por Jogo do Kevin Bacon nasceu na cultura popular americana. Alunos do Albright College, na Pensilvnia, imaginaram que como o ator Kevin Bacon tinha atuado em lmes de naturezas to diversas, isso tornaria possvel conect-lo a quase qualquer ator em Hollywood [14]. O objetivo do jogo determinar o nmero Bacon de um determinado ator descobrindo o caminho mais curto at o astro do cinema. Algum que j atuou em um

8.1 The Oracle of Kevin Bacon

106

lme com Bacon possui um nmero Bacon 1. Caso uma pessoa no tenha atuado com ele, mas atuou com algum que j o fez, esta pessoa possui um nmero Bacon 2. Graas a este jogo, em 1997, Wasson e Tjaden perceberam que a determinao da distncia entre dois atores quaisquer era um projeto vivel da Cincia da Computao, caso fosse possvel obter acesso a um banco de dados dos atores e lmes j lanados [14]. Aps obterem acesso ao Internet Movie Database [9], maior fonte cinla mundial, transcorreu pouco tempo para que Wasson e Tjaden instalassem o site The Oracle of Kevin Bacon. Ao informar os nomes de dois atores quaisquer, em milissegundos o site apresenta o caminho mais curto entre eles, listando a cadeia de lmes e atores pelos quais so conectados. Um exemplo ilustrado na Figura 8.1, onde foi calculado o caminho mnimo entre o ator brasileiro Antnio Fagundes, e o ator americano Tom Cruise.

Figura 8.1: The Oracle of Kevin Bacon.

A cada duas semanas o site realiza atualizaes de vrios arquivos de banco de dados do Internet Movie Database, e atualmente contempla cerca de 1,5 milhes de atores e atrizes, e 1,2 milhes de lmes e programas de TV [105]. A aplicao usa uma busca em largura para encontrar o caminho mnimo entre pares de atores, uma vez que o grafo representativo da rede no ponderado, o que a diferencia drasticamente da aplicao Fluzz. Alm disso, diferentemente do Fluzz, o site The Oracle of Kevin Bacon no possui recursos para visualizao grca de parte ou de toda a rede de atores, concentrando-se somente na representao em formato

8.2 Vizster

107

linear dos caminhos encontrados pelo mecanismo de busca. Esta limitao tornou intil a disponibilizao de recursos interativos pela ferramenta, que obviamente no os possui. Sempre que o site responde a uma consulta, os resultados so armazenados em cache para que futuras solicitaes referentes ao mesmo ator possam ocorrer mais rapidamente. Cerca de 80% das consultas so atendidas por este recurso [105]. O The Oracle of Kevin Bacon, inconscientemente ao seu propsito original, se tornou um marco na pesquisa sobre redes. Importantes caractersticas identicadas neste meio, como aglomerao, distncias pequenas, componentes gigantes e hubs revelaram que o mundo no formado por eventos aleatrios, como acreditavam Erds e Rnyi.

8.2

Vizster

O Vizster constitui um ambiente visual para a explorao e anlise de redes sociais, incluindo dados de perl e topolgicos. A escala de exibio de informao e o layout foram escolhidos para apoiar o comportamento e a capacidade observadora dos usurios, permitindo-lhes expandir as redes visualizadas mantendo marcaes [56]. Realce interativo usado para explorar as relaes de amizade na plataforma. Panormica, zoom e tcnicas de distoro so fornecidos para ajudar os usurios a navegar pela visualizao da rede. Buscas textuais e um atributo de visualizao interativa conhecido por X-ray mode permitem explorao visual de dados de perl dos membros. Finalmente, uma anlise de comunidades fornecida visualmente para ajudar os usurios a construir e explorar estruturas de alto nvel destas organizaes. A ideia para a construo do Vizster se apoiou fortemente nos aspectos exploratrios e divertidos de uma importante rede social online, o Friendster. No obstante, enquanto os usurios regularmente exploravam a rede no Friendster, os formatos lineares limitavam tais exploraes [56]. Isto levou Jeffrey Heer e Danah boyd a desenvolver ferramentas mais ricas de explorao de redes. Para os autores do projeto, o uso de imagens foi indispensvel para a identicao de pessoas. Alm disso, eles perceberam a importncia de disponibilizar recursos de pesquisa para os dados de perl, trabalhando os resultados visualmente na interface [56]. O Vizster apresenta redes sociais usando uma representao familiar n-link, onde os ns representam as pessoas, identicadas por seus respectivos nomes e fotograas, e as ligaes representam os laos de amizade, como mostrado na Figura 8.2 [57]. As redes so apresentadas como redes egocntricas: redes que consistem de um indivduo e o seus amigos mais prximos. Usurios podem expandir a exibio selecionando ns, para fazer os contatos imediatos dos amigos visveis tambm. direita do visor da aplicao existe um painel de apresentao do perl das pessoas, onde se situa uma ferramenta de manipulao de pesquisas sobre o texto do mesmo.

8.3 SocNetV

108

Figura 8.2: Vizster.

Dada a falta de familiaridade a priori do usurio com sua rede estendida, uma perspectiva egocntrica no s carrega um fardo menos perceptivo e computacional, mas garante a presena de pontos de referncia facilmente identicveis para orientar o usurio, que se optar, pode expandir gradativamente a rede [56]. Diferentemente do Fluzz, o Vizster no disponibiliza diferentes layouts de visualizao para as redes. Tambm no possibilita a localizao de caminhos entre pares de ns, j que o foco da aplicao simplesmente a representao grca de redes sociais. O Vizster foi escrito em Java usando o framework grco Prefuse [58]. Para apoiar a procura de palavras-chave, o motor de busca Lucene [97] foi integrado aplicao, que persiste seus dados no banco de dados MySQL [82] ou em arquivos XML. A aplicao pode ser obtida livremente no endereo [57].

8.3

SocNetV

O SocNetV, acrnimo de Social Network Visualizer, uma ferramenta exvel e de fcil utilizao para a anlise e visualizao de redes sociais. Ele permite a construo e explorao de redes carregando arquivos em vrios formatos (GraphViz, GraphML, adjacncia, Pajek, UCINET, etc.), bem como suas modicaes [13]. A aplicao permite ao

8.4 Facebook Visualiser, TagGraph, Mentionmapp

109

usurio calcular propriedades bsicas de rede, tais como densidade, dimetro, distncias, comprimentos de caminho mnimo, centralidades e coecientes de aglomerao. Alm disso, o SocNetV oferece um rastreador Web embutido (crawler), permitindo que o usurio crie automaticamente a rede de todos os links encontrados em um determinada URL inicial. Dispe ainda de vrios algoritmos de layout para visualizaes de redes, e tambm para gerao das mesmas como Erds-Renyi, Watts-Strogatz, etc [62]. Desenvolvido por Dimitris Kalamaras em C ++ e Qt [76], um framework grco de cdigo aberto criado pela Nokia, o software est licenciado sob a GNU General Public License 3 (GPL3), e pode ser obtido no endereo [62]. Uma ilustrao da interface grca do software apresentada na Figura 8.3 [62].

Figura 8.3: SocNetV.

Basicamente, o SocNetV a aplicao mais prxima do Fluzz, diferenciandose por algumas particularidades. Primeiro, no existem modelos avaliativos dos laos de amizade, o que impossibilita a construo de um grafo ponderado representativo das redes sociais. A utilizao de agentes colaborativos heterogneos para a localizao de caminhos entre pares de ns, outro diferencial do Fluzz perante o SocNetV, que tambm no possui um modelo prprio para a evoluo deste tipo de rede.

8.4

Facebook Visualiser, TagGraph, Mentionmapp

Esta subseo foi destinada apresentao de aplicaes desenvolvidas para sites especcos, e que basicamente realizam o mesmo trabalho visual e operacional,

8.4 Facebook Visualiser, TagGraph, Mentionmapp

110

distinguindo-se somente por suas fontes informacionais. Diferentemente do Fluzz, nenhum deles oferece mecanismos para a localizao de caminhos nas redes, nem possibilita a manipulao de redes fora de seus domnios. O Facebook Visualiser [101] uma ferramenta criada por Sebastian Van Sande para explorar gracamente o Facebook. O usurio pode utiliz-lo para ver seus relacionamentos, e para vericar como seus contatos esto conectados entre si. A ferramenta, apresentada esquerda da Figura 8.4 [67], prov pequenos recursos, como a visualizao da fotograa importada do Facebook, e ltros por sexo e situao de relacionamento. Criado por Forrest Oliphant, o TagGraph [77], assim como o Facebook Visualiser, pode mapear gracamente a rede egocntrica do usurio no Facebook. Porm, sua concepo inicial foi devido ao relacionamento entre tags do site de imagens Flickr [109]. O aplicativo, apresentado no centro da Figura 8.4 [67], cria um grafo que viabiliza a navegao entre as tags criadas pelos usurios no Flickr, mapeando a rede de imagens relativas determinada tag. Caso o usurio clique em uma das imagens visualizadas, as mesmas so carregadas diretamente no Flickr. Alguns recursos so providos pela aplicao como zoom e movimentao dos objetos. Lanado pela Asterisq, o Mentionmap [72] uma aplicao Web para explorar a rede social online Twitter [44]. Ele permite que o usurio descubra as pessoas com que ele mais interage, carregando as atualizaes de cada usurio do Twitter (tweets) e encontrando as pessoas e hashtags mais utilizadas pelos indivduos a eles conectados. Clicando em um usurio, o Mentionmap, apresentado direita da Figura 8.4 [67], mostra a sua rede de menes, bem como detalhes de seu perl. As linhas traadas entre os ns tornam-se mais espessas medida que mais menes so realizadas, e pairando sobre uma aresta possvel vericar o nmero de menes. O Mentionmap tambm prov um recurso bsico de pesquisa de usurios, atravs da digitao de seus nomes.

Figura 8.4: Facebook Visualiser, TagGraph, Mentionmapp.

CAPTULO 9

Projeto da Aplicao

Ao trmino dos estudos descritos anteriormente, uma nova e importante fase foi iniciada: a concepo do projeto da aplicao Fluzz, encarregada de atender s trs metas denidas no principal objetivo desta dissertao. Delineando tais metas, esta ferramenta primeiramente assumiu a responsabilidade de arquiteturar interfaces grcas interativas, capazes de mapear redes sociais pr-denidas. A composio grca de redes insere-se necessariamente no campo de Visualizao da Informao, e pode ser um fator preponderante para anlises minuciosas de dados complexos, criando um canal facilitador de descobertas importantes. Como segunda meta, o Fluzz viabilizar a criao de redes sociais atravs de simulaes aliceradas nos principais modelos de rede propostos na literatura, e em um novo modelo formalizado nesta dissertao. A utilizao destas simulaes mostra-se de fundamental importncia para a compreenso da evoluo das redes sociais, esclarecendo como diferentes variveis inter-relacionadas inuenciam neste processo. Finalmente, a terceira meta da ferramenta refere-se disponibilizao de mecanismos de busca para a localizao de pessoas especcas nas redes sociais, capazes de maximizar a probabilidade de inuncia entre os indivduos. Este processo compreende a otimizao de caminhos nas redes, que por sua vez, representam correntes formadas por um conjunto de indivduos sequencialmente adjacentes por suas relaes de amizade, principiado pelo indivduo de origem e estendido at o indivduo-alvo. Como as redes sociais violam a condio matemtica da desigualdade triangular, contar com o prestgio dos amigos pelos caminhos, pode se tornar o diferencial para a criao de novas relaes. Alm da inuncia exercida por um indivduo perante as pessoas que o circundam indiretamente, cada elo intermedirio pertencente a um caminho, pode contribuir signicativamente para o reforo desta inuncia. Por isso, diversas anlises sobre intensidade de inuncia em rede sero utilizadas para a criao de mecanismos inteligentes de buscas sociais, complementando, assim, o projeto da aplicao. De acordo com os princpios da Engenharia de Software, o projeto de um sistema constitui a etapa encarregada de transformar os resultados da Anlise de Requisitos em um conjunto de documentos e modelos capazes de serem interpretados durante o seu

9.1 Requisitos Funcionais

112

desenvolvimento. Dessa forma, o projeto da aplicao Fluzz consistiu no levantamento de requisitos funcionais e no funcionais, na criao dos diagramas de casos de uso, na modelagem da estrutura de dados, e na denio de sua arquitetura.

9.1

Requisitos Funcionais

Os requisitos funcionais, alm de descreverem as funcionalidades fornecidas, determinam os comportamentos esperados do sistema diante de diversas situaes de entrada, viabilizando a identicao de aes a serem executadas em cada situao. Perante o propsito da aplicao Fluzz, foram denidos 28 requisitos funcionais que abordam completamente as necessidades e caractersticas desejveis da ferramenta.

9.1.1

Persistncia dos dados gerados em um banco de dados

Este requisito visa permitir ao sistema armazenar em um banco de dados, as informaes pessoais dos indivduos das redes, alm de suas relaes de amizade. As informaes pessoais devem contemplar: um identicador, o nome, e trs atributos congurveis que sero preenchidos conforme as necessidades particulares de cada rede.

9.1.2

Visualizao bidimensional das redes por meio de grafos

O objetivo deste requisito gerar o mapeamento grco em duas dimenses de redes sociais pr-estabelecidas, valendo-se para isto da construo de grafos representativos. Estes grafos sero constitudos por vrtices que simbolizam as pessoas, e arestas que referenciaro os laos de amizades entre os indivduos. Este o principal requisito que atende primeira meta da aplicao, sendo complementado por outros que tambm contribuem para os processos de mapeamento e transformao visual das redes.

9.1.3

Distino visual dos vrtices pela intensidade de cores

Distinguir visualmente os vrtices das redes o propsito deste requisito. A ideia por traz de tal recurso gerar um mapeamento visual dos vrtices atravs da sobreposio de cores, que viabilizem a diferenciao das pessoas de acordo com seu grau de conexo.

9.1.4

Seleo individual dos vrtices e das arestas

Este requisito visa denir recursos que viabilizem a seleo individual de vrtices ou arestas presentes nos grafos gerados. Esta seleo pr-requisito para a realizao de outras aes subsequentes, como a movimentao destes componentes.

9.1 Requisitos Funcionais

113

9.1.5

Distino de cores para vrtices e arestas selecionados

Um recurso distintivo deve ser criado para facilitar a identicao visual por meio de cores, de vrtices ou arestas selecionados no grafo.

9.1.6

Movimentao individual ou em grupo dos vrtices

A aplicao dever prover meios de movimentao dos vrtices selecionados, podendo esta seleo contemplar um nico, ou um conjunto dos mesmos.

9.1.7

Movimentao do grafo inteiro

Alm da movimentao de vrtices, o sistema dever permitir a movimentao do grafo inteiro, viabilizando um melhor enquadramento de determinada perspectiva.

9.1.8

Variao da escala de visualizao do grafo

Um recurso extremamente importante da ferramenta dever ser provido atravs de mecanismos de zoom, permitindo que regies especcas das redes sejam analisadas em diferentes escalas. O objetivo principal deste mecanismo possibilitar a visualizao de detalhes topolgicos, muitas vezes despercebidos nos densos emaranhados das redes.

9.1.9

Rotao do grafo em torno de seus eixos

O sistema dever permitir a rotao da imagem gerada pela aplicao, para que diferentes ngulos possam ser utilizados na visualizao grca.

9.1.10

Deformao do grafo de maneira uniforme

Um recurso que tambm deve ser oferecido pela aplicao a possibilidade de deformao da imagem. Esta ao visa criar diferentes perspectivas da mesma topologia.

9.1.11

Visualizao do grafo por meio de diversos layouts

Diversos layouts de visualizao de redes devem ser disponibilizados pelo sistema, para que os detalhes particulares de cada algoritmo de visualizao, possam esclarecer informaes muitas vezes confusas em determinado layout. Dessa forma, importante que um mesmo grafo possa ser visualizado de diferentes formas, contribuindo com a descoberta de informaes ocultas de uma topologia especca.

9.1 Requisitos Funcionais

114

9.1.12

Clculo automtico dos pesos das arestas

Uma caracterstica fundamental da aplicao o clculo do peso das conexes dos vrtices, ou simplesmente, das arestas. Este clculo dever ser realizado automaticamente junto com o processo de visualizao das redes, disponibilizando esta informao assim que o grafo for criado. No contexto da ferramenta, este peso refere-se fora do relacionamento das pessoas, materializado pelos laos de amizade. Esta medida tida como de alta complexidade, por depender de variveis intrnsecas a cada relacionamento. No obstante, de acordo com Granovetter [50], a fora dos laos relacionais pode ser classicada basicamente em duas categorias: laos fortes e laos fracos. Cada uma destas subdivises gera todo um universo interacional que atribui s amizades certo grau de intensidade, proximidade ou intimidade. Esta classicao conciliada descoberta de Watts [107] sobre as dimenses sociais, possibilitou a criao de uma mtrica para estimar o peso das conexes. Segundo Watts, as pessoas compartilham mltiplas dimenses sociais como religio, prosso, ou localidade, e quanto mais dimenses elas compartilharem, mais chances possuiro de se conhecer. Utilizando este raciocnio, pode-se similarmente concluir que quanto mais dimenses duas pessoas compartilharem, mais intensa ser a fora da relao referente. A quantidade de amigos em comum, no pode determinar diretamente a quantidade de dimenses compartilhadas, porm um indicador relevante para diferenciar a intensidade das relaes. O motivo relaciona-se ao fato de que mais amigos em comum, aumentam signicativamente as chances de diferentes dimenses serem includas neste processo. Por isso, para o projeto da aplicao Fluzz, a fora ou o peso das conexes ser calculado dinamicamente atravs da quantidade de amigos em comum entre duas pessoas que se conhecem. Tal medida tem por objetivo diferenciar a fora dos laos de amizade de determinada pessoa. Ela serve indiretamente como um bom referencial para aumentar as chances de inuncia mtua em rede, entendendo que quanto mais intensa for uma relao, maiores as chances de interao e cooperao recproca.

9.1.13

Visualizao dos pesos das arestas de forma opcional

A informao do peso das arestas dever ser opcionalmente visualizada, atravs de algum mecanismo de apresentao deste dado na interface da aplicao.

9.1.14

Visualizao do perl de uma pessoa

O perl de um indivduo conter todos os dados pessoais providos pela aplicao, alm do clculo do nmero de amigos e do coeciente de aglomerao individual, podendo ser visualizado atravs da seleo de um vrtice em particular.

9.1 Requisitos Funcionais

115

9.1.15

Visualizao do perl de uma relao de amizade

Este perl informar as duas pessoas que formam a amizade selecionada, bem como o peso referente intensidade da relao, podendo ser visualizado atravs da seleo de uma aresta especca.

9.1.16

Apresentao da quantidade de vrtices do grafo

O respectivo requisito visa totalizar a quantidade de vrtices presentes no grafo, oferecendo a visualizao de tal medida.

9.1.17

Apresentao da quantidade de arestas do grafo


A quantidade total de arestas do grafo tambm deve ser informada pela aplicao.

9.1.18

Apresentao do coeciente de aglomerao da rede

Uma mtrica importante que deve ser calculada o coeciente de aglomerao total da rede, disponibilizando-o assim que o grafo for gerado.

9.1.19

Apresentao da distncia geodsica mdia da rede


O comprimento mdio dos caminhos tambm deve ser calculado pela aplicao.

9.1.20

Gerao de redes atravs dos modelos da literatura

Para este requisito alguns fatores devem ser considerados. Primeiro, deve ser possvel gerar redes a partir de uma base inicial vazia. Segundo, o recurso de gerao de redes tambm deve aceitar como origem alguma base de dados j pr-denida, e a partir de seus algoritmos, incrementar a quantidade de ns e conexes existentes. Terceiro, os modelos a serem utilizados neste processo devero contemplar as redes aleatrias de Erds e Rnyi, as redes de mundo pequeno de Duncan Watts e Steven Strogatz, e as redes sem escala de Albert Barabsi e Rka Albert, apresentadas no captulo 2. Finalmente, o critrio para adio de novos vrtices s redes deve seguir o seguinte esquema: a cada iterao um novo vrtice ser criado, e uma quantidade parametrizada de conexes para o mesmo deve ser efetivada. Dessa forma, com a dinmica evolutiva da rede, todos os vrtices a serem gerados devem se conectar mesma taxa de conexo de seus pares anteriores. Consequentemente, no existiro vrtices isolados, e dependendo do modelo de gerao de redes utilizado, a distribuio de graus poder ser mais ou menos uniforme. Este requisito, juntamente com o que ser apresentado na prxima seo 9.1.21, atendem completamente segunda meta da aplicao.

9.1 Requisitos Funcionais

116

9.1.21

Gerao de redes de acordo com um novo modelo

Um novo modelo de gerao de redes tambm dever ser disponibilizado pela aplicao, baseando-se em aperfeioamentos dos modelos j propostos na literatura. A ideia central deste novo modelo que ele seja capaz de equilibrar as foras, de certa forma, conitantes, dos dois principais modelos de gerao de redes estudados pela Cincia das Redes: as redes de mundo pequeno e as redes sem escala. Visando denir critrios que possam ser teis para a anlise da relevncia desses modelos, quatro caractersticas observveis nas redes por eles geradas foram mapeadas. O coeciente de aglomerao, que informa a mdia de coeso do crculo de amizades na rede, a distncia geodsica mdia, que mede o comprimento tpico dos caminhos, o tamanho do maior hub, que avalia a existncia de pessoas altamente conectadas, e a distribuio de graus da rede, que apresenta a probabilidade de um membro, aleatoriamente selecionado, ter um nmero especco de amigos. Como j foi estudado, as redes geradas pelos modelos de mundo pequeno e livres de escala apresentam distines importantes para cada uma dessas caractersticas avaliadas. A Tabela 9.1 apresenta, grosso modo, em uma escala de 0 a 5, as avaliaes destes dois tipos de modelos perante tais caractersticas, juntamente com a avaliao do modelo aleatrio que serve de parmetro referencial.
Tabela 9.1: Avaliao dos Modelos de Gerao de Redes
Redes Aleatrias Redes de Mundo Pequeno Redes Sem Escala CA 0 5 1 DGM 4 2 5 MH 2 1 5 DG Normal Normal Leis de Potncia

CA=Coeciente de Aglomerao, DGM=Distncia Geodsica Mdia, MH=Maior Hub, e DG=Distribuio de Graus.

importante esclarecer que tais avaliaes no servem como mtricas isoladas, devendo ser utilizadas apenas como parmetro comparativo entre os diferentes modelos. Uma rede do tipo livre de escala no pode ser caracterizada como fracamente aglomerada. No obstante, se estas redes forem comparadas com redes de mundo pequeno, certamente apresentaro aglomeraes bem menores. Por isso nesta caracterstica, cada rede recebeu respectivamente as avaliaes 1 e 5. Isso ocorre basicamente pelo fato das redes sem escala no utilizarem a estrutura social adjacente como um fator importante no processo de conexo. A nica informao analisada em seu processo conectivo o grau de conexo de cada vrtice, tornando algumas pessoas muito mais provveis de receberem conexes do que outras. Na sociedade, como bem identicou Watts, a estrutura social de uma pessoa torna alguns indivduos mais prximos do que outros, independente do grau de conexo.

9.1 Requisitos Funcionais

117

Em contrapartida, outro processo parece apontar um ponto fraco nas redes de mundo pequeno. Isoladamente estas redes no podem ser rotuladas como redes que apresentam caminhos tpicos longos. Todavia, ao se compar-las com as redes livres de escala, o comprimento tpico dos caminhos mostra-se bem maior. A explicao deste processo foi realizada por Barabsi. Como Watts assumiu que a distribuio de graus das redes, basicamente obedecia a uma distribuio normal, ele no foi capaz de identicar os hubs. Estes indivduos modicam a distribuio de graus da rede, encurtando distncias medida que se tornam mais bem conectados. Dessa forma, o equilbrio de foras objetivado pelo novo modelo a ser proposto, deve ser capaz de uniformizar positivamente as quatro caractersticas mensuradas, aproximando-se da real topologia da sociedade. Atingido este propsito, o modelo pode representar todo um novo universo geracional de redes, estabilizando pontos fracos, e permitindo que as principais descobertas dos modelos anteriores possam ser conciliadas. Denominado como Modelo Gama, este novo modelo de gerao de redes basicamente posiciona os padres de Watts e Strogatz, e Barabsi e Albert sob a mesma gide. Um parmetro ajustvel de controle gama foi denido como a varivel de interpolao entre estes dois modelos, criando toda uma famlia de regras de interao, cada qual especicada por um valor particular de . Na prtica, o que feito dar um valor, entre zero e um, ao parmetro ajustvel, determinando homogeneamente a forma de conexo dos vrtices adicionados s redes. Assim, se gama for zero, os grafos apresentaro topologias de redes de mundo pequeno. No outro extremo, quando gama igual a um, redes livres de escala caracterizaro a estrutura dos grafos. A Figura 9.1 apresenta a dinmica evolutiva deste modelo proposto.

Figura 9.1: Modelo Gama.

A indenio exatamente o que acontece no meio. Quando o valor de gama pequeno, a estrutura social local torna-se altamente importante para a determinao dos links, porm algumas conexes preferenciais certamente so realizadas. No obstante,

9.1 Requisitos Funcionais

118

quando o valor do parmetro alto, conexes preferenciais dominam a intenso conectiva dos vrtices, todavia algumas ligaes locais podem ser realizadas. A expectativa que em alguma regio intermediria, no muito prxima dos extremos, algo surpreendente possa ser descoberto. esta revelao que determinar o melhor ponto de equilbrio dos dois modelos base, estabelecido pelo Modelo Gama.

9.1.22

Importao dos dados de redes pr-denidas

Quando a necessidade no for a gerao automtica de redes, e sim a anlise de redes sociais pr-existentes, o usurio pode se valer de aplicaes externas para efetuar a importao destes dados. Desta forma, ser possvel utilizar os recursos da aplicao para realizar anlises em redes sociais reais.

9.1.23

Adio de conexes s redes existentes

A aplicao dever prover recursos para a adio de novas conexes aos vrtices existentes nas redes, de acordo com algum dos modelos implementados.

9.1.24

Deteco de caminhos entre duas pessoas

Um dos principais requisitos da aplicao a capacidade de pesquisa de caminhos entre dois indivduos nas redes, maximizando a probabilidade de inuncia entre os mesmos. Para a realizao deste procedimento, duas caractersticas so essenciais: a minimizao de distncia, e a maximizao dos pesos referentes s relaes de amizade. Entende-se por minimizao de distncia, a possibilidade de comparar diversos caminhos, e decidir pelo que apresenta menor custo, que em redes sociais, refere-se ao grau de separao existente entre dois indivduos. De acordo com as pesquisas de Christakis e Fowler [30], quanto mais distantes esto duas pessoas na rede, menores as chances de inuncia, ou cooperao recproca. Alm disso, os pesquisadores identicaram na sociedade a regra dos trs graus de inuncia, que torna a fronteira dos trs graus de separao, um provvel limite para a inuncia humana. Para distncias maiores, tal inuncia deixa de ter impacto perceptvel, e um possvel caminho criado entre duas pessoas torna-se inutilizvel. Sendo assim, o processo de minimizao de distncia deve se concentrar em menores graus de separao, priorizando essencialmente a regio delimitada pelos primeiros trs graus, criando um caminho til que a pessoa de origem pode percorrer. Correntes de amizade como estas podem representar a grande diferena entre uma tentativa de contato direto, ou intermediada de certa forma pelas relaes sociais referenciais. Estas referncias, que de fato, representam os indivduos de um caminho, podem ser utilizadas de

9.1 Requisitos Funcionais

119

diferentes maneiras pelas pessoas interessadas, na tentativa de criar um canal social necessrio para o estabelecimento ou a efetivao da conexo desejada. As consequncias dessa integrao criada pelos seres humanos produzem efeitos de rede dos mais notveis, dentre eles a produo do capital social, que representa a capacidade das pessoas de trabalharem juntas de forma fcil e eciente, com base na conana. Se as ligaes de longa distncia mantm as redes conectadas, o capital social, criado pela aglomerao, proporciona numerosos elos fortes, e um contexto de indivduos rmemente engastados, o que viabiliza a criao de correntes sociais cooperativas. Como comprovao desse fenmeno, pesquisadores da Universidade de Chigago apresentaram os resultados de um estudo sobre 2.777 pessoas nos Estados Unidos, oferecendo uma descrio do comportamento social relacional. A Tabela 9.2 mostra quem apresentou casais em diferentes tipos de relacionamento [65].
Tabela 9.2: Apresentaes em Sociedade
Tipo de Relacionamento Casamentos Coabitao Parcerias Parceiras de curto prazo Relacionamentos prximos Famlia Amigo 15% 35% 12% 40% 8% 36% 3% 37% Relacionamentos distantes Trabalho Escola Vizinho 6% 6% 1% 4% 1% 1% 6% 4% 1% 3% 4% 2% Autoapres. 32% 36% 42% 47% Outra 2% 3% 1% 2% Participantes 1.287 319 920 251

Cerca de 61% das pessoas no estudo conheceram seus parceiros aps terem sido introduzidas por algum que conheciam, enquanto apenas 39% se conheceram via autoapresentao. Dessa forma, embora exista a possibilidade de encontros entre estranhos, a maioria das pessoas encontrou parceiros ao conhecer os amigos dos amigos e outras pessoas s quais elas estavam indiretamente conectadas. Outra pesquisa com mais de dois milhes de citaes entre patentes identicou o efeito das redes sociais na difuso das ideias entre inventores [91]. A pesquisa mostrou que havia forte probabilidade dos inventores com lao de colaborao direto citarem um ao outro, quatro vezes mais do que seria esperado devido ao acaso. O efeito se estendeu ainda mais pela rede, sendo que em dois graus de separao, eles teriam aproximadamente 3,2 vezes mais probabilidade de citar um ao outro e, em trs graus teriam 2,7 vezes mais probabilidade. Alm de trs graus, o efeito praticamente desaparece. Obviamente, as pessoas conam muito nos amigos e na famlia para todo tipo de relacionamento, j que a apresentao socialmente intermediada torna-se menos arriscada e mais informativa. Granovetter constatou que se algum souber que um amigo de um amigo se encontrou com determinada pessoa, h uma espcie de corrente entre eles. Isto torna as intenes das pessoas menos suspeitas, uma vez que elas "exercem inuncia atravs da corrente de maneira a restringir posturas interesseiras" [51]. Por essa perspectiva, um segundo procedimento referente maximizao da probabilidade de inuncia deve ser includo no processo de busca: maximizar o peso das conexes. Como estes pesos representam a intensidade da relao entre dois indivduos,

9.1 Requisitos Funcionais

120

quanto maior o peso, maior ser a chance de inuncia mtua. Portanto, o processo de pesquisa de caminhos deve contemplar ambos os procedimentos para efetivar-se como um recurso relevante: minimizar custos de distncia e maximizar o peso das relaes. Para a realizao dessa pesquisa, duas possibilidades devem ser disponibilizadas. Na primeira, o usurio poder informar o cdigo de identicao dos vrtices de origem e destino, e na segunda, a identicao do vrtice de destino poder ser realizada atravs da informao de seu nome. Ao trmino do processamento da pesquisa, a aplicao dever apresentar visualmente e descritivamente o melhor caminho encontrado no grafo. Este requisito, juntamente com o que ser apresentado na seo posterior 9.1.25, atendem completamente terceira meta da aplicao Fluzz.

9.1.25

Deteco de caminhos entre uma pessoa e vrias outras

O recurso provido pelo requisito apresentado na seo 9.1.24, tambm dever ser estendido para mltiplos vrtices de destino. Neste caso, o melhor caminho ser aquele dentre todos os melhores caminhos encontrados para cada um destes vrtices. Essa situao, s ser possvel caso o usurio no utilize na pesquisa, o cdigo de identicao do vrtice de destino. Neste caso, ele pode usufruir dos trs campos congurveis, ou do prprio nome da pessoa, para alimentar os atributos dos possveis indivduos-alvo na rede. Consequentemente, a aplicao realizar ltros para selecionar os indivduos possuidores destes atributos, assinalando-os como alvos para a pesquisa.

9.1.26

Criao de ltros para visualizao dos caminhos

Alguns ltros devem ser oferecidos pela aplicao, no que tange visualizao dos caminhos encontrados. Um primeiro ltro deve apresentar somente o caminho encontrado, ocultando os demais vrtices e arestas no pertencentes ao mesmo. Uma segunda opo, alm do disponibilizado no primeiro ltro, dever apresentar todos os vrtices que possuem conexes com algum dos vrtices pertencentes ao respectivo caminho. Por m, uma terceira opo dever apresentar, alm do prprio caminho encontrado, os vrtices adicionais que compartilham conexes com mais de um vrtice deste caminho. A intenso dos ltros minimizar recursos computacionais grcos, alm de possibilitar a visualizao de indivduos pertencentes ao crculo social dos elementos que compem o melhor caminho identicado.

9.1.27

Salvamento da imagem da rede gerada

O sistema dever prover a opo de salvamento da imagem do grafo gerado, criando um arquivo com extenso jpg que poder ser utilizado para anlises futuras.

9.2 Requisitos No Funcionais

121

9.1.28

Deleo da base de dados

importante que a aplicao possua um meio de apagar todos os dados criados, devolvendo ao sistema seu estado inicial.

9.2

Requisitos No Funcionais

Os requisitos no funcionais denem os atributos de qualidade do sistema ao executar suas funcionalidades. Estes requisitos no especicam funes especcas, aplicando-se ao sistema como um todo, e caracterizando-se por restries sobre os servios fornecidos pelo mesmo. Para o projeto da aplicao Fluzz, foram denidos 8 requisitos no funcionais, que visam garantir caractersticas mnimas de qualidade para a aplicao gerada. Modularidade: A modularizao da ferramenta deve ser alcanada com o projeto e a utilizao de agentes de software; Simplicidade: Novos agentes podero ser agregados ferramenta de forma simples e pouco custosa, acrescentando recursos adicionais aplicao; Paralelismo: O processamento paralelo dos agentes dever ser provido pelo sistema; Ecincia: O sistema dever processar e interpretar corretamente todos os modelos denidos para se atingir os resultados esperados; Conabilidade: Mesmo diante de circunstncias hostis ou inesperadas, a aplicao dever realizar e manter seu funcionamento de circunstncias normais; Portabilidade: A ferramenta poder ser executada em diversas plataformas; Manutenibilidade: As aes de manuteno no sistema devero ser viabilizadas de modo preciso e seguro, atravs da implementao de padres de projeto; Usabilidade: O software deve possuir interface instintiva para facilitar o uso de seus recursos.

9.3

Diagramas de Caso de Uso

Um caso de uso uma unidade funcional provida pelo sistema. Cada caso de uso neste projeto relacionar os diversos requisitos funcionais de determinada classe, que contempla um conjunto de aes semelhantes. Dois atores sero denidos, o usurio e uma possvel aplicao externa que interagem com o sistema. Ambos sero responsveis por operacionalizar todos os 9 casos de uso denidos para os 28 requisitos funcionais. A vinculao de cada requisito funcional ao seu respectivo caso de uso foi realizada de acordo com a Tabela 9.3.

9.3 Diagramas de Caso de Uso

122

Tabela 9.3: Mapeamento de Requisitos Funcionais e Casos de Uso


Requisito Funcional Persistncia dos dados gerados em um banco de dados Visualizao bidimensional das redes por meio de grafos Distino visual dos vrtices pela intensidade de cores Visualizao do grafo por meio de diversos layouts Visualizao dos pesos das arestas de forma opcional Visualizao do perl de uma pessoa Visualizao do perl de uma relao de amizade Movimentao individual ou em grupo dos vrtices Movimentao do grafo inteiro Variao da escala de visualizao do grafo Rotao do grafo em torno de seus eixos Deformao do grafo de maneira uniforme Seleo individual dos vrtices e das arestas Distino de cores para vrtices e arestas selecionados Apresentao da quantidade de vrtices do grafo Apresentao da quantidade de arestas do grafo Apresentao do coeciente de aglomerao da rede Apresentao da distncia geodsica mdia da rede Clculo automtico dos pesos das arestas Gerao de redes atravs dos modelos da literatura Gerao de redes de acordo com um novo modelo Importao dos dados de redes pr-denidas Adio de conexes s redes existentes Deteco de caminhos entre duas pessoas Deteco de caminhos entre uma pessoa e vrias outras Criao de ltros para visualizao dos caminhos Salvamento da imagem da rede gerada Deleo da base de dados Caso de Uso Gravar rede

Visualizar grafo

Interagir com o grafo

Apresentar mtricas

Gerar redes

Localizar caminhos Criar ltros Salvar imagem Deletar rede

A Figura 9.2 apresenta o diagrama de casos de uso da aplicao Fluzz.

Figura 9.2: Diagrama de Casos de Uso.

9.4 Modelagem da Estrutura de Dados da Aplicao

123

9.4

Modelagem da Estrutura de Dados da Aplicao

O processo de modelagem da estrutura de dados da aplicao visa denir o arcabouo necessrio para que as informaes geradas pelo software possam ser persistidas corretamente em um banco de dados relacional. Para a realizao dessa modelagem foram criados o Modelo Conceitual e o Modelo Relacional com seus respectivos Dicionrios de Dados, que devem ser seguidos durante as fases de desenvolvimento e implantao do sistema. A Figura 9.3 apresenta o Modelo Conceitual criado, e a Tabela 9.4 seu respectivo Dicionrio de Dados.

Figura 9.3: Modelo Conceitual da Aplicao Fluzz. Tabela 9.4: Dicionrio de Dados do Modelo Conceitual
Entidade Descrio Atributos nos Armazena os dados das pessoas Nome id nome atributo1 atributo2 atributo3 conexoes Armazena as relaes de amizade das pessoas Nome peso nos(1:M) X nos(1:N)

Tipo Nmero Texto Texto Texto Texto

Descrio Cdigo de Identicao das pessoas Nome da pessoa 1o atributo congurvel 2o atributo congurvel 3o atributo congurvel

Identicador Sim No No No No

Relacionamento Descrio Atributos Cardinalidade

Tipo Nmero

Descrio Quantidade de amigos em comum

Identicador No

Neste modelo, o atributo peso pertencente ao relacionamento conexoes, foi denido como derivado, pois se trata de uma informao calculada pelo sistema. Por conseguinte, foi criado o Modelo Relacional visualizado na Figura 9.4, bem como seu respectivo Dicionrio de Dados presente na Tabela 9.5.

Figura 9.4: Modelo Relacional da Aplicao Fluzz.

9.5 Arquitetura da Aplicao

124

Tabela 9.5: Dicionrio de Dados do Modelo Relacional


Relao Descrio Atributos nos Idem Tabela 9.4 Nome id nome atributo1 atributo2 atributo3 conexoes Idem Tabela 9.4 Nome id1 id2

Tipo Nmero(8) Texto(100) Texto(100) Texto(100) Texto(100)

Descrio Idem Tabela 9.4 Idem Tabela 9.4 Idem Tabela 9.4 Idem Tabela 9.4 Idem Tabela 9.4

nico Sim No No No No

Nulo No No Sim Sim Sim

Chave PK

Observao

Relao Descrio Atributos

Tipo Nmero(8) Nmero(8)

Descrio Cdigo de Identicao das pessoas Cdigo de Identicao das pessoas

nico Sim Sim

Nulo No No

Chave PK PK

Observao FK da relao nos FK da relao nos

9.5

Arquitetura da Aplicao

Esta seo dedica-se apresentao da arquitetura da aplicao Fluzz, detalhando seus trs componentes principais: o agentePrincipal, a Sociedade de Agentes de Pesquisa, e o Repositrio de Dados, como ilustrado na Figura 9.5.

Figura 9.5: Arquitetura da Aplicao Fluzz.

9.5.1

O agentePrincipal

O agentePrincipal ser o componente fundamental da aplicao, sendo responsvel individualmente por realizar 8 dos 9 casos de uso estipulados. Somente o caso de uso Localizar caminhos no ser de sua inteira responsabilidade. No obstante, este agente que iniciar o processo de busca propriamente dito, atravs do envio de uma mensagem para o primeiro agente da Sociedade de Agentes de Pesquisa.

9.5 Arquitetura da Aplicao

125

A partir desse momento, uma srie de comunicaes ser realizada pelos demais elementos da Sociedade, que de forma cooperativa devem buscar pela melhor soluo do problema. Quando um dos agentes encontrar a soluo procurada, de acordo os critrios pr-estabelecidos nos modelos denidos, uma mensagem dever ser retornada para o agentePrincipal. Consequentemente, este agente extinguir os outros agentes ainda ativos no processo de busca, e representar gracamente o caminho encontrado. Dessa forma, o agentePrincipal possuir um papel fundamental no procedimento de busca nas redes, sendo responsvel pela inicializao e encerramento deste processo.

9.5.2

A Sociedade de Agentes de Pesquisa

A Sociedade de Agentes de Pesquisa contemplar quatro agentes que trabalharo cooperativamente no processo de busca em redes. O agenteDijkstra ser o primeiro elemento a ser ativado na Sociedade. Sua denominao motivada devido ao algoritmo utilizado por este agente, o Algoritmo de Dijkstra [32]. Os prximos elementos a serem ativados na Sociedade so os agentes ACS e AS, que iniciam o processo de busca paralelamente ao seu comparsa inicial. As abordagens utilizadas por estes dois ltimos agentes seguem respectivamente as metaheursticas de Otimizao por Colnia de Formigas Ant Colony System e Ant System [40]. Ainda existe a possibilidade do agenteGA ser ativado por algum desses agentes de segundo nvel. Se esta ao ocorrer, o agenteGA que implementa um Algoritmo Gentico [64], tambm passar a cooperar com os outros elementos da Sociedade. Para o projeto da aplicao Fluzz, foi denido que o agenteDijkstra dever ser o nico responsvel por devolver caminhos de at trs graus de separao. O motivo consiste no fato de que a pesquisa realizada por este agente capaz de retornar, caso exista, uma soluo tima do problema, devido a sua caracterstica exploratria. Como a quantidade de conexes de cada pessoa em sociedade um nmero relativamente pequeno, e mesmo contando com um crescimento exponencial deste nmero medida que se afasta do ponto de origem, at trs graus de separao, o montante resultante dos caminhos ainda pode ser analisado rapidamente por este agente. Consequentemente, dentro desse limite, o melhor entre todos os caminhos existentes para determinada pesquisa pode ser encontrado de modo eciente. exatamente esta condio que torna o agenteDijkstra extremamente importante para a aplicao, que capaz de localizar o melhor caminho pertencente regio factvel de inuncia humana, contribuindo signicativamente para a localizao de provveis parceiros em sociedade. A m de denir uma forma para a anlise qualitativa dos caminhos, o modelo BestWay foi proposto para integrar a lgica de avaliao do agenteDijkstra, tendo como alicerce um trip avaliativo que diferencia caminhos seguindo o seguinte critrio:

9.5 Arquitetura da Aplicao

126

1. Anlise da quantidade de laos fracos: O primeiro elemento a ser vericado pelo modelo a quantidade total de laos fracos identicados dentro da zona de inuncia humana, referente aos trs graus de separao. Esta medida possui grau de dominncia perante as outras duas formas de anlise, o que signica ser capaz de determinar isoladamente a soluo, caso seus valores nos caminhos comparados sejam diferentes. Apesar da importncia deste tipo de lao para formao de redes conexas, o objetivo deste elemento foi de minimizar relaes de fraca intensidade nos caminhos encontrados, que aumentam a probabilidade de quebra da corrente cooperativa. Como a determinao do que pode representar um lao fraco subjetiva, pois depende das caractersticas conectivas das pessoas, a aplicao deve possuir recursos parametrizveis para esta medida, sendo o usurio responsvel por informar um valor que denir a fronteira entre as foras dos laos de amizade: fortes ou fracos. Como exemplicao, a Figura 9.6 ilustra duas situaes, em que o primeiro elemento do modelo deniu qual o melhor caminho. Na primeira imagem esquerda da gura, trs caminhos separam os vrtices 1 e 5. Supondo que o usurio deniu na aplicao, que um lao fraco corresponde s ligaes com pesos menores que 5, o caminho (1,5) possuir um lao fraco, o caminho (1,4,2,5) possuir dois, e o caminho (1,3,5) possuir nenhum. Como todos estes caminhos esto na zona de inuncia humana, o agente determina que o caminho (1,3,5) a melhor escolha por possui a menor quantidade de laos fracos, o que provoca a violao da desigualdade triangular. Na segunda imagem direita da gura, dois caminhos separam os vrtices 1 e 3. Com a mesma denio de lao fraco feita anteriormente, o caminho (1,4,2,5,3) no possui laos fracos, enquanto que o caminho (1,4,3) possui um. No obstante, o caminho (1,4,2,5,3) possui mais de trs graus de separao, o que no ocorre com o caminho (1,4,3), que ser ento o escolhido pelo agente.

Figura 9.6: Primeiro Elemento do Modelo BestWay.

2. Anlise do grau de separao: Quando o agenteDijkstra no for capaz de distinguir entre dois caminhos atravs do primeiro elemento do modelo, um segundo critrio de avaliao qualitativa entra em cena, desta vez referindo-se distncia atravs da rede entre as pessoas. Para exemplicar o processo de anlise do segundo elemento, a Figura 9.7 ilustra duas situaes diferentes. A imagem esquerda da gura apresenta dois caminhos que separam os vrtices 1 e 5. Utilizando-se da anlise do primeiro elemento do modelo, e com a mesma denio de lao fraco feita na exemplicao anterior, verica-se que ambos os caminhos (1,4,2,5) e (1,3,5)

9.5 Arquitetura da Aplicao

127

possuem um lao fraco, e esto dentro da zona de inuncia humana. Esta situao obriga o agente a partir para a anlise do prximo elemento, que constata que o caminho (1,3,5) menor, e portanto dever ser escolhido. Na imagem direita da gura, ambos os caminhos que separam os vrtices 1 e 6, (1,4,2,5,6) e (1,4,3,2,5,6) esto fora da zona de inuncia, e por isso sero diferenciados somente pelo grau de separao. Isto faz com que o caminho (1,4,2,5,6) seja escolhido por ser menor que o caminho (1,4,3,2,5,6), mesmo possuindo um lao fraco a mais.

Figura 9.7: Segundo Elemento do Modelo BestWay.

Em um processo similar ao do primeiro elemento do modelo, a caracterstica referente ao grau de separao domina o ltimo critrio de avaliao utilizado. 3. Anlise do valor acumulado dos pesos: Se ainda houver uma situao em que dois caminhos diferentes apresentem a mesma quantidade de laos fracos e o mesmo grau de separao, o terceiro e ltimo elemento avaliativo do modelo deve ser utilizado. Trata-se neste ponto do valor do peso acumulado pelo caminho, que quanto maior for, melhor qualicar o percurso. O objetivo selecionar laos de amizade mais intensos, que provavelmente estaro mais aptos a cooperarem mutuamente. Este processo ilustrado na Figura 9.8, onde existem trs melhores caminhos de comprimento 2, que ligam os vrtices 1 e 5. Ainda com a mesma denio de lao fraco feita anteriormente, nenhum dos caminhos apresenta laos fracos, sendo que o caminho (1,3,5) totaliza um peso 70, o caminho (1,4,5) totaliza um peso 65, e o caminho (1,2,5) totaliza um peso 75. A classicao em ordem decrescente de qualidade para este exemplo seria: (1,2,5), (1,3,5), e (1,4,5).

Figura 9.8: Terceiro Elemento do Modelo BestWay.

A Figura 9.9 ilustra o modelo BestWay seguido pelo agenteDijkstra.

Figura 9.9: Representao do Modelo BestWay.

9.5 Arquitetura da Aplicao

128

Como j foi estudado, a partir do quarto grau de separao, a possibilidade de inuncia recproca em sociedade torna-se desprezvel. Portanto, encontrar uma pessoa a quatro graus de distncia ou mais, muitas vezes no ter um signicado prtico, pelo menos, no primeira vista. Todavia, um caminho de qualquer tamanho sempre representar uma pista, mesmo que esta seja realmente pequena. Em outras palavras, um caminho longo no deve ser de utilidade imediata, pois a fronteira dos trs graus de separao parece ser o limite da violao da desigualdade triangular. A partir do prximo ponto da escala de distncia, a inuncia no mais um fator a ser considerado no processo conectivo. Em termos prticos, melhor optar pela autoapresentao, e tentar um contato direto ao invs de intermedi-lo. De qualquer forma, o caminho longo ainda existir, e uma nica conexo criada por algum dos indivduos intermedirios deste caminho, pode empurrar a distncia entre os vrtices de origem e destino, para dentro da zona factvel de inuncia. Alm disso, conhecer quem so os indivduos de uma corrente de amizade, muitas vezes viabiliza o reconhecimento de pessoas prximas na vida real, que esto momentaneamente distantes na vida online. Consequentemente, conexes estratgicas podem ser realizadas pelo prprio indivduo de origem, encurtando a distncia nal para o indivduo de destino. por esta razo que caminhos aparentemente longos no devem ser desprezados por completo, pois eles podem prover informaes importantes sobre o interior das redes. No obstante, um problema emerge quando se deve pesquisar alm da fronteira da inuncia: a complexidade de ramicao das redes. A quantidade de laos a partir desta regio, de acordo com o tamanho da rede, pode atingir a casa de 8 dgitos ou mais, representando um vasto ambiente de pesquisa. Sendo assim, o agenteDijkstra poder ter sua performance prejudicada, dependendo da localizao dos indivduos-alvo nas redes. De acordo com o projeto da aplicao, assim que uma busca for efetivada pelo usurio, o agentePrincipal dever ativar em sequncia os seguintes agentes: agenteDijkstra, agenteACS e agenteAS. Todos eles iniciaro suas atividades de pesquisa simultaneamente, cada um seguindo suas respectivas lgicas ou heursticas particulares. No entanto, o agenteACS e o agenteAS s podero contribuir com suas informaes, quando o agenteDijkstra superar a fronteira dos trs graus de separao. Nesse ponto, caso, por exemplo, o agenteACS tenha encontrado uma soluo com quatro graus de distncia, antes do agenteDijkstra, imediatamente ele pode enviar uma mensagem ao agentePrincipal informando o ocorrido. O agentePrincipal por sua vez, extinguir todos os agentes ativos, e devolver a soluo encontrada pelo agenteACS ao usurio. O mesmo processo vale tambm para o agenteAS. Os agentes baseados no comportamento das formigas so excelentes metaheursticas aplicveis a problemas de otimizao. Graas s suas orientaes heursticas, e retroalimentao realizada pelo depsito de feromnio, as formigas articiais so capazes

9.5 Arquitetura da Aplicao

129

de navegar por grandes redes, e encontrar caminhos curtos em um tempo reduzido. Como a regio, alm dos trs graus de distncia, no caracterizada a priori pela existncia de caminhos teis aos seres humanos, no existe a necessidade desses agentes localizarem caminhos timos pela rede. Por isso, a utilizao de metaheursticas de otimizao encaixa-se perfeitamente neste novo contexto. Nenhum apurado modelo avaliativo de caminhos ser ento utilizado pelas formigas articiais, que basicamente se orientaro somente pela anlise do grau de separao, o que contribui para o aumento da performance do processo de busca. Caminhos encontrados com menos de quatro graus de distncia devero ser desconsiderados, uma vez que compete somente ao agenteDijkstra obter resultados nesta regio. Finalmente, o ltimo agente da Sociedade, o agenteGA, pode ser ativado por um desses dois ltimos agentes metaheursticos descritos, baseados em colnias de formigas. O agenteGA utiliza como metaheurstica os Algoritmos Genticos, com uma fundamental denio para a composio de sua populao inicial. Para evitar problemas com a criao de caminhos inviveis, todos os cromossomos da populao do agenteGA devero ser originalmente formigas articiais, oriundas do agenteACS ou do agenteAS. Assim que as duas primeiras formigas so formadas por um destes agentes, imediatamente sero codicadas como cromossomos, e o processo de melhoria gentica se desenvolver de acordo com as operaes propostas na literatura. O objetivo do agenteGA produzir uma diversicao dos caminhos gerados, uma vez que as formigas articiais podem convergir para algum timo local. Consequentemente, caso este agente, que tambm trabalha alm dos trs graus de separao, encontre uma soluo antes de seus comparsas, o processo se encerrar de forma anloga ao descrito anteriormente para o agenteACS e para o agenteAS. Alm disso, o mesmo processo para avaliao de caminhos destes ltimos agentes tambm ser utilizado pelo agenteGA. Sempre que o agenteDijkstra adentrar um novo nvel de distncia na pesquisa, uma mensagem dever ser enviada pelo mesmo, a todos os outros agentes ativos na ferramenta. A intenso que os agentes metaheursticos possam estar conscientes da distncia requerida a cada momento, para que um determinado caminho obtido possa ser considerado como soluo do problema. Todos os agentes da Sociedade podem acessar o Repositrio de Dados da aplicao, a m de navegar pela rede procura de solues.

9.5.3

O Repositrio de Dados

O Repositrio de Dados da aplicao armazena todos os dados das redes geradas. Assim que a base de dados da ferramenta alimentada, seja por uma aplicao externa, ou atravs do caso de uso Gerar redes, este repositrio responsvel por manter os dados ntegros e disponveis para anlises ou utilizaes futuras.

CAPTULO 10

Desenvolvimento da Aplicao

Aps a concepo do projeto da aplicao Fluzz, foi iniciada a ltima etapa de sua criao: a codicao. Este desenvolvimento alicerou-se inteiramente nos requisitos, na modelagem e na arquitetura outrora denidos, viabilizando a produo de um software plenamente de acordo com seus objetivos. Os estudos tericos realizados nesta dissertao foram capitais para que tcnicas de programao pudessem ser ecientemente aplicadas na codicao dos algoritmos projetados, o que permitiu a vericao e a validao dos modelos propostos. Desta forma, este captulo descreve como as tecnologias escolhidas para a criao do Fluzz foram empregadas, alm de apresentar as tcnicas utilizadas na implementao dos requisitos. Visando atender aos objetivos deste captulo de maneira esclarecedora, a descrio das funcionalidades das principais classes criadas, alm da apresentao grca dos resultados obtidos pela codicao dos requisitos, sero introduzidas medida que estes ltimos recebam o foco da anlise, contextualizando-os s suas demandas originais.

10.1

Tecnologias Empregadas

Diversas tecnologias foram utilizadas para a implementao do Fluzz, tendo cada uma contribudo para a produo nal do sistema. A seguir, uma breve anlise das mesmas realizada, contemplando a apresentao de seus principais recursos e nalidades.

10.1.1

Java 7

Plataforma Java a denominao dada ao ambiente computacional criado pela empresa Sun Microsystems e hoje pertencente Oracle. O Java SE ou Java Platform Standard Edition a tecnologia base da plataforma, incluindo o ambiente de execuo e as bibliotecas comuns, atravs da qual a aplicao Fluzz foi inteiramente desenvolvida. A edio do Java voltada para a criao de aplicaes corporativas e para Internet, o Java EE ou Java Platform Enterprise Edition, foi utilizada para a execuo do Fluzz na Web atravs de Applets, ou softwares aplicativos executados em um browser.

10.1 Tecnologias Empregadas

131

A plataforma Java permite desenvolver aplicativos utilizando qualquer linguagem criada para seu contexto, sendo a linguagem padro sua homnima: a linguagem Java. Portanto, Java tambm rma-se como uma linguagem de programao de cdigo fonte aberto, que diferentemente das linguagens convencionais compiladas para cdigo nativo, executa compilaes para bytecodes interpretados por uma mquina virtual [81]. Dentre os principais recursos da linguagem Java destacam-se: orientao a objetos, portabilidade, sintaxe similar a C, extensa biblioteca de rotinas que facilitam a cooperao com protocolos TCP/IP, segurana, internacionalizao, suporte sistemas distribudos, desalocao de memria automtica, carga dinmica de cdigo. O Java 7 a verso mais recente do Java, detendo diversos novos recursos para aumentar a ecincia de desenvolvimento e execuo de programas, sendo portanto utilizado para a codicao da aplicao Fluzz. Fatores como desempenho, estabilidade, segurana, e melhorias na Mquina Virtual Java so algumas das inovaes providas por esta ltima verso da plataforma, que pode ser encontrada em [81].

10.1.2

Eclipse Indigo

O Eclipse um dos IDEs (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) mais populares atualmente para desenvolvimento em plataforma Java, podendo ser adquirido livremente em [98]. Adepta ao software livre, a IDE possui facilidades como visualizao diferenciada dos arquivos contidos no projeto, ferramentas de gerenciamento de trabalho coletivo, customizao do ambiente de trabalho, modos de depurao, editores de texto e grcos, alm de um compilador e interpretador embutidos. O Eclipse possui um modelo de desenvolvimento baseado em plugins, que adicionam funes ferramenta facilitando a codicao. Trata-se de um ambiente originalmente escrito para ser verstil e possvel de ser adaptado para qualquer propsito relacionado ao desenvolvimento de software. Sua exibilidade torna-o congurvel perante as necessidades do desenvolvedor, que pode fazer o uso de diferentes perspectivas [98]. Existem vrias verses liberadas do Eclipse, cada uma provendo novos recursos. Dentre as melhorias do Eclipse Indigo, utilizado para a construo do Fluzz, a que mais se destaca o suporte criado para a verso mais recente da plataforma Java, o Java 7.

10.1.3

JADE 3.7

JADE (Java Agent Development Framework) um arcabouo para desenvolvimento de aplicativos baseados em agentes em conformidade com as especicaes FIPA, visando a interoperabilidade inteligente de Sistemas Multiagentes. Uma anlise minuciosa do framework pode ser encontrada no Captulo 6.

10.1 Tecnologias Empregadas

132

Por apresentar-se de maneira coesa e principalmente bem testada, avaliada e documentada pela comunidade, a verso do JADE utilizada pela aplicao Fluzz foi a 3.7. Apesar de j existirem algumas verses posteriores, no momento da construo da aplicao, a verso 3.7 se mostrou mais estvel perante os propsitos do projeto. A verso 3.7 do JADE foi batizada por seus criadores como OSGAgents, devido integrao com OSGi [83], uma tecnologia que fornece um sistema de gerenciamento de componentes de uma forma limpa e formal. Graas a esta integrao, tornou-se possvel executar agentes JADE dentro de um ambiente OSGi, dando aos agentes acesso a todas as funes tpicas da tecnologia, como registrar e usar seus servios [96]. Outra caracterstica notvel introduzida com a verso 3.7 o suporte para a invocao dinmica de servios Web provido pelo WSDC (Web Service Dynamic Client).

10.1.4

JUNG 4.2

O JUNG (Java Universal Network/Graph Framework) uma biblioteca de software que fornece uma linguagem comum e extensvel para a modelagem, anlise e visualizao de dados passveis de ser representados como grafos ou redes. Uma anlise detalhada da biblioteca apresentada no Captulo 7. A verso do JUNG utilizada para a construo da aplicao Fluzz foi a 2.0.1, que representa a ltima verso liberada e disponibilizada do framework. Esta verso alm de conter os recursos mais avanados de visualizao grca, destaca-se pelas adaptaes s importantes melhorias providas pela plataforma Java, como o uso de Generics, e dos padres de projeto Factory e Transformer, alm de possibilitar a modelagem de grafos atravs do uso de classes representativas para vrtices e arestas. Todos estes avanos foram fundamentais para simplicar e exibilizar a codicao atravs do JUNG, que indubitavelmente se tornou um robusto framework, fortemente utilizado para a anlise e representao de dados em rede.

10.1.5

PostgreSQL 9.0.1

O PostgreSQL um sistema gerenciador de banco de dados objeto relacional desenvolvido como projeto de cdigo aberto. Atualmente, o PostgreSQL um dos SGBDs (Sistema Gerenciador de Bancos de Dados) mais avanados, contando com recursos como consultas complexas, chaves estrangeiras, integridade transacional, controle de concorrncia multiverso, suporte ao modelo hbrido objeto-relacional, vises, gatilhos, e recursos para criao de procedimentos armazenados, podendo ser adquirido em [99]. Criado em 1985 possui uma arquitetura que ganhou forte reputao pela conabilidade e integridade de dados provida. O PostgreSQL funciona em todos os principais

10.1 Tecnologias Empregadas

133

sistemas operacionais, sendo totalmente compatvel com as propriedades ACID, acrnimo de Atomicidade, Consistncia, Isolamento e Durabilidade. O SGBD inclui vrios tipos de dados, alm de permitir o armazenamento de objetos binrios grandes, como imagens, sons ou vdeos. Possui interfaces de programao nativas para C/C++, Java, .Net, ODBC, entre outros, e documentao atualizada [99]. A verso 9.0.1 do PostgreSQL foi a utilizada para a implementao da estrutura de dados da aplicao Fluzz. Esta verso possui avanos em segurana, suporte a aplicaes, monitoramento, performance, armazenamento de dados especializados, e novas capacidades de replicao que aceleram a adoo em hospedagem na nuvem. O PostgreSQL 9.0.1 inclui ainda outras melhorias que aprimoram os aspectos do projeto e da performance de aplicaes de bancos de dados, incluindo suporte a Windows 64 bits, gatilhos condicionais e por coluna, e restries de unicidade postergveis [31].

10.1.6

Sistema Operacional Windows 7

Microsoft Windows uma famlia de sistemas operacionais criada pela Microsoft, empresa fundada por Bill Gates e Paul Allen [73]. Antes da verso NT o Windows era somente uma interface grca para o sistema operacional MS-DOS. Por ser um produto comercial, possui preos diferenciados para cada uma de suas verses, e atualmente o sistema operacional mais utilizado em computadores pessoais no mundo [14]. At a verso 3.11, o sistema rodava somente em 16 bits, limitao superada pelo Windows 95, que atuava com 32 bits. As verses a partir do XP e Server 2003 esto preparadas para a tecnologia 64 bits [73]. Com o codinome Vienna, o Windows 7 o sucessor do Windows Vista que inclui uma srie de novos recursos e melhorias. Lanado em Outubro de 2009, esta verso do Windows manteve-se como a mais recente durante praticamente todo o ano de 2012, sendo ento o sistema operacional utilizado para a criao da aplicao Fluzz. Testes tambm foram realizados nas verses XP e Vista do Windows, que processaram a aplicao perfeitamente. O Windows 7 foi uma verso focada no objetivo de torn-lo compatvel com aplicaes e hardwares com os quais o Windows Vista mostrava-se incompatvel. Em 2012, o Windows 7 ultrapassou o Windows XP alcanando 46,7% dos usurios mundiais, tornando-se o sistema operacional mais usado do mundo. Este sistema operacional inclui vrios novos recursos como melhorias no reconhecimento de escrita e no design visual, suporte para discos rgidos virtuais, melhorias no desempenho de processadores multicore, e do kernel. Alm disso, o Windows 7 prov suporte para sistemas com mltiplas placas grcas de diferentes fornecedores (multiGPU) [73].

10.1 Tecnologias Empregadas

134

10.1.7

Arquitetura MVC (Modelo-Viso-Controle)

O crescimento contnuo dos sistemas requer que seus projetos sejam feitos de maneira planejada e componentizada, de modo a torn-los mais exveis para facilitar a manuteno e o desenvolvimento dos mesmos [33]. Com o uso da arquitetura em camadas, possvel separar os dados de persistncia, das regras de negcio e da interface do usurio, facilitando o desenvolvimento e a manuteno de software. A arquitetura MVC (Modelo-Viso-Controle) foi criada nos anos 80 na Xerox Parc, tendo como princpio a separao entre as camadas de persistncia e apresentao. Para isso, foi criada uma arquitetura com trs camadas representativas de diferentes objetos que se comunicam entre si. A arquitetura MVC atualmente utilizada em diversos frameworks de vrias linguagens como Java, PHP e .Net, provendo importantes recursos como o reuso de cdigo, por exemplo [33]. A Figura 10.1 [69] representa a Arquitetura MVC decompondo o software em suas partes lgicas: o Modelo consiste no nvel de dados, a Viso representa o nvel de interface de usurio, e o Controle assume o nvel de processamento.

Figura 10.1: Arquitetura MVC da Aplicao Fluzz.

A arquitetura da aplicao Fluzz pode ser comparada com um padro MVC, onde o agentePrincipal representa a camada de viso, a Sociedade de Agentes de Pesquisa atua como a camada controladora, e o Repositrio de Dados assume a camada de persistncia.

10.1.8

Congurao de Hardware

Para a criao, compilao, e processamento de todos os recursos da aplicao Fluzz foi utilizada a seguinte congurao de hardware apresentada na Tabela 10.1.
Tabela 10.1: Congurao de Hardware
Tipo de Computador: ACPI x64-based PC Tipo de processador: DualCore Intel Core 2 Duo E6300, 1866 MHz (7 x 267) Disco rgido: ST3200820A ATA Device (200 GB, 7200 RPM, Ultra-ATA/100) Placa Me: Asus P5VD2-X Tamanho da Memria: 2,94 GB Adaptador grco: NVIDIA GeForce 7100 GS (128 MB)

10.2 Implementao dos Requisitos

135

10.2

Implementao dos Requisitos

Esta seo tem com objetivo especicar como cada requisito do projeto foi implementado, expondo para isto as tcnicas de programao empregadas. Para a completa identicao destes requisitos foi criada a seguinte legenda: RF (Requisito Funcional) e RNF (Requisito No Funcional), que ser ento seguida da denominao original dos mesmos apresentada no captulo anterior. Antes da soluo dos requisitos, apresentado na Figura 10.2 o layout da aplicao Fluzz, produzido automaticamente pelo agentePrincipal na inicializao do sistema. Cinco painis compem este layout: o superior, o inferior, o esquerdo, o direito, e o central, cada um com algum grupo de funcionalidades denidas.

Figura 10.2: Layout da Aplicao Fluzz.

A classe que ativa o agentePrincipal a classe Principal, visualizada no cdigo 10.1. Inicialmente, esta classe cria todos os componentes da interface. Em seguida, uma instncia da classe CarregaGrafo criada, para que os dados salvos no banco de dados possam ser carregados. Finalmente, o mtodo iniciaAgentePrincipal() invocado, para que a classe Principal possa ser registrada como um agente JADE. Ser a partir desta interface produzida por este agente, que o usurio poder interagir com a aplicao, usufruindo de todos os seus recursos e funcionalidades descritos individualmente a seguir.

10.2 Implementao dos Requisitos

136

Cdigo 10.1 Inicializao da Aplicao Fluzz


1 2 3 4 5 6 7 8 9 10 11 12 13

public class Principal extends Agent { public static void main(String[] args) { ... // criao de componentes da interface new CarregaGrafo(); iniciaAgentePrincipal(); } private static void iniciaAgentePrincipal() { String[] param = new String[2]; param[0] = ""; param[1] = "agentePrincipal:Principal"; Boot.main(param); } }

10.2.1

RF: Persistncia dos dados gerados em um banco de dados

Atravs da modelagem da estrutura de dados realizada no projeto da aplicao Fluzz, e da determinao do SGBD a ser utilizado, a descrio da implantao desta modelagem pde ser realizada, conforme exemplica o Cdigo 10.2. Cdigo 10.2 Criao do Banco e das Tabelas do Fluzz no PostgreSQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Create Database fluzz Create Table nos ( id integer not null, nome character varying(100) not null, atributo1 character varying(100) null, atributo2 character varying(100) null, atributo3 character varying(100) null, Primary Key (id) ) Create Table conexoes ( id_1 integer not null, id_2 integer not null, Primary Key (id_1, id_2), Foreign Key (id_1) References nos (id), Foreign Key (id_2) References nos (id) )

Ao trmino do processo de gerao de redes, ou do processo de adio de conexes aos membros das redes, os dados criados (vrtices e arestas) sero persistidos no banco de dados uzz, denido na implementao do Cdigo 10.2.

10.2 Implementao dos Requisitos

137

10.2.2

RF: Visualizao bidimensional das redes por meio de grafos

O painel central da Figura 10.2 exemplica o processo de visualizao de redes atravs de grafos bidimensionais realizado pelo Fluzz, obtido pelo clique do boto Mostrar Grafo no painel esquerdo da aplicao. Os vrtices so representados por elipses, e as arestas por linhas curvas, simbolizando as pessoas e suas conexes respectivamente. O mtodo que prov a visualizao dos grafos o mostraGrafo() pertencente classe Principal. Na linha 4 deste mtodo apresentado no Cdigo 10.3, criado inicialmente um layout especco de acordo com a instanciao de uma das classes de layouts, que recebe um grafo como parmetro. A seguir, um componente de visualizao gerado recebendo o layout criado anteriormente, como mostra as linhas 5 e 6 deste mesmo cdigo. Por m, adiciona-se o componente ao Frame para sua visualizao. Cdigo 10.3 Visualizando Grafos no Fluzz
1 2 3 4 5 6 7 8 9 10 11

public class Principal extends Agent { ... private static void mostraGrafo(UndirectedSparseGraph<MyNode, MyLink> grafo) { Layout<MyNode,MyLink> layout = new CircleLayout<MyNode,MyLink>(grafo); VisualizationViewer<MyNode,MyLink> component; component = new VisualizationViewer<MyNode,MyLink>(layout); JFrame frame = new JFrame(); frame.add(component); ... } }

Alguns mtodos disponibilizados pelo JUNG, capazes de realizar mapeamentos visuais, so utilizados por esse componente de visualizao de grafos do Fluzz. Dentre eles destacam-se: setVertexFontTransformer(), que especica qual fonte ser utilizada para a escrita dos rtulos dos vrtices; setVertexShapeTransformer(), que especica a forma com que os vrtices devem ser desenhados; setEdgeFontTransformer(), que informa a fonte para a escrita do rtulo das arestas; setEdgeStrokeTransformer(), que determina a forma como as linhas das arestas sero desenhadas.

10.2.3

RF: Distino visual dos vrtices pela intensidade de cores

Observa-se no grafo da Figura 10.2 que os vrtices possuem tonalidades distintas. Vrtices menos conectados possuem colorao branca, enquanto que medida que se tornam mais bem conectados, recebem a colorao amarelo com mais intensidade. O mtodo responsvel pela colorao dos vrtices o setVertexFillPaintTransformer() do componente de renderizao visual do JUNG. No caso do Fluzz, este mtodo possui como parmetro uma instncia da classe Graph_VertexPaint apresentada no Cdigo 10.4.

10.2 Implementao dos Requisitos

138

Cdigo 10.4 Colorao dos Vrtices do Grafo


1 2 3 4 5 6 7 8 9 10 11 12 13

public class Graph_VertexPaint implements Transformer <MyNode, Paint> { ... public Paint transform (MyNode no) { int valorLim = grafo.getVertexCount()/255; if (valorLim == 0) { valorLim = 1; } int valorCor = 255-((int)Math.pow(grafo.getNeighbors(no).size(),1.7)/valorLim); if (pickedInfo.isPicked(no)) { return Color.CYAN; } else {return new Color(255, 255, valorCor);} } }

Implementando a interface Transformer, a classe Graph_VertexPaint intensica a quantidade de amarelo aplicada aos vrtices medida que se tornam mais conectados, informando uma instncia da classe Color como retorno ao mtodo transform(), que recebe um vrtice como parmetro. O mtodo utilizado para vericar o grau de conexo dos vrtices o getNeighbors(). J a varivel valorCor a responsvel por denir a cor exata a ser aplicada. Quando recebe um valor igual a zero atribui colorao mxima de amarelo ao vrtice, enquanto que ao atingir o valor 255, torna o vrtice branco.

10.2.4

RF: Seleo individual dos vrtices e das arestas

No painel esquerdo do layout da aplicao Fluzz existe uma opo para a escolha entre dois tipos de seleo de componentes no grafo, sendo ambos os tipos providos pelo framework JUNG. O tipo de seleo PICKING funciona para a seleo individual de vrtices e arestas do grafo gerado, sendo necessrio sua escolha quando esta for a necessidade. A Figura 10.3 ilustra a escolha deste tipo de seleo.

Figura 10.3: Seleo dos Componentes do Grafo.

10.2 Implementao dos Requisitos

139

10.2.5

RF: Distino de cores para vrtices e arestas selecionados

No lado esquerdo da Figura 10.3 pode ser vericado que o vrtice selecionado assumiu a colorao Cyan, enquanto que no seu lado direito, a mesma constatao pode ser realizada para a aresta escolhida. No cdigo 10.4, o mtodo isPicked() o responsvel por vericar qual vrtice foi selecionado, atribuindo a cor Cyan da classe Color ao mesmo. Com relao s arestas, a mesma prtica realizada, tendo a classe Graph_EdgePaint a mesma funo da classe Graph_VertexPaint. Obviamente, a nica distino entre ambas, que as arestas possuiro sempre a cor branca at que uma delas seja selecionada.

10.2.6

RF: Movimentao individual ou em grupo dos vrtices

Com o tipo de seleo PICKING escolhido na interface da aplicao, pode-se movimentar um nico vrtice selecionado com o mouse. O lado esquerdo da Figura 10.4 ilustra esta situao, onde um vrtice foi movimentado deixando sua posio original.

Figura 10.4: Movimentao dos Componentes do Grafo.

Caso haja a necessidade de movimentao de vrios vrtices simultaneamente, possvel criar com o mouse uma rea de seleo que abranja mais de um vrtice, possibilitando que todos possam ser movimentados em conjunto.

10.2.7

RF: Movimentao do grafo inteiro

Para a movimentao do grafo inteiro, o tipo de seleo TRANSFORMING deve ser informado na interface da aplicao. direita da Figura 10.4 esta situao ilustrada, onde todo o grafo foi movimentado no painel central, atravs do uso do mouse.

10.2.8

RF: Variao da escala de visualizao do grafo

A Figura 10.5 ilustra a situao em que um mesmo grafo tem sua escala de visibilidade diminuda, como no lado esquerdo da gura, ou aumentada, como no lado

10.2 Implementao dos Requisitos

140

direito da mesma. Estes mecanismos de zoom so providos pelo framework JUNG, e podem ser utilizados atravs do boto de scroll do mouse. A variao entre a menor e a maior escala de visualizao um dos grandes recursos do arcabouo, que consegue reduzir ou amplicar uma imagem um nmero considervel de vezes.

Figura 10.5: Mecanismos de Zoom do Grafo.

10.2.9

RF: Rotao do grafo em torno de seus eixos

Outro mecanismo provido pelo Fluzz atravs do framework JUNG a possibilidade de realizar rotao de grafos. Utilizando como base a Figura 10.4, pode-se vericar no lado esquerdo da Figura 10.6 que o grafo foi rotacionado. Para o uso deste mecanismo necessrio, com o tipo de seleo TRANSFORMING, manter a tecla Shift do teclado pressionada, enquanto se conduz a rotao do grafo com o mouse.

Figura 10.6: Rotao e Deformao do Grafo.

10.2.10

RF: Deformao do grafo de maneira uniforme

O Fluzz tambm prov mecanismos para a deformao de grafos. Mantendo a tecla Ctrl do teclado pressionada, e movimentando o mouse, pode-se deformar a rede esquerda da Figura 10.6, como mostrado direita da mesma.

10.2 Implementao dos Requisitos

141

10.2.11

RF: Visualizao do grafo por meio de diversos layouts

O Fluzz prov diversos layouts de visualizao de redes, conforme pode ser vericado na Figura 10.7.

Figura 10.7: Layouts da Aplicao Fluzz.

Ao todo so cinco os possveis layouts: CircleLayout, FRLayout, ISOMLayout, KKLayout, SpringLayout, que podem ser selecionados atravs de uma opo no painel esquerdo da aplicao, como indicado na gura acima. Cada layout utiliza um algoritmo de visualizao especco conforme discutido na seo 7.1.3. Os exemplos ilustrados na Figura 10.7 representam diferentes visualizaes da mesma rede. A imagem visualizada na posio (a) desta gura foi criada pelo layout CircleLayout. J a imagem visualizada na posio (b) foi gerada pelo layout FRLayout. A imagem visualizada na posio (c) foi criada pelo layout KKLayout. Finalmente, a posio (d) da gura apresenta uma imagem gerada pelo layout SpringLayout. O mtodo que realiza a troca de layouts o mostraGrafo() pertencente classe Principal. Basicamente, este mtodo apresentado no Cdigo 10.5, verica qual foi o layout selecionado, dentre os cinco possveis, e o aplica ao componente de visualizao de redes da aplicao.

10.2 Implementao dos Requisitos

142

Cdigo 10.5 Alterando Layouts de Visualizao das Redes


1 2 3 4 5 6 7 8 9 10 11 12

public class Principal extends Agent { ... private static void mostraGrafo(UndirectedSparseGraph<MyNode, MyLink> grafo) { if (cboTipoLayout.getSelectedItem().equals("CircleLayout")) { Layout<MyNode,MyLink> layout = new CircleLayout<MyNode,MyLink>(grafo); }else if (cboTipoLayout.getSelectedItem().equals("KKLayout")) { Layout<MyNode,MyLink> layout = new KKLayout<MyNode, MyLink>(grafo); } ... // testa prximos layouts } }

10.2.12

RF: Clculo automtico dos pesos das arestas

Conforme foi estabelecido no projeto da aplicao Fluzz, o peso das arestas deve ser calculado automaticamente pelo sistema. Este clculo deve considerar a quantidade de amigos em comum entre os vrtices diretamente conectados, para poder ponderar cada respectiva aresta. O componente que realiza esta operao a classe AmigosComuns, apresentada no Cdigo 10.6, invocada na inicializao do sistema.

Cdigo 10.6 Clculo do Peso das Arestas


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

public class AmigosComuns { public AmigosComuns(UndirectedSparseGraph<MyNode, MyLink> grafo) { ... Iterator<MyLink> iterEdges = grafo.getEdges().iterator(); while (iterEdges.hasNext()) { nContador = 0; edge = iterEdges.next(); noOrigem = grafo.getEndpoints(edge).getFirst(); noDestino = grafo.getEndpoints(edge).getSecond(); Iterator<MyNode> iterAmigosOrigem = grafo.getNeighbors(noOrigem).iterator(); Collection<MyNode> listaAmigosDestino = grafo.getNeighbors(noDestino); while (iterAmigosOrigem.hasNext()) { noAmigo = iterAmigosOrigem.next(); if (listaAmigosDestino.contains(noAmigo)) { nContador ++; } } edge.setWeight(nContador); } }

10.2 Implementao dos Requisitos

143

Na linha 4 deste cdigo, o sistema obtm todas as arestas do grafo atravs do iterador getEdges().iterator(). Em seguida, entre as linhas 7 e 9, a aplicao detecta os vrtices de origem e destino para cada aresta identicada. Da linha 10 17, realizado o procedimento de identicao e totalizao dos amigos em comum destes vrtices, para que por m, na linha 18, seja atribudo aresta corrente o valor totalizado.

10.2.13

RF: Visualizao dos pesos das arestas de forma opcional

Uma opo no painel esquerdo da aplicao foi criada para a visualizao dos pesos da rede, como indicado na Figura 10.8.

Figura 10.8: Visualizao do Peso das Conexes.

O mtodo setEdgeLabelTransformer() o responsvel por denir como os rtulos das arestas sero impressos. Como parmetro para o mtodo pode ser repassada uma instncia da classe Graph_EdgeLabelHide, indicada no Cdigo 10.7. Esta classe recebe uma aresta como argumento e retorna uma string nula, o que na prtica representa o ocultamento dos rtulos, como visualizado no lado esquerdo da Figura 10.8.

Cdigo 10.7 Escondendo os Rtulos das Arestas


1 2 3 4 5

public class Graph_EdgeLabelHide implements Transformer <MyLink, String> { public String transform(MyLink e) { return null; } }

Caso o parmetro repassado ao mtodo setEdgeLabelTransformer() seja uma instncia da classe Graph_EdgeLabelPaint, indicada no Cdigo 10.8, o retorno da mesma ser um documento HTML que imprime em amarelo o valor dos pesos da arestas, como mostrado no lado direito da Figura 10.8.

10.2 Implementao dos Requisitos

144

Cdigo 10.8 Apresentando os Rtulos das Arestas


1 2 3 4 5

public class Graph_EdgeLabelPaint implements Transformer<MyLink, String> { public String transform(MyLink l) { return "<html><font color=\"yellow\">" + l.getWeight() + "</html>"; } }

10.2.14

RF: Visualizao do perl de uma pessoa

No Fluzz, ao se clicar em um vrtice especco, os dados referentes ao mesmo so carregados em seu perl. O perl ca localizado no painel direito da aplicao conforme ilustrado esquerda da Figura 10.9. Alm das informaes referentes s pessoas estipuladas na fase de projeto, foram adicionadas duas mtricas calculadas em tempo de execuo, o nmero de amigos e o coeciente de aglomerao individual, sendo este ltimo apresentado somente se a opo Mostrar C.A. no perl estiver acionada.

Figura 10.9: Visualizao do Perl de Vrtices e Conexes.

O nmero de amigos de uma pessoa calculado pelo mtodo getNeighborCount(), que recebe um vrtice como parmetro. J o coeciente de aglomerao de um vrtice calculado pela classe CoecienteClusterizacao, como indicado no Cdigo 10.9.

Cdigo 10.9 Clculo do Coeficiente de Aglomerao


1 2 3 4 5 6 7 8

public class CoeficienteClusterizacao { public double retornaCoeficienteClusterizacao(...Graph... grafo, MyNode no) { return Metrics.clusteringCoefficients(grafo).get(no); } public double retornaCoeficienteClusterizacao(...Graph... grafo) { return Metrics.clusteringCoefficients(grafo); } }

10.2 Implementao dos Requisitos

145

A classe Metrics do JUNG possui um recurso pronto para o clculo desse coeciente, atravs do mtodo clusteringCoefcients(). Este mtodo sobrecarregado com duas assinaturas, sendo que a primeira delas recebe um grafo e um vrtice como parmetro, para que o sistema possa calcular o coeciente de aglomerao individual.

10.2.15

RF: Visualizao do perl de uma relao de amizade

Os dados referentes s conexes entre os vrtices so tambm apresentados pela aplicao atravs de seu painel direito. Clicando-se em uma aresta do grafo, o sistema automaticamente informa quem so os dois vrtices que a mantm, alm de apresentar o seu peso referente, como mostrado direita da Figura 10.9.

10.2.16

RF: Apresentao da quantidade de vrtices do grafo

O clculo do nmero total de vrtices existentes no grafo obtido pelo mtodo getVertexCount() da API do JUNG. Esta informao pode ser vericada no painel inferior da interface da aplicao, como pode ser melhor vericado na Figura 10.2.

10.2.17

RF: Apresentao da quantidade de arestas do grafo

Similarmente ao clculo do nmero total de vrtices de um grafo, o nmero total de arestas obtido pelo mtodo getEdgeCount(), tambm da API do JUNG. Esta informao ca disponvel ao lado da apresentao do nmero total de vrtices.

10.2.18

RF: Apresentao do coeciente de aglomerao da rede

O coeciente de aglomerao da rede tambm calculado pela aplicao atravs da classe CoecienteClusterizacao, apresentada no Cdigo 10.9. Para esta operao a segunda assinatura do mtodo clusteringCoefcients() utilizada. Nesta opo, somente o grafo recebido como parmetro, e uma mdia processada para todos os coecientes de aglomerao individuais. A informao disponibilizada no painel inferior da aplicao, e pode ser obtida pelo clique do boto Mostrar Mtricas situado em seu painel esquerdo.

10.2.19

RF: Apresentao da distncia geodsica mdia da rede

O Fluzz detm recursos para calcular a distncia geodsica mdia da rede, atravs da classe DistanciaMedia, apresentada no Cdigo 10.10. Visualizada no painel inferior da aplicao, esta informao tambm obtida pelo clique do boto Mostrar Mtricas. Na linha 4 desse cdigo, criada uma instncia da classe ClosenessCentrality do JUNG, responsvel por prover o mtodo getVertexScore(), que informa o inverso

10.2 Implementao dos Requisitos

146

da distncia totalizada de um vrtice especco para todos os outros vrtices do grafo. Neste caso, necessrio inverter este valor para se chegar distncia mdia em graus de separao, como apresentado na linha 6 do mesmo cdigo. Obviamente, os valores de todos os vrtices so calculados, e um valor mdio devolvido pelo mtodo. Cdigo 10.10 Clculo da Distncia Geodsica Mdia
1 2 3 4 5 6 7 8 9 10 11

public class DistanciaMedia { public double retornaDistanciaMedia(UndirectedSparseGraph<MyNode, MyLink> grafo) { double dg = 0; ClosenessCentrality<MyNode,MyLink> b = new ClosenessCentrality<MyNode,MyLink>(grafo); for (int i = 0; i < listaNosOrdenados.size(); i ++) { dg += 1/b.getVertexScore(listaNosOrdenados.get(i)); contador ++; } return (contador>0)?dg/contador:0; } }

Para grafos com uma grande quantidade de vrtices, esse clculo pode ser relativamente demorado, e dependendo da capacidade do hardware, o clculo pode provocar estouro de alocao de memria. Dessa forma, foi criado um procedimento para que este valor possa ser estimado, independentemente do tamanho do grafo, atravs da coleo listaNosOrdenados apresentada na linha 5 do Cdigo 10.10. Essa coleo alimentada pelo mtodo obtemListaNosOrdenada() da classe GraphDao. Inicialmente ele obtm todos os vrtices do grafo, criando uma lista de ns ordenada decrescentemente pelos seus graus de conexo, j capturando o primeiro n desta lista. Em seguida o mtodo divide a lista em 100 partes iguais para poder saltar uma distncia relativa ao tamanho da lista divido por 100, e determinar o prximo vrtice a ser capturado. Assim, o centsimo vrtice escolhido pelo mtodo estar prximo ao ltimo vrtice da lista, criando uma boa populao para estimar a distncia mdia da rede. Esse procedimento se mostrou muito mais eciente do que a escolha aleatria de vrtices para a determinao da distncia tpica dos caminhos, apresentando pequeno desvio padro. O motivo consiste no fato, de que determinados tipos de topologias pouco igualitrias usualmente teriam suas centenas ou milhares de vrtices menos conectados escolhidos mais frequentemente, para integrarem os 100 a serem analisados.

10.2.20

RF: Gerao de redes atravs dos modelos da literatura

Um importante recurso da aplicao prover meios para a gerao automtica de redes. O painel superior do Fluzz possui a ferramenta que viabiliza este procedimento. No canto esquerdo deste painel, como assinalado na Figura 10.10, existe uma opo para

10.2 Implementao dos Requisitos

147

a escolha entre os modelos de Erds e Rnyi, Watts e Strogatz e Barabsi e Albert, que so os principais modelos para gerao de redes propostos na literatura. Uma vez informado o modelo a ser utilizado, necessrio preencher ainda dois campos para efetivar o procedimento. Primeiro, deve ser informada a quantidade de vrtices a ser produzida, e segundo, a quantidade de conexes a ser criada a cada iterao, que corresponde ao nmero de conexes a ser estabelecido para cada novo vrtice gerado. Finalmente, o processo deve ser iniciado atravs do clique do boto Gerar a Rede. O processo de gerao de redes inicia o procedimento criando um grafo completo de tamanho n + 1, sendo n a quantidade informada de conexes a ser criada por iterao. Dessa forma, se n = 2, por exemplo, o procedimento ser iniciado com um grafo de 3 vrtices totalmente conectados. A inteno evitar a gerao de grafos no conexos, que impediriam a localizao de alguns ns nas redes. O grafo a ser criado reproduzir as caractersticas essenciais do modelo informado na sua gerao. A Figura 10.10 compreende redes geradas pelos modelos citados anteriormente, criadas com 50 vrtices, e com duas conexes adicionadas por iterao.

Figura 10.10: Modelos de Gerao de Redes.

Na posio (a) dessa gura, o grafo foi gerado atravs do modelo de Erds e Rnyi. O coeciente de aglomerao apresentado por esta rede foi de 0,089, a distncia

10.2 Implementao dos Requisitos

148

geodsica mdia 2,870, e o vrtice mais conectado apresentou 11 conexes. Na posio (b) da mesma gura, a rede foi gerada seguindo o modelo de Watts e Strogatz. Para o coeciente de aglomerao, o valor encontrado nesta rede foi de 0,410, o comprimento tpico dos caminhos foi 3,953, enquanto que o vrtice melhor conectado obteve 6 conexes. J na posio (c) da gura, a rede foi criada pelo modelo proposto por Barabsi e Albert. O coeciente de aglomerao apresentado foi de 0,152, a distncia mdia dos caminhos 2,587, e o vrtice mais conectado conseguiu 24 conexes. Mesmo essas redes sendo relativamente pequenas, j so capazes de apresentar o padro esperado das quatro caractersticas previstas na Tabela 9.1. Redes aleatrias devem possuir aglomerao desprezvel, distncias pequenas entre os vrtices, e pouca probabilidade para a emergncia de hubs. Redes de mundo pequeno j so exmias aglomeradoras, conseguem relativamente encurtar os caminhos, mas so pssimas geradoras de hubs. Em contrapartida, redes sem escala so experts para a criao destes hubs, com alta performance no encurtamento de caminhos, e baixo desempenho na criao de aglomerados. Apesar de existirem classes disponibilizadas pela API do JUNG para a gerao de redes de acordo com os trs modelos mencionados anteriormente, nenhuma delas pde ser utilizada pela aplicao Fluzz. O motivo se deve ao fato de que estas classes no possuem recursos para a gerao de redes a partir de dados pr-existentes. Portanto, pela API do JUNG s possvel criar redes a partir do primeiro vrtice. Consequentemente, no foi possvel viabilizar pela API do JUNG o incremento de uma mesma rede, para que a anlise das caractersticas durante seu crescimento pudesse ser realizada. Alm disso, o procedimento para a gerao de redes extensas no poderia ser efetivado em um nico processamento, pois problemas externos como queda de energia inviabilizariam a operao. Nesse contexto, foi criada a classe GeneratorNetwork, responsvel por gerar redes de acordo com todos os modelos mencionados. Esta classe apresentada no Cdigo 10.11 possui um mtodo para criao de conexes de acordo com cada modelo de rede. Quando instanciada, a classe GeneratorNetwork invoca o mtodo gerarRede(), repassando os respectivos parmetros informados. Este mtodo cria uma iterao pelo nmero de vrtices a ser criado, j vericando se a rede possui elementos originais. Neste caso, atribudo varivel n a quantidade de vrtices existentes mais 1, como vericado na linha 6 do Cdigo 10.11, e o crescimento da rede realizado a partir dos dados iniciais. O procedimento de gerao de conexes o que diferencia todos os modelos. No obstante, independentemente do modelo, um grafo completo produzido at que a quantidade de vrtices alcance a quantidade de conexes a ser adicionada por iterao mais 1. Em seguida, a adio de conexes seguir a lgica de cada modelo. Para o modelo de Erds e Rnyi o mtodo geraConexoesErdosRenyi() invocado, como visualizado na linha 17 do Cdigo 10.11. Ele cria por vrtice a quantidade de

10.2 Implementao dos Requisitos

149

conexes informadas no parmetro seguindo uma nica regra: a aleatoriedade. J o modelo de Watts e Strogatz produzido atravs da invocao do mtodo geraConexoesWattsStrogatz(), realizada na linha 19 do Cdigo 10.11. Este mtodo, baseado no padro de conexes de redes de mundo pequeno, cria em 80% das vezes conexes locais, e para os 20% restantes, conexes aleatrias. O procedimento de criao de conexes locais segue uma regra particular: encontrar o vrtice mais prximo que ainda no esteja conectado ao vrtice corrente, utilizando para isto uma avaliao decrescente de seus cdigos de identicao. Caso o vrtice no seja encontrado at que se chegue ao primeiro elemento da rede, o ltimo elemento ser o prximo a ser analisado, como se a rede estivesse disposta em um crculo. Para atender ao modelo de Barabsi e Albert, o mtodo geraConexoesBarabasiAlbert() invocado na linha 21 do Cdigo 10.11. Este modelo tambm segue uma nica regra: a conexo preferencial. Esta regra determina que a probabilidade de um vrtice receber uma conexo proporcional ao seu grau de conexo, o que propicia com a dinmica evolutiva da rede a possibilidade de surgimento dos hubs.

Cdigo 10.11 Gerao de Redes


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

public class GeneratorNetwork { public GeneratorNetwork(String modelo, int qtNosInformada, int qtConexoesAdicionar) { gerarRede(modelo, qtNosInformada, qtConexoesAdicionar); } public void gerarRede(String modelo, int qtNosInformada, int qtConexoesAdicionar) { n = getGrafo().getVertexCount() + 1; while (n <= qtNosInformada) { adicionaNo(); adicionaConexoes(qtConexoesAdicionar, modelo); n ++; } } private void adicionaConexoes(Integer qtConexoesAdicionar, String modelo) { if (getGrafo().getVertexCount() <= qtConexoesAdicionar + 1) { ... // produz grafo completo }else { if (modelo == "Erds/Rnyi") { geraConexoesErdosRenyi(qtConexoesAdicionar); }else if (modelo == "Watts/Strogatz") { geraConexoesWattsStrogatz(qtConexoesAdicionar); }else if (modelo == "Barabsi/Albert") { geraConexoesBarabasiAlbert(qtConexoesAdicionar); } } } }

10.2 Implementao dos Requisitos

150

10.2.21

RF: Gerao de redes de acordo com um novo modelo

A m de atender ao requisito de criao de um novo modelo para gerao de redes, foi implementado na aplicao Fluzz o Modelo Gama, denido na fase de projeto da aplicao. O Modelo Gama interpola redes de mundo pequeno e redes sem escala, na esperana de uniformizar positivamente quatro caractersticas fundamentais de redes complexas: o coeciente de aglomerao, o comprimento tpico dos caminhos, a possibilidade de gerao de hubs, e a distribuio de graus. Uniformizar positivamente signica corrigir pontos fracos, e estabelecer valores aceitveis para cada caracterstica, minimizando as fraquezas dos modelos. Perante este propsito, redes de diversos tamanhos e densidades foram geradas segundo os trs modelos da literatura, e de acordo com trs conguraes do Modelo Gama. A Tabela 10.2 apresenta os valores obtidos por estes modelos, diante do crescimento da rede original.
Tabela 10.2: Valores Obtidos Pelos Modelos de Rede
Qt. (V/A) 100/2 100/5 100/10 200/2 200/5 200/10 500/2 500/5 500/10 1000/2 1000/5 1000/10 2000/2 2000/5 2000/10 5000/2 5000/5 5000/10 10000/2 10000/5 10000/10 20000/2 20000/5 20000/10 50000/2 50000/5 50000/10 100000/2 100000/5 100000/10 200000/2 200000/5 200000/10 500000/2 500000/5 500000/10 CA 0.03 0.12 0.24 0.02 0.07 0.13 0.01 0.02 0.06 0.00 0.01 0.03 0.00 0.01 0.01 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 E/R DGM 3.37 2.28 1.86 3.79 2.59 2.09 4.48 2.93 2.43 4.91 3.25 2.65 5.37 3.54 2.85 5.89 3.90 3.15 6.35 4.17 3.39 6.86 4.44 3.59 7.38 4.79 3.85 7.76 5.06 4.08 8.15 5.30 4.29 8.69 5.65 4.57 MH 13 23 39 14 27 50 19 32 61 20 33 67 22 39 72 23 42 89 24 47 94 27 54 98 27 64 112 29 69 118 31 73 129 32 76 141 CA 0.37 0.47 0.57 0.36 0.45 0.52 0.35 0.45 0.50 0.33 0.44 0.48 0.34 0.44 0.48 0.34 0.44 0.47 0.33 0.43 0.47 0.33 0.44 0.46 0.33 0.44 0.46 0.33 0.43 0.46 0.33 0.44 0.46 0.33 0.44 0.46 W/S DGM 4.57 2.56 2.02 5.30 3.01 2.37 6.41 3.63 2.75 7.14 4.00 3.02 8.02 4.37 3.34 9.09 4.92 3.71 9.69 5.37 3.40 10.42 5.70 4.28 11.40 6.24 4.67 11.38 6.64 4.97 12.58 6.99 5.21 13.58 7.41 5.55 MH 6 15 25 7 15 27 8 17 30 10 17 31 10 19 32 11 20 34 12 22 38 12 23 39 12 23 40 13 26 42 14 27 44 15 30 47 CA 0.12 0.24 0.35 0.05 0.15 0.22 0.03 0.07 0.12 0.03 0.01 0.07 0.02 0.02 0.05 0.01 0.01 0.02 0.00 0.01 0.01 0.00 0.00 0.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 B/A DGM 3.02 2.20 1.84 3.33 2.44 2.03 3.79 2.74 2.33 4.15 3.63 2.54 4.33 3.19 2.71 4.72 3.44 2.91 5.00 3.63 3.04 5.25 3.84 3.17 5.61 4.07 3.44 5.83 4.31 3.59 6.11 4.48 3.77 6.47 4.68 3.90 MH 19 41 66 27 56 97 41 92 155 57 400 212 87 184 282 140 277 463 198 400 649 295 558 901 472 870 1451 692 1231 2031 993 1762 2869 1560 2722 4453 CA 0.23 0.34 0.44 0.19 0.31 0.35 0.19 0.29 0.31 0.19 0.25 0.30 0.19 0.26 0.29 0.18 0.26 0.28 0.18 0.25 0.28 0.19 0.25 0.28 0.18 0.26 0.28 0.18 0.26 0.28 0.18 0.26 0.28 0.18 0.26 0.28 MG-40 DGM 3.81 2.41 1.92 4.23 2.76 2.20 5.00 3.21 2.56 5.60 4.59 2.80 6.03 3.86 3.05 6.81 4.30 3.39 7.34 4.59 3.63 7.81 4.90 3.86 8.52 5.28 4.18 8.98 5.61 4.42 9.54 5.88 4.66 10.01 6.30 4.92 MH 11 17 30 15 24 33 22 30 42 25 57 52 26 43 62 33 49 78 41 57 90 48 69 106 61 83 132 72 92 158 77 111 179 88 130 213 CA 0.13 0.28 0.36 0.10 0.22 0.28 0.11 0.21 0.24 0.12 0.18 0.23 0.12 0.18 0.21 0.13 0.19 0.20 0.12 0.18 0.20 0.12 0.18 0.20 0.12 0.18 0.20 0.12 0.18 0.20 0.12 0.18 0.20 0.12 0.18 0.20 MG-50 DGM 3.53 2.34 1.89 4.08 2.69 2.14 4.67 3.12 2.51 5.18 4.38 2.74 5.70 3.68 2.97 6.32 4.10 3.28 6.81 4.38 3.52 7.41 4.65 3.75 7.85 5.05 4.05 8.31 5.32 4.25 8.78 5.62 4.50 9.24 5.95 4.75 MH 13 24 36 16 26 44 21 32 56 26 67 69 30 46 79 37 56 101 46 67 126 55 81 148 79 102 185 94 120 216 108 154 252 134 185 331 CA 0.15 0.19 0.32 0.11 0.15 0.24 0.07 0.14 0.17 0.07 0.12 0.15 0.07 0.12 0.15 0.07 0.18 0.14 0.07 0.11 0.14 0.07 0.12 0.13 0.07 0.11 0.13 0.07 0.12 0.13 0.07 0.12 0.13 0.07 0.11 0.13 MG-60 DGM 3.51 2.29 1.87 3.95 2.63 2.13 4.61 3.03 2.48 5.08 3.30 2.69 5.46 3.60 2.90 6.05 3.94 3.21 6.44 4.25 3.46 6.78 4.48 3.65 7.34 4.84 3.91 7.72 5.1 4.13 8.14 5.37 4.35 8.52 5.67 4.63 MH 12 25 38 14 30 46 18 39 62 21 49 83 27 66 101 36 81 134 43 103 169 54 130 208 72 176 282 87 224 345 102 295 414 131 386 549

E/R = Modelo de Erds e Rnyi, W/S = Modelo de Watts e Strogatz, B/A = Modelo de Barabsi e Albert, MG-40 = Modelo Gama com 40% de conexo preferencial, MG-50 = Modelo Gama com 50% de conexo preferencial, MG-60 = Modelo Gama com 60% de conexo preferencial, Qt. (V/A)= Quantidade total de vrtices e quantidade de arestas criadas para cada novo vrtice adicionado, CA=Coeciente de Aglomerao, DGM=Distncia Geodsica Mdia, MH=Maior Hub.

Cada congurao do Modelo Gama deniu a fronteira entre as conexes preferenciais e as conexes locais. A congurao MG-40, por exemplo, assumiu que a probabilidade de ocorrerem conexes preferenciais de 40%, enquanto que o restante ser destinado para conexes locais. A congurao MG-50 determina a mesma probabilidade para ambos os tipos de conexo. Por m, a congurao MG-60, assume que a maioria das conexes, 60%, ser realizada de maneira preferencial.

10.2 Implementao dos Requisitos

151

Durante as mensuraes, foi vericado que valores abaixo de 40% de conexes preferenciais inviabilizam a criao de hubs. Em contrapartida, valores acima de 60% prejudicam consideravelmente a aglomerao da rede. Por esta razo, as conguraes do Modelo Gama utilizadas para a determinao do melhor ponto de ajuste entre os dois tipos de conexo, local e preferencial, caram entre os extremos de 40% e 60%. A variao das conguraes do Modelo Gama MG-40, MG-50 e MG-60 inuencia na posio inicial, no eixo das ordenadas, da curva de distribuio de graus dos modelos, conforme foi previsto pelas imagens intermedirias da Figura 9.1. A explicao que quanto mais conexo preferencial existir, mais alto neste eixo a curva se inicia. Alm disso, esta variao inui tambm na velocidade de decaimento da curva, que ca mais branda medida que se torna mais conectada preferencialmente. A partir da anlise minuciosa dos dados da Tabela 10.2, foi possvel observar que a congurao do Modelo Gama MG-50 assumiu a faixa dos melhores valores para a desejada uniformizao positiva das caractersticas observadas de redes complexas, sendo curiosamente, a congurao mais equilibrada entre os dois tipos de conexo. Obviamente, o processo de gerao de redes pode variar ao longo de sua execuo, fazendo com que as conguraes conectivas se alternem de acordo com diversas variveis que envolvem os indivduos e o ambiente. No obstante, a congurao MG-50 reetiu na mdia o melhor intervalo para estas variaes, corrigindo os pontos fracos de cada modelo de rede, e ainda mantendo valores relevantes para cada caracterstica. Ao se encaixar o histograma da conectividade de um n do Modelo Gama MG50 em um grco, o resultado foi que a distribuio de links nas redes geradas por este modelo segue uma hibridao entre distribuies normais e leis de potncia, assumindo na maioria das vezes, um padro prximo ao estipulado na situao d da Figura 9.1. A curva se inicia no valor referente mnima quantidade possvel de conexes de um vrtice. Em seguida, sobe seguindo uma distribuio normal at seu ponto mximo, que ser aproximadamente o valor inicial mais o valor intermedirio da quantidade de conexes a ser adicionada por iterao a cada vrtice. Finalmente, a partir deste cume, a curva desce implacavelmente pela restante maioria dos dados da rede, seguindo uma lei de potncia com um expoente prximo a 4. Por esta propriedade de mesclar dois tipos diferentes de redes, apresentando uma pequena regio disposta por uma distribuio normal e o restante por leis de potncia, o Modelo Gama MG-50 deniu um novo tipo de rede denominado rede de pequena escala, que na interface do Fluzz pode ser escolhido atravs da opo Marin/Carvalho. A Tabela 10.3 apresenta o comparativo entre a anlise das caractersticas das redes de pequena escala perante os outros modelos de rede analisados. Percebe-se que este novo tipo de rede no apresenta pontos fracos, e consegue colocar aglomerao, caminhos curtos e hubs sob a mesma gide. Portanto, as redes de pequena escala tornam-

10.2 Implementao dos Requisitos

152

se uma alternativa concreta para a denio da real topologia da sociedade.


Tabela 10.3: Avaliao dos Modelos de Gerao de Redes
Redes Aleatrias Redes de Mundo Pequeno Redes Sem Escala Redes de Pequena Escala CA 0 5 1 3 DGM 4 2 5 3 MH 2 1 5 3 DG Normal Normal Leis de Potncia Hbrida (Normal e Leis de Potncia)

CA=Coeciente de Aglomerao, DGM=Distncia Geodsica Mdia, MH=Maior Hub, e DG=Distribuio de Graus.

A posio (d) da Figura 10.10 exemplica a utilizao do modelo de redes de pequena escala. Para 50 ns, com duas conexes adicionadas por iterao, o coeciente de aglomerao resultante foi de 0,210, a distncia mdia dos caminhos 3,106, e o vrtice mais conectado conseguiu 15 conexes, seguindo o padro estabelecido na Tabela 10.3. Para isso, foi includo no mtodo adicionaConexoes() da classe GeneratorNetwork, a instruo referente a esse novo modelo de rede, conforme vericado no Cdigo 10.12. Cdigo 10.12 Instruo para Gerao de Redes de Pequena Escala
1 2 3 4 5 6 7 8 9

public class GeneratorNetwork { ... private void adicionaConexoes(Integer qtConexoesAdicionar, String modelo) { ... else if (modelo == "Marin/Carvalho") { geraConexoesMarinCarvalho(qtConexoesAdicionar); } } }

10.2.22

RF: Importao dos dados de redes pr-denidas

Como j foi apresentado, a aplicao Fluzz possui uma estrutura de dados criada sicamente no banco de dados relacional PostgreSQL. Qualquer rede que esteja armazenada nesta estrutura poder ento ser utilizada pela aplicao. O usurio pode alimentar esta base de dados de trs formas: manualmente, utilizando os procedimentos de gerao de redes da prpria aplicao, ou ainda atravs de algum aplicativo externo, que possa popular a base adequadamente. Independente de como a base foi populada, na inicializao da aplicao, uma instncia da classe CarregaGrafo criada. Esta ltima, por sua vez, instancia a classe GraphDao, apresentada no Cdigo 10.13, invocando o mtodo obtemGrafo(). Este mtodo invoca sequencialmente os mtodos carregaNos() e carregaConexoes(), responsveis por ler no banco os dados outrora armazenados, que sero posteriormente representados gracamente na interface da aplicao pelo agentePrincipal.

10.2 Implementao dos Requisitos

153

Cdigo 10.13 Montando o Grafo


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

public class GraphDao { private static UndirectedSparseGraph<MyNode, MyLink> grafo; private MyNode no; public void obtemGrafo() throws Exception { carregaNos(conexao); carregaConexoes(conexao); } private void carregaNos(Connection conexao) throws SQLException { grafo = new UndirectedSparseGraph<MyNode, MyLink>(); stmt = conexao.prepareStatement("Select * from nos"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { no = new MyNode(); ... // atualiza dados do vrtice grafo.addVertex(no); } } private void carregaConexoes(Connection conexao) throws SQLException { stmt = conexao.prepareStatement("Select * from conexoes"); ResultSet rs = stmt.executeQuery(); while (rs.next()) { ... grafo.addEdge(new MyLink(), rs.getInt("id_1"), rs.getInt("id_2")); } } ... }

Inicialmente na linha 2 de seu cdigo, a classe GraphDao declara um grafo esparso no direcionado, denindo que seus vrtices sero objetos da classe MyNode, e que suas arestas sero objetos da classe MyLink. Estas duas ltimas classes possuem todos os atributos modelados para vrtices e arestas na fase de projeto. O mtodo carregaNos() ser responsvel pela leitura dos vrtices, que so obtidos atravs de uma consulta no banco de dados, como mostrado entre as linhas 10 e 16 do Cdigo 10.13. Durante as iteraes, uma instncia da classe MyNode criada para cada vrtice encontrado, que possui seus atributos devidamente atualizados antes de ser adicionado ao grafo. Quando todos os vrtices so adicionados, o mtodo carregaConexoes() invocado para a leitura das conexes existentes. O procedimento similar ao de criao de vrtices, com o detalhe da necessidade de se informar quais so os dois vrtices que recebero a conexo. Dessa forma, o procedimento segue at que todo o grafo seja criado.

10.2 Implementao dos Requisitos

154

10.2.23

RF: Adio de conexes s redes existentes

Dentro do contexto de gerao de redes, foi criado outro importante recurso na aplicao que prov um mecanismo para o aparecimento de novas ligaes entre os vrtices existentes. No painel superior do Fluzz existe um boto Add Conexes Rede, responsvel por iniciar o processo de criao destas conexes. Para isso, deve ser informada a quantidade de conexes por vrtice a ser adicionada, que seguir um dos modelos de gerao de redes disponibilizados pela ferramenta: Erds/Rnyi, Watts/Strogatz, Barabsi/Albert ou Marin/Carvalho. A classe responsvel por realizar esse procedimento a GeneratorEdges, e seu funcionamento bastante semelhante ao da classe GeneratorNetwork. A nica diferena, basicamente, que a GeneratorEdges no adiciona novos vrtices, se concentrando somente na adio de arestas entre os mesmos, como apresentado no Cdigo 10.14.

Cdigo 10.14 Adicionando Conexes s Redes


1 2 3 4 5 6 7 8 9 10 11 12 13

public class GeneratorEdges { ... public GeneratorEdges(String modelo, Integer qtConexoesAdicionar) { gerarRede(modelo, qtConexoesAdicionar); } public void gerarRede(String modelo, Integer qtConexoesAdicionar) { Iterator<MyNode> iterVertices = GraphDao.getMapaNosBanco().values().iterator(); while (iterVertices.hasNext()) { setNo(iterVertices.next()); adicionaConexoes(qtConexoesAdicionar, modelo); } } }

A adio de novas arestas entre os vrtices das redes invariavelmente produz o aumento da densidade das mesmas. O lado esquerdo da Figura 10.11 ilustra uma rede com 50 ns, gerada com duas conexes por vrtice a cada iterao pelo modelo Marin/Carvalho, que implementa redes de pequena escala. Ao se adicionar mais duas conexes por iterao para os mesmos 50 vrtices, percebe-se que a rede tem sua distncia geodsica mdia diminuda de 3,105 para 2,113, e seu coeciente de aglomerao aumentado de 0,239 para 0,264, como visualizado no lado direito da gura. Na linha 7 do Cdigo 10.14 so buscados todos os vrtices do grafo seguindo a ordem de suas criaes originais, para que os mesmos possam ser iterados no procedimento de adio de novas conexes. Em seguida, a cada iterao, um vrtice capturado, sendo as conexes consequentemente adicionadas ao mesmo, de acordo com o modelo de rede informado. O mtodo adicionaConexoes() da classe GeneratorEdges, invocado

10.2 Implementao dos Requisitos

155

na linha 10 deste cdigo, similar ao seu homnimo da classe GeneratorNetwork, com algumas diferenas pontuais para seu melhor ajuste a esta nova situao.

Figura 10.11: Processo de Adio de Conexes.

O aumento da densidade provocou essas alteraes nos valores mensurados para as principais caractersticas de redes complexas. Obviamente, o maior hub dessa rede tambm foi incrementado, passando de 11 para 19 conexes. Todo esse procedimento de adio de conexes entre os vrtices possibilita uma diferente anlise da rede, que tem seu processo conectivo colocado em foco, para que diversas estimativas e inferncias particulares a cada tipo de rede possam ser realizadas.

10.2.24

RF: Deteco de caminhos entre duas pessoas

Alm dos recursos de gerao e visualizao de redes por meio de objetos visuais, a aplicao Fluzz possui adicionalmente um recurso fundamental, que visa atender a outra importante meta do projeto: a realizao de buscas. De acordo com a arquitetura proposta no captulo anterior, foi construda uma Sociedade de Agentes de Pesquisa, caracterizada por agentes de software que trabalham cooperativamente para a resoluo de um problema de otimizao: minimizar o comprimento dos caminhos, e maximizar o peso das amizades que compem o caminho existente entre os vrtices de origem e destino analisados. A inteno foi de aumentar as chances de interao mtua entre os indivduos pertencentes aos caminhos nas redes. Para efetivar o procedimento de busca, o usurio deve informar no painel superior do Fluzz, o cdigo do vrtice de origem, de onde a pesquisa se iniciar, e o cdigo do vrtice de destino, que o elemento a ser encontrado na rede. Outra opo, tambm aceita pela aplicao para a identicao do vrtice de destino, a informao de seu nome descritivo. Em seguida, o boto Proc. Melhor Caminho deve ser acionado, e neste momento, o agentePrincipal, representado pela classe Principal, inicia os agentes de pesquisa atravs da invocao do mtodo criandoAgentes(), apresentado no Cdigo 10.15.

10.2 Implementao dos Requisitos

156

Cdigo 10.15 Iniciando Agentes de Pesquisa


1 2 3 4 5 6 7 8 9 10 11 12

public class Principal extends Agent { ... static AgentController agenteDijkstra, agenteAcs, agenteAs; private static void criandoAgentes() { agenteDijkstra = container.createNewAgent("agenteDijkstra", "Dijkstra", null); agenteAcs = container.createNewAgent("agenteAcs", "AntColonyOptimization", null); agenteAs = container.createNewAgent("agenteAs", "AntColonyOptimization", null); agenteDijkstra.start(); agenteAcs.start(); agenteAs.start(); } }

As linhas 5,6 e 7 do Cdigo 10.15 instanciam os agentes Dijkstra, ACS e AS no JADE. J as linhas 8,9 e 10 deste cdigo realizam o registro dos mesmos no AMS do framework, identicando-os e deixando-os aptos a realizar suas tarefas de busca. Para que o agentePrincipal possa receber as mensagens desses outros agentes, no mtodo setup() da classe Principal adicionada uma tarefa do tipo CyclicBehaviour do JADE, como vericado no Cdigo 10.16. Cdigo 10.16 Escutando e Encerrando os Agentes de Pesquisa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

public class Principal extends Agent { ... protected void setup() { addBehaviour(new ResponderBehaviour()); } public static void atualizaCaminho(String agente) throws Exception { ... new MarcaMenorCaminho(GraphDao.getGrafo(), getMenorCaminho()); } } class ResponderBehaviour extends CyclicBehaviour { MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.REQUEST); public void action() { ACLMessage aclMessage = myAgent.receive(mt); if (aclMessage != null) { Principal.atualizaCaminho(aclMessage.getSender().getLocalName()); myAgent.getContainerController().getAgent("agenteDijkstra").kill(); myAgent.getContainerController().getAgent("agenteAcs").kill(); myAgent.getContainerController().getAgent("agenteAs").kill(); }else {this.block();} } }

10.2 Implementao dos Requisitos

157

Uma tarefa do tipo CyclicBehaviour executa uma ao ininterruptamente at que seja encerrada. Nesse caso especco, esta ao corresponde a estar sempre ouvindo os agentes de pesquisa, mantendo-se alerta a qualquer mensagem por eles enviada. As mensagens, como denido no projeto da aplicao, sero enviadas pelos agentes assim que os mesmos encontrarem a soluo do problema. A linha 15 do cdigo 10.16 realiza um teste inicial, para vericar se existem mensagens enviadas ao agentePrincipal. Em caso negativo, a tarefa bloqueada para no consumir parte do processamento da mquina. No obstante, no momento em que uma mensagem chega, a tarefa acordada e volta a ser executada. neste instante que o agentePrincipal, atravs do mtodo atualizaCaminho(), processa a resposta enviada por um dos agentes, marcando gracamente na interface da aplicao o caminho encontrado. Inicialmente, esse mtodo assinala na interface qual foi o agente responsvel pela soluo do problema. Em seguida, atravs da instanciao da classe MarcaMenorCaminho, produzido no componente grco da aplicao, a visualizao do caminho encontrado pelo agente, atravs da diferenciao das cores dos vrtices e arestas que o compem. Para a viabilizao deste recurso, foi criado o atributo booleano shortestPath nas classes que representam estes dois elementos, e atravs dos mtodos setShortestPath(), os componentes dos caminhos podem ser assinalados, como mostra o Cdigo 10.17. Cdigo 10.17 Marcando o Menor Caminho no Grafo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

public class MarcaMenorCaminho { public MarcaMenorCaminho(...Graph<MyNode, MyLink> grafo, List<MyNode> caminho) { MyNode no; MyLink edge; MyNode noAnterior = null; Iterator<MyNode> iterVertices = caminho.iterator(); while (iterVertices.hasNext()) { no = iterVertices.next(); no.setShortestPath(true); if (noAnterior != null) { edge = grafo.findEdge(no, noAnterior); edge.setShortestPath(true); } noAnterior = no; } } }

Aps a criao grca representativa dos caminhos, o agentePrincipal encerra todos os outros agentes ativos na plataforma, como vericado entre as linhas 17 e 19 do Cdigo 10.16. Neste ponto, o Fluzz volta ao seu estado original, mantendo-se preparado para realizao de novas buscas.

10.2 Implementao dos Requisitos

158

Como denido em fase de projeto, o agenteDijkstra realiza seu procedimento de busca implementando o Algoritmo de Dijkstra. O JUNG disponibiliza recursos para utilizao deste algoritmo atravs da classe DijkstraShortestPath. Seus mtodos getPath() e getDistance() so capazes de retornar respectivamente o menor caminho entre dois vrtices informados, e o peso acumulado atravs do mesmo. No obstante, no existe a possibilidade de aplicar algum modelo particular lgica de avaliao qualitativa dos caminhos encontrados pelo mtodo getPath(). As nicas opes de avaliaes providas pelo mtodo so de forma exclusiva, ou o grau de separao, ou a distncia ponderada entre os vrtices. Um modelo um pouco mais complexo, como o modelo BestWay, denido no projeto da aplicao, no tem como ser empregado, e por esta razo, a classe de otimizao provida pelo framework no foi utilizada na implementao do agenteDijkstra no Fluzz. Com o descarte desse componente do JUNG, outra classe foi desenvolvida para representar o agenteDijkstra, a classe Dijkstra, visualizada no Cdigo 10.18. Cdigo 10.18 agenteDijkstra
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

public class Dijkstra extends Agent { ... protected void setup() { procuraMenorCaminho(); } public void procuraMenorCaminho() { menorCaminho = retornaMenorCaminho(getGrafo(), getNoOrigem(), getListaDestino()); Principal.setMenorCaminho(menorCaminho); enviarMensagem(); ... } public List<MyNode> retornaMenorCaminho(...Graph... grafo, MyNode noOrigem, List<MyNode> listaDestino, int pesoLacoFraco) { ... //implementa o Algoritmo de Dijkstra e retorna o menor caminho if (degree >= 4) { AntColonyOptimization.setDegree(degree); GeneticAlgorithm.setDegree(degree); } } private void enviarMensagem() { AID r = new AID ("agentePrincipal@" + getHap(), AID.ISGUID); ACLMessage aclMessage = new ACLMessage(ACLMessage.REQUEST); aclMessage.addReceiver(r); aclMessage.setContent(this.getLocalName()); this.send(aclMessage); } }

10.2 Implementao dos Requisitos

159

Ao ser ativado pelo agentePrincipal, o agenteDijkstra, atravs de seu mtodo setup(), invoca o mtodo procuraMenorCaminho(). Este ltimo mtodo, por sua vez, responsvel por invocar o mtodo retornaMenorCaminho(), que utilizar o Algoritmo de Dijkstra para navegar pela rede, retornando no nal o caminho encontrado. Durante a travessia da rede at a localizao do vrtice desejado, o agenteDijkstra utiliza-se do modelo avaliativo BestWay, proposto no captulo anterior. Consequentemente, os caminhos vo sendo diferenciados, e o melhor caminho existente entre dois vrtices pode ser retornado pelo agente. Para a denio do valor limite que caracterizar um lao fraco na rede, foi criado no painel superior da aplicao Fluzz uma opo onde o usurio pode informar este valor nominalmente. A linha 16 do cdigo do agenteDijkstra realiza uma importante ao dentro da Sociedade de Agentes de Pesquisa. Somente quando este agente alcana o quarto grau de separao entre os dois vrtices pesquisados, que o mesmo autoriza as formigas articiais a devolverem suas supostas solues. Em outras palavras, apesar dos agentes ACS e AS tambm j estarem ativos e pesquisando pela rede, somente quando o agenteDijkstra ultrapassa a fronteira dos trs graus de separao, que estas formigas podem, caso encontrem uma soluo antes do agenteDijkstra, nalizar o processamento. Caso o agenteDijkstra encontre a soluo do problema antes de seus comparsas, ele envia uma mensagem ao agentePrincipal atravs do mtodo enviarMensagem(), apresentado entre as linhas 20 e 26 do Cdigo 10.18. Finalmente, o agentePrincipal recebe a mensagem, e apresenta a soluo gracamente na interface do Fluzz. Os tempos de pesquisa do agenteDijkstra, diante de duas conguraes de sua estrutura de dados, e de trs redes de tamanhos diferentes, foram cronometrados a m de se avaliar sua performance. Os dados referem-se ao pior caso encontrado em vinte mensuraes para cada rede, e podem ser vericados na Tabela 10.4.
Tabela 10.4: Performance dos Heaps Perante as Listas
Estrutura de Dados ArrayList Heap 10.000 vrtices 1s 0s 20.000 vrtices 9s 0s 50.000 vrtices 113 s 4s

A anlise dos dados dessa tabela mostra como a implementao da la de prioridade do agenteDijkstra atravs de um heap, em vez de uma lista, aumenta signicativamente a sua performance. Por isso, a classe Heap do pacote EDU.oswego.cs.dl.util.concurrent.Heap inerente ao Java 7 foi utilizada para este agente. Os agentes ACS e AS baseados em formigas articiais foram implementados atravs da classe AntColonyOptimization, apresentada no Cdigo 10.19. Duas instncias desta classe representaro ambos os agentes, criados com pequenas diferenas. O processo de inicializao e encerramento dos agentes ACS e AS idntico ao do agenteDijkstra, com a invocao em sequncia dos mtodos setup(), procuraMenorCa-

10.2 Implementao dos Requisitos

160

minho(), retornaMenorCaminho(), e enviarMensagem(). Todavia, o mtodo retornaMenorCaminho() ao invs do Algoritmo de Dijkstra, implementa variaes dos algoritmos Ant Colony System e Ant System, para a realizao da busca pelos melhores caminhos.

Cdigo 10.19 agenteACS e agenteAS


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

public class AntColonyOptimization extends Agent { ... public List<MyNode> retornaMenorCaminho(...Graph... grafo, MyNode noOrigem, List<MyNode> listaDestino, int pesoLacoFraco) { while (!isCondicaoParada) { nAnts = 0; startAnt: while (nAnts < 2) { cycles = 0; while (!listaDestino.contains(noPrincipal)) { ... // cria formiga parcial pela busca em profundidade com backtracking if (getLocalName().equals("agenteAcs")) { evaporaFeromonio(noPrincipal, nodeEscolhido); } cycles ++; if (cycles > 100) {continue startAnt;} } GeneticAlgorithm.setAntsColony(getAntsColony()); GeneticAlgorithm.setAntsColonyBest(getAntsColonyBest()); } if (getLocalName().equals("agenteAcs")) { somaFeromonioArestasPercorridas(null, getBestAnt()); }else if (getLocalName().equals("agenteAs")) { somaFeromonioArestasPercorridas(ants, null); } if (!isAgenteGa()) {createAgentGa();} } } }

A linha 5 do Cdigo 10.19 responsvel por manter a busca em execuo at que a soluo seja encontrada. Para isso, diversas formigas articiais, que representam os caminhos na rede, sero criadas sequencialmente. O lao especicado na linha 7 deste cdigo existe para que aps a criao da segunda formiga, o feromnio possa ser atualizado nas arestas, como mostra o cdigo entre as linhas 20 e 24. Os agentes ACS e AS representam colnias de formigas diferentes. Todavia, foi criada somente uma nica trilha de feromnio a ser compartilhada por ambas as colnias, que, portanto, compartilharo de seus aprendizados. O atributo pheromone da classe MyLink o responsvel por manter o feromnio depositado pelas formigas.

10.2 Implementao dos Requisitos

161

Outra caracterstica importante, que ambos os agentes divergem sobre a forma de manipulao do feromnio. O agenteACS realiza o seu depsito de forma elitista, o que signica que o procedimento feito somente pela melhor formiga gerada pelo agente. J o agenteAS permite que todas as suas formigas participem do processo, sendo o depsito de feromnio realizado de maneira coletiva. Quanto evaporao, somente o agenteACS realiza este procedimento, processando uma pequena reduo da substncia sobre as arestas percorridas por suas formigas. Para o processo de criao de formigas, iniciado no lao da linha 9 do Cdigo 10.19, foi estipulado um valor limite de 100 ciclos, que na prtica signicam 100 vrtices. Em outras palavras, nenhum caminho pode ser criado com mais de 100 vrtices, e se isto ocorrer, a formiga dever ser reinicializada como feito na linha 15 deste cdigo. Esse processo de gerao de caminhos consiste basicamente no DFS - Depth First Search [32], ou algoritmo de busca em profundidade em grafos, sendo que as formigas utilizam-se de uma lista tabu para vericarem os vrtices j visitados. Caso a formiga chegue a um beco sem sada, ela pode realizar a operao conhecida como backtracking [32] ou retrocesso, voltando para a ltima congurao vlida do caminho. Somente a informao do feromnio foi utilizada como fator de orientao das formigas, j que a informao heurstica, o peso das conexes, foi desconsiderada. Como as formigas possuem suas zonas de trabalho alm dos trs graus de separao, este peso no se torna a priori algo relevante, e o processo pode ser agilizado. Alm disso, o agenteACS no faz uso do mecanismo de explotao explcita proposto originalmente para o seu algoritmo, se concentrando na diversicao de suas solues. Por m, as linhas 17 e 18 do Cdigo 10.19 so responsveis por enviar ao ltimo agente a ser ativado na Sociedade, o agenteGA, todas as formigas geradas anteriormente. Com o trmino da produo das duas primeiras formigas, o agenteGA ento inicializado na linha 25 deste cdigo, passando a integrar os agentes de pesquisa. A classe GeneticAlgorithm apresentada no Cdigo 10.20 responsvel por criar o agente que implementar um Algoritmo Gentico para a realizao de buscas. A ativao deste agente segue o mesmo processo de invocao de mtodos utilizado por todos os agentes anteriores, e o processo de utilizao de suas solues, segue a mesma regra dos agentes ACS e AS. Somente quando o agenteDijkstra ultrapassa a fronteira dos trs graus de separao, o agenteGA est apto a encerrar o processamento, caso encontre uma soluo antes de seus comparsas. A linha 17 do Cdigo 10.18, representa o momento em que o agenteDijkstra informa o agenteGA sobre esta ocorrncia. Como denir indivduos para a populao inicial do Algoritmo Gentico no uma tarefa simples, se o problema em questo for encontrar caminhos vlidos nas redes, o mais prudente seria utilizar as prprias formigas articias outrora criadas. Sendo assim, o mtodo searchAnts() invocado na linha 5 do Cdigo 10.20 responsvel por pesquisar

10.2 Implementao dos Requisitos

162

formigas armazenadas em um depsito populado pelos agentes ACS e AS. Esse depsito dividido em trs sees: a seo geral, que compreende todas as formigas recebidas, a seo elitista, que armazena as melhores formigas, e a seo mutante, que contempla as formigas geneticamente modicadas. Entre as linhas 11 e 18 do Cdigo 10.20, apresentado o momento em que o agenteGA realiza a seleo das formigas. Como as trs sees do depsito possuem a mesma chance de serem escolhidas, e como as duas ltimas mencionadas possuem relativamente poucas formigas, h uma grande chance de todas estas formigas serem recombinadas, o que garante, de certa forma, um processo de recombinao elitista.

Cdigo 10.20 agenteGA


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

public class GeneticAlgorithm extends Agent { ... public List<MyNode> retornaMenorCaminho() { while (!isCondicaoParada) { antList = searchAnts(2); ... // realiza operaes genticas nas formigas } } private List<List<MyNode>> searchAnts(int nAnts) { ... if (random <= 33) { randomAnt = getAntsColonyBest().get(new Random().nextInt(maxSize)); }else if (random > 33 && random <= 66) { randomAnt = getAntsColony().get(new Random().nextInt(getAntsColony().size())); }else if (random > 66 && random <= 100) { randomAnt = getAntsColonyCross().get( new Random().nextInt(getAntsColonyCross().size())); } } }

O lao criado na linha 4 do Cdigo 10.20 mantm o agente em funcionamento at que uma soluo seja encontrada. Assim que duas formigas so selecionadas no depsito, comeam a ser recombinadas atravs do processo NBX (Node Based Crossover), que viabiliza o cruzamento somente se os dois indivduos tiverem pelo menos um par do mesmo gene, desconsiderando os vrtices de origem e de destino. Caso os indivduos escolhidos no sejam compatveis, outras formigas sero selecionadas para o cruzamento. Finalizado o cruzamento, as formigas ainda podem ser submetidas a outra operao gentica: a mutao. Com probabilidade de 1% de ocorrncia em cada gene, caso esta operao seja realizada, a troca do material gentico efetivada com a consulta da lista de vrtices adjacentes do gene anterior ao escolhido. Desta forma, um caminho

10.2 Implementao dos Requisitos

163

parcial vlido criado, sendo posteriormente completado pelo material gentico de outra formiga compatvel, a partir do novo gene que substituiu o antigo. A Figura 10.12 ilustra o processo de busca da aplicao Fluzz. Redes geradas pelos quatro modelos de rede, Erds/Rnyi, Watts/Strogatz/ Barabsi/Albert e Marin/Carvalho, e dispostas com 100 vrtices criados com duas conexes por iterao, foram utilizadas para a exemplicao do procedimento.

Figura 10.12: Processo de Busca.

Na posio (a) dessa gura, o agenteGA foi o responsvel pela soluo do problema. Como este agente conseguiu encontrar um caminho entre os vrtices pesquisados antes dos outros agentes, ele interrompeu o processamento e devolveu a soluo. J na posio (b) da gura, o agenteAS obteve a melhor performance, apresentando a soluo. Na posio (c) da gura, pode ser observado que desta vez o agenteACS foi o vitorioso. Todas essas solues apresentadas por esses trs agentes metaheursticos s foram possveis, pois o agenteDijkstra j concentrava suas buscas em um nvel de distncia superior aos trs graus de separao. Como os agentes ACS, AS e GA j haviam encontrado uma soluo no ltimo nvel pesquisado pelo agenteDijkstra antes de sua interrupo, eles puderam apresent-la primeiramente, o que no ocorreu com a exemplicao na posio (d) da Figura 10.12, onde o agenteDijkstra foi o vencedor.

10.2 Implementao dos Requisitos

164

O Fluzz possui um recurso visual em seu painel esquerdo para a identicao do agente responsvel pelas solues encontradas. Conforme assinalado na Figura 10.12, a aplicao destaca o espao destinado soluo do agente vitorioso, atravs de uma colorao em vermelho capaz de distingui-lo dos demais. Alm disso, nesse espao que as solues parciais dos agentes vo sendo apresentadas, sendo possvel vericar o grau de separao em que cada um se encontra. Enquanto o agenteDijkstra tem sua distncia na rede aumentada, medida que o mesmo ultrapassa nveis de distncia, os agentes ACS, AS e GA tm suas distncias diminudas, medida que seus caminhos vo sendo melhorados. No painel direito da aplicao, existe um espao destinado descrio detalhada dos caminhos encontrados, apresentando informaes como a identicao dos vrtices que os compem, o grau de separao entre os vrtices de origem e destino, o peso acumulado, e a quantidade de laos fracos presentes. Alm da descrio nominal dos vrtices, o Fluzz ainda detm um importante recurso para a visualizao das solues retornadas pelos agentes. Assim que so encontrados, os caminhos so realados gracamente no componente de renderizao visual da aplicao, que capaz de assinalar os vrtices e arestas compreendidos, atravs de uma tonalidade roxa. Este processo, como pode ser visto em todas as imagens da Figura 10.12, fundamental para a localizao visual dos componentes que integram os caminhos. Algumas mensuraes foram realizadas para comparar as performances dos agentes durante o procedimento de busca. A Tabela 10.5 apresenta os valores encontrados durante vinte medies para duas variaes do modelo de rede Marin/Carvalho, sendo a primeira criada com duas conexes a cada iterao, e a segunda criada com cinco.
Tabela 10.5: Performance dos Agentes de Pesquisa
N Qt. Vrtices 1000 2000 5000 100000 200000 500000
o Vezes

que os Agentes ACS, AS e GA Foram Vitoriosos em 20 Medies Rede Marin/Carvalho (2) Rede Marin/Carvalho (5) 7x 5x 6x 4x 3x 1x 2x 1x 1x 1x 0x 0x

Os dados mensurados signicam a quantidade de vezes, dentre as vinte medies, que os agentes ACS, AS ou GA foram responsveis pela determinao da soluo. Como pode ser observado na tabela, medida que a rede torna-se maior ou mais densa, estes agentes tm suas performances prejudicadas, sendo o agenteDijkstra cada vez mais vitorioso. Isso ocorre basicamente por existirem mais caminhos na rede, o que aumenta a chance dos agentes metaheursticos se perderem por um tempo, at comearem a convergir em denitivo para uma boa soluo.

10.2 Implementao dos Requisitos

165

Alm disso, a estrutura de dados criada para o agenteDijkstra foi fundamental para seus resultados de performance, consequentemente proporcionando a este agente a grande maioria das solues. No obstante, os agentes metaheursticos, alm de serem responsveis por algumas das solues, so capazes de prover um importante mecanismo para a aplicao Fluzz: a diversicao. Como o agenteDijkstra retorna sempre o mesmo caminho para uma busca repetida entre dois vrtices, no existe a possibilidade de diversicao das solues. neste ponto que a natureza estocstica dos agentes metaheursticos torna-se extremamente valiosa. Em uma mesma pesquisa realizada diversas vezes, os agentes ACS, AS e GA so capazes de retornar diferentes solues, caso as mesmas existam na rede. Dessa forma, foi criado um recurso para que os agentes metaheursticos tenham mais chances de interromper o agenteDijkstra. No painel esquerdo do Fluzz, existe um campo para se informar um tempo de delay, ou espera em milisegundos, que o agenteDijkstra dever utilizar ao avanar um nvel de distncia na rede. Este procedimento torna o agenteDijkstra mais lento, dando mais oportunidades para os outros agentes. Apesar de parecer estranho, querer prejudicar propositalmente a performance do agenteDijkstra, este fato viabiliza a utilizao de um outro artifcio da aplicao. Botes foram criados ao lado de cada agente metaheurstico, e quando acionados, interrompem o processamento da pesquisa, que devolver a soluo atual do respectivo agente. Caso o agenteACS, por exemplo, tenha encontrado um caminho de qualquer distncia, e o usurio quiser conferi-lo, basta que seja efetivado um clique do boto correspondente, para que a aplicao encerre o processamento e devolva o caminho referente. Esse recurso funciona independentemente da posio em que o agenteDijkstra se encontra, e serve para que diferentes solues de uma mesma pesquisa, possam ser repassadas pelos agentes metaheursticos. Em termos prticos, correntes de amizade alternativas podem ser importantes para a pessoa de origem, quando um dos indivduos pertencentes a determinado caminho retornado, cria alguma barreira comunicacional. Todas as redes apresentadas na Tabela 10.2 foram utilizadas para a realizao de buscas entre diferentes vrtices. De forma geral, a Sociedade de Agentes de Pesquisa processou as informaes corretamente, produzindo os resultados esperados de acordo com os modelos propostos, e mantendo um tempo mdio de busca de poucos segundos.

10.2.25

RF: Deteco de caminhos entre uma pessoa e vrias outras

O Fluzz tambm prov recursos para que buscas sejam realizadas de forma 1 : N , o que signica ter vrios indivduos sendo alvos simultaneamente em uma nica pesquisa. Existem no painel superior do Fluzz, trs campos preparados para receberem valores referentes aos atributos congurveis do modelo relacional, criado na fase de

10.2 Implementao dos Requisitos

166

projeto. Estes atributos podem representar qualquer propriedade inerente aos indivduos formadores das redes, como caractersticas pessoais, prossionais, dentre outras. Para que esse recurso seja utilizado, necessrio informar nos campos mencionados, pelos menos um desses atributos congurveis, ao invs do cdigo do vrtice de destino. Neste momento, o agentePrincipal identica que a busca deve contemplar todos os vrtices que possuem os atributos informados. O mtodo responsvel pela identicao desses indivduos o retornaNosPesquisa() da classe GraphDao, como mostrado na linha 10 do Cdigo 10.21. Este cdigo pertence ao evento invocado com o clique do boto Proc. Melhor Caminho, que a ao esperada pelo agentePrincipal para iniciar o procedimento de busca.

Cdigo 10.21 Definindo Alvos Para Pesquisa


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

public class Principal extends Agent { ... btnMenorCaminho.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { ... if (!txtNoDestino.getText().equals("") && isDigit(txtNoDestino.getText())) { listaNosDestino.add(GraphDao.getMapaNosBanco().get( Integer.parseInt(txtNoDestino.getText()))); }else { listaNosDestino = new GraphDao().retornaNosPesquisa(noOrigem,txtNoDestino.getText(), txtAtributo1.getText(),txtAtributo2.getText(),txtAtributo3.getText()); } } }); }

Como observado na linha 6 desse cdigo, o sistema verica se o cdigo do vrtice de destino foi informado, e em caso armativo, realiza a busca de forma 1 : 1, procurando somente por um alvo na rede. Caso o cdigo do vrtice de destino no tenha sido informado, o mtodo retornaNosPesquisa() invocado, retornando uma lista de indivduos que possuem os atributos inseridos pelo usurio nos campos de pesquisa. Consequentemente, essa lista de indivduos enviada para a Sociedade de Agentes de Pesquisa, que realizar o procedimento de busca mantendo-os todos como alvos. O melhor caminho encontrado pela Sociedade, dentre todos os indivduos dessa lista, ento retornado pela aplicao. Uma particularidade ocorre quando o usurio informa o nome ao invs do cdigo, no campo referente ao vrtice de destino. Caso o sistema encontre mais de um indivduo com o nome informado, a pesquisa torna-se de 1:N, e o mesmo procedimento detalhado anteriormente, ento realizado.

10.2 Implementao dos Requisitos

167

10.2.26

RF: Criao de ltros para visualizao dos caminhos

Como as redes geradas pelo Fluzz podem possuir grande quantidade de vrtices e conexes, a renderizao completa do grafo referente pode ser extremamente lenta. Obviamente, a capacidade do hardware onde a aplicao estar rodando inuencia na quantidade de elementos passveis de ser visualizados e manipulados pelo usurio, sem que haja um comprometimento da performance do mesmo. por este motivo que a aplicao no apresenta automaticamente a visualizao dos grafos aps o procedimento de gerao de redes, sendo necessrio o usurio explicitar esta necessidade atravs do clique do boto Mostrar Grafo. Desta forma, uma rede bastante extensa como a apresentada na Tabela 10.2 de 500.000 vrtices, que se visualizada comprometeria o desempenho do hardware, pode ser obtida rapidamente no banco de dados e disponibilizada normalmente para a realizao do procedimento de busca. Consequentemente, as solues providas pela Sociedade de Agentes de Pesquisa vo sendo devolvidas e renderizadas atravs de ltros, que sero responsveis por selecionar somente os vrtices relevantes para a pesquisa, descartando todos os demais. Com isso, subgrafos da rede original so apresentados pelo agentePrincipal representando a soluo do problema, conforme apresentado na Figura 10.13.

Figura 10.13: Processo de Filtragem de Solues.

10.2 Implementao dos Requisitos

168

Trs diferentes tipos de ltros foram implementados no Fluzz. Cada um realiza um procedimento especco de ltragem de vrtices e arestas dos grafos, sempre tendo o grafo original e a soluo devolvida pelos agentes como valores de entrada. Na posio (a) Figura 10.13, a visualizao completa de um grafo com 100 vrtices foi provida pela aplicao. Pode-se vericar que o procedimento de busca foi realizado nesta rede, com o agentePrincipal destacando o caminho de quatro graus de separao encontrado pelo agenteDijkstra. No painel esquerdo do Fluzz existe uma opo para que ltros possam ser aplicados nos caminhos encontrados pelos agentes de pesquisa. Como nessa primeira imagem, a opo NoFilter foi selecionada, nenhum ltro foi aplicado ao grafo, que teve todos os seus elementos apresentados. Na posio (b) dessa gura, a opo de ltro SPFilter (Shortest Path Filter), ou ltro do menor caminho, foi selecionada. Sendo assim, somente os vrtices e arestas pertencentes ao caminho devolvido pelo agente vitorioso na pesquisa so apresentados. Outra opo de ltro a SPFFilter (Shortest Path Friends Filter), ou ltro do menor caminho com amigos, utilizado na posio (c) da mesma gura. Percebe-se que alm dos componentes pertencentes ao caminho encontrado, foram apresentados todos os amigos de cada vrtice que compe este caminho. Por m, foi criada a opo de ltro SPFCFilter (Shortest Path Friends in Common Filter), ou ltro do menor caminho com amigos em comum. Como apresentado na posio (d) da Figura 10.13, este ltro alm de apresentar os vrtices e arestas do caminho encontrado, adiciona ao subgrafo os amigos existentes em comum entre quaisquer dois vrtices pertencentes ao caminho. Para redes com mais de 100 vrtices, o resultado do procedimento de busca sempre apresentado com a opo de ltro SPFilter acionada, por ser a que menos desenha componentes na tela, agilizando o retorno da soluo. Caso o usurio deseje visualizar a soluo por um dos outros ltros, ou at mesmo pelo grafo inteiro, deve proceder a alterao desta opo na interface da aplicao. Dois recursos tcnicos so utilizados pelo Fluzz para a realizao de ltros. O primeiro utiliza-se da criao de predicados aos vrtices, atravs da classe Graph_VertexPredicate, apresentada no Cdigo 10.22. Estes predicados so utilizados somente para os grafos que possuem 100 vrtices ou menos, e representam a adequao destes componentes aos critrios de ltragem inerentes a cada ltro. Como pode ser visto no cdigo, essa classe implementa a interface Predicate, que impe mesma a necessidade de sobrescrita do mtodo evaluate(). dentro deste mtodo que as condies de apresentao de cada vrtice so analisadas, seguindo a lgica estabelecida por cada ltro. Caso o vrtice deva ser apresentado na interface, o mtodo retorna um valor booleano true, e em caso contrrio, false. Um detalhe importante que as arestas existentes entre os vrtices selecionados so sempre apresentadas.

10.2 Implementao dos Requisitos

169

Cdigo 10.22 Criando Predicados aos Vrtices


1 2 3 4 5 6 7

public class Graph_VertexPredicate<V,E> implements Predicate<Context<Graph<V,E>,V>> { ... public boolean evaluate(Context<Graph<V, E>, V> context) { ... // de acordo com a lgica de cada filtro, retorna true para um vrtice a ser apresentado e false caso contrrio } }

O mtodo responsvel por aplicar um predicado aos vrtices o setVertexIncludePredicate() da API do JUNG. Como pode ser visto nas linhas 7 e 8 do Cdigo 10.23, ao ser invocado o evento referente escolha de um dos ltros na interface, uma instncia da classe Graph_VertexPredicate() criada, informando qual ltro ser aplicado.

Cdigo 10.23 Aplicando Filtros s Redes


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

public class Principal extends Agent { ... cboFiltro.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { if (GraphDao.getGrafo().getVertexCount() <= 100) { if (cboFiltro.getSelectedItem().equals("SPFilter")) { component.getRenderContext().setVertexIncludePredicate( new Graph_VertexPredicate<MyNode, MyLink>(true, "SPFilter")); } ... // testa e aplica outros tipos de filtro }else { if (cboFiltro.getSelectedItem().equals("SPFilter")) { subGrafo = new Graph_FilterGraph().getSubGraph(GraphDao.getGrafo(), getMenorCaminho(), "SPFilter"); mostraGrafo(subGrafo); } ... // testa e contri outros grafos de acordo com os filtros } } }); }

O segundo procedimento para a realizao de ltros consiste na criao de um novo grafo que representar um subgrafo do grafo original. Desta forma, no existe aplicao de predicados aos vrtices, pois um novo grafo propriamente dito deve ser gerado. No obstante, este novo grafo deve apresentar a mesma topologia que obteria, caso o ltro tivesse sido realizado por meio de predicados.

10.2 Implementao dos Requisitos

170

Esse recurso aplicado a grafos com mais de 100 vrtices, e foi criado especialmente pela possibilidade de existncia de redes extensas e densas. Estas redes certamente prejudicariam a performance da aplicao, inclusive na composio visual dos subgrafos provenientes dos ltros, j que o JUNG sempre mantm todo o grafo na memria. Assim, grafos menores so criados de acordo com as regras estabelecidas pelos ltros. A linha 13 do Cdigo 10.23 mostra o momento em que um novo grafo gerado para simular o ltro. O mtodo getSubGraph() da classe Graph_FilterGraph, visualizada no Cdigo 10.24, invocado tendo como objetivo produzir um subgrafo, a partir do grafo original e das caractersticas do ltro escolhido. Em seguida, o mtodo mostraGrafo() da classe Principal acionado para representar visualmente o subgrafo criado.

Cdigo 10.24 Criando Subgrafos


1 2 3 4 5 6 7 8

public class Graph_FilterGraph { ... public UndirectedSparseGraph<MyNode, MyLink> getSubGraph(...Graph... originalGraph, List<MyNode> listaNos, String tipoFiltro) { ... // de acordo com a lgica de cada filtro, cria um novo grafo para os vrtices que devem ser apresentados, devolvendo-o como retorno } }

10.2.27

RF: Salvamento da imagem da rede gerada

As imagens das redes geradas pela aplicao podem ser salvas em disco, atravs de arquivos no formato jpg. No painel esquerdo do Fluzz, existe um boto Gravar Imagem, que ao ser acionado invoca a classe GravarImagemGrafo, responsvel pela criao do arquivo graph.jpg. Este arquivo produzido de acordo com a imagem denida no painel central da aplicao, e salvo automaticamente no diretrio corrente da mesma.

10.2.28

RF: Deleo da base de dados

Caso exista a necessidade de excluso das informaes da base de dados, o boto Limpar Base, localizado no painel esquerdo da aplicao, deve ser acionado. Neste instante, a classe ApagarGrafo instanciada pelo agentePrincipal, procedendo a deleo dos dados e a destruio do grafo anteriormente criado.

10.2.29

RNF: Modularidade

A modularidade da aplicao foi obtida atravs da implementao de agentes de software, que interagem entre si visando a resoluo cooperativa dos problemas. O

10.2 Implementao dos Requisitos

171

framework JADE foi utilizado para a criao deste sistema multiagente, capaz de operacionalizar diversas atividades por meio de agentes diferentes, com funes especcas.

10.2.30

RNF: Simplicidade

A criao da Sociedade de Agentes de Pesquisa possibilitou aplicao, a possibilidade de receber futuramente novos agentes capazes de contribuir com suas caractersticas particulares, bastando para isso, que eles sejam incorporados mesma.

10.2.31

RNF: Paralelismo

A utilizao de mltiplos agentes pelo Fluzz garante o processamento paralelo das rotinas executadas, melhorando signicativamente a performance da aplicao.

10.2.32

RNF: Ecincia

A aplicao construda capaz de interpretar e processar cada modelo proposto, seja no tocante gerao de redes, ou no procedimento de busca entre os vrtices, retornando gracamente, solues condizentes com as caractersticas particulares denidas.

10.2.33

RNF: Conabilidade

A arquitetura da aplicao propicia que os procedimentos de busca sejam sempre nalizados, independentemente da falha de algum dos agentes de pesquisa, sendo o agentePrincipal responsvel por encerrar agentes interrompidos indevidamente.

10.2.34

RNF: Portabilidade

Como foi todo implementado em Java, o Fluzz torna-se exequvel independentemente de qual seja o sistema operacional ou o processador que executa seu cdigo.

10.2.35

RNF: Manutenibilidade

A m de aumentar a legibilidade e facilitar a manuteno do sistema, o padro de projeto MVC (Modelo-Viso-Controle), responsvel por dividir o software em camadas funcionais, foi utilizado na implementao da aplicao.

10.2.36

RNF: Usabilidade

A interface do Fluzz foi concebida de forma a facilitar a compreenso de seus recursos, fazendo com que os mesmos sejam utilizados pelos usurios de forma instintiva.

CAPTULO 11

Consideraes Finais

Esta dissertao apresentou um estudo embasado em diversas reas do conhecimento, que convergiram para que o projeto da aplicao Fluzz fosse efetivado. A Figura 11.1 ilustra como estes campos de pesquisa se relacionam com a ferramenta produzida.

Figura 11.1: reas Envolvidas no Projeto da Aplicao Fluzz.

Indubitavelmente, o enfoque do contedo explorado neste trabalho foi destinado anlise evolutiva das redes encontradas por trs de sistemas complexos, em especial, a sociedade. Ao visualizar apenas ns e links, abstraindo todos os outros detalhes supruos, adquiriu-se o privilgio de observar a arquitetura da complexidade, vislumbrando os princpios organizacionais universais que formam esses sistemas. As modelagens e tcnicas computacionais apresentadas durante a criao da aplicao foram empregadas com a inteno de utilizar as propriedades das redes a favor dos seres humanos. Obviamente, a compreenso dos padres evolutivos e organizacionais de cada tipo de rede foi o primeiro passo dado, seguido posteriormente pela disposio de mtodos capazes de inuenci-los. O no enredamento dos seres humanos atualmente em um nico e imenso tecido aberto, interativo e cooperativo, gera uma situao absolutamente indita e portadora de expectativas para toda a sociedade. As redes sociais online, por exemplo, esto se tornando verdadeiras plataformas que seguramente ajudaro os indivduos a alcanarem

173

seus objetivos, e prover recursos capazes de viabilizar a cooperao entre os mesmos, ajudar a humanidade a se tornar maior do que a soma de suas partes. principalmente dentro desse contexto social que a aplicao Fluzz emergiu, apresentando recursos projetados para que pessoas possam usufruir de autodescobertas, e da possibilidade de realmente se conhecerem e se inuenciarem em rede. A seguir sero abordadas as contribuies realizadas por esta pesquisa, sendo posteriormente apresentadas as limitaes da ferramenta desenvolvida, e possveis desaos a serem enfrentados em trabalhos futuros.

11.0.37

Contribuies

As metas da aplicao construda neste projeto basicamente denem as principais contribuies engendradas pelo mesmo. Como se mostrou eciente na implementao de todos os seus requisitos funcionais, o Fluzz proveu funcionalidades que podem aproximar seres humanos, lhes dando a capacidade de cooperar em uma escala muito maior do que a experimentada anteriormente. As tcnicas de visualizao de rede empregadas no projeto permitem que as pessoas possam encontrar sentido e simplicidade em meio desordem da complexidade. Em um contexto que concebivelmente poderia ser aleatrio e desprovido de qualquer ordem discernvel, os indivduos podem descobrir atravs da ferramenta, informaes ocultas nos tentculos das redes, e as usarem a seu favor. Em um mundo abrangido em apenas seis graus, o que acontece em determinado local chega at as pessoas muito mais rpido do que elas pensam. Assim, simplesmente porque algo parece distante em um dado momento, no signica que seja irrelevante ou inacessvel. Pequenas mudanas na topologia da rede podem transformar abruptamente, algo visualizado antes como muito distante, em algo incrivelmente prximo. Prover recursos, capazes de realizar o mapeamento visual das complexas redes sociais em que os indivduos se mantm incrustados, torna a aplicao Fluzz til para uma observao contnua dos padres evolutivos da sociedade. Em alguns casos, pode ser interessante saber se uma rede contm um caminho curto que conecta determinado par de indivduos, ou que alguns indivduos so muito mais conectados do que os demais. Mas, em outros casos, talvez o importante seja vericar se as pessoas esto localizadas em aglomerados localmente reforados. neste sentido, que a aplicao Fluzz disponibiliza seus recursos de mapeamento grco, possibilitando que as pessoas reconheam padres visuais de organizao e comportamentos. A apresentao de um novo modelo de rede tambm foi uma importante contribuio deste projeto. O valor deste resultado no est apenas na identicao de um novo tipo de arquitetura, que apreciado por suas diferenas perante as concepes anteriores

174

a respeito de redes, e sim em como este ferramental pode favorecer em termos prticos a compreenso da sociedade interconectada. A proposio das redes de pequena escala, referenciadas na aplicao como Marin/Carvalho, levou a uma espcie de teoria unicada das redes anteriormente propostas na literatura. Ela mescla o pensamento de Barabsi e Albert com a teoria de Watts e Strogatz, e encaixa ambas as ideias como peas de um quebra-cabea, formando uma imagem maior e mais coerente da topologia da sociedade. Consequentemente, este novo modelo de rede pode ser utilizado para a pesquisa sobre a dinmica evolutiva das redes sociais, contribuindo para uma melhor compreenso deste processo. As tcnicas de busca empregadas pela aplicao embasam-se em estudos sociolgicos, que visam criar mecanismos sinrgicos capazes de colocar determinadas pessoas lado a lado. A inteno foi de proporcionar a coleta de informaes de fontes especcas, atravs da formao de conexes estratgicas que potencializariam a emergncia de slidos relacionamentos cooperativos. Ao se unirem, as pessoas, assim como as formigas, criam algo que transcende o indivduo, em uma escala superlinear. Como metaforicamente ilustrou Steven Johnson: "uma formiga isolada, que encontrou determinado caminho para um pote de acar distante do formigueiro, remonta imagem do astronauta na Lua: ambos os feitos so permitidos pelos esforos coordenados de muitos indivduos" [60]. Neste contexto, o Fluzz prov mecanismos inteligentes de busca de provveis parceiros em rede, que devem trabalhar juntos para alcanar o que no podem realizar sozinhos. Modelos capazes de avaliar os melhores caminhos entre as pessoas, para os quais so maiores as chances de inuncia recproca, tornam a atividade de conexo muito mais provvel no ambiente do Fluzz. Agentes de software, baseados em algoritmos exatos e metaheursticos, exploram simultaneamente as redes analisadas, cruzando e analisando vrtices e arestas na tentativa de proceder a melhor soluo.

11.0.38

Limitaes e Trabalhos Futuros

As limitaes observadas durante a confeco do Fluzz compreendem basicamente a questo da gerao e do processamento visual de redes. Para grafos extensos e densos, foi vericada uma limitao computacional referente, tanto ao hardware empregado, quanto ao framework grco utilizado para a criao dos mesmos. A ideia inicial e diferencial de confeco da aplicao foi criar redes da ordem de 100 1.000.000.000 de vrtices, para que fosse possvel a realizao de buscas nestes ambientes, simulando situaes prximas a uma pesquisa realizada na maior rede social online atualmente: o Facebook. No obstante, a capacidade do hardware utilizado no

175

projeto no atendeu demanda, e o valor limitante para o tamanho das redes se concentrou em 500.000 vrtices, representando 0,05% do esperado. Alm disso, a visualizao completa das redes processadas implicou em um grande consumo computacional. Com o hardware utilizado, apresentado na seo 10.1.8, a performance do computador tornou-se visivelmente abalada durante o processamento grco das redes por intermdio do JUNG, mesmo quando a ordem de seus tamanhos ultrapassava ligeiramente a barreira dos 1000 vrtices. A utilizao de diversos ltros pelo Fluzz tambm foi uma forma de fornecer uma alternativa ao problema. Isso mostra que ainda existe um longo caminho a ser trilhado no contexto de gerao e visualizao de redes reais. No obstante, a escalabilidade vertical, que compreende a adio de recursos computacionais ao hardware como memria ou processador, no deve ser a nica preocupao dos interessados no assunto. Certamente, produzir recursos que se utilizem cada vez menos do hardware empregado, pode ser uma soluo mais barata e mais eciente de se alcanar o mesmo objetivo. Como redes com mais de 500.000 vrtices foram inviveis de ser criadas, os tempos de busca cronometrados estiveram dentro das expectativas. Certamente, com mais recursos computacionais empregados, redes maiores podero ser geradas e novas medies podero apresentar performances no to convidativas dos agentes de pesquisa. Consequentemente, melhorias nos modelos ou nas tcnicas utilizadas por estes agentes devero ser providas para oferecerem maior ecincia. A utilizao de bancos de dados relacionais como o PostgreSQL pode tambm ser vista como uma barreira escalabilidade da aplicao. Os chamados bancos de dados NoSQL representam uma real alternativa para a adequao da base de dados a uma estrutura escalvel horizontalmente, capaz de crescer de forma a acompanhar o crescimento, muitas vezes gigantesco, das redes analisadas. Finalmente, todos os modelos, tcnicas, algoritmos ou arquitetura, pertencentes aplicao podero ser empregados livremente em redes sociais online, que se beneciaro dos recursos providos por estes elementos. O objetivo que estes sites de redes sociais, principalmente os mais populares, que detm grande quantidade de pessoas interconectadas, possam prover recursos de visualizao grca, bem como de buscas inteligentes, que certamente contribuiriam para os processos cognitivo e interativo humanos. Como bem armou Duncan Watts em seu livro Six Degress, ao relatar sobre a importncia atual da pesquisa sobre o universo interconectado: "... mais de sessenta anos depois de homens como Rapoport e Erds comearem com os primeiros estudos, pode ser que a batalha esteja comeando a virar a favor da cincia" [106].

Referncias Bibliogrcas

[1] British Broadcasting Corporation (BBC). Disponvel em http://www.bbc.co.

uk/news/technology-19816709, acessado em outubro de 2012.


[2] Dreamstime (Neurnios). sado em novembro de 2012. [3] A DOBE S YSTEMS . Adobe Flash. Disponvel em http://www.adobe.com/ Disponvel em http://pt.dreamstime.com/ aces-

imagens-de-stock-royalty-free-neur%C3%B4nios-image6909719,

products/flash.html, acessado em outubro de 2012.


[4] A HN , C. W.; R AMAKRISHNA , R. S. A Genetic Algorithm for Shortest Path Routing Problem and the Sizing of Populations. IEEE Transactions on Evolutionary Computation, 6(6), 2002. [5] A IRES , R. R. S. Visual Analysis of Regulatory Networks. IST, disponvel

em https://dspace.ist.utl.pt/bitstream/2295/803248/1/dissertacao.

pdf, acessado em outubro de 2012.


[6] A LARCN , J. A. B. L. Web. Airetama - Um Arcabouo Baseado em Sistemas

Multiagentes para a Implantao de Comunidades Virtuais de Prtica na UFG, disponvel em http://bdtd.ufg.br/tedesimplificado/tde_

busca/arquivo.php?codArquivo=1669, acessado em setembro de 2012, 2010.


[7] A LARCN , J. A. B. L.; C ARVALHO, C. L. Desenvolvimento de Agentes com JADE. UFG, 2008. [8] A LEXANDRE , D. S.; TAVARES , J. M. R. S. Introduction of Human Perception in Visualization. FEUP, disponvel em http://repositorio-aberto.up.pt/

handle/10216/25329, acessado em outubro de 2012, 2010.


[9] A MAZON . COM . The Internet Movie Database. Disponvel em http://www.imdb.

com, acessado em agosto de 2012.


[10] A RAJO, A. As pontes de Knigsberg. Universidade de Coimbra, disponvel em

http://www.mat.uc.pt/~alma/escolas/pontes, acessado em julho de 2012.

Referncias Bibliogrcas

177

[11] A RAUJO, S. A.; L IBRANTZ , A. F.; A LVES , W. A. Uso de algoritmos genticos em problemas de roteamento de redes de computadores. Exacta, 5:321327, 2007. [12] A RTERO, A. O. Inteligncia Articial: Teoria e Prtica. Livraria da Fsica, 2009. [13] A ZEVEDO, T. A.; R ODRIGUEZ , M. V. R. Softwares para Anlise de Redes Sociais - ARS. VI Congresso Nacional de Excelncia em Gesto, 2010. [14] B ARABASI , A. L. Linked: How Everything Is Connected to Everything Else and What It Means for Business, Science, and Everyday Life. Plume, 2003. [15] B ARABASI , A. L.; A LBERT, R. Emergence of Scaling in Random Networks. SCIENCE, 286:509, 1999. [16] B ARABASI , A. L.; A LBERT, R.; J EONG , H. The Diameter of the World Wide Web. Nature, 401:130131, 1999. [17] B EARMAN , P.; ET AL . Chains of Affection: The Structure of Adolescent Romantic and Sexual Networks. American Journal of Sociology, 110(1):4491, 2004. [18] B EDERSON , B.; G ROSJEAN , J. Piccolo Toolkit. Disponvel em http://www.cs.

umd.edu/hcil/jazz, acessado em novembro de 2012.


[19] B ELLIFEMINE , F.; ET AL . JADE Programmers Guide. Disponvel em http:

//jade.tilab.com/doc/programmersguide.pdf, acessado em julho de 2012.


[20] B ELLIFEMINE , F.; C AIRE , G.; G REENWOOD, D. Developing Multi-Agent Systems with JADE. Wiley, 2007. [21] B ENTOLILA , D. L.; S OUZA , C. R. Uma Ferramenta para Auxlio na Avaliao de Usabilidade de APIs. UFPA, disponvel em http://http://www.lbd.dcc.

ufmg.br/colecoes/semish/2009/007.pdf, acessado em agosto de 2012.


[22] B OYD, D.; E LLISON , N. B. Social Network Sites: Denition, History, and Scholarship. Journal of Computer-Mediated Communication, 13(1-2), 2007. [23] B UCHANAN , M. Nexus: Small Worlds and the Groundbreaking Science of

Networks. W.W. Norton, 2003. [24] B URT, R. S. Structural Holes: The Social Structure of Competition. Harvard University Press, 1995. [25] C AMPOS , V. B. G. Algoritmos para Resoluo de Problemas em Re-

des. IME, disponvel em http://aquarius.ime.eb.br/~webde2/prof/vania/

apostilas/Apostila-Redes.pdf, acessado em outubro de 2012.

Referncias Bibliogrcas

178

[26] C ARD, S.; M ACKINLAY, J.; S HNEIDERMAN , B. Readings in Information Visualization: Using Vision to Think. Morgan Kaufmann, 1999. [27] C ARD, S.; M ORAN , T.; N EWELL , A. Interaction. CRC PressINC, 1983. [28] C ASTRO, L. N. Inteligncia de Enxame. Unicamp, disponvel em ftp://ftp. The Psychology of Human-Computer

dca.fee.unicamp.br/pub/docs/vonzuben/ia013_1s07/topico4_07.pdf,
acessado em outubro de 2012. [29] C HITRA , C.; S UBBARAJ, P. A Nondominated Sorting Genetic Algorithm for Shortest Path Routing Problem. International Journal of Electrical and Computer Engineering, (5:1), 2010. [30] C HRISTAKIS , N. A.; F OWLER , J. H. Connected: The Surprising Power of Our Social Networks and How They Shape Our Lives. Little, Brown and Co., 2009. [31] C OMUNIDADE B RASILEIRA DE P OSTGRE SQL. PostgreSQLBR. Disponvel em

http://www.postgresql.org.br, acessado em novembro de 2012.


[32] C ORMEN , T.; ET AL . Introduction to Algorithms. The MIT Press, 2a edition, 2001. [33] C OUTO, T. B.; S ILVA F ILHO, A. M. Aplicao web usando arquitetura MVC. Revista Engenharia de Software Magazine, (48), 2012. [34] C UNHA , T. A Control for Graph Representation and Interaction. FEUP, disponvel em http://repositorio-aberto.up.pt/bitstream/10216/57624/2/

Texto%20integral.pdf, acessado em novembro de 2012.


[35] DAVIS J R , C. A. Aumentando a Ecincia da Soluo de Problemas de

Caminho Mnimo em SIG. In: GIS Brasil 97, 1997. [36] D ENEUBOURG , J.; ET AL . The Self-Organizing Exploratory Pattern of the Argentine Ant. Journal of Insect Behavior, 3(2):159168, Mar. 1990. [37] D IAS , M. P.; C ARVALHO, J. O. A Visualizao da Informao e a sua contribuio para a Cincia da Informao. DataGramaZero. Disponvel em http://www.

datagramazero.org.br/out07/Art_02.htm, acessado em julho de 2012.


[38] D IJKSTRA , E. EWD316: A Short Introduction to the Art of Programming.

Technische Hogeschool, 1971. [39] D ODDS , P. S.; M UHAMAD, R.; WATTS , D. J. An Experimental Study of Search in Global Social Networks. Science, 301(5634):827829, Aug. 2003.

Referncias Bibliogrcas

179

[40] D ORIGO, M.; D I C ARO, G. D.; G AMBARDELLA , L. Ant Colony Optimization: A New Meta-Heuristic. In: Proceedings of the Congress on Evolutionary Computation, volume 2, p. 14701477, Washington D.C., USA, Jun-Sep 1999. IEEE Press. [41] D ORIGO, M.; G AMBARDELLA , L. M. Ant Colonies for the Traveling Salesman Problem. Universidade Livre de Bruxelas, disponvel em http://www.idsia.ch/

~luca/acs-bio97.pdf, acessado em novembro de 2012, 1997.


[42] D ORIGO, M.; G AMBARDELLA , L. M. Ant Colony System: A Cooperative Learning Approach to the Traveling Salesman Problem. IEEE Transactions on Evolutionary Computation, 1(1):5366, Apr. 1997. [43] D ORIGO, M.; M ANIEZZO, V.; C OLORNI , A. The Ant System: Optimization by a colony of cooperating agents. IEEE Transctions on Systems, Man, and CyberneticsPart B, 26(1):2941, 1996. [44] D ORSEY, J. Twitter. Disponvel em https://twitter.com, acessado em outubro de 2012. [45] E ICH , B. JavaScript. Disponvel em https://developer.mozilla.org/en/

JavaScript, acessado em novembro de 2012.


[46] F RANCO, A. Fluzz: Vida humana e convivncia social nos novos mundos altamente conectados do terceiro milnio. Escola de Redes, disponvel em http://

pt.scribd.com/doc/48960099/Fluzz-Augusto-de-Franco, acessado em outubro de 2012, 2011. [47] G EPHI C ONSORTIUM . Gephi - The Open Graph Viz Platform. Disponvel em

https://gephi.org, acessado em novembro de 2012.


[48] G OOGLE I NC . YouTube. Disponvel em http://http://www.youtube.com/, acessado em novembro de 2012. [49] G OSS , S.; A RON , S.; D ENEUBOURG , J.; PASTEELS , J. Self-Organized Shortcuts in the Argentine Ant. Naturwissenschaften, 76(12):579581, Dec. 1989. [50] G RANOVETTER , M. S. The Strength of Weak Ties. The American Journal of Sociology, 78(6):13601380, 1973. [51] G RANOVETTER , M. A Theoretical Agenda for Economic Sociology. Technical report, Institute for Research on Labor and Employment, UC Berkeley, June 2000. [52] G RASS , P. Les Insectes Et Leur Univers, volume 22 de Confrences du Palais de la dcouverte. Universit, 1949.

Referncias Bibliogrcas

180

[53] G RASSE , P. P. La reconstruction du nid et les coordinations interindividuelles chez bellicositermes natalensis et cubitermes sp. La theorie de la stigmergie: essai dinterpretation du comportement des termites constructeurs. Insectes Sociaux, 6:4181, 1959. [54] G RGIO, A. R. A.; S ANTOS , R. Anlise e Visualizao de Logs de Segurana, volume 1. So Jos, 2010. [55] H E , F.; Q I , H.; FAN , Q. An Evolutionary Algorithm for the Multi-objective

Shortest Path Problem. Institute of Systems Engineering. [56] H EER , J.; B OYD, D. Vizster: Visualizing Online Social Networks. IEEE Information Visualization (InfoVis), p. 3239, 2005. [57] H EER , J.; B OYD, D. Vizster. Disponvel em http://hci.stanford.edu/jheer/

projects/vizster, acessado em novembro de 2012.


[58] H EER , J.; C ARD, S. K.; L ANDAY, J. A. Prefuse. Disponvel em http://prefuse.

org, acessado em julho de 2012.


[59] IEEE C OMPUTER S OCIETY . The Foundation for Intelligent Physical Agents (FIPA). Disponvel em http://www.fipa.org, acessado em novembro de 2012. [60] J OHNSON , S. Emergence: The Connected Lives of Ants, Brains, Cities, and Software. Allen Lane, 2001. [61] J OHNSON , S. Where Good Ideas Come From: The Natural History of Innovation. Riverhead Books, 2010. [62] K ALAMARAS , D. V. SocNetV. Disponvel em http://socnetv.sourceforge.

net/index.html, acessado em novembro de 2012.


[63] K NUTH , D. Selected Papers on Analysis of Algorithms. Csli Lecture Notes. Center for the Study of Language and Inf, 2001. [64] K UMAR , R.; K UMAR , M. Exploring Genetic Algorithm for Shortest Path Optimization in Data Networks. Global Journal of Computer Science and Technology, 10, 2010. [65] L AUMANN , E. The Social Organization of Sexuality: Sexual Practices in the United States. University of Chicago Press, 1994. [66] L EMIEUX , V.; O UIMET, M. Lanalyse Structurale des Reseaux Sociaux. De Boeck, 2004.

Referncias Bibliogrcas

181

[67] L IMA , M.

Visual Complexity.

Universit de Montral, disponvel em http:

//www.visualcomplexity.com/vc, acessado em outubro de 2012.


[68] L IMA , M. Visual Complexity: Mapping Patterns of Information. Princeton

Architectural Press, 2011. [69] L OCAW EB . ASP.Net MVC, o que que isso? Disponvel em http:

//blog.locaweb.com.br/tecnologia/aspnet-mvc-o-que-e-isso, acessado
em agosto de 2012. [70] M ACEDO, J. A.; V ITALI , M. M. mentao. Algoritmo de Dijkstra. Estudo e Imple-

UFES, disponvel em http://claudiaboeres.pbworks.com/f/

apresentacao-JoseAlexandre-e-Maycon.pdf, acessado em julho de 2012.


[71] M ACKINLAY, J. Automating the Design of Graphical Presentations of Relational Information. ACM Trans. Graph., 5(2):110141, Apr. 1986. [72] M C L AREN , D. Mentionmapp. Disponvel em http://mentionmapp.com, acessado em novembro de 2012. [73] M ICROSOFT. Microsoft Windows. Disponvel em http://windows.microsoft.

com, acessado em setembro de 2012.


[74] M ILGRAM , S. The Small World Problem. Psychology Today, May 1967. [75] N ASCIMENTO, H. A. D.; F ERREIRA , C. B. R. Uma introduo visualizao de informaes, volume 9. Revista Visualidades (UFG), Jul-Dez 2011. [76] N OKIA . QT. Disponvel em http://qt.digia.com, acessado em julho de 2012. [77] O LIPHANT, F. TagGraph. Disponvel em http://taggraph.com, acessado em julho de 2012. [78] OM ADADHAIN .; ET AL . JUNG (Java Universal Network/Graph Framework). Disponvel em http://jung.sourceforge.net, acessado em novembro de 2012. [79] OM ADADHAIN , J.; ET AL . Analysis and Visualization of Network Data Using JUNG. UCI, disponvel em http://www.ics.uci.edu/~smyth/kddpapers/UCI_

KD-D_JUNG_preprint.pdf, acessado em agosto de 2012.


[80] OM ADADHAIN , J.; ET AL . JUNG: A Brief Tour. Disponvel em http://jung.

sourceforge.net/presentations/JUNG_M2K.pdf, acessado em julho de 2012.


[81] O RACLE . JAVA. Disponvel em http://www.java.com, acessado em novembro de 2012.

Referncias Bibliogrcas

182

[82] O RACLE . MySQL. Disponvel em http://www.mysql.com, acessado em outubro de 2012. [83] OSG I A LLIANCE . OSGi technology. Disponvel em http://www.osgi.org/

Main/HomePage, acessado em novembro de 2012.


[84] P ISARUK , F. K-menores caminhos. IME (USP), disponvel em http://

www.teses.usp.br/teses/disponiveis/45/45134/tde-14072009-185725/ publico/mestrado.pdf, acessado em novembro de 2012.


[85] P OLTHIER , K.; ET AL . Java View. Disponvel em http://www.javaview.de, acessado em novembro de 2012. [86] R APOPORT, A. Mathematical Models of Social Interaction, volume 2 de Handbook of Mathematical Psychology. Wiley, 1963. [87] R ECUERO, R. Redes Sociais na Internet. Sulina, 2009. [88] S ANTOS , R. Minerao e Visualizao de Dados usando Java. INPE, disponvel em http://www.lac.inpe.br/~rafael.santos/Docs/CTI2010/JavaDMVis.

pdf, acessado em outubro de 2012.


[89] S CHARNOW, J.; T INNEFELD, K.; W EGENER , I. Modelling and Algorithms, 3(4):349366, 2005. [90] S IMES , A.; C OSTA , E. Inteligncia Articial: Fundamentos e Aplicaes. FCA, 2008. [91] S INGH , J. Collaborative Networks as Determinants of Knowledge Diffusion Patterns. Management Science, May 2004. [92] S IPSER , M. Introduction to the Theory of Computation. PWS Pub. Co., 1996. [93] S OUZA J UNIOR , S. F.; S OUZA , C. R. B. Visualizao Integrada de Mltiplas Mtricas de Redes Sociais. WIVA, 2008. [94] S TALLMAN , R. Free Software Foundation (FSF). Disponvel em http://http: The Analysis of Evolutionary

Algorithms on Sorting and Shortest Paths Problems. Journal of Mathematical

//www.fsf.org, acessado em setembro de 2012.


[95] T EAM , T. J. F. D. JUNG Manual. Disponvel em http://jung.sourceforge.

net/doc/manual.html, acessado em novembro de 2012.


[96] T ELECOM I TALIA . JADE. Disponvel em http://jade.tilab.com, acessado em novembro de 2012.

Referncias Bibliogrcas

183

[97] T HE A PACHE S OFTWARE F OUNDATION . Lucene. Disponvel em http://lucene.

apache.org/core, acessado em outubro de 2012.


[98] T HE E CLIPSE F OUNDATION . Eclipse. Disponvel em http://www.eclipse.org, acessado em novembro de 2012. [99] T HE P OSTGRE SQL G LOBAL D EVELOPMENT G ROUP . PostgreSQL. Disponvel em

http://www.postgresql.org, acessado em novembro de 2012.


[100] U NIVERSITY OF C ALIFORNIA , B. BSD (Berkeley Software Distribution). Disponvel em http://www.bsd.org, acessado em outubro de 2012. [101] VAN S ANDE , S. Facebook Visualiser. Disponvel em http://vansande.org/

facebook/visualiser, acessado em novembro de 2012.


[102] VAUCHER , J.; N CHO, A. JADE Tutorial and Primer. Universit de Mon-

tral, disponvel em http://www.iro.umontreal.ca/~vaucher/Agents/Jade/

JadePrimer.html, acessado em novembro de 2012.


[103] V ENTER , J. C.; ET AL . The Sequence of the Human Genome. Science, 291, 2001. [104] WARE , C. Information Visualization: Perception for Design. The Morgan

Kaufmann Series in Interactive Technologies. Morgan Kaufmann Pub-S, 2004. [105] WASSON , G.; T JADEN , B. The Oracle of Kevin Bacon. Disponvel em http:

//oracleofbacon.org, acessado em setembro de 2012.


[106] WATTS , D. J. Six Degrees: The Science of a Connected Age. Norton, 2003. [107] WATTS , D. J.; D ODDS , P.; N EWMAN , M. Identity and Search in Social Networks. Science, 296:13021305, 2002. [108] WATTS , D. J.; S TROGATZ , S. H. Collective dynamics of small-world networks. American Journal of Sociology, 393(2):440442, June 1998. [109] YAHOO ! I NC . Flickr. Disponvel em http://www.flickr.com, acessado em

outubro de 2012. [110] Y W ORKS . yles. Disponvel em http://www.yworks.com/en/products_

yfiles_about.html, acessado em novembro de 2012.


[111] Z IVIANI , N. Projeto de Algoritmos com Implementaes em Pascal e C.

Pioneira, 1999. [112] Z UCKERBERG , M.; ET AL . Facebook. Disponvel em www.facebook.com, acessado em novembro de 2012.

Vous aimerez peut-être aussi