binary-decision-diagram
Version:
A library to create, minimize and optimize binary decision diagrams
45 lines (44 loc) • 1.69 kB
TypeScript
import type { TruthTable } from './types.js';
import { RootNode } from './root-node.js';
/**
* a function that is called each time
* a 'better' bdd was found
*/
export type OptmisiationCallback = (bdd: OptimisationResult) => void;
export interface OptimisationResult {
bdd: RootNode;
truthTable: TruthTable;
}
export type CompareResultsFunction = (a: RootNode, b: RootNode) => RootNode | Promise<RootNode>;
/**
* returns the bdd with less nodes
*/
export declare const defaultCompareResults: CompareResultsFunction;
export interface OptimizeBruteForceInput {
truthTable: TruthTable;
iterations?: number;
onBetterBdd?: OptmisiationCallback;
compareResults?: CompareResultsFunction;
afterBddCreation?: (bdd: RootNode) => void;
initialBdd?: RootNode;
log?: boolean;
}
/**
* optimises the ordering of the boolean functions
* by randomly sorting the array
* and checking the resulting bdd
*/
export declare function optimizeBruteForce({ truthTable, iterations, onBetterBdd, compareResults, afterBddCreation, initialBdd, log }: OptimizeBruteForceInput): Promise<OptimisationResult>;
export type BooleanFunctionReorderMapping = {
[indexAfter: number]: number;
};
export type BooleanFunctionReorderMappingReverse = {
[indexBefore: number]: number;
};
export declare function shuffleBooleanOrdering(truthTable: TruthTable): {
newTable: TruthTable;
mapping: BooleanFunctionReorderMapping;
mappingBeforeToAfter: BooleanFunctionReorderMappingReverse;
};
export declare function changeKeyOrder(oldKey: string, mappingBeforeToAfter: BooleanFunctionReorderMapping): string;
export declare function getArrayWithIndexes(size: number): number[];