Os diagramas de decisão binária ordenada reduzida (ROBDD) são uma estrutura de dados eficiente para representar funções booleanas de várias variáveis . Eu gostaria de ter uma intuição de quão eficientes eles são.
Por exemplo, para compactação de dados, sabemos que dados com baixa entropia (alguns símbolos aparecem com mais frequência que outras, muitas repetições) podem ser compactados muito bem, enquanto dados completamente aleatórios não podem ser compactados.
Existe uma intuição análoga para estimar com que eficiência os ROBDDs podem representar uma dada fórmula booleana?
Por exemplo, ouvi dizer que a multiplicação de números de bits não pode ser representada com eficiência, o tamanho mínimo do ROBDD é exponencial em . Você conhece um argumento intuitivo que explica por que esse é o caso?n
Pergunta relacionada: intuição sobre a eficiência de BDDs que calculam números (múltiplos BDDs terminais, etc.)
fonte
Uma maneira de calcular uma função booleana é ter uma cadeia de blocos de circuitos booleanos modo que leia apenas (das entradas) e esteja conectado apenas a e . Uma das saídas do último bloco é o valor de . O teorema M no fascículo 1 do TAoCP 4 diz que o BDD de deve ser grande se, para todos esses circuitos, você precisar de muitos links para trás (de a ).b 1 , … , b n b k x k b k - 1 b k + 1 b n f f b k b k - 1f( x1, … , Xn) b1, … , Bn bk xk bk - 1 bk + 1 bn f f bk bk−1
Em outras palavras, para que o BDD seja pequeno, deve haver uma maneira de resumir as informações em para . A largura do BDD corresponde ao mais difícil de compactar, intuitivamente. 1 ≤ k ≤ n kx1,…,xk 1≤k≤n k
(Um exemplo dado no TAoCP é o seguinte: imagine um ciclo de comprimento e uma função booleana que diz "não há nó que tenha a mesma cor dos dois vizinhos", onde diz se o nó é preto ou branco. Em seguida, o 'resumo' depois de examinar os nós deve armazenar a cor , , e se você já notou uma violação. e de modo que você pode verificar se a propriedade é violada em uma vez que você também ver . você precisa def ( x 1 , … , x n ) x k k 1 , 2 , … , k 1 k - 1 k k - 1 k k k + 1 1 nn f(x1,…,xn) xk k 1,2,…,k 1 k−1 k k−1 k k k+1 1 para que você possa verificar se a propriedade foi violada em , quando chegar ao final.)n
Além disso, se você se preocupa com operações entre BDDs, em seguida, fazer uma operação binária entre e , onde é representado por um BDD que tem nós e é representado por um BDD que tem nós leva tempo, mas tende levar apenas tempo para funções que você encontra na prática. Não estou ciente de uma versão precisa do que acabei de dizer, mas estaria interessado se houver.g f m g n O ( m n ) O ( m + n )f g f m g n O(mn) O(m+n)
fonte
Para calcular números, você deve considerar os MTBDDs (Multi Terminal BDDs), uma estrutura de dados usada para verificação de modelo (probabilístico). Veja, por exemplo, Representações de Funções Discretas, Sasao, Tsutomu; Fujita, Masahira (Eds.), Springer, 1996 , capítulo 4, de Clarke et al. é sobre MTBDDs e diagrama de decisão híbrido.
fonte
No TAoCP 4 fascículo 1 , Knuth também menciona que
Isso mostra que funções como possuem BDDs eficientes, pois é uma especialização da função simétrica .f ( x 1 + x 2 + ⋯ + x 10 ≥ 7 )f(x1,x2,x3):=(2x1+5x2+3x3≥7) f (x1+x2+⋯+x10≥7)
fonte