algomate library

AlgoMate algorithm strategies and heuristic selection APIs.

AlgoSelectorFacade selects applicable strategies from SelectorHint and strategy metadata. Concrete strategies may also be executed directly.

APIs with historical Parallel* names currently execute synchronously. Conditional exports preserve their platform-specific 0.3.0 contracts.

Classes

AhoCorasickAlgorithm
AhoCorasickInput
AhoCorasickResult
AlgoMateFailure
Base class for all AlgoMate failures.
AlgoMetadata
Immutable metadata describing an algorithm's characteristics and requirements.
AlgoSelectorFacade
Main facade for the AlgoMate algorithm selection system.
BellmanFordAlgorithmStrategy<T>
Bellman-Ford shortest path algorithm strategy
BellmanFordInput<T>
Input for Bellman-Ford algorithm
BellmanFordResult<T>
Result of Bellman-Ford algorithm
BenchmarkFailure
Failure during benchmarking operations.
BfsInput<T>
Input for BFS algorithm
BfsResult<T>
Result of BFS traversal
BinaryInsertionSortStrategy
Binary insertion sort that uses binary search to find insertion point.
BinarySearchInsertionStrategy
Generic binary search that finds the insertion point for a target.
BinarySearchStrategy
Binary search strategy for finding elements in sorted lists.
BinarySearchTree<T extends Comparable>
Custom data structure: Binary Search Tree
BinarySearchTreeSearch<T extends Comparable>
Strategy for searching in Binary Search Tree
BinarySearchTreeSort<T extends Comparable>
Strategy for sorting using Binary Search Tree
BlockMultiplyTask
Task for block matrix multiplication
BlockResult
Result of block matrix multiplication
BreadthFirstSearchStrategy<T>
Breadth-First Search (BFS) traversal strategy
BSTNode<T extends Comparable>
Node for Binary Search Tree
BufferedLogger
Buffered logger that collects messages for testing or delayed output.
CatalogStats
Statistics about the strategy catalog.
CircularBuffer<T>
Custom data structure: Circular Buffer (Ring Buffer)
CircularBufferSearch<T>
Strategy for searching in Circular Buffer
CoinChangeDP
Coin Change Problem using Dynamic Programming
CoinChangeInput
Input for Coin Change problem
CoinChangeResult
Result for Coin Change problem
ComplexityRanker
Fast, allocation-free ranking service for time complexities.
ConfigurableLinearSearchStrategy
Generic linear search strategy that can be configured with different targets.
ConfigurableStrategy<I, O, TConfig>
Base class for strategies that can be configured with parameters.
ConsoleLogger
Console logger implementation for development and debugging.
ConsoleLoggerFactory
Console logger factory for creating loggers with consistent configuration.
DartIsolateExecutor
Dart isolate executor implementation for CPU-intensive tasks.
DepthFirstSearchStrategy<T>
Depth-First Search (DFS) traversal strategy
DfsInput<T>
Input for DFS algorithm
DfsResult<T>
Result of DFS traversal
DijkstraAlgorithmStrategy<T>
Dijkstra's shortest path algorithm strategy
DijkstraInput<T>
Input for Dijkstra's algorithm
Edge<T>
Represents an edge in the graph
EditDistanceDP
Edit Distance (Levenshtein Distance) using Dynamic Programming
EditDistanceInput
Input for Edit Distance
EditDistanceResult
Result for Edit Distance
ErrorMessage
Message containing execution error.
ExecuteMessage<T>
Message to execute a function in an isolate.
ExecutionFailure
Failure during strategy execution.
Failure<T, F>
Represents a failed result containing a failure of type F.
FibonacciBottomUpDP
Fibonacci using Bottom-Up DP (Tabulation)
FibonacciInput
Input for Fibonacci
FibonacciOptimizedDP
Space-Optimized Fibonacci using Bottom-Up DP
FibonacciResult
Result for Fibonacci
FibonacciTopDownDP
Fibonacci using Top-Down DP (Memoization)
FloydWarshallAlgorithmStrategy<T>
Floyd-Warshall all-pairs shortest path algorithm strategy
FloydWarshallInput<T>
Input for Floyd-Warshall algorithm
FloydWarshallResult<T>
Result of Floyd-Warshall algorithm
GenericBinarySearch<T extends Comparable>
Generic Binary Search for any Comparable type.
GenericBinarySearchInsertion<T extends Comparable>
Generic Search that returns the insertion point for binary search.
GenericHeapSort<T extends Comparable>
Generic Heap Sort for any Comparable type.
GenericInsertionSort<T extends Comparable>
Generic Insertion Sort for any Comparable type.
GenericLinearSearch<T>
Generic Linear Search for any type with custom equality check.
GenericLinearSearchAll<T>
Generic search that finds all occurrences of a target.
GenericMergeSort<T extends Comparable>
Generic Merge Sort that works with any Comparable type.
GenericPredicateSearch<T>
Generic search with predicate function for complex filtering.
GenericQuickSort<T extends Comparable>
Generic Quick Sort for any Comparable type with hybrid optimization.
Graph<T>
Graph representation using adjacency list
GraphEdge<T>
Represents a graph edge with source and destination
HarnessBenchmarkRunner
Benchmark runner implementation using Dart's built-in benchmark capabilities.
HeapSort
HeapSort implementation using binary max-heap.
HybridMergeSortStrategy
Hybrid merge sort that switches to insertion sort for small subarrays.
InapplicableInputFailure
Failure when input data doesn't meet strategy requirements.
InMemoryStrategyCatalog
In-memory implementation of StrategyCatalog optimized for fast lookup.
InPlaceInsertionSortStrategy
In-place insertion sort strategy that modifies the input list.
InsertionSortStrategy
Insertion sort strategy optimized for small datasets.
IsolateConfig
Configuration for isolate execution.
IsolateExecutor
Port for executing functions in isolates to avoid UI blocking.
IsolateFailure
Failure during async execution in isolate.
IsolateMessage
Base class for isolate messages.
IterativeHeapSort
Iterative HeapSort implementation to avoid recursion overhead.
IterativeMergeSortStrategy
Bottom-up merge sort that avoids recursion for better performance.
KMPInput
KMPResult
KnapsackDP
0/1 Knapsack Problem using Dynamic Programming
KnapsackInput
Input for Knapsack problem
KnapsackResult
Result for Knapsack problem
KnuthMorrisPrattAlgorithm
KosarajuAlgorithmStrategy<T>
Kosaraju's algorithm for strongly connected components
KruskalAlgorithmStrategy<T>
Kruskal's minimum spanning tree algorithm strategy
LCSInput
Input for Longest Common Subsequence
LCSResult
Result for Longest Common Subsequence
LinearSearchStrategy
Linear search strategy for finding elements in unsorted lists.
LinearSearchWithStatsStrategy
Linear search strategy with execution statistics.
LISInput
Input for Longest Increasing Subsequence
LISResult
Result for Longest Increasing Subsequence
LogEntry
A single log entry in the buffered logger.
Logger
Logger port for AlgoMate operations.
LoggerFactory
Factory for creating logger instances
LongestCommonSubsequenceDP
Longest Common Subsequence using Dynamic Programming
LongestIncreasingSubsequenceDP
Longest Increasing Subsequence using Dynamic Programming
LongestPalindromicSubstringAlgorithm
LongestPalindromicSubstringInput
LongestPalindromicSubstringResult
ManacherAlgorithm
ManacherInput
ManacherResult
Matrix
Matrix class for mathematical operations
MatrixChainInput
Input for Matrix Chain Multiplication
MatrixChainMultiplicationDP
Matrix Chain Multiplication using Dynamic Programming
MatrixChainResult
Result for Matrix Chain Multiplication
MemoryLimitFailure
Failure in memory management operations.
MergeSortStrategy
Merge sort strategy for stable, guaranteed O(n log n) sorting.
MinimumSpanningTreeResult<T>
Result of minimum spanning tree algorithms
MockBenchmarkRunner
Mock benchmark runner for testing scenarios.
MockIsolateExecutor
Mock isolate executor for testing purposes.
MstInput<T>
Input for minimum spanning tree algorithms
NoStrategyFailure
Failure when no suitable strategy is found for the given criteria.
OptimizedQuickSort
Optimized QuickSort with median-of-three pivot selection.
ParallelBFS
Synchronous native breadth-first search retained under its legacy name.
ParallelBinarySearch
Synchronous partitioned binary search retained under its legacy name.
ParallelConnectedComponents
Synchronous native connected-components search under its legacy name.
ParallelDFS
Synchronous native depth-first search retained under its legacy name.
ParallelMatrixMultiplication
Synchronous blocked matrix multiplication retained under its legacy name.
ParallelMergeSort
Synchronous chunked merge sort retained under its legacy public name.
ParallelQuickSort
Synchronous quick sort retained under its legacy public name.
ParallelStrassenMultiplication
Synchronous Strassen multiplication retained under its legacy public name.
PrimAlgorithmStrategy<T>
Prim's minimum spanning tree algorithm strategy
PriorityQueue<T extends Comparable>
Custom data structure: Priority Queue (Min-Heap implementation)
PriorityQueueSearch<T extends Comparable>
Strategy for searching in Priority Queue
PriorityQueueSort<T extends Comparable>
Strategy for sorting using Priority Queue (Heap Sort variation)
QuickSort
QuickSort implementation using Lomuto partition scheme.
RabinKarpAlgorithm
RabinKarpInput
RabinKarpResult
ResourceLimitFailure
Failure when resource limits are exceeded.
Result<T, F>
Result type for handling success and failure cases without exceptions. Provides a type-safe way to handle operations that may fail.
ResultMessage<R>
Message containing execution result.
SafeBinarySearchStrategy
Binary search with bounds checking and debug assertions.
SccInput<T>
Input for strongly connected components algorithms
SelectorBuilder
Builder for configuring and creating AlgoSelector instances.
SelectorBuilderResult
Result of the builder containing all configured components.
SelectorHint
Immutable hints to guide algorithm selection and optimization. Provides performance hints without making assumptions about data correctness.
SelectorPolicy
Pure function service for ranking strategy candidates based on hints and heuristics.
ShortestPathResult<T>
Result of shortest path algorithms
SilentLogger
Silent logger that discards all messages (for production).
SimpleBenchmarkRunner
Simple benchmark runner for basic performance testing.
Strategy<I, O>
Abstract base class for all algorithm strategies.
StrategyCatalog
Repository port for storing and retrieving algorithm strategies.
StrategyRecommendation
A recommendation describing which strategy would be selected and why, without executing it.
StrategyRegistrationFailure
Failure in strategy registration or configuration.
StrategySignature
Describes the domain and characteristics of a strategy for catalog lookup. Used to find candidate strategies that match input/output types and categories.
StringCompressionAlgorithm
StringCompressionInput
StringCompressionResult
StronglyConnectedComponentsResult<T>
Result of strongly connected components
SubsetSumDP
Subset Sum Problem using Dynamic Programming
SubsetSumInput
Input for Subset Sum problem
SubsetSumResult
Result for Subset Sum problem
Success<T, F>
Represents a successful result containing a value of type T.
SuffixArrayAlgorithm
SuffixArrayInput
SuffixArrayResult
TarjanAlgorithmStrategy<T>
Tarjan's algorithm for strongly connected components
TimeoutFailure
Failure when a timeout occurs.
TopologicalSortInput<T>
Input for topological sort
TopologicalSortResult<T>
Result of topological sort
TopologicalSortStrategy<T>
Topological sort algorithm strategy
TrieAlgorithm
TrieInput
TrieNode
TrieResult
UnionFind<T>
Union-Find data structure for Kruskal's algorithm
UnionFindResult
Result of a native partial Union-Find computation.
ZAlgorithm
ZAlgorithmInput
ZAlgorithmResult

Enums

CompressionType
IsolateMessageType
Message types for isolate communication.
LogLevel
Log levels for controlling output verbosity.
TimeComplexity
Represents the time complexity of an algorithm using Big O notation. Ordered from best (O(1)) to worst (O(2^n)) for ranking purposes.

Mixins

ExecutionStats<I, O>
Mixin for strategies that can provide execution statistics.

Exceptions / Errors

IsolateExecutionException
Exception thrown when isolate execution fails.
IsolateTimeoutException
Exception thrown when isolate execution times out.