VinBR

Verificação 29/03/2012

Apr 3rd, 2012
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.35 KB | None | 0 0
  1.  
  2. # # # # # # # # # # # # #
  3. # Verificação Automatica #
  4. # Prof. Sérgio Campos #
  5. # notasdogarcia.blog.com #
  6. # # # # # # # # # # # # #
  7.  
  8. Lembrando das últimas aulas, BDD era um método de verificação formal, vamos discutir como ele faz para provar a veracidade de um conjunto de expressões:
  9.  
  10. BDD - Binary Decision Diagrams
  11.  
  12. Binary Decision Three
  13.  
  14. é uma arvore que caminha com chaves binárias (que representam verdadeiro ou falso para variaveis diferentes) e cujas folhas representam um booleano.
  15.  
  16. Voce consegue modelar essas arvores para representar expressões lógicas.
  17.  
  18. O problema dessas arvores é que elas crescem de forma exponencial. Mas da pra evitar um pouco isso.
  19. Essas arvores tem uma quantidade imensa de redundancia.
  20.  
  21. Voce pode então verificar que se todos os filhos de um certo nó são 0 então é se chegar nesse nó temos resultado 0.
  22. E podemos também encontrar sub-arvores identicas, e elminar essas arvores sobresalentes.
  23.  
  24. Economizando espaço.
  25.  
  26. CONCEITO:
  27. Um BDD pode ser descrito recursivamente como um nó com dois filhos que se ligam a outros 2 BDDs de forma não ciclica.
  28. E onde seguindo os nós da raiz às folhas as variáveis aparecem de forma ordenada.
  29. (essa na verdade é a OBDD, ou seja Ordenate BDD)
  30.  
  31. Seja a arvore: AB + C (A e B ou C)
  32.  
  33. a
  34. |\
  35. | \
  36. | b
  37. | / \
  38. |/ \
  39. c 1
  40. |\
  41. | \
  42. 0 1
  43.  
  44. Todos os nós a direita implicam em nó verdadeiro.
  45.  
  46. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  47.  
  48. Canonical Form Property
  49. // Canonico significa que só há uma forma de escrever.
  50.  
  51. Bryant foi quem provou que que essas arvores com certas restrições tornam-se canonicas.
  52. Qual a vantagem disso?
  53.  
  54. Lembra que eu sugeri encontrar sub-arvores identicas e eliminar as sobressalentes?
  55. Encontrar arvores isomorficas é um problema NP-Completo
  56. Porém se a representação for canonica basta voce seguir a partir da raiz e comparar nó a nó se as transições estão iguais.
  57. E se torna um programa barato.
  58.  
  59. O algoritmo pra isso caminha de baixo para cima verificando:
  60.  
  61. existem terminais duplicados (esse passo é bem obvio =P)? junte eles.
  62. existem não terminais duplicados? junte eles.
  63. existe redundancia (com 0 ou 1 o negocio vai pro mesmo lugar)? remova o nó =P e pronto.
  64.  
  65. Bem essas comparações são muito baratas, assim voce pode dizer que comparar duas expressões booleanas seria em ordem n emfunção do tamanho do BDD
  66.  
  67. Parece que resolvemos um problema NP-Completo! =P
  68.  
  69. Mas obviamente tem um problema. Tranformar uma expressão booleana em um BDD é uma operação cara,
  70. porque porque dependendo da ordem das variáveis nas expressões booleanas o tamanho do BDD gerado pode crescer exponencialmente.
  71.  
  72. E tem outro problema
  73.  
  74. Determinar a ordem ótima é um problema NP-Completo
  75.  
  76. E pra completar, existem problemas bem comuns que sabe-se que tem um BDD de tamanho exponencial para qualquer ordem das variáveis! =P
  77. Um deles é a multiplicação de acordo com o professor.
  78. // Grande problema =/
  79.  
  80. A boa noticia segundo o professor é que ele ainda não viu outro problema alem da multiplicação que não pudessem ser expresos na forma de um BDD.
  81. Pois existem euristicas muito boas para resolver a ordem das variáveis.
  82.  
  83. Essas euristicas funcionam bem, porque nos problemas que normalmente lidamos que são criados por humanos,
  84. as variaveis tendem a estar em uma ordem boa e não ter muiitas possibilidades.
  85.  
  86. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  87.  
  88. Dynamic Variable Ordering.
  89.  
  90. Se voce trocar duas variaveis adjacentes de lugar em um BDD, o efeito é local, então voce não precisa mudar o resto da arvore do BDD.
  91.  
  92. Assim voce pode sair trocando de um em um as variáveis e cálculando o tamanho esperado da BDD (que é algo barato segundo o professor)
  93. Assim voce consegue escolher a posição de A que o negocio fica menor =]. É uma boa euristica já que a troca local de variáveis é barata.
  94.  
  95. Depois voce r epete o processo com as demais variáveis e assim por diante =].
  96.  
  97. // Fim da aula.
Advertisement
Add Comment
Please, Sign In to add comment