Minimization API¶
Pluggable minimization backends.
- class qca.minimizers.Implicant(pattern, covered, is_prime=True)[source]¶
One Quine-McCluskey implicant.
- Parameters:
pattern (tuple[Any, ...])
covered (frozenset[int])
is_prime (bool)
- covers(minterm_idx)[source]¶
Return whether this implicant covers a minterm index.
- Parameters:
minterm_idx (int)
- Return type:
bool
- class qca.minimizers.QMSolution(complex_solution=<factory>, parsimonious_solution=<factory>, intermediate_solution=<factory>, prime_implicants_complex=<factory>, prime_implicants_parsimonious=<factory>, prime_implicants_intermediate=<factory>, coverage_table=<factory>, backend='qmc', condition_names=<factory>, n_positive=0, n_remainder=0, n_contradiction=0)[source]¶
Complete Quine-McCluskey solution bundle.
- Parameters:
complex_solution (list[Implicant])
parsimonious_solution (list[Implicant])
intermediate_solution (list[Implicant])
prime_implicants_complex (list[Implicant])
prime_implicants_parsimonious (list[Implicant])
prime_implicants_intermediate (list[Implicant])
coverage_table (DataFrame)
backend (str)
condition_names (list[str])
n_positive (int)
n_remainder (int)
n_contradiction (int)
- class qca.minimizers.MinimizerBackend(name, family, description, exact)[source]¶
Description of one minimization backend.
- Parameters:
name (str)
family (str)
description (str)
exact (bool)
- qca.minimizers.available_minimizers()[source]¶
Return canonical backend names accepted by
fit(minimizer=...).- Return type:
tuple[str, …]
- qca.minimizers.quine_mccluskey(minterms, all_patterns, is_multivalue, dont_care_indices=None)[source]¶
Quine mccluskey.
- Parameters:
minterms (list[int])
all_patterns (list[tuple[Any, ...]])
is_multivalue (list[bool])
dont_care_indices (list[int] | None)
- Return type:
list[Implicant]
- qca.minimizers.greedy_set_cover(candidates, target_minterms)[source]¶
Return a deterministic greedy set cover over implicant candidates.
- qca.minimizers.exact_set_cover(candidates, target_minterms)[source]¶
Return an exact minimum set cover using branch-and-bound search.
The optimization criterion is lexicographic:
fewest implicants;
lowest total logical complexity;
deterministic original candidate order.
- qca.minimizers.select_set_cover(candidates, target_minterms, method='exact')[source]¶
Select implicants with a set-cover backend.
- class qca.minimizers.QCAMinimizer(condition_names, is_multivalue, condition_domains, backend_name='qmc')[source]¶
Logical minimization engine for QCA truth tables.
- Parameters:
condition_names (list[str])
is_multivalue (IsMultiValueMap)
condition_domains (ConditionDomains)
backend_name (str)
- property n_minterms: int¶
N minterms.
- minimize(truth_table_rows, outcome_threshold=0.75, consistency_threshold=None, pri_cut=0.0, frequency_cutoff=1, directional_expectations=None, include_remainders_in_parsimonious=True)[source]¶
Derive complex, parsimonious, and intermediate solutions.
- Parameters:
truth_table_rows (list[TruthTableRowProtocol])
outcome_threshold (float)
consistency_threshold (float | None)
pri_cut (float)
frequency_cutoff (int)
directional_expectations (dict[str, Any] | None)
include_remainders_in_parsimonious (bool)
- Return type:
- classify_rows(truth_table_rows, outcome_threshold=0.75, consistency_threshold=None, pri_cut=0.0, frequency_cutoff=1)[source]¶
Classify rows.
- Parameters:
truth_table_rows (list[TruthTableRowProtocol])
outcome_threshold (float)
consistency_threshold (float | None)
pri_cut (float)
frequency_cutoff (int)
- Return type:
dict[str, list[int]]
- remainder_summary(truth_table_rows, outcome_threshold=0.75, consistency_threshold=None, pri_cut=0.0, frequency_cutoff=1, directional_expectations=None)[source]¶
Return diagnostic remainder classification results.
- Parameters:
truth_table_rows (list[TruthTableRowProtocol])
outcome_threshold (float)
consistency_threshold (float | None)
pri_cut (float)
frequency_cutoff (int)
directional_expectations (dict[str, Any] | None)
- Return type:
DataFrame
- class qca.minimizers.SetCoverMinimizer(condition_names, is_multivalue, condition_domains, cover_method='exact', backend_name=None)[source]¶
QCA minimizer using set-covering for implicant selection.
- Parameters:
condition_names (list[str])
is_multivalue (IsMultiValueMap)
condition_domains (ConditionDomains)
cover_method (SetCoverMethod)
backend_name (str | None)
- qca.minimizers.minimize_truth_table(qca, outcome_threshold=0.75, consistency_threshold=None, pri_cut=0.0, frequency_cutoff=1, directional_expectations=None, include_remainders_in_parsimonious=True, backend='qmc')[source]¶
Run QCA minimization directly from a model instance.
- Parameters:
qca (QCAEngineBase)
outcome_threshold (float)
consistency_threshold (float | None)
pri_cut (float)
frequency_cutoff (int)
directional_expectations (DirectionalExpectations | None)
include_remainders_in_parsimonious (bool)
backend (str)
- Return type:
- class qca.minimizers.MinimizerBenchmarkResult(records)[source]¶
Tabular benchmark result for one or more minimization backends.
- Parameters:
records (DataFrame)
- qca.minimizers.benchmark_minimizers(qca_model, minimizers=None, repeats=1, suppress_warnings=True, **fit_kwargs)[source]¶
Benchmark several minimizer backends against one QCA model.
- Parameters:
qca_model (Any) – Any PyQCA engine exposing
fit(minimizer=...).minimizers (Sequence[str] | None) – Backend names or aliases. Defaults to all available backends.
repeats (int) – Number of runs per backend.
suppress_warnings (bool) – Suppress expected minimization warnings during timing runs.
**fit_kwargs (Any) – Forwarded to
qca_model.fit().
- Return type: