directed-graph-typed 2.2.2 → 2.2.4

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.
Files changed (48) hide show
  1. package/README.md +135 -0
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs.map +1 -1
  4. package/dist/esm/index.mjs.map +1 -1
  5. package/dist/esm-legacy/index.mjs.map +1 -1
  6. package/dist/types/data-structures/binary-tree/avl-tree-counter.d.ts +2 -2
  7. package/dist/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +5 -5
  8. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +98 -5
  9. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +103 -7
  10. package/dist/types/data-structures/binary-tree/bst.d.ts +202 -39
  11. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +86 -37
  12. package/dist/types/data-structures/binary-tree/tree-counter.d.ts +4 -5
  13. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +7 -7
  14. package/dist/types/data-structures/graph/directed-graph.d.ts +126 -1
  15. package/dist/types/data-structures/graph/undirected-graph.d.ts +160 -1
  16. package/dist/types/data-structures/hash/hash-map.d.ts +110 -27
  17. package/dist/types/data-structures/heap/heap.d.ts +107 -58
  18. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +72 -404
  19. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -5
  20. package/dist/types/data-structures/queue/deque.d.ts +95 -67
  21. package/dist/types/data-structures/queue/queue.d.ts +90 -34
  22. package/dist/types/data-structures/stack/stack.d.ts +58 -40
  23. package/dist/types/data-structures/trie/trie.d.ts +109 -47
  24. package/dist/types/interfaces/binary-tree.d.ts +1 -0
  25. package/dist/types/types/data-structures/binary-tree/bst.d.ts +5 -5
  26. package/dist/umd/directed-graph-typed.js.map +1 -1
  27. package/dist/umd/directed-graph-typed.min.js.map +1 -1
  28. package/package.json +2 -2
  29. package/src/data-structures/binary-tree/avl-tree-counter.ts +1 -2
  30. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +7 -8
  31. package/src/data-structures/binary-tree/avl-tree.ts +100 -7
  32. package/src/data-structures/binary-tree/binary-tree.ts +117 -7
  33. package/src/data-structures/binary-tree/bst.ts +431 -93
  34. package/src/data-structures/binary-tree/red-black-tree.ts +85 -37
  35. package/src/data-structures/binary-tree/tree-counter.ts +5 -7
  36. package/src/data-structures/binary-tree/tree-multi-map.ts +9 -10
  37. package/src/data-structures/graph/directed-graph.ts +126 -1
  38. package/src/data-structures/graph/undirected-graph.ts +160 -1
  39. package/src/data-structures/hash/hash-map.ts +110 -27
  40. package/src/data-structures/heap/heap.ts +107 -58
  41. package/src/data-structures/linked-list/doubly-linked-list.ts +72 -404
  42. package/src/data-structures/linked-list/singly-linked-list.ts +121 -5
  43. package/src/data-structures/queue/deque.ts +95 -67
  44. package/src/data-structures/queue/queue.ts +90 -34
  45. package/src/data-structures/stack/stack.ts +58 -40
  46. package/src/data-structures/trie/trie.ts +109 -47
  47. package/src/interfaces/binary-tree.ts +2 -0
  48. package/src/types/data-structures/binary-tree/bst.ts +5 -5
package/README.md CHANGED
@@ -34,6 +34,141 @@ yarn add directed-graph-typed
34
34
 
35
35
  [//]: # (No deletion!!! Start of Example Replace Section)
36
36
 
37
+ ### basic DirectedGraph vertex and edge creation
38
+ ```typescript
39
+ // Create a simple directed graph
40
+ const graph = new DirectedGraph<string>();
41
+
42
+ // Add vertices
43
+ graph.addVertex('A');
44
+ graph.addVertex('B');
45
+ graph.addVertex('C');
46
+
47
+ // Verify vertices exist
48
+ console.log(graph.hasVertex('A')); // true;
49
+ console.log(graph.hasVertex('B')); // true;
50
+ console.log(graph.hasVertex('C')); // true;
51
+ console.log(graph.hasVertex('D')); // false;
52
+
53
+ // Check vertex count
54
+ console.log(graph.size); // 3;
55
+ ```
56
+
57
+ ### DirectedGraph edge operations
58
+ ```typescript
59
+ const graph = new DirectedGraph<string>();
60
+
61
+ // Add vertices
62
+ graph.addVertex('A');
63
+ graph.addVertex('B');
64
+ graph.addVertex('C');
65
+
66
+ // Add directed edges
67
+ graph.addEdge('A', 'B', 1);
68
+ graph.addEdge('B', 'C', 2);
69
+ graph.addEdge('A', 'C', 3);
70
+
71
+ // Verify edges exist
72
+ console.log(graph.hasEdge('A', 'B')); // true;
73
+ console.log(graph.hasEdge('B', 'C')); // true;
74
+ console.log(graph.hasEdge('C', 'B')); // false; // Graph is directed
75
+
76
+ // Get neighbors of A
77
+ const neighborsA = graph.getNeighbors('A');
78
+ console.log(neighborsA[0].key); // 'B';
79
+ console.log(neighborsA[1].key); // 'C';
80
+ ```
81
+
82
+ ### DirectedGraph deleteEdge and vertex operations
83
+ ```typescript
84
+ const graph = new DirectedGraph<string>();
85
+
86
+ // Build a small graph
87
+ graph.addVertex('X');
88
+ graph.addVertex('Y');
89
+ graph.addVertex('Z');
90
+ graph.addEdge('X', 'Y', 1);
91
+ graph.addEdge('Y', 'Z', 2);
92
+
93
+ // Delete an edge
94
+ graph.deleteEdgeSrcToDest('X', 'Y');
95
+ console.log(graph.hasEdge('X', 'Y')); // false;
96
+
97
+ // Edge in other direction should not exist
98
+ console.log(graph.hasEdge('Y', 'X')); // false;
99
+
100
+ // Other edges should remain
101
+ console.log(graph.hasEdge('Y', 'Z')); // true;
102
+
103
+ // Delete a vertex
104
+ graph.deleteVertex('Y');
105
+ console.log(graph.hasVertex('Y')); // false;
106
+ console.log(graph.size); // 2;
107
+ ```
108
+
109
+ ### DirectedGraph topologicalSort for task scheduling
110
+ ```typescript
111
+ const graph = new DirectedGraph<string>();
112
+
113
+ // Build a DAG (Directed Acyclic Graph) for task dependencies
114
+ graph.addVertex('Design');
115
+ graph.addVertex('Implement');
116
+ graph.addVertex('Test');
117
+ graph.addVertex('Deploy');
118
+
119
+ // Add dependency edges
120
+ graph.addEdge('Design', 'Implement', 1); // Design must come before Implement
121
+ graph.addEdge('Implement', 'Test', 1); // Implement must come before Test
122
+ graph.addEdge('Test', 'Deploy', 1); // Test must come before Deploy
123
+
124
+ // Topological sort gives valid execution order
125
+ const executionOrder = graph.topologicalSort();
126
+ console.log(executionOrder); // defined;
127
+ console.log(executionOrder); // ['Design', 'Implement', 'Test', 'Deploy'];
128
+
129
+ // All vertices should be included
130
+ console.log(executionOrder?.length); // 4;
131
+ ```
132
+
133
+ ### DirectedGraph dijkstra shortest path for network routing
134
+ ```typescript
135
+ // Build a weighted directed graph representing network nodes and costs
136
+ const network = new DirectedGraph<string>();
137
+
138
+ // Add network nodes
139
+ network.addVertex('Router-A');
140
+ network.addVertex('Router-B');
141
+ network.addVertex('Router-C');
142
+ network.addVertex('Router-D');
143
+ network.addVertex('Router-E');
144
+
145
+ // Add weighted edges (network latency costs)
146
+ network.addEdge('Router-A', 'Router-B', 5);
147
+ network.addEdge('Router-A', 'Router-C', 10);
148
+ network.addEdge('Router-B', 'Router-D', 3);
149
+ network.addEdge('Router-C', 'Router-D', 2);
150
+ network.addEdge('Router-D', 'Router-E', 4);
151
+ network.addEdge('Router-B', 'Router-E', 12);
152
+
153
+ // Find shortest path from Router-A to Router-E
154
+ const { minDist, minPath } = network.dijkstra('Router-A', 'Router-E', true, true) || {
155
+ minDist: undefined,
156
+ minPath: undefined
157
+ };
158
+
159
+ // Verify shortest path is found
160
+ console.log(minDist); // defined;
161
+ console.log(minPath); // defined;
162
+
163
+ // Shortest path should be A -> B -> D -> E with cost 5+3+4=12
164
+ // Or A -> C -> D -> E with cost 10+2+4=16
165
+ // So the minimum is 12
166
+ console.log(minDist); // <= 16;
167
+
168
+ // Verify path is valid (includes start and end)
169
+ console.log(minPath?.[0].key); // 'Router-A';
170
+ console.log(minPath?.[minPath.length - 1].key); // 'Router-E';
171
+ ```
37
172
 
38
173
  [//]: # (No deletion!!! End of Example Replace Section)
39
174