香農展開(英語:Shannon's expansion),或稱香農分解(Shannon decomposition)是對布爾函數的一種變換方式。它可以將任意布爾函數表達為其中任何一個變量乘以一個子函數,加上這個變量的反變量乘以另一個子函數。
![{\displaystyle f(X_{1},X_{2},\dots ,X_{n})=X_{1}\cdot f(1,X_{2},\dots ,X_{n})+X_{1}'\cdot f(0,X_{2},\dots ,X_{n})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1b0676bf7ec8cd8a4eaaef34881497f69fd86f94)
例如:
![{\displaystyle f(x,y,z)=yz+xyz'+x'y'z}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0a1ed7ddaaa14763599313fc7779eb2b829883bc)
可以抽取其中的變量
及其反變量
(
取反),而得到
![{\displaystyle f(x,y,z)=x\cdot f(1,y,z)+x'\cdot f(0,y,z)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/087cecb6c86b31d0549cf7f36c24148d55374ebe)
![{\displaystyle f(x,y,z)=x(yz+(1)yz'+(1)'y'z)+x'(yz+(0)yz'+(0)'y'z)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f4fc5a063d0ed77efc41f524634e9028312990c8)
![{\displaystyle f(x,y,z)=x(yz+(1)yz'+(0)y'z)+x'(yz+(0)yz'+(1)y'z)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a21227629d77f231d0cdaf99c98d0bed06c70e27)
![{\displaystyle f(x,y,z)=x(yz+yz')+x'(yz+y'z)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ed334adf6a95e0eb6d69446f4e2de720b2e544cb)
對邏輯函數使用香農展開,就可以使用抽取的變量作為一個選擇信號,然後用數據選擇器來實現該函數。
- Stephen Brown, Zvonko Vranesic. Fundamentals of Digital Logic with Verilog Design. McGraw-Hill Education. : 306-311. ISBN 0-07-283878-7.