修改密码

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

修改昵称

当前昵称:
提交
搜索
v4.0
    v4.0

    节点度

    概述

    节点度(Degree)算法为每个节点计算与其相连的边的数量;当边上有权重时,则计算权重的总和。节点度是面向节点的浅层(≤ 1层)计算,是一种最简单、最高效的图算法,在科学计算、特征提取、超级节点识别等领域扮演着至关重要的角色。

    基本概念

    度的方向

    节点的出边的数量称为节点的出度,节点的入边的数量称为节点的入度。如果忽略边的方向计算所有边的数量,就得到节点的(或度中心性)。

    上图中红色节点的出度为 3,入度为 4,度为 7。需要注意的是,有向的自环边会被看作一条出边和一条入边。

    边权重

    边权重可以是边的某一个属性值。指定了边权重时,节点度就是边权重的和;不指定边权重时,节点度也可以理解为所有边的权重均为 1 时的节点度。

    边加权后,上图中红色节点的出度为 1 + 0.2 + 2 = 3.2,入度为 0.5 + 0.3 + 2 + 1 = 3.8,度中心性为 3.2 + 3.8 = 7

    特殊处理

    孤点、不连通图

    由于没有连接其他节点的边,孤点的节点度完全取决于其自环边。

    自环边

    自环边会被看作一条出边和一条入边。

    有向边

    有向边的方向是计算节点出度和入度的依据;计算度中心性时则会忽略边的方向。

    结果和统计值

    以下面的 8 人小型网络社交图为例,针对所有点运行节点度算法:

    算法结果:为每个点计算度,根据算法执行方式,返回 _iddegree 两列或 _uuiddegree 两列

    _uuid _id degree
    1 Mike 3
    2 Cathy 3
    3 Anna 5
    4 Joe 2
    5 Sam 2
    6 Bob 2
    7 Bill 1
    8 Timmy 0

    算法统计值:所有点的度总和 total_degree 以及平均值 average_degree

    total_degree average_degree
    18 2.25

    命令和参数配置

    • 命令:algo(degree)
    • params() 参数配置项如下:
    名称 类型
    默认值
    规范
    描述
    ids 或 uuids []_id 或 []_uuid / / 待计算节点的 ID 或 UUID;忽略表示计算全部点
    edge_schema_property []@<schema>?.<property> / 数值类的边属性,需LTE 边权重所在的一个或多个属性名称,带不带 schema 均可,无该属性的边不参与计算;忽略表示不加权
    direction string / in/out,大小写不敏感 边的方向;忽略表示忽略方向
    limit int -1 >=-1 需要返回的结果条数,-1 或忽略表示返回所有结果
    order string / ASC/DESC,大小写不敏感 对返回结果进行排序;忽略表示不排序

    示例:计算点 UUID = 1 的出度

    algo(degree).params({ 
      uuids: [1], 
      direction: "out" 
    }) as d1 
    return d1
    

    示例:计算 ID = Sam, Anna, Mike 这三个点的度中心性

    algo(degree).params({ 
      ids: ["Sam", "Anna" , "Mike"] 
    }) as degree
    return degree
    

    示例:以属性 @follow.score 为权重,计算所有点的入度,返回 5 条结果

    algo(degree).params({ 
      direction: "in"
      edge_schema_property: @follow.score, 
      limit: 5 
    }) as degree
    return degree
    

    算法执行

    任务回写

    1. 文件回写

    配置项 各列数据
    filename _id,degree

    示例:计算所有点的度,将算法结果回写至名为 degree_all 的文件

    algo(degree).params().write({
      file:{ 
        filename: "degree_all"
      }
    })
    

    2. 属性回写

    配置项 回写内容 类型
    数据类型
    property degree 点属性 未加权时,为 int64;加权时,为 int64double

    示例:计算所有点的度,将度回写至名为 degree 的点属性

    algo(degree).params().write({
      db:{ 
        property: "degree"
      }
    })
    

    3. 统计回写

    统计项名称 数据类型 描述
    total_degree float 度总和
    average_degree float 度平均值

    示例:计算所有点的度,将算法统计值回写至任务信息

    algo(degree).params({}).write()
    

    直接返回

    别名序号
    类型 描述
    列名
    0 []perNode 点及其度 _uuid, degree
    1 KV 度总和、度平均值 total_degree, average_degree

    示例:计算所有点的度,将算法结果和统计值分别定义为别名 results 和 stats 并返回

    algo(degree).params() as results, stats
    return results, stats
    

    流式返回

    别名序号
    类型 描述
    列名
    0 []perNode 点及其度 _uuid, degree

    示例:找到图中度最大的节点的一步邻居,返回这些邻居节点的详细信息

    algo(degree).params({
      order: "desc",
      limit: 1 
    }).stream() as results
    khop().src({_uuid == results._uuid}).depth(1) as neighbors
    return neighbors{*}
    

    实时统计

    别名序号
    类型 描述
    列名
    0 KV 度总和、度平均值 total_degreeaverage_degree

    示例:计算所有点的度,将算法统计值定义为别名 stats 并返回

    algo(degree).params().stats() as stats
    return stats
    
    请完成以下信息后可下载此书
    *
    公司名称不能为空
    *
    公司邮箱必须填写
    *
    你的名字必须填写
    *
    你的电话必须填写
    *
    你的电话必须填写