This is an automated email from the ASF dual-hosted git repository.

mboehm7 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemml.git


The following commit(s) were added to refs/heads/master by this push:
     new b66a3c0  [SYSTEMDS-393] Fix convergence condition of connected 
components builtin
b66a3c0 is described below

commit b66a3c006ce6a3a888653e2d1accec479cc756fd
Author: Matthias Boehm <mboe...@gmail.com>
AuthorDate: Mon May 25 21:11:52 2020 +0200

    [SYSTEMDS-393] Fix convergence condition of connected components builtin
---
 scripts/builtin/components.dml                           |  2 +-
 .../test/functions/builtin/BuiltinComponentsTest.java    | 16 +++++++++++-----
 .../scripts/functions/builtin/ConnectedComponents.dml    |  4 ++--
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/scripts/builtin/components.dml b/scripts/builtin/components.dml
index f760a49..51d96db 100644
--- a/scripts/builtin/components.dml
+++ b/scripts/builtin/components.dml
@@ -40,7 +40,7 @@ m_components = function(Matrix[Double] G, Integer maxi = 0, 
Boolean verbose = TR
   iter = 1;
 
   # iterative computation of connected components
-  while( diff > 0 & (maxi==0 | maxi<=iter) ) {
+  while( diff > 0 & (maxi==0 | iter<=maxi) ) {
     u = max(rowMaxs(G * t(c)), c);
     diff = sum(u != c)
     c = u; # update assignment
diff --git 
a/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java
 
b/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java
index e541f9d..8c1b05b 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java
+++ 
b/src/test/java/org/apache/sysds/test/functions/builtin/BuiltinComponentsTest.java
@@ -45,20 +45,25 @@ public class BuiltinComponentsTest extends 
AutomatedTestBase {
 
        @Test
        public void testConnectedComponents11CP() {
-               runConnectedComponentsTest(11, LopProperties.ExecType.CP);
+               runConnectedComponentsTest(11, 0, LopProperties.ExecType.CP);
        }
        
        @Test
        public void testConnectedComponents201CP() {
-               runConnectedComponentsTest(201, LopProperties.ExecType.CP);
+               runConnectedComponentsTest(201, 0, LopProperties.ExecType.CP);
        }
        
        @Test
        public void testConnectedComponents2001CP() {
-               runConnectedComponentsTest(2001, LopProperties.ExecType.CP);
+               runConnectedComponentsTest(2001, 0, LopProperties.ExecType.CP);
+       }
+       
+       @Test
+       public void testConnectedComponents11Maxi100CP() {
+               runConnectedComponentsTest(11, 100, LopProperties.ExecType.CP);
        }
 
-       private void runConnectedComponentsTest(int numVertices, ExecType 
instType)
+       private void runConnectedComponentsTest(int numVertices, int maxi, 
ExecType instType)
        {
                Types.ExecMode platformOld = setExecMode(instType);
 
@@ -68,7 +73,8 @@ public class BuiltinComponentsTest extends AutomatedTestBase {
 
                        String HOME = SCRIPT_DIR + TEST_DIR;
                        fullDMLScriptName = HOME + TEST_NAME + ".dml";
-                       programArgs = new String[]{ "-args", input("X"), 
output("R")};
+                       programArgs = new String[]{ "-args",
+                               input("X"), String.valueOf(maxi), output("R")};
 
                        //generate actual dataset (3 components)
                        double[][] X = new double[numVertices-3][2];
diff --git a/src/test/scripts/functions/builtin/ConnectedComponents.dml 
b/src/test/scripts/functions/builtin/ConnectedComponents.dml
index 0c6fbe7..56403a8 100644
--- a/src/test/scripts/functions/builtin/ConnectedComponents.dml
+++ b/src/test/scripts/functions/builtin/ConnectedComponents.dml
@@ -23,6 +23,6 @@ X = read($1)
 n = max(X);
 G = table(X[,1], X[, 2], n, n)
 G = G + t(G); #symmetry
-C = components(G=G, verbose=FALSE)
+C = components(G=G, maxi=$2, verbose=FALSE)
 
-write(C, $2)
+write(C, $3)

Reply via email to