boofun.core.representations.distribution
Distribution representation for Boolean functions.
This module treats Boolean functions as random variables over the Boolean cube, enabling probabilistic analysis, sampling, and statistical properties.
Classes
|
Distribution representation of a Boolean function. |
Distribution representation for Boolean functions. |
- class boofun.core.representations.distribution.BooleanDistribution(truth_table: ndarray, input_distribution: ndarray, n_vars: int, domain_size: int)[source]
Distribution representation of a Boolean function.
Treats the Boolean function as a random variable f: {0,1}ⁿ → {0,1} with various probability distributions over the input domain.
- truth_table
Truth table values
- Type:
- input_distribution
Probability distribution over inputs
- Type:
- evaluate(x: int | List[int] | ndarray) bool[source]
Evaluate function at given input.
- Parameters:
x – Input (index or binary vector)
- Returns:
Boolean function value
- sample_input(size: int = 1, random_state: int | None = None) ndarray[source]
Sample inputs according to input distribution.
- Parameters:
size – Number of samples
random_state – Random seed
- Returns:
Array of sampled input indices
- sample_outputs(size: int = 1, random_state: int | None = None) ndarray[source]
Sample function outputs according to induced distribution.
- Parameters:
size – Number of samples
random_state – Random seed
- Returns:
Array of sampled outputs
- output_probability(value: bool) float[source]
Compute probability that function outputs given value.
- Parameters:
value – Output value (True or False)
- Returns:
Probability P(f(X) = value)
- conditional_probability(output: bool, input_condition: Callable[[int], bool]) float[source]
Compute conditional probability P(f(X) = output | condition(X)).
- Parameters:
output – Desired output value
input_condition – Function that returns True for inputs satisfying condition
- Returns:
Conditional probability
- entropy() float[source]
Compute entropy of function output distribution.
- Returns:
Entropy H(f(X)) in bits
- mutual_information(variable_idx: int) float[source]
Compute mutual information between function output and a specific variable.
- Parameters:
variable_idx – Index of variable
- Returns:
Mutual information I(f(X); X_i)
- correlation(variable_idx: int) float[source]
Compute correlation between function output and a variable.
- Parameters:
variable_idx – Index of variable
- Returns:
Correlation coefficient
- moments(order: int = 4) List[float][source]
Compute moments of the output distribution.
- Parameters:
order – Maximum moment order
- Returns:
List of moments [mean, variance, skewness, kurtosis, …]
- classmethod from_dict(data: Dict[str, Any]) BooleanDistribution[source]
Create distribution from dictionary.
- classmethod uniform(truth_table: ndarray, n_vars: int) BooleanDistribution[source]
Create distribution with uniform input distribution.
- Parameters:
truth_table – Boolean function truth table
n_vars – Number of variables
- Returns:
BooleanDistribution with uniform input distribution
- classmethod biased(truth_table: ndarray, n_vars: int, bias: float = 0.5) BooleanDistribution[source]
Create distribution with biased coin flips for each variable.
- Parameters:
truth_table – Boolean function truth table
n_vars – Number of variables
bias – Probability that each variable is 1
- Returns:
BooleanDistribution with product distribution
- class boofun.core.representations.distribution.DistributionRepresentation[source]
Distribution representation for Boolean functions.
- evaluate(inputs: ndarray, data: BooleanDistribution, space: Space, n_vars: int) bool | ndarray[source]
Evaluate distribution representation.
- Parameters:
inputs – Input values (integer indices or binary vectors)
data – Boolean distribution
space – Evaluation space
n_vars – Number of variables
- Returns:
Boolean result(s)
- dump(data: BooleanDistribution, space=None, **kwargs) Dict[str, Any][source]
Export distribution representation.
- convert_from(source_repr: BooleanFunctionRepresentation, source_data: Any, space: Space, n_vars: int, **kwargs) BooleanDistribution[source]
Convert from another representation to distribution.
- Parameters:
source_repr – Source representation
source_data – Source data
space – Evaluation space
n_vars – Number of variables
**kwargs – Additional arguments (distribution_type, bias)
- Returns:
Boolean distribution
- convert_to(target_repr: BooleanFunctionRepresentation, source_data: Any, space: Space, n_vars: int, **kwargs) ndarray[source]
Convert distribution to another representation.
- create_empty(n_vars: int, **kwargs) BooleanDistribution[source]
Create empty distribution (constant False with uniform input).
- is_complete(data: BooleanDistribution) bool[source]
Check if distribution is complete.