You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hugegraph.apache.org by ji...@apache.org on 2022/11/09 10:25:06 UTC

[incubator-hugegraph] 03/33: set louvain max community members limit 10w (#9)

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

jin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph.git

commit c96d4e94e1b713fd6e0d03a4f0d34826f43245b3
Author: Jermy Li <li...@baidu.com>
AuthorDate: Fri Apr 10 17:35:22 2020 +0800

    set louvain max community members limit 10w (#9)
    
    Change-Id: I5cc3be846ff4536ebfba1f9bf54a0adda7409036
---
 .../baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java   | 12 +++++++-----
 .../baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java |  8 ++++----
 .../hugegraph/job/algorithm/path/RingsDetectAlgorithm.java   | 12 +++++++-----
 3 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
index 80f10da77..4cc6a88ba 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/KCoreAlgorithm.java
@@ -72,9 +72,12 @@ public class KCoreAlgorithm extends AbstractCommAlgorithm {
         Traverser traverser = new Traverser(job);
         return traverser.kcore(sourceLabel(parameters),
                                sourceCLabel(parameters),
-                               direction(parameters), edgeLabel(parameters),
-                               k(parameters), alpha(parameters),
-                               degree(parameters), merged(parameters));
+                               direction(parameters),
+                               edgeLabel(parameters),
+                               k(parameters),
+                               alpha(parameters),
+                               degree(parameters),
+                               merged(parameters));
     }
 
     protected static int k(Map<String, Object> parameters) {
@@ -139,7 +142,6 @@ public class KCoreAlgorithm extends AbstractCommAlgorithm {
             return kcoresJson.asJson();
         }
 
-        @SuppressWarnings("unchecked")
         private static void mergeKcores(Set<Set<Id>> kcores, Set<Id> kcore) {
             boolean merged = false;
             /*
@@ -173,7 +175,7 @@ public class KCoreAlgorithm extends AbstractCommAlgorithm {
         public Set<Id> kcore(Iterator<Vertex> vertices, Directions direction,
                              EdgeLabel label, int k, double alpha,
                              long degree) {
-            int minNeighbors = (int) Math.floor(1 / alpha * k);
+            int minNeighbors = (int) Math.floor(1.0 / alpha * k);
             SimilarsMap map = fusiformSimilarity(vertices, direction, label,
                                                  minNeighbors, alpha, k - 1,
                                                  0, null, 1, degree,
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java
index 9c4f80f64..ecb500a7d 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/comm/LouvainTraverser.java
@@ -65,7 +65,7 @@ public class LouvainTraverser extends AlgoTraverser {
     public static final String C_MEMBERS = "c_members";
 
     private static final long LIMIT = AbstractAlgorithm.MAX_QUERY_LIMIT;
-    private static final int MAX_COMM_SIZE = 1000000;
+    private static final int MAX_COMM_SIZE = 100000; // 10w
 
     private static final Logger LOG = Log.logger(LouvainTraverser.class);
 
@@ -372,9 +372,9 @@ public class LouvainTraverser extends AlgoTraverser {
             for (Pair<Community, MutableInt> nbc : nbCommunities(pass, nbs)) {
                 // △Q = (Ki_in - Ki * Etot / m) / 2m
                 Community otherC = nbc.getLeft();
-                if (otherC.size() > MAX_COMM_SIZE) {
-                    LOG.info("Skip community {} due to its size > {}",
-                             otherC, MAX_COMM_SIZE);
+                if (otherC.size() >= MAX_COMM_SIZE) {
+                    LOG.info("Skip community {} for {} due to its size >= {}",
+                             otherC.cid, v, MAX_COMM_SIZE);
                     continue;
                 }
                 // weight between c and otherC
diff --git a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
index 6a1a0add7..b3ce1ec99 100644
--- a/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
+++ b/hugegraph-core/src/main/java/com/baidu/hugegraph/job/algorithm/path/RingsDetectAlgorithm.java
@@ -63,9 +63,12 @@ public class RingsDetectAlgorithm extends AbstractAlgorithm {
         Traverser traverser = new Traverser(job);
         return traverser.rings(sourceLabel(parameters),
                                sourceCLabel(parameters),
-                               direction(parameters), edgeLabel(parameters),
-                               depth(parameters), degree(parameters),
-                               capacity(parameters), limit(parameters));
+                               direction(parameters),
+                               edgeLabel(parameters),
+                               depth(parameters),
+                               degree(parameters),
+                               capacity(parameters),
+                               limit(parameters));
     }
 
     public static class Traverser extends AlgoTraverser {
@@ -89,8 +92,7 @@ public class RingsDetectAlgorithm extends AbstractAlgorithm {
                 this.updateProgress(++this.progress);
                 Id source = ((HugeVertex) vertices.next()).id();
                 PathSet rings = traverser.rings(source, dir, label, depth,
-                                                true, degree,
-                                                capacity, limit);
+                                                true, degree, capacity, limit);
                 for (Path ring : rings) {
                     Id min = null;
                     for (Id id : ring.vertices()) {