Skip to content

CGraphBase

Source code in src\graphworkc.py
 8
 9
10
def __init__(self):
    # 创建 C++ 图算法对象
    self.graph = graphwork.GraphTrackit()

类方法 - get_graph_info:
- 获取图信息

Returns:

Name Type Description
dict dict

返回当前图的相关属性

Source code in src\graphworkc.py
12
13
14
15
16
17
18
19
20
def get_graph_info(self) -> dict:
    """**类方法 - get_graph_info:** <br>
    - 获取图信息

    Returns:
          dict: 返回当前图的相关属性
    """
    result = self.graph.get_graph_info()
    return result

类方法 - get_node_info:
- 获取节点信息

Parameters:

Name Type Description Default
id int

节点的标识符。必须是一个整数,表示图中节点的唯一标识符。

required

Raises:

Type Description
ValueError

如果“id”不是整数。

Returns:

Name Type Description
dict dict

返回当前节点的相关属性

Source code in src\graphworkc.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def get_node_info(self,
                  id: int) -> dict:
    """**类方法 - get_node_info:** <br>
    - 获取节点信息

    Args:
        id (int): 节点的标识符。必须是一个整数,表示图中节点的唯一标识符。

    Raises:
        ValueError: 如果“id”不是整数。

    Returns:
          dict: 返回当前节点的相关属性
    """
    # 确保 id 是有效的节点(假设它们是整数)
    if not isinstance(id, int):
        raise ValueError(f"Invalid value for 'start': {start}. It must be an integer.")

    result = self.graph.get_node_info(id)
    return result

类方法 - get_link_info:
- 获取边信息

Parameters:

Name Type Description Default
start int

边的起始节点。必须是整数。

required
end int

边的结束节点。必须是整数。

required

Raises:

Type Description
ValueError

如果“start”或“end”不是整数。

Returns:

Name Type Description
dict dict

返回当前边的相关属性

Source code in src\graphworkc.py
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
def get_link_info(self,
                  start: int,
                  end: int) -> dict:
    """**类方法 - get_link_info:** <br>
    - 获取边信息

    Args:
        start (int): 边的起始节点。必须是整数。
        end (int): 边的结束节点。必须是整数。

    Raises:
        ValueError: 如果“start”或“end”不是整数。

    Returns:
          dict: 返回当前边的相关属性
    """
    # 确保 start 和 end 是有效的节点(假设它们是整数)
    if not isinstance(start, int):
        raise ValueError(f"Invalid value for 'start': {start}. It must be an integer.")

    if not isinstance(end, int):
        raise ValueError(f"Invalid value for 'end': {end}. It must be an integer.")

    result = self.graph.get_link_info(start, end)
    return result

类方法 - add_edge:
- 加一条边

Parameters:

Name Type Description Default
start int

边的起始节点。必须是整数。

required
end int

边的结束节点。必须是整数或浮点数。

required
attribute_dict dict

包含边缘属性的字典,例如权重或其他属性。

None

Raises:

Type Description
ValueError

如果“start”或“end”不是整数或浮点数。

ValueError

如果“attribute_dict_”不是字典。

Source code in src\graphworkc.py
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
def add_edge(self,
             start: int,
             end: int,
             attribute_dict: dict = None) -> None:
    """**类方法 - add_edge:**<br>
     - 加一条边

    Args:
        start (int): 边的起始节点。必须是整数。
        end (int): 边的结束节点。必须是整数或浮点数。
        attribute_dict (dict): 包含边缘属性的字典,例如权重或其他属性。

    Raises:
        ValueError: 如果“start”或“end”不是整数或浮点数。
        ValueError: 如果“attribute_dict_”不是字典。
    """
    if 1:
        # 参数检查:确保 start 和 v_ 是有效的节点(假设它们是整数)
        if not isinstance(start, int):
            raise ValueError(f"Invalid value for 'start': {start}. It must be an integer.")

        if not isinstance(end, int):
            raise ValueError(f"Invalid value for 'end': {end}. It must be an integer.")

        # 初始化空字典
        if attribute_dict is None:
            attribute_dict = {}

        # 参数类型检查
        if not isinstance(attribute_dict, dict):
            raise ValueError(f"attribute_dict必须是字典类型,当前类型:{type(attribute_dict)}")

    # 假设 self.graph 是一个已定义的图对象
    self.graph.add_edge(start, end, attribute_dict)

类方法 - add_edges:
- 加多条边

Parameters:

Name Type Description Default
edges list of tuple

要添加的边列表。每条边都应该是一个元组。

required
containing three elements
  • start (int): 边的起始节点。
  • end (int): 边的结束节点。
  • attribute_dict_ (dict): 一个包含边缘属性的字典,例如权重或其他属性。(可选)
required

Raises:

Type Description
ValueError

如果“边”不是列表。

ValueError

如果edges中的任何元素不是元组。

ValueError

如果任何元组都没有2-3个元素。

ValueError

如果“start”或“end”不是整数。

ValueError

如果“attribute_dict_”不是字典。

Source code in src\graphworkc.py
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
def add_edges(self,
              edges: list[tuple]) -> None:
    """**类方法 - add_edges:**<br>
     - 加多条边

     Args:
         edges (list of tuple): 要添加的边列表。每条边都应该是一个元组。
         containing three elements:
             - start (int): 边的起始节点。
             - end (int): 边的结束节点。
             - attribute_dict_ (dict): 一个包含边缘属性的字典,例如权重或其他属性。(可选)

     Raises:
         ValueError: 如果“边”不是列表。
         ValueError: 如果edges中的任何元素不是元组。
         ValueError: 如果任何元组都没有2-3个元素。
         ValueError: 如果“start”或“end”不是整数。
         ValueError: 如果“attribute_dict_”不是字典。
     """
    if 1:
        # 确保 edges 是一个列表
        if not isinstance(edges, list):
            raise ValueError(f"Expected 'edges' to be a list, but got {type(edges)}.")

        # 遍历列表中的每个元素,确保每个元素是一个元组,并且有三个元素
        for edge in edges:
            if not isinstance(edge, tuple):
                raise ValueError(f"Each element in 'edges' should be a tuple, but got {type(edge)}.")

            if len(edge) < 2 or len(edge) > 3:
                raise ValueError(f"Each tuple in 'edges' should have exactly 2-4 elements, but got {len(edge)}.")

            # 检查 start 和 end 是否是有效的节点(例如整数或字符串)
            start = edge[0]
            end = edge[1]
            attribute_dict_ = {}
            if len(edge) == 3:
                attribute_dict_ = edge[2]

            # 检查 start end 是否为整数
            if not isinstance(start, int):
                raise ValueError(f"Expected 'start' to be an integer, but got {type(start)}.")
            if not isinstance(end, int):
                raise ValueError(f"Expected 'end' to be an integer, but got {type(end)}.")
            # 检查 attribute_dict_ 是否是一个字典
            if not isinstance(attribute_dict_, dict):
                raise ValueError(f"Expected 'attribute_dict_' to be a dictionary, but got {type(attribute_dict_)}.")

    # 如果所有检查通过,调用 graph.add_edges
    self.graph.add_edges(edges)

类方法 - remove_edge:
- 移除一条边

Parameters:

Name Type Description Default
start int

边的起始节点。必须是整数。

required
end int

边的结束节点。必须是整数。

required

Raises:

Type Description
ValueError

如果“start”或“end”不是整数。

Source code in src\graphworkc.py
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
def remove_edge(self,
                start: int,
                end: int) -> None:
    """**类方法 - remove_edge:**<br>
     - 移除一条边

    Args:
        start (int): 边的起始节点。必须是整数。
        end (int): 边的结束节点。必须是整数。

    Raises:
        ValueError: 如果“start”或“end”不是整数。
    """
    # 参数检查:确保 start 和 v_ 是有效的节点(假设它们是整数)
    if not isinstance(start, int):
        raise ValueError(f"Invalid value for 'start': {start}. It must be an integer.")

    if not isinstance(end, int):
        raise ValueError(f"Invalid value for 'end': {end}. It must be an integer.")

    self.graph.remove_edge(start, end)

类方法 - remove_edges:
- 移除多条边

Parameters:

Name Type Description Default
edges list of tuples

要删除的边列表,其中每条边表示为两个整数的元组 (开始、结束)表示边的节点。

required

Raises:

Type Description
ValueError

如果edges不是列表。

ValueError

如果edges中的任何元素不是元组或不包含正好有两个元素。

Source code in src\graphworkc.py
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
def remove_edges(self,
                 edges: list[tuple[int, int]]) -> None:
    """**类方法 - remove_edges:**<br>
     - 移除多条边

    Args:
        edges (list of tuples): 要删除的边列表,其中每条边表示为两个整数的元组
                                (开始、结束)表示边的节点。

    Raises:
        ValueError: 如果edges不是列表。
        ValueError: 如果edges中的任何元素不是元组或不包含正好有两个元素。
    """
    if 1:
        # 确保 edges 是一个列表
        if not isinstance(edges, list):
            raise ValueError(f"Expected 'edges' to be a list, but got {type(edges)}.")

        # 遍历列表中的每个元素,确保每个元素是一个元组,并且有三个元素
        for edge in edges:
            if not isinstance(edge, tuple):
                raise ValueError(f"Each element in 'edges' should be a tuple, but got {type(edge)}.")

            if len(edge) != 2:
                raise ValueError(f"Each tuple in 'edges' should have exactly 2 elements, but got {len(edge)}.")

    self.graph.remove_edges(edges)

类方法 - set_centroid:
- 将一个节点修改为形心点

Parameters:

Name Type Description Default
node int

要修改的节点。必须是整数。

required

Raises:

Type Description
ValueError

如果“node”不是整数。

Source code in src\graphworkc.py
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
def set_centroid(self,
                 node: int) -> None:
    """**类方法 - set_centroid:** <br>
    - 将一个节点修改为形心点

    Args:
        node (int): 要修改的节点。必须是整数。

    Raises:
        ValueError: 如果“node”不是整数。
    """
    # 确保 node 是有效的节点(假设它们是整数)
    if not isinstance(node, int):
        raise ValueError(f"Invalid value for 'start': {node}. It must be an integer.")

    self.graph.set_centroid(node)

类方法 - set_centroids:
- 将多个节点修改为形心点

Parameters:

Name Type Description Default
nodes list[int]

要修改的节点。必须是整数。

required

Raises:

Type Description
ValueError

如果“nodes”不是列表。

ValueError

如果“node”不是整数。

Source code in src\graphworkc.py
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
def set_centroids(self,
                 nodes: list[int]) -> None:
    """**类方法 - set_centroids:** <br>
    - 将多个节点修改为形心点

    Args:
        nodes (list[int]): 要修改的节点。必须是整数。

    Raises:
        ValueError: 如果“nodes”不是列表。
        ValueError: 如果“node”不是整数。
    """
    # 确保 nodes 是一个列表
    if not isinstance(nodes, list):
        raise ValueError(f"Expected 'nodes' to be a list, but got {type(nodes)}.")
    # 确保 node 是有效的节点(假设它们是整数)
    for node in nodes:
        if not isinstance(node, int):
            raise ValueError(f"Invalid value for 'node': {node}. It must be an integer.")

    self.graph.set_centroids(nodes)