boofun.core.representations.circuit
Circuit representation for Boolean functions.
This module implements Boolean circuits using basic gates (AND, OR, NOT) for representing and evaluating Boolean functions efficiently.
Functions
|
Build optimized majority circuit. |
|
Build parity circuit using XOR gates. |
Classes
|
Boolean circuit representation using gates and wires. |
Circuit representation for Boolean functions. |
|
|
Represents a single gate in a Boolean circuit. |
|
Types of Boolean gates. |
- class boofun.core.representations.circuit.GateType(value)[source]
Types of Boolean gates.
- INPUT = 'INPUT'
- AND = 'AND'
- OR = 'OR'
- NOT = 'NOT'
- XOR = 'XOR'
- NAND = 'NAND'
- NOR = 'NOR'
- class boofun.core.representations.circuit.Gate(gate_id: int, gate_type: GateType, inputs: List[int], output_wire: int | None = None)[source]
Represents a single gate in a Boolean circuit.
- gate_type
Type of gate (AND, OR, NOT, etc.)
- class boofun.core.representations.circuit.BooleanCircuit(n_inputs: int)[source]
Boolean circuit representation using gates and wires.
Supports construction, evaluation, and optimization of Boolean circuits with standard gates (AND, OR, NOT, XOR, NAND, NOR).
- __init__(n_inputs: int)[source]
Initialize Boolean circuit.
- Parameters:
n_inputs – Number of input variables
- add_gate(gate_type: GateType, inputs: List[int]) int[source]
Add gate to circuit.
- Parameters:
gate_type – Type of gate to add
inputs – List of input gate IDs
- Returns:
ID of newly created gate
- evaluate(inputs: List[bool] | ndarray) bool[source]
Evaluate circuit with given inputs.
- Parameters:
inputs – Boolean input values
- Returns:
Circuit output value
- get_depth() int[source]
Calculate circuit depth (longest path from input to output).
- Returns:
Circuit depth
- class boofun.core.representations.circuit.CircuitRepresentation[source]
Circuit representation for Boolean functions.
- evaluate(inputs: ndarray, data: BooleanCircuit, space: Space, n_vars: int) bool | ndarray[source]
Evaluate circuit representation.
- Parameters:
inputs – Input values (integer indices or binary vectors)
data – Boolean circuit
space – Evaluation space
n_vars – Number of variables
- Returns:
Boolean result(s)
- dump(data: BooleanCircuit, space=None, **kwargs) Dict[str, Any][source]
Export circuit representation.
- convert_from(source_repr: BooleanFunctionRepresentation, source_data: Any, space: Space, n_vars: int, **kwargs) BooleanCircuit[source]
Convert from another representation to circuit.
Uses a simple DNF (Disjunctive Normal Form) construction approach.
- convert_to(target_repr: BooleanFunctionRepresentation, source_data: Any, space: Space, n_vars: int, **kwargs) ndarray[source]
Convert circuit to another representation.
- create_empty(n_vars: int, **kwargs) BooleanCircuit[source]
Create empty circuit (constant False).
- is_complete(data: BooleanCircuit) bool[source]
Check if circuit is complete (has output gate).
- time_complexity_rank(n_vars: int) Dict[str, int][source]
Return time complexity for circuit operations.
- get_storage_requirements(n_vars: int) Dict[str, int][source]
Return storage requirements for circuit representation.
- optimize_circuit(circuit: BooleanCircuit) BooleanCircuit[source]
Apply basic circuit optimizations.
- Parameters:
circuit – Circuit to optimize
- Returns:
Optimized circuit
- boofun.core.representations.circuit.build_majority_circuit(n_vars: int) BooleanCircuit[source]
Build optimized majority circuit.
- Parameters:
n_vars – Number of variables
- Returns:
Circuit implementing majority function
- boofun.core.representations.circuit.build_parity_circuit(n_vars: int) BooleanCircuit[source]
Build parity circuit using XOR gates.
- Parameters:
n_vars – Number of variables
- Returns:
Circuit implementing parity function