
# 带过滤的n_paths算法（filtered_n_paths）(2.2.22)
#### 概述
带过滤的n_paths算法是给定起始点source、目的点target、跳数k、路径数n、过滤条件filters，找出source和target间不多于n条的k跳无环路径。
- 算法名称：带过滤的n_paths
- 英文名称：filtered_n_paths
 
#### 应用场景
任意网络。
#### 请求参数
表1body体格式 
| 字段名           | 是否必选 | 类型         |  说明                                          |
|:---|:---|:---|:---|
| algorithmName | 是    | String     | 对应值为"filtered_n_paths"。                            |
| parameters    | 是    | Json       | 具体格式见表parameters参数说明。                              |
| filters       | 是    | JSon Array | 过滤条件列表，数组的每个元素分别对应每一层要做的查询和过滤条件。具体格式见表filters元素格式。 |
   
表2parameters参数说明 
| 参数     | 是否必选 | 说明  | 类型      | 取值范围       | 默认值 |
|:---|:---|:---|:---|:---|:---|
| source | 是    | 起始点 | String  | 图内部点       | 无   |
| target | 是    | 目标点 | String  | 图内部点       | 无   |
| k      | 是    | 跳数  | Integer | \[2,6\]    | 2   |
| n      | 是    | 路径数 | Integer | \[1,1000\] | 1   |
   
表3filters元素格式 
| 参数            | 是否必选 | 类型   | 取值范围 | 默认值 | 说明           |
|:---|:---|:---|:---|:---|:---|
| edge_filter   | 否    | json | 无    | 无   | 全图查询边时的过滤条件。 |
| vertex_filter | 否    | json | 无    | 无   | 全图查询点时的过滤条件。 |
   
表4response_data参数说明 
| 字段名          | 类型         | 说明                                |
|:---|:---|:---|
| path_length  | integer    | 路径长度。                             |
| paths_number | integer    | 路径数量。                             |
| paths        | Json Array | 路径集合，格式为：\[\[path1\],\[path2\]\]。 |
| source       | String     | 起始点。                              |
| target       | String     | 目标点。                              |
   
#### 请求示例
```
POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=execute-algorithm
{
    "algorithmName": "filtered_n_paths",
    "filters": [
    {
        "edge_filter":
        {
            "property_filter":
            {
                "leftvalue":
                {
                    "label_name": "labelName"
                },
                "predicate": "=",
                "rightvalue":
                {
                    "value": "default"
                }
            }
        }
    }],
    "parameters":
    {
        "k": 6,
        "n": 100,
        "source": "111",
        "target": "56"
    }
}
```
#### 返回示例
```
{
    "jobId": "b14f6380-f115-46ab-990e-9a76a984ebd2154236181",
    "jobType": 2
}
```
#### 查询任务示例
```
GET http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/jobs/{jobId}/status
```
#### 任务返回示例
```
{
    "data": {
        "outputs": {
            "data_return_size": 3,
            "paths": [
                [
                    "111",
                    "119",
                    "58",
                    "96",
                    "82",
                    "57",
                    "56"
                ],
                [
                    "111",
                    "119",
                    "58",
                    "61",
                    "76",
                    "57",
                    "56"
                ],
                [
                    "111",
                    "119",
                    "58",
                    "79",
                    "76",
                    "57",
                    "56"
                ]
            ],
            "runtime": 0.000308,
            "source": "111",
            "path_length": 6,
            "data_offset": 0,
            "paths_number": 3,
            "data_total_size": 3,
            "target": "56"
        }
    },
    "status": "success"
}
```
