Você está na página 1de 4

ALEATORIEDADE E SUAS APLICAÇÕES EM

PROJETO DE REDES E SISTEMAS DISTRIBUÍDOS


FINANCIADO PELO CNPQ — PROJETO 552342/01-7

BOLSISTA: ANDRÉ LUÍS VIGNATTI

Resumo. Neste trabalho estamos interessados em investigar o uso da alea-


toriedade em projeto de redes e sistemas distribuı́dos.
Iniciamos com o estudo de técnicas de geração de números pseudo-
aleatórios, em seguida investigamos algumas aplicações de algoritmos proba-
bilı́sticos para os problemas de geração de orientações acı́clicas em um sis-
tema distribuı́do anônimo de topologia arbitrária, gerador de números pseudo-
aleatórios distribuı́dos, e técnicas de algoritmos aproximados para o problema
da localização de facilidade conectada e rede privada virtual.
Palavras-chave: Geração de números pseudo-aleatórios, Projeto de Redes,
Métodos Probabilı́sticos.

1. Introdução
Algoritmos aleatórios ou probabilı́sticos é uma das áreas que tem recebido grande
atenção dos pesquisadores de otimização e teoria da computação nos últimos anos.
Isto se deve às novas técnicas que têm surgido, de caráter mais genérico, no desen-
volvimento de algoritmos para problemas em grafos. Estas técnicas têm sido usadas
recentemente para problemas de projeto sistemas computacionais, onde bons resul-
tados têm sido desenvolvidos, tanto na teoria como na prática.
Geração de números pseudo-aleatórios. Como o computador é uma máqui-
na que realiza operações deterministicamente, torna-se impossı́vel gerar números
realmente aleatórios. Duas alternativas surgem então: podemos utilizar algum
componente fı́sico com objetivo de gerar seqüências realmente aleatórias, ou pode-
mos fazer com que um computador gere seqüências que “pareçam” aleatórias, e por
isso tais seqüência geradas por computador são chamadas de pseudo-aleatórias.
Como não existe consenso sobre uma definição de aleatoriedade, muito menos
uma definição de seqüência de números aleatórios, existem métodos diferentes uti-
lizados para geração de números pseudo-aleatórios. De fato, existem três teorias
diferentes que tratam da noção de aleatoriedade. A primeira teoria, iniciada por
Shannon [8], é baseada na teoria da probabilidade e basicamente analisa distri-
buições que não são perfeitamente aleatórias utilizando para isso vários testes es-
tatı́sticos. Um tratamento completo desta teoria é encontrado em [5].
A segunda teoria, iniciada por Kolmogorov [6], Solomonov [9] e Chaitin [2], é ba-
seada na teoria da computação e especificamente na noção de linguagem universal
(que equivale às noções de máquina de Turing universal). Uma idéia central dessa
teoria é medir a complexidade de objetos em termos do menor programa que é ca-
paz de gerar um objeto (o seqüência). Por exemplo, a string 1n tem Complexidade
de Kolmogorov O(1) + log2 n. Isso porque, o programa “imprima n 1’s” tem ta-
manho dominado pela codificação de n (em binário, por exemplo), ou seja, quando
aumentamos o tamanho de n, nosso programa aumenta em log2 n. Por outro lado,
a maioria das strings com n-bits de tamanho tem Complexidade de Kolmogorov
pelo menos n, pois os programas utilizados para gerar essas strings nem sempre
conseguem achar um padrão na geração da string.
1
2 BOLSISTA: ANDRÉ LUÍS VIGNATTI

Finalmente, a terceira teoria da aleatoriedade, iniciado por Blum, Goldwasser,


Micali e Yao [3, 1, 11] também é baseada na teoria da complexidade, mas sugere
que a aleatoriedade não é inerente ao objeto, e sim ao observador. Para entender
melhor essa abordagem, considere o seguinte exemplo. Alice e Bob jogam cara
e coroa de quatro maneiras diferentes. Em todas as maneiras, Alice joga uma
moeda para o alto, e Bob deve adivinhar o resultado antes da moeda cair no chão.
Nos quatro modos, o que difere é o conhecimento que Bob tem antes dele dizer qual
é o seu palpite:
(1) Bob diz seu palpite antes de Alice jogar a moeda. Claramente, neste caso,
Bob acerta com probabilidade 1/2.
(2) Bob diz seu palpite enquanto a moeda está girando no ar. Em tese, o resul-
tado final poderia ser medido pelas equações de movimento da moeda, mas
Bob não tem informação sobre essas equações, e muito menos conseguiria
calculá-las antes da moeda cair no chão. Então, novamente ele acerta com
probabilidade 1/2.
(3) Similar ao caso anterior, a não ser pelo fato de agora Bob ter disponı́vel
um sofisticado equipamento que informa qual a equação do movimento da
moeda. Mas mesmo assim, Bob ainda não tem como calcular o resultado
final a tempo, então a probabilidade de acerto é 1/2.
(4) Nesse último caso, temos o equipamento que informa a equação do movi-
mento da moeda ligada diretamente a um super-computador, que consegue
calcular o valor da fórmula antes da moeda chegar ao chão. Nesse caso,
Bob sempre acerta, e o evento de “jogar a moeda” deixa de ser aleatório.
Concluı́mos, nessa última teoria, que a aleatoriedade de um evento é relativa à
informação e aos recursos computacionais disponı́veis. Então, um conceito natu-
ral de pseudo-aleatoriedade surge: uma distribuição é pseudo-aleatória se não há
computação eficiente que consiga distingui-la de uma distribuição uniforme, onde
computações eficientes estão associadas com algoritmos de tempo (probabilı́stico)
polinomial. Esse é paradigma é útil no projeto de geradores de números pseudo-
aleatórios robustos importantes em criptografia ([11]).

Aleatoriedade em projeto de redes. Nos problemas de projetos de redes tra-


tam de problemas que ocorrem na prática quando estamos modelando redes de
computadores, sistemas distribuı́dos e redes em geral (como por exemplo, rede te-
lefônica, rede de luz, rede de esgotos, etc.). Esses problemas são modelados como
problemas em grafos, e as caracterı́sticas inerentes ao problema original são trans-
formado em conceitos da teoria de grafos como custos nas arestas e vértices, arestas
direcionadas, etc. Estes problemas têm várias aplicações, principalmente em pro-
jeto de redes de telecomunicações, distribuição de caches e roteadores, aglomeração
de dados em tráfego e projeto de localização de facilidades (como pontos de correio,
posto de bombeiros, bancas de revista, etc).
Um desses problemas trata da geração de orientações acı́clicas em um sistema
distribuı́do anônimo de topologia arbitrária. O artigo de Arantes et. al. [7] apresenta
um algoritmo distribuı́do aleatório (ou probabilı́stico), que é executado em cada nó
do sistema, e converge para uma solução satisfatória em tempo O(logf m), onde f é
o número de faces utilizadas pelo dado não-viciado aleatório e m é o número de nó do
sistema distribuı́do. Em outras palavras, o sistema distribuı́do total leva O(logf m)
rodadas para encontrar uma orientação acı́clica no grafo. Algumas aplicações desse
resultado incluem o escalonamento por reversão de arestas e o upload distribuı́do.
O escalonamento por reversão de arestas visa resolver o problema de controlar o
acesso a recursos compartilhados entre processadores em um ambiente distribuı́do.
No upload distribuı́do, visamos contornar o congestionamento natural no tráfego
de informações em uma determinada rede de comunicação, no caso particular onde
ALEATORIEDADE E PROJETO DE REDES 3

um único ponto de recepção é responsável pela captação de todas as informações


provenientes de todos os pontos dessa rede.
Em [10] estuda-se a construção de um gerador de números pseudo-aleatórios dis-
tribuı́dos, que gera eficientemente moedas aleatórias compartilhadas em um sistema
distribuı́do, com baixo custo amortizado por moeda produzida. Utilizando os mo-
dos anteriores de geração de moedas distribuı́das, não tı́nhamos como considerar o
custo amortizado da geração de moedas, fazendo com que a geração de moedas fosse
muito “cara” e mesmo assim muitos problemas de sistemas distribuı́dos (incluindo
o broadcast e acordo Bizantino) utilizavam esta técnica. A idéia principal do artigo
é gerar algumas poucas moedas, a custo alto, e então “expandir” de uma maneira
eficiente esse número de moedas, para obtermos um número maior de moedas. Note
que essa idéia é a mesma dos geradores de números aleatórios criptográficos, só que
neste caso, adaptado ao conceito de sistemas distribuı́dos.

Inúmeros problemas de projeto de redes recaem em problemas NP-difı́cil e ao


utilizar algoritmos aleatórios e métodos probabilı́sticos conseguimos boas apro-
ximações para tais problemas. Algoritmos que retornam soluções aproximadas
são chamados de algoritmos de aproximação. O desenvolvimento desse tipo de
algoritmo surgiu em resposta à impossibilidade de se resolver satisfatoriamente di-
versos problemas de otimização NP-difı́ceis. De fato, para os problemas que apre-
sentaremos a seguir, as melhores aproximações conseguidas até então são devido à
algoritmos aleatórios.
O artigo de Gupta, Kumar e Roughgarden [4], apresentou um algoritmo aleatório
com fator de aproximação 3.55 para o problema da localização de facilidade conec-
tada. Isso significa que, como esse problema é um problema de minimização, então
no pior caso obteremos uma solução 3.55 vezes maior para o problema. O problema
da localização de facilidade conectada é definido a seguir.
Problema 1.1 (Localização de Facilidades Conectada). Dado um grafo não-orien-
tado G = (V, E), com custos ce não-negativos nas arestas, um conjunto D ⊆ V de
demandas, cada demanda j ∈ D com pesos dj não-negativos e um parâmetro
M > 1, uma solução para uma instância deste problema consiste de um conjunto
F ⊆ V de facilidades a serem abertas e uma designação das demandas às facilidades
que foram abertas. Além disso, devemos ter um grafo T ⊆ G que gera F (sem perda
de generalidade, T é uma árvore). Se tal solução designa
P a demanda j à facilidade
P
aberta i(j) ∈ F , o custo da solução é definido como j∈D dj ·`(j, i(j))+M e∈T ce ,
onde `(·, ·) denota o caminho mais curto entre dois vértices em G.
No mesmo artigo, pela primeira vez foi apresentado algum algoritmo que ga-
rante um fator de aproximação para o problema da VPN. O algoritmo apresentado
obtém uma 5.55-aproximação para esse problema, e utiliza técnicas aleatórias para
conseguir tal resultado. O problema da VPN é definido a seguir.
Problema 1.2 (Virtual Private Network (VPN)). Dado um grafo não-orientado
G = (V, E), com custos ce não-negativos nas arestas, um conjunto D ⊆ V de
demandas, e dois limitantes bin (j) e bout (j) para cada demanda j ∈ D. Esses
limitantes especificam a quantidade máxima de tráfego que a demanda j irá receber
de e irá enviar para outras demandas. Uma matriz D×D que descreve a quantidade
de tráfego entre cada par de demandas é valido se respeita todos os limitantes. Uma
solução factı́vel para uma instância do problema VPN é dada por um caminho Pij
para cada par de demandas (i, j) e por suas capacidades ue nas arestas suficientes
para suportar todas matrizes de tráfego válidas, com tráfego de i a j roteado no
caminho Pij . O objetivo é encontrar uma solução factı́vel que minimize o custo
P
e∈E ce ue .
4 BOLSISTA: ANDRÉ LUÍS VIGNATTI

2. Descrição do trabalho realizado


A metodologia que foi adotada durante o trabalho foi a seguinte. Primeiro,
estudamos as técnicas tradicionais para geração de números pseudo-aleatórios ([5]),
as técnicas recentes que geram seqüências robustas do ponto de vista de criptografia
([1, 11]), e os geradores distribuı́dos ([10]).
A segunda parte do estudo foi direcionada principalmente ao estudo de artigos,
uma vez que os problemas de projetos em redes utilizando aleatoriedade são con-
sequências de resultados recentes. Para cada artigo ou grupo de artigos cobertos,
fizemos uma apresentação para exposição das idéias e dúvidas relativas ao problema.

3. Conclusão
O uso de aleatoriedade não somente simplifica alguns aspectos do modelo for-
mal de problemas que surgem em projetos de sistemas computacionais como, as
vezes, fornece a única solução eficiente, mesmo que aproximada, para alguns desses
problemas difı́ceis.
Com esse estudo, aprendemos a comparar teoricamente os métodos aleatórios
se consideramos apenas os limitantes teóricos, como ordem de complexidade, ve-
locidade de convergência e razão de aproximação. Por outro lado, seria necessário
implementar tais métodos e compará-los para que possamos analisar o quanto es-
tas técnicas geram de fato soluções satisfatórias ou para verificarmos resultados
probabilı́sticos previstos na literatura.
Devido ao grande volume de material teórico a ser estudado, não havı́amos pla-
nejado implementar os diversos algoritmos. Assim, adquirimos conhecimento sufi-
ciente para possivelmente no futuro implementarmos aplicações práticas da aleato-
riedade em projeto de redes. Futuramente, poderão ser implementados algoritmos
que realizam a comparação entre os diversos métodos e essas implementações po-
derão ser feitas através do uso de instâncias disponı́veis na internet, redes locais, e
outras instâncias geradas computacionalmente.

Referências
[1] M. Blum, S. Micali. How to generate cryptographically strong sequences of pseudo-random
bits. SIAM Journal on Computing, 13(4):850–864, November 1984.
[2] G. J. Chaitin. On the length of programs for computing finite binary sequences: Statistical
considerations. Journal of the ACM, 16(1):145–159, January 1969.
[3] S. Goldwasser, S. Micali. Probabilistic encryption. Journal of Computer Security, 28:270–299,
1984.
[4] A. Gupta, A. Kumar, T. Roughgarden. Simpler and better approximation algorithms for
network design. Proceedings of the thirty-fifth ACM symposium on Theory of computing,
2003.
[5] D. E. Knuth. The Art of Computer Programming, vol.2. Addison-Wesley series in computer
science and = information processing. Addison-Wesley, 1981.
[6] A. N. Kolmogorov. Three approaches to the quantitative definition of information. Problems
of Information and Transmission, 1(1):1–7, 1965.
[7] Arantes, Jr G. M.; França, F. M. G.; Martinhon C. A. J. Algoritmos randômicos para a
geração de orientações acı́clicas em sistemas distribuı́dos. In Anais do XXXIV SBPO, 2002.
[8] C. E. Shannon. The Mathematical Theory of Communication. Univ of Illinois Pr., 1963.
ISBN: 0–252–72548–4.
[9] R. J. Solomonoff. A formal theory of inductive inference. Information and Control, 7(1):1–22,
March 1964.
[10] Bellare, M.; Garay, J.A.; Rabin T. Distributed pseudo-random bit generators - a new way to
speed-up share coin tossing. In Proceedings of the 15th Annual Symposium on the Principle
of Distributed Computing, 1996.
[11] A. C. Yao. Theory and applications of trapdoor functions. In Proceedings of the 23rd Sym-
posium on Foundations of Computer Science (FOCS), pages 80–91. IEEE Computer Society
Press, 1982.

Você também pode gostar