BDD(Binary Decision Diagram)ã¨ã„ã†ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‚’ã”å˜çŸ¥ã ã‚ã†ã‹ã€‚è¿‘å¹´ã€çµ„ã¿åˆã‚ã›çˆ†ç™ºãŠå§‰ã•ã‚“ã®å‹•ç”»é–¢é€£ã§ã‚‚話題ã«ãªã£ãŸZDDã¯ã€BDDãŒæ´¾ç”Ÿã—ãŸãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§ã‚る。ã“ã®å•é¡Œã¯ã€BDDã®åŸºæœ¬çš„ãªå®Ÿè£…ã‚’è¡Œã†ã‚‚ã®ã§ã‚る。
BDDã¨ã¯ã€è«–ç†é–¢æ•°ã‚’表ç¾ã™ã‚‹é–‰è·¯ã®ãªã„グラフ(DAG)ã§ã‚る。例ãˆã°ã€è¡¨1ã®çœŸç†å€¤è¡¨ã‚’表ã‚ã™è«–ç†é–¢æ•°ã¯ã€å›³1ã®BDDã¨ãªã‚‹ã€‚BDDã¯ã€0エッジ(ç ´ç·šçŸ¢å°)ã€1エッジ(実線矢å°)ã€0終端ノード(0ã®å››è§’)ã€1終端ノード(1ã®å››è§’)ã€å¤‰æ•°ãƒŽãƒ¼ãƒ‰(æ•°å—ãŒæ›¸ã‹ã‚ŒãŸä¸¸)ã®5種類ã®éƒ¨å“ã‹ã‚‰ãªã‚‹ã€‚0終端ノードã¨1終端ノードã¯ã€ä¸€ç•ªä¸‹ã«ãã‚Œãžã‚Œ1ã¤ãšã¤å˜åœ¨ã™ã‚‹ã€‚å„変数ノードã‹ã‚‰ã¯ã€0エッジã¨1エッジã€ãã‚Œãžã‚ŒãŒ1ã¤ãšã¤å‡ºåŠ›ã•ã‚Œã¦ãŠã‚Šã€æ¬¡ã®ãƒŽãƒ¼ãƒ‰ã¸ã¨ã¤ãªãŒã£ã¦ã„る。å„変数ノードã¯ã€ãƒŽãƒ¼ãƒ‰ã«æ›¸ã‹ã‚ŒãŸç•ªå·ã®å¤‰æ•°ã«å¯¾å¿œã—ã¦ãŠã‚Šã€ãã®å¤‰æ•°ã®å€¤ãŒ1ãªã‚‰ã°1エッジå´ã¸ã€0ãªã‚‰ã°0エッジå´ã¸è¾¿ã‚‹ã€‚ãã†ã—ã¦ã€ä¸€ç•ªä¸Šã®ãƒŽãƒ¼ãƒ‰ã‹ã‚‰è¾¿ã£ãŸçµæžœã€1終端ノードã«è¡Œãç€ã‘ã°1ãŒç”ãˆã€0終端ノードã«è¡Œãç€ã‘ã°0ãŒç”ãˆã¨ãªã‚‹ã€‚例ãˆã°ã€è¡¨1ã®çœŸç†å€¤è¡¨ã®ã€Œå¤‰æ•°1=1, 変数2=0, 変数3=1ã€ã‚’BDDã§è¾¿ã‚‹ã¨ã€å›³1ã®å¤ªç·šã®ã‚ˆã†ãªè¾¿ã‚Šæ–¹ã¨ãªã‚Šã€çµæžœãŒ1ã§ã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹ã€‚ã“ã®å•é¡Œã«ãŠã„ã¦ã¯å¿…ãšã€BDDã®ä¸Šå´ã‹ã‚‰1段ãšã¤ã€å¤‰æ•°1ã€å¤‰æ•°2ã€...ã€å¤‰æ•°Nã®é †ç•ªã«å¤‰æ•°ãƒŽãƒ¼ãƒ‰ãŒç¾ã‚Œã‚‹ã‚‚ã®ã¨ã™ã‚‹ã€‚
ã•ã¦ã€ã“ã®å•é¡Œã§ã¯ã€ä»Šèª¬æ˜Žã—ãŸå˜ç´”ãªBDDã‚’ã€ç°¡ç´„化è¦å‰‡ã‚’利用ã—ã¦åœ§ç¸®ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã—ã¦ã‚‚らã†ã€‚簡約化è¦å‰‡ã¨ã¯ã€å›³2ã«ç¤ºã™2ã¤ã®è¦å‰‡ã§ã‚る。ã¾ãšã€å›³2(a)ã®è¦å‰‡ã¯ã€å¤‰æ•°ãƒŽãƒ¼ãƒ‰AãŒã‚ã£ãŸã¨ãã€ã€ŒAã®0エッジã®æŒ‡ã™å…ˆï¼Aã®1エッジã®æŒ‡ã™å…ˆã€ã§ã‚ã‚‹ã¨ãã«é©ç”¨ã•ã‚Œã‚‹ã€‚ã“ã®å ´åˆã€å¤‰æ•°ã®å€¤ãŒ0ã§ã‚ã‚ã†ã¨1ã§ã‚ã‚ã†ã¨é·ç§»ã™ã‚‹å…ˆãŒ1通りã§ã‚ã‚‹ãŸã‚ã€ã“ã®å¤‰æ•°ãƒŽãƒ¼ãƒ‰ã¯å¿…è¦ã®ãªã„ã‚‚ã®ã§ã‚ã‚‹ã¨ã‚ã‹ã‚‹ã€‚ãã®ãŸã‚ã€ã“ã®æ¡ä»¶ã«å½“ã¦ã¯ã¾ã‚‹å¤‰æ•°ãƒŽãƒ¼ãƒ‰ã¯å…¨ã¦å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãる。図2(b)ã®è¦å‰‡ã¯ã€2ã¤ã®å¤‰æ•°ãƒŽãƒ¼ãƒ‰A, BãŒã‚ã£ãŸã¨ãã€ã€ŒAã®å¤‰æ•°ç•ªå·ï¼Bã®å¤‰æ•°ç•ªå·ã€ã‹ã¤Aã®0エッジã®æŒ‡ã™å…ˆï¼Bã®0エッジã®æŒ‡ã™å…ˆã€ã‹ã¤Aã®1エッジã®æŒ‡ã™å…ˆï¼Bã®1エッジã®æŒ‡ã™å…ˆã€ã§ã‚ã‚‹ã¨ãã«é©ç”¨ã•ã‚Œã‚‹ã€‚ã“ã®å ´åˆã€äºŒé‡ã«åŒã˜ãƒŽãƒ¼ãƒ‰ãŒå˜åœ¨ã—ã¦ã„ã¦ç„¡é§„ã§ã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹ã®ã§ã€2ã¤ã®å¤‰æ•°ãƒŽãƒ¼ãƒ‰ã‚’1ã¤ã®å¤‰æ•°ãƒŽãƒ¼ãƒ‰ã¨ã—ã¦å…±æœ‰ã™ã‚‹ã“ã¨ãŒã§ãる。
BDDã®å½¢ãŒå¤‰ã‚らãªããªã‚‹ã¾ã§ç°¡ç´„化è¦å‰‡ã‚’ç¹°ã‚Šè¿”ã—用ã„ã‚‹ã¨ã€å›³1ã®BDDã¯ã€å›³3(a)->(b)ã¨å¤‰åŒ–ã—ã¦ã„ãã€æœ€çµ‚çš„ã«å›³3(c)ã®ã‚ˆã†ãªã€ã‚ˆã‚Šã‚³ãƒ³ãƒ‘クトãªBDDã¸ã¨å¤‰å½¢ã™ã‚‹ã€‚ã‚‚ã¨ã‚‚ã¨å¤‰æ•°ãƒŽãƒ¼ãƒ‰ãŒ7個ã ã£ãŸBDDãŒã€å¤‰æ•°ãƒŽãƒ¼ãƒ‰3個ã®BDDã«ãªã£ãŸã“ã¨ãŒã‚ã‹ã‚‹ã€‚
è«–ç†é–¢æ•°ã‚’表ã‚ã™çœŸç†å€¤è¡¨ãŒå…¥åŠ›ã•ã‚Œã‚‹ã®ã§ã€ç°¡ç´„化è¦å‰‡ã‚’é©ç”¨å¾Œã®BDDã®å¤‰æ•°ãƒŽãƒ¼ãƒ‰æ•°ã‚’出力ã›ã‚ˆã€‚
N bit_line
Nã¯ã€è«–ç†é–¢æ•°ã®å¤‰æ•°ã®æ•°ã‚’表ã‚ã™ã€‚bit_lineã¯çœŸç†å€¤è¡¨ã‚’表ã‚ã™ã€'1'ã¨'0'ã‹ã‚‰ãªã‚‹ã€2^Nã®é•·ã•ã®æ–‡å—列ã§ã‚る。å„æ–‡å—ã¯ã€
簡約化è¦å‰‡é©ç”¨å¾Œã®BDDã®å¤‰æ•°ãƒŽãƒ¼ãƒ‰æ•°ã‚’出力ã›ã‚ˆã€‚
3 01100110
3
2 0000
0
共有ã¨å‰Šé™¤ã‚’ç¹°ã‚Šè¿”ã™ã¨å¤‰æ•°ãƒŽãƒ¼ãƒ‰ã¯ãªããªã‚‹ã€‚
2 0110
3
簡約化è¦å‰‡ã‚’1回もé©ç”¨ã™ã‚‹ã“ã¨ãŒã§ããªã„。
5 11110101011100110010111100010001
12