1 / 44

Agentes Baseados em Utilidade

Agentes Baseados em Utilidade. Métodos da Computação Inteligente Universidade Federal de Pernambuco Aluno: Rodrigo Barros de Vasconcelos Lima. Parte I: Decisões Simples. “Como um agente deve tomar decisões de modo que, em média, ele consiga o que quer”. Função de Utilidade.

aqua
Download Presentation

Agentes Baseados em Utilidade

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Agentes Baseados em Utilidade Métodos da Computação Inteligente Universidade Federal de Pernambuco Aluno: Rodrigo Barros de Vasconcelos Lima

  2. Parte I: Decisões Simples “Como um agente deve tomar decisões de modo que, em média, ele consiga o que quer”

  3. Função de Utilidade • Funções de Utilidade associam um valor a um estado; • Indica o “desejo” por estar nesse estado; • Resulti(A): todos os possíveis estados de saída de uma ação em um ambiente não-determinista A; • Para cada saída possível é associado uma probabilidade: • P (Resulti(A) | Do(A), E) • Onde, E resume a evidência que o agente possuí do mundo Do(A) indica que a ação A foi executada no estado atual • Utilidade esperada de uma ação A dado a evidência do mundo E: EU(A|E) = i P(Resulti(A)|Do(A),E) U (Resulti(A)) • Problemas: • P, Result nem sempre disponíveis • Cálculo de EU pode ser de custo computacional proibitivo

  4. Preferências Racionais • Preferências racionais permitem descrever o melhor comportamento como aquele que maximiza EU; • Notação: • A  B: A é preferível a B • A ~ B: agente indiferente entre A e B • A  B: agente prefere A à B ou é indiferente • Em ambientes não deterministas: • A e B são loterias, i.e., distribuições probabilísticas sobre um conjunto de estados de saída (os “prêmios” de uma loteria) L = {p1.S1; p2. S2; ...; pn.Sn} • Preferências de um agente com relação aos estados do mundo; • Ambiente determinista: função valor V: Estados(ambiente)  N • Ambiente não determinista: função de utilidadeU: Estados(ambiente)  R

  5. Axiomas da Teoria da Utilidade: Orderabilidade: (A > B)  ( B > A)  (A ~ B) Transitividade: (A > B)  (B > C)  (A > C) Continuidade: A > B > C  p [p.A; 1 - p.C] ~ B Substitutability: A ~ B  [p.A; 1 – p.C] ~ [p.B; 1 – p.C] Monoticidade: A > B  ( p  q  [p.A; 1 – p.B]  [q.A; 1 – q.B] ) Decomposabilidade: [p.A; 1 – p. [q.B; 1 – q.C] ] ~ [p.A; (1 – p)q.B; (1 – p)(1 – q). C] Preferências que satisfação os axiomas garantem a existência de uma função real U, tal que: U(A) > U(B)  A > B U(A) = U(B)  A ~ B U (p1.S1; ... ; pn.Sn) = i pi U(Si) Restrições Sobre Preferências Racionais

  6. Restrições Sobre Preferências Racionais • Violação das restrições levam a comportamentos irracionais; • Exemplo: agente com preferências não transitivas pode ser induzido a dar todo o seu dinheiro: • Se B > C, então um agente que possuí C pagaria 1 centavo para obter B • Se A > B, então um agente que possuí B pagaria 1 centavo para obter A • Se C > A, então um agente que possuí A pagaria 1 centavo para obter C

  7. Processo para Estimar Utilidades • Criar uma escala com o “melhor premio possível” (U(S) = uT) e a “pior catástrofe possível” (U(S) = u); • Utilidades normalizadas: uT = 1 e u= 0 • Para estimar utilidade de saídas intermediárias: • Uma saída intermediária S é confrontada com uma loteria padrão [p. uT;(1-p). u]; • Probabilidade p ajustada até o agente ser indiferente entre S e a loteria padrão; • Assumindo utilidades normalizadas  utilidade S é dada por p;

  8. Exemplo: A Utilidade do Dinheiro • Um jogador ganhou um prêmio de R$ 1.000.000 em um programa de TV; • Apresentador oferece uma aposta: • Se ele jogar a moeda e aparecer cara  jogador perde tudo; • Se aparecer coroa  jogador ganha R$ 3.000.000; • O Valor Monetário Esperado da aposta é: • 0.5 (R$ 0) + 0.5 (R$ 3.000.000) = $ 1.500.000; • O Valor Monetário Esperado de recusar a aposta é de R$ 1.000.000 (menor); • Isso indica que seria melhor aceitar a aposta ?

  9. Exemplo: A Utilidade do Dinheiro • Utilidade Esperada para cada uma das duas ações: • EU (Aceitar) = 0.5 U(Sk) + 0.5 U(Sk+3.000.000) • EU (Rejeitar) = U(Sk+1.000.000) • Onde, Sk = riqueza atual do jogador; • Deve-se atribuir valores de utilidade para cada saída: • Sk = 5; • Sk+3.000.000 = 10; • Sk+1.000.000 = 8 • Ação racional: rejeitar ! • Conclusão: Utilidade não é diretamente proporcional ao valor monetário; • Utilidade (mudança no estilo de vida) para o primeiro R$ 1.000.000 é muito alta;

  10. Funções de Utilidade Multi-Atributo • Como tratar funções de utilidades com várias variáveis X1, ..., Xn ? • Ex.: Construir aeroporto - U(Mortes, Barulho, Custo) • Existem basicamente dois casos: • Decisões podem ser tomadas sem combinar os valores dos atributos em um único valor da utilidade (Dominância); • A utilidade resultante da combinação dos valores dos atributos pode ser especificada concisamente (Estrutura de Preferência e Utilidade Multi-atributo);

  11. Dominância Total • Se um estado S1 possui valores melhores em todos seus atributos do que S2, então existe uma dominância total de S1 sobre S2; •  i Xi(B)  Xi(A) (e portanto U(B)  U(A)) • Ex.: Local S1 para Aeroporto custa menos, gera menos poluição sonora e é mais seguro que S2; • Dominância total raramente acontece na prática;

  12. P S1 S2 $ - 2,8 -5.2 Dominância Estocástica • Exemplo, custo de construir aeroporto : • Em S1 valor uniformemente distribuído entre $2,8 e $4,8 bilhões; • Em S2 valor uniformemente distribuído entre $3 e $5,2 bilhões; • Dada a informação que utilidade decresce com custo: • S1 domina estocasticamente S2

  13. P 1 S1 S2 $ -5.2 - 4,8 Dominância Estocástica • Se duas ações A1 e A2 possuem uma distribuição de probabilidade p1(x) e p2(x) para X, então A1 possui dominância estocástica em X sobre A2 se: x  p1(x’) dx’   p2(x’) dx’ • Na prática, dominância estocástica pode geralmente ser definida usando apenas um raciocínio qualitativo; • Ex.: custo de construção aumenta com a distância para a cidade: • S1 é mais próximo da cidade do que S2  S1 domina S2 estocasticamente sobre o custo

  14. Estrutura de Preferência e Utilidade Multi-Atributo • Supondo que existem n atributos com d possíveis valores: • No pior caso, serão necessários dn valores; • A Teoria da Utilidade Multi-atributo assume que preferências de agentes possuem certa regularidade (estrutura); • Tenta mostrar que a Utilidade de um agente possui uma função de utilidade do tipo: U(x1 ... Xn) = f[ f1(x1) ..... F2(x2) ] Onde f seja uma função o mais simples possível

  15. Estrutura de Preferência: Determinista • X1 e X2 são preferencialmente independente de X3 sss: • Preferência entre {x1, x2, x3} e {x1’, x2’, x3} não depende em x3 • Ex.: {barulho, custo, segurança} {20.000 sofrem; $4,6 bilhões; 0,06 mortes/mhm} vs. {70.000 sofrem; $4,2 bilhões; 0,06 mortes/mhm} • Independência preferencial mútua (MPI): todos os pares de atributos são preferencialmente independente com relação aos demais; • Com MPI, o comportamento preferencial do agente pode ser descrito como uma maximização da função: • V (x1 ... xn) = i Vi(xi)

  16. Estrutura de Preferência: Estocástica • Deve-se levar em consideração preferências sobre loterias; • X é independente de utilidade com relação a Y sss: • Preferências sobre loterias em X não dependem dos valores dos atributos de Y • Independência de utilidade mútua (MUI): conjunto de atributos é independente de utilidade dos atributos restantes; • Existe MUI então, comportamento do agente pode ser descrito usando a função: U = k1U1 + k2U2 + k3U3 + k1 k2U1U2 + k2 k3U2U3 + k3 k1U3U1 + k1 k2k3U1U2U3

  17. Redes de Decisões • Extende Redes Bayesianas com ações e utilidades; • Nós de Chance (ovais): representam variáveis como nas redes Bayesianas; • Nós de Decisão (retângulo): pontos onde agente deve escolher uma ação; • Nós de Utilidade (diamantes): representam as funções de utilidade do agente; • Algoritmo de avaliação: • Atribuir os valores das variáveis para o estado corrente; • Calcular o valor esperado do nó de utilidade dado a ação e os valores das variáveis; • Retornar a ação com maior Utilidade Máxima Esperada

  18. Teoria do Valor da Informação • A Teoria do Valor da Informação permite que o agente escolha quais informações adquirir; • Exemplo: comprar os direitos de exploração de reservas de petróleo: • Dois blocos A e B, apenas um possui óleo com valor C; • Probabilidade de comprar o bloco certo = 0,5 • O preço de cada bloco é C/2; • Consultor oferece uma pesquisa para detectar qual bloco possui petróleo. Qual o valor dessa informação? • Solução: • Calcular o valor esperado da informação = valor esperado da melhor ação dada a informação – valor esperado da melhor ação sem a informação; • Pesquisador irá informar: “há óleo em A” ou “não há óleo em A” (p = 0,5) • Então: 0,5 x valor de “comprar A” dado que “há óleo em A” + 0,5 x valor de “comprar B” dado que “não há óleo em A” – 0 = = (0,5 x C/2) + (0,5 x C/2) – 0 = C/2

  19. Valor da Informação: Fórmula Geral • Valor da melhor ação sem nova evidência: EU(|E) = max A i U(Resulti(A)) P(Resulti(A) | Do(Resulti(A), E) Onde, E = Evidência atual,  = melhor ação • Valor da melhor ação após obtenção da nova evidência NE: EU(NEj|E, NE) = max A i U(Resulti(A)) P(Resulti(A) | Do(Resulti(A), E, NE) • NE é uma variável aleatória, cujo valor é atualmente desconhecido; • Deve-se calcular o ganho esperado sobre todos os possíveis valores en que NE pode assumir: VIE (NE) = ( k P(NE = en | E) EU( en | E, NE = em) ) – EU( | E)

  20. Valor da Informação: Exemplo • A1 e A2 duas rotas distintas através de uma montanha; • A1 e A2 são as únicas ações possíveis, com EU U1 e U2; • A1 = caminho mais baixo, sem muito vento; • A2 = caminho mais alto, com muito vento; • U (A1) > U (A2) !!! • Nova evidência NE produzirá novas utilidades esperadas U1’ e U2’; • Vale a pena adquirir NE? • E se mudássemos o cenário? • II) A1 e A2 são duas estradas onde venta muito, de mesmo tamanho e levamos um ferido grave; • III) Mesmas estradas A1 e A2 mas agora no verão; • Conclusão: uma informação só terá valor caso ela gere uma mudança de plano, e se esse novo plano for significante melhor do que o antigo !

  21. Parte 2: Decisões Complexas “Métodos para decidir o que fazer hoje, dado que nós poderemos ter que decidir de novo amanhã”

  22. 0.8 0.1 0.1 3 +1 2 -1 1 INÍCIO 1 2 3 4 Problemas de Decisões Seqüenciais • Exemplo: • Interação termina quando agente alcança um dos estados finais (+1 ou -1); • Ações disponíveis: Up, Down, Left e Right; • Ambiente totalmente observável; • Ações não confiáveis (locomoção estocástica);

  23. Processo de Decisão Markoviana (MDP) • Definido pelos seguintes componentes: • Estado Inicial: S0 • Modelo de Transição: T(s,a,s’) • Função de Recompensa: R(s) • Modelo de Transição T(s, a, s’): probabilidade de chegar a s’ como resultado da execução da ação a em s; • Hipótese de transições Markovianas: próximo estado depende apenas da ação atual e estado atual, não passados; • Em cada estado s agente recebe uma Recompensa R(s): • R(s) = -0.04 para todos estados não terminais; • Dois estados finais R(s) = +1 ou R(s) = -1; • Utilidade é a soma das recompensas recebidas;

  24. 3    +1 2 -1   1     1 2 3 4 Como são as soluções para esse problema? • Seqüência fixa de ações não resolvem o problema; • Uma solução deve especificar o que o agente deve fazer em qualquer um dos estados que ele possa chegar: • Diretriz (Policy):  (s) = ação recomendada para estado s • Diretriz Ótima: • Diretriz que produz a mais alta utilidade esperada; • Notação: *

  25. Funções de Utilidade para Problemas Seqüenciais • Como definir funções de utilidades para problemas seqüenciais? • Uh ([s0, s1, ... , sn]) • Primeiro deve-se responder as seguintes perguntas: • O Horizonte Temporal para a tomada de decisão é Finito (humanos) ou Infinito (trans-humanos www.transhumanism.org/ ) • Como calcular a utilidade de uma seqüência de estados?

  26. Horizontes Finitos e Infinitos • Horizontes finitos: • Existe um tempo limite N após o qual nada mais importa (game-over!); • Uh ([s0, s1, ... , sn+k]) = Uh ([s0, s1, ... , sN]), para todo k > 0; • Exemplo.: • Supondo que o agente inicia em (3,1) • N = 3  para atingir +1 agente deve executar ação Up • N = 100  tempo suficiente para executar ação Left (rota mais segura) • Diretriz ótima para um ambiente finito é não estacionária; • Para horizontes infinitos: • Ação ótima depende apenas do estado atual; • Diretriz ótima é estacionária;

  27. Cálculo de Utilidade para Seqüência de Estados • Com o que Uh ([s0, s1, ... , sn]) se parece ? • Função de utilidade com vários atributos ! • Deve-se supor que preferências entre seqüências de estados são estacionárias; • [s0, s1, s2, ... ] e [s0’, s1’, s2’, ... ], se s0 = s0’ então, [s1, s2, ... ] e [s1’, s2’, ... ] devem estar ordenados segundo a mesma preferência • Baseado no principio estacionariedade, existem apenas duas maneiras de atribuir utilidades a seqüência de utilidades: • Recompensas aditivas; • Recompensas descontadas;

  28. Recompensas • Recompensas Aditivas: • Uh ([s0, s1, ... , sn]) = R(s0) + R(s1) + R(s2) + ... • Recompensas Descontadas: • Uh ([s0, s1, ... , sn]) = R(s0) +  R(s1) + 2 R(s2) + ... • Onde  é chamado fator de desconto com valor entre 0 e 1; • Fator de desconto: • Descreve a preferência de um agente com relação a recompensas atuais sobre recompensas futuras; •  próximo a 0  recompensas no futuro distante são irrelevantes; •  = 1  recompensa aditiva;

  29. 3 0.812 0.918 0.812 +1 2 -1 0.762 0.660 1 0.705 0.655 0.611 0.388 1 2 3 4 Algoritmo Value Iteration • Idéia: calcular a utilidade de cada estado e as usar para escolher uma ação ótima em cada estado; • Utilidade de cada estado definida em termos da utilidade das seqüências de ações que podem se seguir a partir dele; • Seqüência de estados dependem da Diretriz usada, portanto temos: • U(s) = E [ t=0  R(st) | , s0 = s ] • Utilidade de um estado é dado pela equação de Bellman: • U(s) = R(s) +  maxas’ T(s,a,s’) U(s’) • Exemplo: • U(1,1) = -0.04 +  max { 0.8 U(1,2) + 0.1 U(2,1) + 0.1 U(1,1), (Up) 0.9 U(1,1) + 0,1 U(2,1), (Left) 0.9 U(1,1) + 0.1 U(2,1), (Down) 0.8 U92,1) + 0.1 U(1,2) + 0.1 U(1,1) } (Right)

  30. Algoritmo Value Iteration • Equações de Bellman são a base do algoritmo Value Iteration para resolver MDPs; • N estados = N equações; • Algoritmo: • Inicializar utilidades com valores arbitrários (tipicamente 0); • Calcular o lado direito da equação para cada estado; • Atualizar valor da utilidade de cada estado; • Continuar até atingir um equilíbrio; • Prova-se que essa iteração eventualmente converge para um único conjunto de soluções (algoritmo atinge equilíbrio !) • Pg. 620 AIMA

  31. Algoritmo Policy Iteration • Idéia: se uma ação é claramente melhor que outras, então a magnitude exata da utilidade de cada estado não necessita ser precisa; • Alterna entre dois passos, iniciando a partir de uma diretriz inicial 0: • Avaliação da Diretriz: dada diretriz i , calcular Ui = U  i ; • Melhora da Diretriz: calcular nova diretriz i+1; Para cada estado s se ( maxa s’ T(s,a,s’) U[s’] ) >(s’ T(s,  i(s),s’) U[s’] então [s] = argmaxa s’ T(s,a,s’) U[s’] mudouDiretriz = true; • Algoritmo encerra quando passo Melhora da Diretriz não produz nenhuma mudança nas utilidades;

  32. 3    +1 2 -1   1     1 2 3 4 Algoritmo Policy Iteration • Mais simples para Avaliar a Utilidade de um estado: • Ui(s) = R(s) + s’ T(s, i(s), s’) Ui(s’); • Exemplo: • Ui (1,1) = 0.8 Ui(1,2) + 0.1 Ui(1,1) + 0.1 Ui(2,1)

  33. 3 +1 2 -1 1 1 2 3 4 MDPs Parcialmente Observáveis (POMDPs) • MDPs assumem que o ambiente é totalmente observável; • Diretriz ótima depende apenas estado atual; • Em ambientes parcialmente observáveis agente não sabe necessariamente onde ele está; • Quais os problemas que surgem? • Agente não pode executar ação (s) recomendada para o estado; • Utilidade do estado s e a ação ótima depende não só de s, mas de quanto o agente conhece sobre s; • Exemplo: agente não tem menor idéia de onde está • S0 pode ser qualquer estado menos os finais; • Solução: Mover Left 5 vezes; Up 5 vezes e Right 5 vezes; start

  34. MDPs Parcialmente Observáveis (POMDPs) • Possui os mesmo elementos de um MDP acrescentando apenas: • Modelo de Observação: O(s, o); • Especifica a probabilidade de perceber a observação o no estado s; • Conjunto de estados reais que o agente pode estar = Belief State; • Em POMDPs um Belief State b, é uma distribuição probabilística sobre todos os estados possíveis: • Ex.: estado inicial na figura = {1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 0, 0} • b(s) denota a probabilidade associada ao estado s pelo Belief State b;

  35. MDPs Parcialmente Observáveis (POMDPs) • b = Belief State atual; • Agente executa a ação a e percebe a observação o, então: • Novo Belief State b’ = FORWARD (b, a, o); • Ponto fundamental em POMDs: • A ação ótima depende apenas do Belief State corrente do agente; • * (b): mapeamento de crenças em ações; • Ciclo de decisão de um agente POMDP: 1. Dado o Belief State corrente b, execute ação a = * (b); 2. Receba observação o; 3. Set o Belief State corrente para FORWARD (b, a, o).

  36. Observações Importantes para POMDPs • POMDPs incluem o Valor da Informação como parte do processo de decisão: • Ação modifica tanto o estado físico quanto o Belief State; • Resolver um POMDP sobre um estado físico pode ser reduzido a resolução de um MDP sobre um Belief State: • Belief States são sempre observáveis; • No entanto, MPDs obtidos normalmente são contínuos e possuem alta dimensão: • Algoritmos Value Iteration e Policy Iteration devem ser modificados para poderem ser aplicados a MPDs contínuos;

  37. Decision Theoretic-Agents • Decision Theoretic-Agent: • Pode tomar decisões racionais baseado no que acredita e deseja; • Capaz de tomar decisões em ambientes onde incertezas e objetivos conflitantes deixariam um agente lógico sem poder decidir; • Possui uma escala contínua de medida de qualidade sobre os estados; • Pode ser construído para um ambiente POMDP usando Redes de Decisões Dinâmicas para: • Representar os modelos de Transição e Observação; • Atualizar o Belief State; • Projetar possíveis sequencias de ações; • Decisões são tomadas projetando para frente possíveis sequencias de ações e escolhendo a melhor;

  38. At-2 At-1 At At+1 At+2 Xt-1 Xt Xt+1 Xt+2 Xt+3 Ut+3 Rt-1 Rt Rt+1 Rt+2 Rt+3 Et-1 Et Et+1 Et+2 Et+3 Rede de Decisão Dinâmica (DDN) • Rede Bayesiana dinâmica com nós de Decisão e Utilidade (Redes de Decisões); • Onde: • Xt = estado no tempo t; Rt = recompensa no tempo t • Et = evidência no tempo t; Ut = utilidade no tempo t; • At = ação no tempo t; • T (s, a, s’) = P(Xt+1 | Xt , At) • O (s, o) = P (Et | Xt)

  39. Decisões com Múltiplos Agentes: Teoria dos Jogos • O que acontece quando a incerteza é proveniente de outros agentes e de suas decisões? • A Teoria dos Jogos trata essa questão ! • Jogos na Teoria dos Jogos são compostos de: • Jogadores; • Ações; • Matriz de Resultado; • Cada jogador adota uma Estratégia (diretriz); • Estratégia Pura: diretriz deterministica, uma ação para cada situação; • Estratégia Mista: ações selecionadas sobre uma distribuição probabilística; • Perfil de Estratégia: associação de uma estratégia a um jogador; • Solução é um perfil de estratégia racional;

  40. Teoria dos Jogos: Exemplo 1 • Dois ladrões (Alice e Bob) são presos perto da cena do crime e interrogados separadamente; • Matriz de resultados: • Dilema do Prisioneiro: • Eles devem testemunhar ou se recusarem a testemunhar? • Ou seja, qual estratégia adotar? • Estratégia Dominante: • Estratégia que domina todas as outras; • É irracional não usar uma estratégia dominante, caso uma exista; • Equilíbrio de Estratégia Dominante: • Situação onde cada jogador possui uma estratégia dominante;

  41. Teoria dos Jogos: Exemplo 1 • Um resultado é dito “Pareto Dominated” por outro se todos jogadores preferirem esse outro resultado; • Qual será a decisão de Alice se ela for racional e esperta? • Bob irá testemunhar, então {Testemunhar} ! • Então, eis que surge o dilema: • Resultado para o ponto de equilíbrio é Pareto Dominated pelo resultado {recusar, recusar} ! • Há alguma maneira de Alice e Bob chegarem ao resultado (-1, -1)? • Opção permitida mais pouco provável; • Poder atrativo do ponto de equilíbrio !

  42. Equilíbrio de Nash • Equilíbrio de Nash: • Agentes não possuem intenção de desviar da estratégia especificada; • Condição necessária para uma solução; • Equilíbrio de Estratégia Dominante é um Equilíbrio de Nash; • Esse conceito afirma que existem estratégias que se equilibram mesmo que não existam estratégias dominantes; • Exemplo: • Dois equilibrios de Nash: • {dvd, dvd} e {cd, cd}

  43. Jogos com Múltiplos Movimentos • Tipo mais simples de jogos com múltiplos movimentos, Jogo Repetido: • Jogador se depara com a mesma escolha repetidamente; • Mantém conhecimento sobre escolhas anteriores dos jogadores. • Estratégia para Jogo Repetido especifica escolha de ação: • A cada iteração; • Para cada jogador; • Para todas as possíveis histórias de escolhas anteriores; • Para o Dilema do Prisioneiro, escolha da ação dependerá do tipo do compromisso: • Alice e Bob podem saber quantas vezes irão jogar: melhor ação = testemunhar; • Ou não: melhor ação = continuar recusando até que o outro jogador testemunhe;

  44. Jogos de Informações Parciais • São jogos repetidos em ambientes parcialmente observáveis; • Exemplos: • Pôquer; • Abstração sobre uma guerra nuclear; • Esse tipo de jogo é resolvido considerando-se Belief States assim como POMDPs; • Diferença: jogador conhece seu próprio Belief State mas não o do adversário; • Algoritmos práticos para resolução desses problemas ainda são muito recentes;

More Related