1extern crate self as problemreductions;
21
22pub(crate) mod big_o;
23pub mod config;
24pub mod error;
25#[cfg(feature = "example-db")]
26pub mod example_db;
27pub mod export;
28pub mod expr;
29pub mod growth;
32pub mod io;
33pub mod models;
34pub mod parameters;
35pub mod random;
36pub mod registry;
37pub mod rules;
38pub mod solvers;
39pub mod topology;
40pub mod traits;
41#[allow(dead_code)]
42pub(crate) mod truth_table;
43pub mod types;
44pub mod variant;
45
46pub mod prelude {
48 pub use crate::models::algebraic::{
50 AlgebraicEquationsOverGF2, ConsecutiveOnesMatrixAugmentation,
51 MinimumWeightSolutionToLinearEquations, QuadraticAssignment, QuadraticCongruences,
52 SimultaneousIncongruences, SparseMatrixCompression, BMF, QUBO,
53 };
54 pub use crate::models::formula::{
55 CNFClause, CircuitSAT, KSatisfiability, Maximum2Satisfiability, NAESatisfiability,
56 NonTautology, OneInThreeSatisfiability, Planar3Satisfiability, QuantifiedBooleanFormulas,
57 Satisfiability,
58 };
59 pub use crate::models::graph::{
60 AcyclicPartition, BalancedCompleteBipartiteSubgraph, BicliqueCover,
61 BiconnectivityAugmentation, BottleneckTravelingSalesman, BoundedComponentSpanningForest,
62 DegreeConstrainedSpanningTree, DirectedTwoCommodityIntegralFlow, DisjointConnectingPaths,
63 GeneralizedHex, GraphPartitioning, HamiltonianCircuit, HamiltonianPath,
64 HamiltonianPathBetweenTwoVertices, IntegralFlowBundles, IntegralFlowHomologousArcs,
65 IntegralFlowWithMultipliers, IsomorphicSpanningTree, KClique, Kernel, KthBestSpanningTree,
66 LengthBoundedDisjointPaths, LongestPath, MixedChinesePostman, SpinGlass, SteinerTree,
67 StrongConnectivityAugmentation, SubgraphIsomorphism,
68 };
69 pub use crate::models::graph::{
70 KColoring, LongestCircuit, MaxCut, MaximalIS, MaximumClique, MaximumIndependentSet,
71 MaximumLeafSpanningTree, MaximumMatching, MinMaxMulticenter, MinimumCutIntoBoundedSets,
72 MinimumDominatingSet, MinimumDummyActivitiesPert, MinimumFeedbackArcSet,
73 MinimumFeedbackVertexSet, MinimumGeometricConnectedDominatingSet, MinimumGraphBandwidth,
74 MinimumMultiwayCut, MinimumSumMulticenter, MinimumVertexCover, MonochromaticTriangle,
75 MultipleChoiceBranching, MultipleCopyFileAllocation, OptimalLinearArrangement,
76 PartialFeedbackEdgeSet, PartitionIntoCliques, PartitionIntoPathsOfLength2,
77 PartitionIntoTriangles, PathConstrainedNetworkFlow, RootedTreeArrangement, RuralPostman,
78 ShortestWeightConstrainedPath, SteinerTreeInGraphs, TravelingSalesman,
79 UndirectedFlowLowerBounds, UndirectedTwoCommodityIntegralFlow,
80 };
81 pub use crate::models::misc::{
82 AdditionalKey, BinPacking, BoyceCoddNormalFormViolation, CapacityAssignment, CbqRelation,
83 ConjunctiveBooleanQuery, ConjunctiveQueryFoldability, ConsistencyOfDatabaseFrequencyTables,
84 CosineProductIntegration, EnsembleComputation, ExpectedRetrievalCost, Factoring,
85 FlowShopScheduling, GroupingBySwapping, IntegerExpressionMembership, JobShopScheduling,
86 Knapsack, LongestCommonSubsequence, MinimumTardinessSequencing, MultiprocessorScheduling,
87 OpenShopScheduling, PaintShop, Partition, PreemptiveScheduling, ProductionPlanning,
88 QueryArg, RectilinearPictureCompression, ResourceConstrainedScheduling,
89 SchedulingWithIndividualDeadlines, SequencingToMinimizeMaximumCumulativeCost,
90 SequencingToMinimizeTardyTaskWeight, SequencingToMinimizeWeightedCompletionTime,
91 SequencingToMinimizeWeightedTardiness, SequencingWithDeadlinesAndSetUpTimes,
92 SequencingWithReleaseTimesAndDeadlines, SequencingWithinIntervals,
93 ShortestCommonSupersequence, StackerCrane, StaffScheduling, StringToStringCorrection,
94 SubsetProduct, SubsetSum, SumOfSquaresPartition, Term, ThreePartition, TimetableDesign,
95 };
96 pub use crate::models::set::{
97 ComparativeContainment, ConsecutiveSets, ExactCoverBy3Sets, IntegerKnapsack,
98 MaximumSetPacking, MinimumCardinalityKey, MinimumHittingSet, MinimumSetCovering,
99 PrimeAttributeName, RootedTreeStorageAssignment, SetBasis, SetSplitting,
100 };
101
102 pub use crate::rules::{ReduceTo, ReductionResult};
104 pub use crate::solvers::BruteForce;
105 pub use crate::traits::Problem;
106
107 pub use crate::error::{ProblemError, Result};
109 pub use crate::types::{
110 And, Extremum, ExtremumSense, Max, Min, One, Or, ProblemParameters, Sum,
111 };
112}
113
114pub use big_o::big_o_normal_form;
116pub use error::{ProblemError, Result};
117pub use expr::{
118 evaluate_approximate, ApproximationError, AsymptoticAnalysisError, Expr, ParseError,
119};
120pub use growth::Growth;
121pub use registry::{ComplexityClass, ProblemInfo};
122pub use solvers::BruteForce;
123pub use traits::Problem;
124pub use types::{
125 And, Extremum, ExtremumSense, Max, Min, NumericSize, One, Or, ProblemParameters, Sum,
126 WeightElement,
127};
128
129pub use problemreductions_macros::{declare_variants, reduction, register_brute_force, CreateSpec};
131
132pub use inventory;
134
135#[cfg(all(test, feature = "example-db"))]
136#[path = "unit_tests/symbolic_parameter_contracts.rs"]
137mod symbolic_parameter_contracts;
138#[cfg(test)]
139#[path = "unit_tests/graph_models.rs"]
140mod test_graph_models;
141#[cfg(test)]
142#[path = "unit_tests/prelude.rs"]
143mod test_prelude;
144#[cfg(test)]
145#[path = "unit_tests/problem_parameters.rs"]
146mod test_problem_parameters;
147#[cfg(test)]
148#[path = "unit_tests/property.rs"]
149mod test_property;
150#[cfg(test)]
151#[path = "unit_tests/reduction_graph.rs"]
152mod test_reduction_graph;
153#[cfg(test)]
154#[path = "unit_tests/unitdiskmapping_algorithms/mod.rs"]
155mod test_unitdiskmapping_algorithms;