binary-decision-diagram 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/abstract-node.js +173 -0
- package/dist/cjs/src/abstract-node.js.map +1 -0
- package/dist/cjs/src/branches.js +76 -0
- package/dist/cjs/src/branches.js.map +1 -0
- package/dist/cjs/src/create-bdd-from-truth-table.js +38 -0
- package/dist/cjs/src/create-bdd-from-truth-table.js.map +1 -0
- package/dist/cjs/src/ensure-correct-bdd.js +102 -0
- package/dist/cjs/src/ensure-correct-bdd.js.map +1 -0
- package/dist/cjs/src/fill-truth-table.js +26 -0
- package/dist/cjs/src/fill-truth-table.js.map +1 -0
- package/dist/cjs/src/find-similar-node.js +22 -0
- package/dist/cjs/src/find-similar-node.js.map +1 -0
- package/dist/cjs/src/index.es5.d.ts +9 -0
- package/dist/cjs/src/index.es5.js +36 -0
- package/dist/cjs/src/index.es5.js.map +1 -0
- package/dist/cjs/src/index.js +30 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/internal-node.js +46 -0
- package/dist/cjs/src/internal-node.js.map +1 -0
- package/dist/cjs/src/leaf-node.js +34 -0
- package/dist/cjs/src/leaf-node.js.map +1 -0
- package/dist/cjs/src/minimal-string/bdd-to-minimal-string.js +60 -0
- package/dist/cjs/src/minimal-string/bdd-to-minimal-string.js.map +1 -0
- package/dist/cjs/src/minimal-string/bdd-to-simple-bdd.js +24 -0
- package/dist/cjs/src/minimal-string/bdd-to-simple-bdd.js.map +1 -0
- package/dist/cjs/src/minimal-string/index.js +22 -0
- package/dist/cjs/src/minimal-string/index.js.map +1 -0
- package/dist/cjs/src/minimal-string/minimal-string-to-simple-bdd.js +58 -0
- package/dist/cjs/src/minimal-string/minimal-string-to-simple-bdd.js.map +1 -0
- package/dist/cjs/src/minimal-string/resolve-with-simple-bdd.js +21 -0
- package/dist/cjs/src/minimal-string/resolve-with-simple-bdd.js.map +1 -0
- package/dist/cjs/src/minimal-string/string-format.js +61 -0
- package/dist/cjs/src/minimal-string/string-format.js.map +1 -0
- package/dist/cjs/src/optimize-brute-force.js +140 -0
- package/dist/cjs/src/optimize-brute-force.js.map +1 -0
- package/dist/cjs/src/parents.js +43 -0
- package/dist/cjs/src/parents.js.map +1 -0
- package/dist/cjs/src/root-node.js +158 -0
- package/dist/cjs/src/root-node.js.map +1 -0
- package/dist/cjs/src/types.js +3 -0
- package/dist/{src → cjs/src}/types.js.map +1 -1
- package/dist/cjs/src/util.js +127 -0
- package/dist/cjs/src/util.js.map +1 -0
- package/dist/esm/src/abstract-node.d.ts +33 -0
- package/dist/esm/src/abstract-node.js.map +1 -0
- package/dist/esm/src/branches.d.ts +20 -0
- package/dist/esm/src/branches.js.map +1 -0
- package/dist/esm/src/create-bdd-from-truth-table.d.ts +3 -0
- package/dist/esm/src/create-bdd-from-truth-table.js.map +1 -0
- package/dist/esm/src/ensure-correct-bdd.d.ts +8 -0
- package/dist/esm/src/ensure-correct-bdd.js.map +1 -0
- package/dist/esm/src/fill-truth-table.d.ts +6 -0
- package/dist/esm/src/fill-truth-table.js.map +1 -0
- package/dist/esm/src/find-similar-node.d.ts +7 -0
- package/dist/esm/src/find-similar-node.js.map +1 -0
- package/dist/esm/src/index.d.ts +14 -0
- package/dist/esm/src/index.es5.d.ts +9 -0
- package/dist/esm/src/index.es5.js +11 -0
- package/dist/esm/src/index.es5.js.map +1 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/internal-node.d.ts +16 -0
- package/dist/esm/src/internal-node.js.map +1 -0
- package/dist/esm/src/leaf-node.d.ts +10 -0
- package/dist/esm/src/leaf-node.js.map +1 -0
- package/dist/esm/src/minimal-string/bdd-to-minimal-string.d.ts +8 -0
- package/dist/esm/src/minimal-string/bdd-to-minimal-string.js.map +1 -0
- package/dist/esm/src/minimal-string/bdd-to-simple-bdd.d.ts +11 -0
- package/dist/esm/src/minimal-string/bdd-to-simple-bdd.js.map +1 -0
- package/dist/esm/src/minimal-string/index.d.ts +5 -0
- package/dist/esm/src/minimal-string/index.js.map +1 -0
- package/dist/esm/src/minimal-string/minimal-string-to-simple-bdd.d.ts +2 -0
- package/dist/esm/src/minimal-string/minimal-string-to-simple-bdd.js.map +1 -0
- package/dist/esm/src/minimal-string/resolve-with-simple-bdd.d.ts +2 -0
- package/dist/esm/src/minimal-string/resolve-with-simple-bdd.js.map +1 -0
- package/dist/esm/src/minimal-string/string-format.d.ts +9 -0
- package/dist/esm/src/minimal-string/string-format.js.map +1 -0
- package/dist/esm/src/optimize-brute-force.d.ts +43 -0
- package/dist/esm/src/optimize-brute-force.js.map +1 -0
- package/dist/esm/src/package.json +1 -0
- package/dist/esm/src/parents.d.ts +15 -0
- package/dist/esm/src/parents.js.map +1 -0
- package/dist/esm/src/root-node.d.ts +28 -0
- package/dist/esm/src/root-node.js.map +1 -0
- package/dist/esm/src/types.d.ts +24 -0
- package/dist/esm/src/types.js.map +1 -0
- package/dist/esm/src/util.d.ts +26 -0
- package/dist/esm/src/util.js.map +1 -0
- package/package.json +16 -6
- package/src/index.es5.ts +12 -0
- package/dist/src/abstract-node.js.map +0 -1
- package/dist/src/branches.js.map +0 -1
- package/dist/src/create-bdd-from-truth-table.js.map +0 -1
- package/dist/src/ensure-correct-bdd.js.map +0 -1
- package/dist/src/fill-truth-table.js.map +0 -1
- package/dist/src/find-similar-node.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/internal-node.js.map +0 -1
- package/dist/src/leaf-node.js.map +0 -1
- package/dist/src/minimal-string/bdd-to-minimal-string.js.map +0 -1
- package/dist/src/minimal-string/bdd-to-simple-bdd.js.map +0 -1
- package/dist/src/minimal-string/index.js.map +0 -1
- package/dist/src/minimal-string/minimal-string-to-simple-bdd.js.map +0 -1
- package/dist/src/minimal-string/resolve-with-simple-bdd.js.map +0 -1
- package/dist/src/minimal-string/string-format.js.map +0 -1
- package/dist/src/optimize-brute-force.js.map +0 -1
- package/dist/src/parents.js.map +0 -1
- package/dist/src/root-node.js.map +0 -1
- package/dist/src/util.js.map +0 -1
- /package/dist/{src → cjs/src}/abstract-node.d.ts +0 -0
- /package/dist/{src → cjs/src}/branches.d.ts +0 -0
- /package/dist/{src → cjs/src}/create-bdd-from-truth-table.d.ts +0 -0
- /package/dist/{src → cjs/src}/ensure-correct-bdd.d.ts +0 -0
- /package/dist/{src → cjs/src}/fill-truth-table.d.ts +0 -0
- /package/dist/{src → cjs/src}/find-similar-node.d.ts +0 -0
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/internal-node.d.ts +0 -0
- /package/dist/{src → cjs/src}/leaf-node.d.ts +0 -0
- /package/dist/{src → cjs/src}/minimal-string/bdd-to-minimal-string.d.ts +0 -0
- /package/dist/{src → cjs/src}/minimal-string/bdd-to-simple-bdd.d.ts +0 -0
- /package/dist/{src → cjs/src}/minimal-string/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/minimal-string/minimal-string-to-simple-bdd.d.ts +0 -0
- /package/dist/{src → cjs/src}/minimal-string/resolve-with-simple-bdd.d.ts +0 -0
- /package/dist/{src → cjs/src}/minimal-string/string-format.d.ts +0 -0
- /package/dist/{src → cjs/src}/optimize-brute-force.d.ts +0 -0
- /package/dist/{src → cjs/src}/parents.d.ts +0 -0
- /package/dist/{src → cjs/src}/root-node.d.ts +0 -0
- /package/dist/{src → cjs/src}/types.d.ts +0 -0
- /package/dist/{src → cjs/src}/util.d.ts +0 -0
- /package/dist/{src → esm/src}/abstract-node.js +0 -0
- /package/dist/{src → esm/src}/branches.js +0 -0
- /package/dist/{src → esm/src}/create-bdd-from-truth-table.js +0 -0
- /package/dist/{src → esm/src}/ensure-correct-bdd.js +0 -0
- /package/dist/{src → esm/src}/fill-truth-table.js +0 -0
- /package/dist/{src → esm/src}/find-similar-node.js +0 -0
- /package/dist/{src → esm/src}/index.js +0 -0
- /package/dist/{src → esm/src}/internal-node.js +0 -0
- /package/dist/{src → esm/src}/leaf-node.js +0 -0
- /package/dist/{src → esm/src}/minimal-string/bdd-to-minimal-string.js +0 -0
- /package/dist/{src → esm/src}/minimal-string/bdd-to-simple-bdd.js +0 -0
- /package/dist/{src → esm/src}/minimal-string/index.js +0 -0
- /package/dist/{src → esm/src}/minimal-string/minimal-string-to-simple-bdd.js +0 -0
- /package/dist/{src → esm/src}/minimal-string/resolve-with-simple-bdd.js +0 -0
- /package/dist/{src → esm/src}/minimal-string/string-format.js +0 -0
- /package/dist/{src → esm/src}/optimize-brute-force.js +0 -0
- /package/dist/{src → esm/src}/parents.js +0 -0
- /package/dist/{src → esm/src}/root-node.js +0 -0
- /package/dist/{src → esm/src}/types.js +0 -0
- /package/dist/{src → esm/src}/util.js +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nodeToString = exports.bddToMinimalString = void 0;
|
|
4
|
+
const string_format_js_1 = require("./string-format.js");
|
|
5
|
+
const string_format_js_2 = require("./string-format.js");
|
|
6
|
+
function bddToMinimalString(bdd) {
|
|
7
|
+
let ret = '';
|
|
8
|
+
let currentCharCode = string_format_js_2.FIRST_CHAR_CODE_FOR_ID;
|
|
9
|
+
// add leaf node count
|
|
10
|
+
const leafNodeAmount = bdd.getLeafNodes().length;
|
|
11
|
+
if (leafNodeAmount > 99) {
|
|
12
|
+
throw new Error('cannot build string with too many leaf nodes');
|
|
13
|
+
}
|
|
14
|
+
ret += leafNodeAmount.toString().padStart(2, '0');
|
|
15
|
+
const levelsHighestFirst = bdd.levels.slice().reverse();
|
|
16
|
+
const idByNode = new Map();
|
|
17
|
+
levelsHighestFirst.forEach(level => {
|
|
18
|
+
const nodes = bdd.getNodesOfLevel(level);
|
|
19
|
+
nodes.forEach(node => {
|
|
20
|
+
const stringRep = nodeToString(node, idByNode, currentCharCode);
|
|
21
|
+
currentCharCode = stringRep.nextCode;
|
|
22
|
+
idByNode.set(node, stringRep.id);
|
|
23
|
+
ret += stringRep.str;
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
return ret;
|
|
27
|
+
}
|
|
28
|
+
exports.bddToMinimalString = bddToMinimalString;
|
|
29
|
+
function nodeToString(node, idByNode, lastCode) {
|
|
30
|
+
const nextId = (0, string_format_js_1.getNextCharId)(lastCode);
|
|
31
|
+
switch (node.type) {
|
|
32
|
+
case 'LeafNode':
|
|
33
|
+
const valueChar = (0, string_format_js_1.getCharOfValue)(node.asLeafNode().value);
|
|
34
|
+
return {
|
|
35
|
+
id: nextId.char,
|
|
36
|
+
nextCode: nextId.nextCode,
|
|
37
|
+
str: nextId.char + valueChar
|
|
38
|
+
};
|
|
39
|
+
case 'InternalNode':
|
|
40
|
+
const branch0Id = idByNode.get(node.asInternalNode().branches.getBranch('0'));
|
|
41
|
+
const branch1Id = idByNode.get(node.asInternalNode().branches.getBranch('1'));
|
|
42
|
+
return {
|
|
43
|
+
id: nextId.char,
|
|
44
|
+
nextCode: nextId.nextCode,
|
|
45
|
+
str: nextId.char + branch0Id + branch1Id + (0, string_format_js_1.getCharOfLevel)(node.level)
|
|
46
|
+
};
|
|
47
|
+
case 'RootNode':
|
|
48
|
+
const branch0IdRoot = idByNode.get(node.asRootNode().branches.getBranch('0'));
|
|
49
|
+
const branch1IdRoot = idByNode.get(node.asRootNode().branches.getBranch('1'));
|
|
50
|
+
return {
|
|
51
|
+
id: nextId.char,
|
|
52
|
+
nextCode: nextId.nextCode,
|
|
53
|
+
str: '' + branch0IdRoot + branch1IdRoot + (0, string_format_js_1.getCharOfLevel)(node.level)
|
|
54
|
+
};
|
|
55
|
+
default:
|
|
56
|
+
throw new Error('unknown node type');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.nodeToString = nodeToString;
|
|
60
|
+
//# sourceMappingURL=bdd-to-minimal-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bdd-to-minimal-string.js","sourceRoot":"","sources":["../../../../src/minimal-string/bdd-to-minimal-string.ts"],"names":[],"mappings":";;;AAEA,yDAAmF;AACnF,yDAE4B;AAG5B,SAAgB,kBAAkB,CAAC,GAAa;IAC5C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,eAAe,GAAG,yCAAsB,CAAC;IAE7C,sBAAsB;IACtB,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC;IACjD,IAAI,cAAc,GAAG,EAAE,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACnE;IAED,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAElD,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,QAAQ,GAA8B,IAAI,GAAG,EAAE,CAAC;IACtD,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAChE,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACjC,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACf,CAAC;AAxBD,gDAwBC;AAED,SAAgB,YAAY,CACxB,IAAkB,EAClB,QAAmC,EACnC,QAAgB;IAMhB,MAAM,MAAM,GAAG,IAAA,gCAAa,EAAC,QAAQ,CAAC,CAAC;IACvC,QAAQ,IAAI,CAAC,IAAI,EAAE;QACf,KAAK,UAAU;YACX,MAAM,SAAS,GAAG,IAAA,iCAAc,EAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO;gBACH,EAAE,EAAE,MAAM,CAAC,IAAI;gBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS;aAC/B,CAAC;QACN,KAAK,cAAc;YACf,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,OAAO;gBACH,EAAE,EAAE,MAAM,CAAC,IAAI;gBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,IAAA,iCAAc,EAAC,IAAI,CAAC,KAAK,CAAC;aACxE,CAAC;QACN,KAAK,UAAU;YACX,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,OAAO;gBACH,EAAE,EAAE,MAAM,CAAC,IAAI;gBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,EAAE,EAAE,GAAG,aAAa,GAAG,aAAa,GAAG,IAAA,iCAAc,EAAC,IAAI,CAAC,KAAK,CAAC;aACvE,CAAC;QACN;YACI,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;KAC5C;AACL,CAAC;AArCD,oCAqCC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nodeToSimpleBddNode = exports.bddToSimpleBdd = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @recursive
|
|
6
|
+
*/
|
|
7
|
+
function bddToSimpleBdd(bdd) {
|
|
8
|
+
return nodeToSimpleBddNode(bdd);
|
|
9
|
+
}
|
|
10
|
+
exports.bddToSimpleBdd = bddToSimpleBdd;
|
|
11
|
+
/**
|
|
12
|
+
* @recursive
|
|
13
|
+
*/
|
|
14
|
+
function nodeToSimpleBddNode(node) {
|
|
15
|
+
const branch0 = node.branches.getBranch('0');
|
|
16
|
+
const branch1 = node.branches.getBranch('1');
|
|
17
|
+
return {
|
|
18
|
+
l: node.level,
|
|
19
|
+
0: branch0.isLeafNode() ? branch0.asLeafNode().value : nodeToSimpleBddNode(branch0),
|
|
20
|
+
1: branch1.isLeafNode() ? branch1.asLeafNode().value : nodeToSimpleBddNode(branch1),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.nodeToSimpleBddNode = nodeToSimpleBddNode;
|
|
24
|
+
//# sourceMappingURL=bdd-to-simple-bdd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bdd-to-simple-bdd.js","sourceRoot":"","sources":["../../../../src/minimal-string/bdd-to-simple-bdd.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAa;IACxC,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAFD,wCAEC;AAGD;;GAEG;AACH,SAAgB,mBAAmB,CAC/B,IAAkB;IAGlB,MAAM,OAAO,GAAkB,IAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAkB,IAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAE7E,OAAO;QACH,CAAC,EAAE,IAAI,CAAC,KAAK;QACb,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;QACnF,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;KACtF,CAAC;AACN,CAAC;AAZD,kDAYC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./bdd-to-minimal-string.js"), exports);
|
|
18
|
+
__exportStar(require("./minimal-string-to-simple-bdd.js"), exports);
|
|
19
|
+
__exportStar(require("./resolve-with-simple-bdd.js"), exports);
|
|
20
|
+
__exportStar(require("./string-format.js"), exports);
|
|
21
|
+
__exportStar(require("./bdd-to-simple-bdd.js"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/minimal-string/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,oEAAkD;AAClD,+DAA6C;AAC7C,qDAAmC;AACnC,yDAAuC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.minimalStringToSimpleBdd = void 0;
|
|
4
|
+
const util_js_1 = require("../util.js");
|
|
5
|
+
const string_format_js_1 = require("./string-format.js");
|
|
6
|
+
function minimalStringToSimpleBdd(str) {
|
|
7
|
+
const nodesById = new Map();
|
|
8
|
+
// parse leaf nodes
|
|
9
|
+
const leafNodeAmount = parseInt(str.charAt(0) + str.charAt(1), 10);
|
|
10
|
+
const lastLeafNodeChar = (2 + leafNodeAmount * 2);
|
|
11
|
+
const leafNodeChars = str.substring(2, lastLeafNodeChar);
|
|
12
|
+
const leafNodeChunks = (0, util_js_1.splitStringToChunks)(leafNodeChars, 2);
|
|
13
|
+
for (let i = 0; i < leafNodeChunks.length; i++) {
|
|
14
|
+
const chunk = leafNodeChunks[i];
|
|
15
|
+
const id = chunk.charAt(0);
|
|
16
|
+
const value = (0, string_format_js_1.getNumberOfChar)(chunk.charAt(1));
|
|
17
|
+
nodesById.set(id, value);
|
|
18
|
+
}
|
|
19
|
+
// parse internal nodes
|
|
20
|
+
const internalNodeChars = str.substring(lastLeafNodeChar, str.length - 3);
|
|
21
|
+
const internalNodeChunks = (0, util_js_1.splitStringToChunks)(internalNodeChars, 4);
|
|
22
|
+
for (let i = 0; i < internalNodeChunks.length; i++) {
|
|
23
|
+
const chunk = internalNodeChunks[i];
|
|
24
|
+
const id = chunk.charAt(0);
|
|
25
|
+
const idOf0Branch = chunk.charAt(1);
|
|
26
|
+
const idOf1Branch = chunk.charAt(2);
|
|
27
|
+
const level = (0, string_format_js_1.getNumberOfChar)(chunk.charAt(3));
|
|
28
|
+
if (!nodesById.has(idOf0Branch)) {
|
|
29
|
+
throw new Error('missing node with id ' + idOf0Branch);
|
|
30
|
+
}
|
|
31
|
+
if (!nodesById.has(idOf1Branch)) {
|
|
32
|
+
throw new Error('missing node with id ' + idOf1Branch);
|
|
33
|
+
}
|
|
34
|
+
const node0 = nodesById.get(idOf0Branch);
|
|
35
|
+
const node1 = nodesById.get(idOf1Branch);
|
|
36
|
+
const node = {
|
|
37
|
+
l: level,
|
|
38
|
+
0: node0,
|
|
39
|
+
1: node1
|
|
40
|
+
};
|
|
41
|
+
nodesById.set(id, node);
|
|
42
|
+
}
|
|
43
|
+
// parse root node
|
|
44
|
+
const last3 = str.slice(-3);
|
|
45
|
+
const idOf0 = last3.charAt(0);
|
|
46
|
+
const idOf1 = last3.charAt(1);
|
|
47
|
+
const levelOfRoot = (0, string_format_js_1.getNumberOfChar)(last3.charAt(2));
|
|
48
|
+
const nodeOf0 = nodesById.get(idOf0);
|
|
49
|
+
const nodeOf1 = nodesById.get(idOf1);
|
|
50
|
+
const rootNode = {
|
|
51
|
+
l: levelOfRoot,
|
|
52
|
+
0: nodeOf0,
|
|
53
|
+
1: nodeOf1,
|
|
54
|
+
};
|
|
55
|
+
return rootNode;
|
|
56
|
+
}
|
|
57
|
+
exports.minimalStringToSimpleBdd = minimalStringToSimpleBdd;
|
|
58
|
+
//# sourceMappingURL=minimal-string-to-simple-bdd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimal-string-to-simple-bdd.js","sourceRoot":"","sources":["../../../../src/minimal-string/minimal-string-to-simple-bdd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveWithSimpleBdd = void 0;
|
|
4
|
+
const util_js_1 = require("../util.js");
|
|
5
|
+
function resolveWithSimpleBdd(simpleBdd, fns, input) {
|
|
6
|
+
let currentNode = simpleBdd;
|
|
7
|
+
let currentLevel = simpleBdd.l;
|
|
8
|
+
while (true) {
|
|
9
|
+
const booleanResult = fns[currentLevel](input);
|
|
10
|
+
const branchKey = (0, util_js_1.booleanToBooleanString)(booleanResult);
|
|
11
|
+
currentNode = currentNode[branchKey];
|
|
12
|
+
if (typeof currentNode === 'number' || typeof currentNode === 'string') {
|
|
13
|
+
return currentNode;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
currentLevel = currentNode.l;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.resolveWithSimpleBdd = resolveWithSimpleBdd;
|
|
21
|
+
//# sourceMappingURL=resolve-with-simple-bdd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-with-simple-bdd.js","sourceRoot":"","sources":["../../../../src/minimal-string/resolve-with-simple-bdd.ts"],"names":[],"mappings":";;;AAKA,wCAAoD;AAEpD,SAAgB,oBAAoB,CAChC,SAAoB,EACpB,GAAsB,EACtB,KAAU;IAEV,IAAI,WAAW,GAAkC,SAAS,CAAC;IAC3D,IAAI,YAAY,GAAW,SAAS,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,EAAE;QACT,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAA,gCAAsB,EAAC,aAAa,CAAC,CAAC;QACxD,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACpE,OAAO,WAAkB,CAAC;SAC7B;aAAM;YACH,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;SAChC;KACJ;AACL,CAAC;AAjBD,oDAiBC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
let t = 0;
|
|
4
|
+
while (t < 10000) {
|
|
5
|
+
const char = String.fromCharCode(t);
|
|
6
|
+
console.log(t + ' : ' + char);
|
|
7
|
+
t++;
|
|
8
|
+
}
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.getNextCharId = exports.FIRST_CHAR_CODE_FOR_ID = exports.getCharOfValue = exports.getNumberOfChar = exports.getCharOfLevel = exports.CHAR_CODE_OFFSET = void 0;
|
|
12
|
+
/*
|
|
13
|
+
|
|
14
|
+
To have a really small string representation, we have to hack some stuff
|
|
15
|
+
which makes is complicated but effective.
|
|
16
|
+
|
|
17
|
+
Rules for the string:
|
|
18
|
+
- The string starts with a number like '23' that defines how many leaf-nodes we have
|
|
19
|
+
- leaf nodes consist of two chars like 'ab'
|
|
20
|
+
- the first char is the id
|
|
21
|
+
- the second the value is a number you can get via String.charCodeAt()
|
|
22
|
+
- Internal nodes have four chars like 'abcd'
|
|
23
|
+
- the first char is the id
|
|
24
|
+
- the second char is the id of the 0-branch
|
|
25
|
+
- the third char is the id of the 1-branch
|
|
26
|
+
- the last char is the id of the boolean-function (= level)
|
|
27
|
+
- The last 3 chars of the string is the root node like 'abc'
|
|
28
|
+
- it looks like the internal-node but without the id (first char)
|
|
29
|
+
|
|
30
|
+
*/
|
|
31
|
+
// we use this because 39 is the quotes which causes problems
|
|
32
|
+
exports.CHAR_CODE_OFFSET = 40; // String.fromCharCode(33) === ')'
|
|
33
|
+
function getCharOfLevel(level) {
|
|
34
|
+
const charCode = exports.CHAR_CODE_OFFSET + level;
|
|
35
|
+
return String.fromCharCode(charCode);
|
|
36
|
+
}
|
|
37
|
+
exports.getCharOfLevel = getCharOfLevel;
|
|
38
|
+
function getNumberOfChar(char) {
|
|
39
|
+
const charCode = char.charCodeAt(0);
|
|
40
|
+
return charCode - exports.CHAR_CODE_OFFSET;
|
|
41
|
+
}
|
|
42
|
+
exports.getNumberOfChar = getNumberOfChar;
|
|
43
|
+
function getCharOfValue(value) {
|
|
44
|
+
const charCode = exports.CHAR_CODE_OFFSET + value;
|
|
45
|
+
return String.fromCharCode(charCode);
|
|
46
|
+
}
|
|
47
|
+
exports.getCharOfValue = getCharOfValue;
|
|
48
|
+
exports.FIRST_CHAR_CODE_FOR_ID = 97; // String.fromCharCode(97) === 'a'
|
|
49
|
+
function getNextCharId(lastCode) {
|
|
50
|
+
// jump these codes because they look strange
|
|
51
|
+
if (lastCode >= 128 && lastCode <= 160) {
|
|
52
|
+
lastCode = 161;
|
|
53
|
+
}
|
|
54
|
+
const char = String.fromCharCode(lastCode);
|
|
55
|
+
return {
|
|
56
|
+
char,
|
|
57
|
+
nextCode: lastCode + 1
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
exports.getNextCharId = getNextCharId;
|
|
61
|
+
//# sourceMappingURL=string-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-format.js","sourceRoot":"","sources":["../../../../src/minimal-string/string-format.ts"],"names":[],"mappings":";AAAA;;;;;;;EAOE;;;AAEF;;;;;;;;;;;;;;;;;;EAkBE;AAEF,6DAA6D;AAChD,QAAA,gBAAgB,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAGtE,SAAgB,cAAc,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG,wBAAgB,GAAG,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,wCAGC;AAED,SAAgB,eAAe,CAAC,IAAY;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,QAAQ,GAAG,wBAAgB,CAAC;AACvC,CAAC;AAHD,0CAGC;AAED,SAAgB,cAAc,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG,wBAAgB,GAAG,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,wCAGC;AAGY,QAAA,sBAAsB,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAE5E,SAAgB,aAAa,CAAC,QAAgB;IAK1C,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,EAAE;QACpC,QAAQ,GAAG,GAAG,CAAC;KAClB;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACH,IAAI;QACJ,QAAQ,EAAE,QAAQ,GAAG,CAAC;KACzB,CAAC;AACN,CAAC;AAfD,sCAeC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getArrayWithIndexes = exports.changeKeyOrder = exports.shuffleBooleanOrdering = exports.optimizeBruteForce = exports.defaultCompareResults = void 0;
|
|
4
|
+
const create_bdd_from_truth_table_js_1 = require("./create-bdd-from-truth-table.js");
|
|
5
|
+
const util_js_1 = require("./util.js");
|
|
6
|
+
/**
|
|
7
|
+
* returns the bdd with less nodes
|
|
8
|
+
*/
|
|
9
|
+
const defaultCompareResults = function (a, b) {
|
|
10
|
+
if (a.countNodes() <= b.countNodes()) {
|
|
11
|
+
return a;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return b;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.defaultCompareResults = defaultCompareResults;
|
|
18
|
+
/**
|
|
19
|
+
* optimises the ordering of the boolean functions
|
|
20
|
+
* by randomly sorting the array
|
|
21
|
+
* and checking the resulting bdd
|
|
22
|
+
*/
|
|
23
|
+
async function optimizeBruteForce({ truthTable, iterations = Infinity, onBetterBdd = () => null, compareResults = exports.defaultCompareResults, afterBddCreation = () => null, log = false }) {
|
|
24
|
+
const initialBdd = (0, create_bdd_from_truth_table_js_1.createBddFromTruthTable)(truthTable);
|
|
25
|
+
afterBddCreation(initialBdd);
|
|
26
|
+
initialBdd.minimize();
|
|
27
|
+
let currentBestResult = {
|
|
28
|
+
truthTable,
|
|
29
|
+
bdd: initialBdd
|
|
30
|
+
};
|
|
31
|
+
if (log) {
|
|
32
|
+
initialBdd.log();
|
|
33
|
+
console.log('initial nodes amount: ' + initialBdd.countNodes());
|
|
34
|
+
}
|
|
35
|
+
let t = 0;
|
|
36
|
+
while (t < iterations) {
|
|
37
|
+
t++;
|
|
38
|
+
if (log) {
|
|
39
|
+
console.log('-'.repeat(50));
|
|
40
|
+
console.log('optimizeBruteForce() itterate once');
|
|
41
|
+
}
|
|
42
|
+
const shuffledOrdering = shuffleBooleanOrdering(truthTable);
|
|
43
|
+
const nextBdd = (0, create_bdd_from_truth_table_js_1.createBddFromTruthTable)(shuffledOrdering.newTable);
|
|
44
|
+
// change the levels of each node
|
|
45
|
+
const newNodesByLevel = new Map();
|
|
46
|
+
const lastLevel = (0, util_js_1.lastOfArray)(nextBdd.getLevels());
|
|
47
|
+
const newSortedLevels = [];
|
|
48
|
+
nextBdd.getLevels()
|
|
49
|
+
.filter(level => level !== lastLevel)
|
|
50
|
+
.forEach(level => {
|
|
51
|
+
const newLevel = shuffledOrdering.mappingBeforeToAfter[level];
|
|
52
|
+
newSortedLevels.push(newLevel);
|
|
53
|
+
const levelSet = new Set();
|
|
54
|
+
newNodesByLevel.set(newLevel, levelSet);
|
|
55
|
+
nextBdd.getNodesOfLevel(level).forEach(node => {
|
|
56
|
+
node.level = newLevel;
|
|
57
|
+
levelSet.add(node);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
const lastLevelSet = new Set();
|
|
61
|
+
nextBdd.getNodesOfLevel(lastLevel).forEach(node => lastLevelSet.add(node));
|
|
62
|
+
newNodesByLevel.set(lastLevel, lastLevelSet);
|
|
63
|
+
newSortedLevels.push(lastLevel);
|
|
64
|
+
nextBdd.nodesByLevel = newNodesByLevel;
|
|
65
|
+
nextBdd.levels = newSortedLevels;
|
|
66
|
+
afterBddCreation(nextBdd);
|
|
67
|
+
nextBdd.minimize();
|
|
68
|
+
if (log) {
|
|
69
|
+
console.log('got new bdd with nodes amount of ' + nextBdd.countNodes());
|
|
70
|
+
// nextBdd.log();
|
|
71
|
+
console.dir(shuffledOrdering.mappingBeforeToAfter);
|
|
72
|
+
}
|
|
73
|
+
const betterBdd = await compareResults(currentBestResult.bdd, nextBdd);
|
|
74
|
+
if (betterBdd.type !== 'RootNode') {
|
|
75
|
+
throw new Error('compareResults did not return a bdd');
|
|
76
|
+
}
|
|
77
|
+
if (betterBdd === nextBdd) {
|
|
78
|
+
if (log) {
|
|
79
|
+
console.log('#'.repeat(50));
|
|
80
|
+
console.log('found better bdd ' + nextBdd.countNodes());
|
|
81
|
+
}
|
|
82
|
+
currentBestResult = {
|
|
83
|
+
bdd: nextBdd,
|
|
84
|
+
truthTable: shuffledOrdering.newTable
|
|
85
|
+
};
|
|
86
|
+
onBetterBdd(currentBestResult);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return currentBestResult;
|
|
90
|
+
}
|
|
91
|
+
exports.optimizeBruteForce = optimizeBruteForce;
|
|
92
|
+
function shuffleBooleanOrdering(truthTable) {
|
|
93
|
+
const firstKey = (0, util_js_1.firstKeyOfMap)(truthTable);
|
|
94
|
+
const arrayWithIndexes = getArrayWithIndexes(firstKey.length);
|
|
95
|
+
const shuffled = (0, util_js_1.shuffleArray)(arrayWithIndexes);
|
|
96
|
+
const mapping = {};
|
|
97
|
+
const mappingBeforeToAfter = {};
|
|
98
|
+
shuffled.forEach((indexBefore, indexAfter) => {
|
|
99
|
+
mapping[indexAfter] = indexBefore;
|
|
100
|
+
mappingBeforeToAfter[indexBefore] = indexAfter;
|
|
101
|
+
});
|
|
102
|
+
const newTable = new Map();
|
|
103
|
+
for (const [key, value] of truthTable.entries()) {
|
|
104
|
+
const newKey = changeKeyOrder(key, mapping);
|
|
105
|
+
newTable.set(newKey, value);
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
newTable,
|
|
109
|
+
mapping,
|
|
110
|
+
mappingBeforeToAfter
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
exports.shuffleBooleanOrdering = shuffleBooleanOrdering;
|
|
114
|
+
function changeKeyOrder(oldKey, mappingBeforeToAfter) {
|
|
115
|
+
const chars = oldKey
|
|
116
|
+
.split('')
|
|
117
|
+
.map((char, indexBefore) => {
|
|
118
|
+
return {
|
|
119
|
+
char,
|
|
120
|
+
indexBefore,
|
|
121
|
+
indexAfter: mappingBeforeToAfter[indexBefore]
|
|
122
|
+
};
|
|
123
|
+
})
|
|
124
|
+
.sort((a, b) => a.indexAfter - b.indexAfter)
|
|
125
|
+
.map(charObj => charObj.char)
|
|
126
|
+
.join('');
|
|
127
|
+
return chars;
|
|
128
|
+
}
|
|
129
|
+
exports.changeKeyOrder = changeKeyOrder;
|
|
130
|
+
function getArrayWithIndexes(size) {
|
|
131
|
+
const ret = [];
|
|
132
|
+
let last = 0;
|
|
133
|
+
while (last < size) {
|
|
134
|
+
ret.push(last);
|
|
135
|
+
last++;
|
|
136
|
+
}
|
|
137
|
+
return ret;
|
|
138
|
+
}
|
|
139
|
+
exports.getArrayWithIndexes = getArrayWithIndexes;
|
|
140
|
+
//# sourceMappingURL=optimize-brute-force.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimize-brute-force.js","sourceRoot":"","sources":["../../../src/optimize-brute-force.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Parents = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* represents the parents of a single node
|
|
6
|
+
*/
|
|
7
|
+
class Parents {
|
|
8
|
+
node;
|
|
9
|
+
parents = new Set();
|
|
10
|
+
constructor(node) {
|
|
11
|
+
this.node = node;
|
|
12
|
+
}
|
|
13
|
+
remove(node) {
|
|
14
|
+
this.parents.delete(node);
|
|
15
|
+
if (this.parents.size === 0) {
|
|
16
|
+
this.node.remove();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
getAll() {
|
|
20
|
+
return Array.from(this.parents);
|
|
21
|
+
}
|
|
22
|
+
add(node) {
|
|
23
|
+
if (this.node.level === node.level) {
|
|
24
|
+
throw new Error('a node cannot be parent of a node with the same level');
|
|
25
|
+
}
|
|
26
|
+
this.parents.add(node);
|
|
27
|
+
}
|
|
28
|
+
has(node) {
|
|
29
|
+
return this.parents.has(node);
|
|
30
|
+
}
|
|
31
|
+
toString() {
|
|
32
|
+
const ret = [];
|
|
33
|
+
for (const parent of this.parents) {
|
|
34
|
+
ret.push(parent.id);
|
|
35
|
+
}
|
|
36
|
+
return ret.join(', ');
|
|
37
|
+
}
|
|
38
|
+
get size() {
|
|
39
|
+
return this.parents.size;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.Parents = Parents;
|
|
43
|
+
//# sourceMappingURL=parents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parents.js","sourceRoot":"","sources":["../../../src/parents.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACH,MAAa,OAAO;IAKL;IAHH,OAAO,GAAqB,IAAI,GAAG,EAAE,CAAC;IAE9C,YACW,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;IACxB,CAAC;IAEE,MAAM,CAAC,IAAiB;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;IACL,CAAC;IAEM,MAAM;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,GAAG,CAAC,IAAiB;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC5E;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,IAAiB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ;QACJ,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;CACJ;AA1CD,0BA0CC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RootNode = void 0;
|
|
4
|
+
const abstract_node_js_1 = require("./abstract-node.js");
|
|
5
|
+
const branches_js_1 = require("./branches.js");
|
|
6
|
+
const util_js_1 = require("./util.js");
|
|
7
|
+
const index_js_1 = require("./minimal-string/index.js");
|
|
8
|
+
class RootNode extends abstract_node_js_1.AbstractNode {
|
|
9
|
+
branches = new branches_js_1.Branches(this);
|
|
10
|
+
levels = [];
|
|
11
|
+
nodesByLevel = new Map();
|
|
12
|
+
constructor() {
|
|
13
|
+
super(0, null, 'RootNode');
|
|
14
|
+
this.levels.push(0);
|
|
15
|
+
const level0Set = new Set();
|
|
16
|
+
level0Set.add(this);
|
|
17
|
+
this.nodesByLevel.set(0, level0Set);
|
|
18
|
+
}
|
|
19
|
+
addNode(node) {
|
|
20
|
+
const level = node.level;
|
|
21
|
+
if (!this.levels.includes(level)) {
|
|
22
|
+
this.levels.push(level);
|
|
23
|
+
}
|
|
24
|
+
this.ensureLevelSetExists(level);
|
|
25
|
+
const set = this.nodesByLevel.get(level);
|
|
26
|
+
set?.add(node);
|
|
27
|
+
}
|
|
28
|
+
removeNode(node) {
|
|
29
|
+
const set = this.nodesByLevel.get(node.level);
|
|
30
|
+
if (!set.has(node)) {
|
|
31
|
+
throw new Error('removed non-existing node ' + node.id);
|
|
32
|
+
}
|
|
33
|
+
set.delete(node);
|
|
34
|
+
}
|
|
35
|
+
ensureLevelSetExists(level) {
|
|
36
|
+
if (!this.nodesByLevel.has(level)) {
|
|
37
|
+
this.nodesByLevel.set(level, new Set());
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
getLevels() {
|
|
41
|
+
return Array.from(this.levels).sort((a, b) => a - b);
|
|
42
|
+
}
|
|
43
|
+
getNodesOfLevel(level) {
|
|
44
|
+
this.ensureLevelSetExists(level);
|
|
45
|
+
const set = this.nodesByLevel.get(level);
|
|
46
|
+
return Array.from(set);
|
|
47
|
+
}
|
|
48
|
+
countNodes() {
|
|
49
|
+
let ret = 0;
|
|
50
|
+
this.getLevels().forEach(level => {
|
|
51
|
+
const nodesAmount = this.getNodesOfLevel(level).length;
|
|
52
|
+
ret = ret + nodesAmount;
|
|
53
|
+
});
|
|
54
|
+
return ret;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* applies the reduction rules to the whole bdd
|
|
58
|
+
*/
|
|
59
|
+
minimize(logState = false) {
|
|
60
|
+
// console.log('minimize(): START ###############');
|
|
61
|
+
let done = false;
|
|
62
|
+
while (!done) {
|
|
63
|
+
if (logState) {
|
|
64
|
+
console.log('minimize() itterate once');
|
|
65
|
+
}
|
|
66
|
+
let successCount = 0;
|
|
67
|
+
let lastLevel = (0, util_js_1.lastOfArray)(this.getLevels());
|
|
68
|
+
while (lastLevel > 0) {
|
|
69
|
+
const nodes = this.getNodesOfLevel(lastLevel);
|
|
70
|
+
if (logState) {
|
|
71
|
+
console.log('minimize() run for level ' + lastLevel +
|
|
72
|
+
' with ' + nodes.length + ' nodes');
|
|
73
|
+
// console.dir(nodes);
|
|
74
|
+
}
|
|
75
|
+
let nodeCount = 0;
|
|
76
|
+
for (const node of nodes) {
|
|
77
|
+
nodeCount++;
|
|
78
|
+
// do not run that often because it is expensive
|
|
79
|
+
if (logState && nodeCount % 4000 === 0) {
|
|
80
|
+
console.log('minimize() node #' + node.id);
|
|
81
|
+
}
|
|
82
|
+
if (node.isLeafNode()) {
|
|
83
|
+
// console.log('have leaf node ' + node.id);
|
|
84
|
+
const reductionDone = node.asLeafNode().applyEliminationRule();
|
|
85
|
+
if (reductionDone) {
|
|
86
|
+
successCount++;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (!node.deleted && node.isInternalNode()) {
|
|
90
|
+
const useNode = node;
|
|
91
|
+
const reductionDone = useNode.applyReductionRule();
|
|
92
|
+
let eliminationDone = false;
|
|
93
|
+
if (!useNode.deleted) {
|
|
94
|
+
// not might now be deleted from reduction-rule
|
|
95
|
+
eliminationDone = useNode.applyEliminationRule(nodes);
|
|
96
|
+
}
|
|
97
|
+
if (reductionDone || eliminationDone) {
|
|
98
|
+
successCount++;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
lastLevel--;
|
|
103
|
+
}
|
|
104
|
+
if (successCount === 0) {
|
|
105
|
+
// could do no more optimisations
|
|
106
|
+
done = true;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
if (logState) {
|
|
110
|
+
console.log('minimize() itteration done with ' +
|
|
111
|
+
successCount + ' minimisations');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
getLeafNodes() {
|
|
117
|
+
const lastLevel = (0, util_js_1.lastOfArray)(this.getLevels());
|
|
118
|
+
const leafNodes = this.getNodesOfLevel(lastLevel).reverse();
|
|
119
|
+
return leafNodes;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* strips all leaf-nodes
|
|
123
|
+
* with the given value
|
|
124
|
+
*/
|
|
125
|
+
removeIrrelevantLeafNodes(leafNodeValue) {
|
|
126
|
+
let done = false;
|
|
127
|
+
while (!done) {
|
|
128
|
+
let countRemoved = 0;
|
|
129
|
+
const leafNodes = this.getLeafNodes();
|
|
130
|
+
for (const leafNode of leafNodes) {
|
|
131
|
+
const removed = leafNode.removeIfValueEquals(leafNodeValue);
|
|
132
|
+
if (removed) {
|
|
133
|
+
countRemoved++;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
this.minimize();
|
|
137
|
+
if (countRemoved === 0) {
|
|
138
|
+
done = true;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
resolve(fns, booleanFunctionInput) {
|
|
143
|
+
let currentNode = this;
|
|
144
|
+
while (true) {
|
|
145
|
+
const booleanResult = fns[currentNode.level](booleanFunctionInput);
|
|
146
|
+
const branchKey = (0, util_js_1.booleanToBooleanString)(booleanResult);
|
|
147
|
+
currentNode = currentNode.branches.getBranch(branchKey);
|
|
148
|
+
if (currentNode.isLeafNode()) {
|
|
149
|
+
return currentNode.asLeafNode().value;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
toSimpleBdd() {
|
|
154
|
+
return (0, index_js_1.bddToSimpleBdd)(this);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.RootNode = RootNode;
|
|
158
|
+
//# sourceMappingURL=root-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-node.js","sourceRoot":"","sources":["../../../src/root-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":""}
|