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 – Исключение возникает, если узел не существует.