Merge pull request #191 from archie94/longestCommonSubsequence · GeekWorkCode/AlgorithmVisualizer@c4d6f69 · GitHub
Skip to content

Commit c4d6f69

Browse files
authored
Merge pull request algorithm-visualizer#191 from archie94/longestCommonSubsequence
Shortest Common Supersequence algorithm
2 parents e3e017e + 9243c40 commit c4d6f69

4 files changed

Lines changed: 66 additions & 1 deletion

File tree

algorithm/category.json

Lines changed: 2 additions & 1 deletion
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
var i,j;
2+
3+
// Fill memo table in bottom up manner
4+
for ( i = 0; i <= m; i++ ) {
5+
for ( j = 0; j <= n; j++ ) {
6+
if( i === 0 ) {
7+
A[i][j] = j;
8+
} else if ( j === 0 ) {
9+
A[i][j] = i;
10+
} else if ( string1[i-1] == string2[j-1] ) {
11+
tracer1._select ( i-1 )._wait ();
12+
tracer2._select ( j-1 )._wait ();
13+
tracer3._select ( i-1, j-1 )._wait ();
14+
15+
A[i][j] = A[i-1][j-1] + 1;
16+
17+
tracer1._deselect ( i-1 );
18+
tracer2._deselect ( j-1 );
19+
tracer3._deselect ( i-1, j-1 );
20+
} else {
21+
tracer3._select ( i-1, j )._wait ();
22+
tracer3._select ( i, j-1 )._wait ();
23+
24+
if ( A[i-1][j] < A[i][j-1] ) {
25+
A[i][j] = 1 + A[i-1][j];
26+
} else {
27+
A[i][j] = 1 + A[i][j-1];
28+
}
29+
30+
tracer3._deselect ( i-1, j );
31+
tracer3._deselect ( i, j-1 );
32+
}
33+
tracer3._notify ( i, j , A[i][j] )._wait ();
34+
tracer3._denotify( i, j );
35+
}
36+
}
37+
38+
logger._print ( 'Shortest Common Supersequence is ' + A[m][n] );
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
var string1 = 'AGGTAB';
2+
var string2 = 'GXTXAYB';
3+
var m = string1.length;
4+
var n = string2.length;
5+
var A = new Array (m+1);
6+
for (var i = 0; i < m+1; i++ ) {
7+
A[i] = new Array (n+1);
8+
}
9+
10+
var tracer1 = new Array1DTracer ( 'String 1')._setData ( string1 );
11+
var tracer2 = new Array1DTracer ( 'String 2')._setData ( string2 );
12+
var tracer3 = new Array2DTracer ( 'Memo Table')._setData ( A );
13+
var logger = new LogTracer ();
Lines changed: 13 additions & 0 deletions

0 commit comments

Comments
 (0)