修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v5.0
搜索
    v5.0

      三角形计算

      HDC 分布式

      概述

      三角形计算(Triangle Counting)算法能识别图中的三角形,三角形表示一组相互连接的三个节点。三角形计算能够体现图中任意三个点之间形成环路的能力。

      社交网络中的三角形表示存在有凝聚力的社区,识别三角形有助于理解网络中个人或群体的聚类和相互联系。在金融网络或交易网络中,三角形的存在可能表示存在可疑或欺诈活动,三角形计数可以帮助识别可能需要进一步调查的交易模式。

      基本概念

      三角形

      在复杂图中,任意两点之间可以有多条边,这导致三个节点可能形成超过一个三角形。以下图为例:

      • 计算按组装的不同三角形,有4个。
      • 计算按组装的不同三角形,有2个。

      在复杂图中,按边组装的三角形数量往往大于按点组装的三角形数量。组装原则应根据分析目标和应用场景而定。在社交网络分析中,重点通常是理解个体之间的连接模式,因此通常采用按点组装的原则。在金融网络分析或其他类似的领域,重点往往是节点之间的关系,例如金融交易或交互,按边组装原则通常是首选,因为这样可以检查节点连接的紧密程度以及资金或信息如何流经网络。

      特殊说明

      • 三角形计算算法忽略边的方向,按照无向边进行计算。

      示例图集

      创建示例图集:

      // 在空图集中逐行运行以下语句
      create().node_property(@default, "amount", int32)
      insert().into(@default).nodes([{_id:"C1", amount: 1}, {_id:"C2", amount: 6}, {_id:"C3", amount: 2}, {_id:"C4", amount: 5}, {_id:"C5", amount: 5}, {_id:"C6", amount: 2}])
      insert().into(@default).edges([{_from:"C4", _to:"C1"}, {_from:"C4", _to:"C1"}, {_from:"C4", _to:"C2"}, {_from:"C1", _to:"C2"}, {_from:"C2", _to:"C3"}, {_from:"C1", _to:"C3"}, {_from:"C3", _to:"C5"}, {_from:"C3", _to:"C6"}])
      

      在HDC图集上运行算法

      创建HDC图集

      将当前图集全部加载到HDC服务器hdc-server-1上,并命名为 hdc_tri_cnt

      CALL hdc.graph.create("hdc-server-1", "hdc_tri_cnt", {
        nodes: {"*": ["*"]},
        edges: {"*": ["*"]},
        direction: "undirected",
        load_id: true,
        update: "static",
        query: "query",
        default: false
      })
      

      hdc.graph.create("hdc_tri_cnt", {
        nodes: {"*": ["*"]},
        edges: {"*": ["*"]},
        direction: "undirected",
        load_id: true,
        update: "static",
        query: "query",
        default: false
      }).to("hdc-server-1")
      

      参数

      算法名:triangle_counting

      参数名
      类型
      规范
      默认值
      可选
      描述
      type Integer 1, 2 1 设置为1时,按边组装三角形;为2时,按点组装三角形
      result_type Integer 1, 2 1 设置为1时,返回三角形数量;为2时,返回每个三角形中的点或边
      return_id_uuid String uuid, id, both uuid 在结果中使用_uuid_id或同时使用两者来表示点。只能使用_uuid来表示边
      limit Integer ≥-1 -1 限制返回的结果数;-1返回所有结果

      文件回写

      CALL algo.triangle_counting.write("hdc_tri_cnt", {
        params: {
          type: 1,
          result_type: 2
        },
        return_params: {
          file: {
            filename: "byEdges.txt"
          }
        }
      })
      

      algo(triangle_counting).params({
        projection: "hdc_tri_cnt",
        type: 1,
        result_type: 2  
      }).write({
        file: {
            filename: "byEdges.txt"
        }
      })
      

      结果:

      _edge_uuids
      1,3,4
      2,3,4
      6,5,4
      

      CALL algo.triangle_counting.write("hdc_tri_cnt", {
        params: {
          return_id_uuid: "id",
          type: 2,
          result_type: 2
        },
        return_params: {
          file: {
            filename: "byNodes.txt"
          }
        }
      })
      

      algo(triangle_counting).params({
        projection: "hdc_tri_cnt",
        return_id_uuid: "id",
        type: 2,
        result_type: 2  
      }).write({
        file: {
            filename: "byNodes.txt"
        }
      })
      

      结果:

      _node_ids
      C1,C4,C2
      C1,C3,C2
      

      统计回写

      CALL algo.triangle_counting.write("hdc_tri_cnt", {
        params: {},
        return_params: {
          stats: {}
        }
      })
      

      algo(triangle_counting).params({
        projection: "hdc_tri_cnt"
      }).write({
        stats: {}
      })
      

      结果:

      triangle_count
      3

      完整返回

      CALL algo.triangle_counting("hdc_tri_cnt", {
        params: {
          result_type: 1
        },
        return_params: {}
      }) YIELD result
      RETURN result
      

      exec{
        algo(triangle_counting).params({
          result_type: 1
        }) as result
        return result
      } on hdc_tri_cnt
      

      结果:

      triangle_count
      3

      流式返回

      CALL algo.triangle_counting("hdc_tri_cnt", {
        params: {
          return_id_uuid: "id",
          type: 2,
          result_type: 2
        },
        return_params: {
          stream: {}
        }
      }) YIELD r
      RETURN r
      

      exec{
        algo(triangle_counting).params({
          return_id_uuid: "id",
          type: 2,
          result_type: 2
        }).stream() as r
        return r
      } on hdc_tri_cnt
      

      结果:

      _ids
      ["C1","C4","C2"]
      ["C1","C3","C2"]

      统计返回

      CALL algo.triangle_counting("hdc_tri_cnt", {
        params: {
          result_type: 1
        },
        return_params: {
          stats: {}
        }
      }) YIELD stats
      RETURN stats
      

      exec{
        algo(triangle_counting).params({
          result_type: 1
        }).stats() as stats
        return stats
      } on hdc_tri_cnt
      

      结果:

      triangle_count
      3

      在分布式投影上运行算法

      创建分布式投影

      将图集全部投影到shard服务器上并命名为dist_tri_cnt

      create().projection("dist_tri_cnt", {
        nodes: {"*": ["*"]}, 
        edges: {"*": ["*"]},
        direction: "undirected",
        load_id: true
      })
      

      参数

      算法名:triangle_counting

      参数名
      类型
      规范
      默认值
      可选
      描述
      result_type Integer 1, 2 1 设置为1时,返回三角形数量;为2时,返回每个三角形中的点或边
      limit Integer ≥-1 -1 限制返回的结果数;-1返回所有结果

      该算法的分布式版本仅按点组装三角形。

      文件回写

      CALL algo.triangle_counting.write("dist_tri_cnt", {
        params: {
          result_type: 1
        },
        return_params: {
          file: {
            filename: "triCnt"
          }
        }
      })
      

      algo(triangle_counting).params({
        projection: "dist_tri_cnt",
        result_type: 1
      }).write({
        file: {
            filename: "triCnt"
        }
      })
      

      triangle
      2
      

      CALL algo.triangle_counting.write("dist_tri_cnt", {
        params: {
          result_type: 2
        },
        return_params: {
          file: {
            filename: "triNodes"
          }
        }
      })
      

      algo(triangle_counting).params({
        projection: "dist_tri_cnt",
        result_type: 2
      }).write({
        file: {
            filename: "triNodes"
        }
      })
      

      triangle
      216173881625411585,3386708019294240770,13330655996528295937
      216173881625411585,10088064264821538817,13330655996528295937
      

      结果中使用点的_uuid值。

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写