Section for working with fuzzy graphs
- class fuzzyops.graphs.fuzzgraph.graph.FuzzyGraph(node_type: str = 'simple', node_number_type: str = 'triangle', edge_type: str = 'undirected', edge_number_type: str = 'triangle', node_number_math_type: min | base | max = None, node_number_eq_type: min | base | max = None, edge_number_math_type: min | base | max = None, edge_number_eq_type: min | base | max = None)[source]
Bases:
objectКласс для представления нечеткого графа.
Тип операций (node_number_math_type, edge_number_math_type) для заданных нечетких чисел, если операции могут быть выполнены разными способами. Например, для треугольных чисел, основания складываются или вычитаются по правилам обычной алгебры, а границы могут вычисляться следующими способами: ‘mean’ (для верхней и нижней границ результата вычисляется среднее значение соответственно верхних и нижних границ двух изначальных чисел), ‘min’ (верхней и нижней границами результата становятся минимальные значения соответственно верхних и нижних границ двух изначальных чисел), ‘max’ (верхней и нижней границами результата становятся максимальные значения соответственно верхних и нижних границ двух изначальных чисел) и ‘sum’ (для верхней и нижней границ результата вычисляется сумма соответственно верхних и нижних границ двух изначальных чисел);
Тип для сравнения нечетких чисел (node_number_eq_type, edge_number_eq_type), если для данных чисел могут быть применены разные способы сравнения. Например, для треугольных чисел, возможны три способа – ‘bas’e (треугольные числа сравниваются между собой по их основанию), ‘min’ (треугольные числа сравниваются между собой по их нижней границе) и ‘max’ (треугольные числа сравниваются между собой по их нижней границе);
- _nodes
Словарь узлов графа, где ключ - индекс узла, значение - объект узла.
- Type:
dict
- _edges
Список ребер графа.
- Type:
list
- _node_number_class
Класс числа для описания значений узлов.
- _edge_number_class
Класс числа для описания значений ребер.
- _edge_class
Класс для представления ребер (направленных или ненаправленных).
- _node_type
Тип узлов графа (например, простой).
- Type:
str
- _node_params
Параметры для создания чисел узлов.
- Type:
dict
- _edge_params
Параметры для создания чисел ребер.
- Type:
dict
- Parameters:
node_type (str) – Тип узлов (‘simple’ по умолчанию).
node_number_type (str) – Тип чисел для узлов (‘triangle’ по умолчанию).
edge_type (str) – Тип ребер (‘undirected’ по умолчанию).
edge_number_type (str) – Тип чисел для ребер (‘triangle’ по умолчанию).
node_number_math_type (node_types) – Тип операций для нечетких чисел узлов.
node_number_eq_type (node_types) – Тип для сравнения нечетких чисел узлов.
edge_number_math_type (node_types) – Тип операций для нечетких числах ребер.
edge_number_eq_type (node_types) – Тип для сравнения нечетких чисел ребер.
- add_edge(from_ind: int, to_ind: int, value: List[int])[source]
Добавляет ребро между двумя узлами.
- Parameters:
from_ind (int) – Индекс исходного узла.
to_ind (int) – Индекс целевого узла.
value (List[int]) – Значение для ребра нечеткое число - массив из трех чисел для треугольного числа.
- Raises:
Exception – Исключение возникает, если граф не допускает петель или если указаны несуществующие узлы.
- add_node(value=None) None[source]
Добавляет узел в граф.
- Parameters:
value – Значение для узла (по умолчанию None). Если указано, создается нечеткое число для узла.
- check_directed_edge(from_ind: int, to_ind: int) bool[source]
Проверяет, существует ли направленное ребро между двумя узлами.
- Parameters:
from_ind (int) – Индекс исходного узла.
to_ind (int) – Индекс целевого узла.
- Returns:
True, если направленное ребро существует, иначе False.
- Return type:
bool
- Raises:
Exception – Исключение возникает, если узлы не существуют.
- check_node(index: int) bool[source]
Проверяет, существует ли узел с заданным индексом.
- Parameters:
index (int) – Индекс узла.
- Returns:
True, если узел существует, иначе False.
- Return type:
bool
- check_nodes_full(nodes: List[int]) bool[source]
Проверяет, охватывают ли указанные узлы все узлы в графе.
- Parameters:
nodes (List[int]) – Список индексов узлов для проверки.
- Returns:
True, если указанные узлы охватывают все узлы в графе, иначе False.
- Return type:
bool
- get_adjacency_matrix() List[List[int]][source]
Возвращает матрицу смежности графа.
Матрица смежности - это квадратная матрица, где элемент (i, j) представляет длину ребра между узлом i и узлом j. Если ребра нет, элемент будет равен None.
- Returns:
Матрица смежности графа.
- Return type:
List[List[int]]
Note
Если граф направленный, матрица будет отображать направление ребер. Если узлы не связаны, соответствующие элементы будут равны None.
- get_directly_connected(index: int) List[int][source]
Получает список узлов, которые напрямую связаны с заданным узлом.
- Parameters:
index (int) – Индекс узла.
- Returns:
Список индексов напрямую связанных узлов.
- Return type:
List[int]
- Raises:
Exception – Исключение возникает, если узел не существует.
- get_edge_len(from_ind: int, to_ind: int) int[source]
Получает длину ребра между двумя узлами.
- Parameters:
from_ind (int) – Индекс исходного узла.
to_ind (int) – Индекс целевого узла.
- Returns:
Длина ребра между узлами.
- Return type:
int
- Raises:
Exception – Исключение возникает, если граф не допускает петель или если указаны несуществующие узлы.
- get_edges_amount() int[source]
Возвращает количество ребер в графе.
- Returns:
Количество ребер.
- Return type:
int
- get_nodes_amount() int[source]
Возвращает количество узлов в графе.
- Returns:
Количество узлов.
- Return type:
int
- get_nodes_list() List[int][source]
Получает список индексов всех узлов в графе.
- Returns:
Список индексов узлов.
- Return type:
List[int]
- get_stronger_directly_connected(index: int, value: List[int]) List[int][source]
Получает список узлов, которые напрямую связаны с заданным узлом и имеют более сильные ребра.
- Parameters:
index (int) – Индекс узла.
value (List[int]) – Список значений, по которым осуществляется фильтрация.
- Returns:
Список индексов более сильно связанных узлов.
- Return type:
List[int]
- Raises:
Exception – Исключение возникает, если узел не существует.