Sobes.tech
Back to questions
Junior — Middle
58

Каким образом можно выполнить сравнение двух объектов, представленных в форме ребра?

Answer from AI

sobes.tech AI

Если ребро представлено как объект с двумя вершинами (например, source и target), то сравнение двух таких объектов может зависеть от того, ориентированное ребро или нет.

Пример для неориентированного ребра (ребро между вершинами A и B равно ребру между B и A):

class Edge:
    def __init__(self, source, target):
        self.source = source
        self.target = target

    def __eq__(self, other):
        if not isinstance(other, Edge):
            return False
        return {self.source, self.target} == {other.source, other.target}

    def __hash__(self):
        return hash(frozenset([self.source, self.target]))

# Пример использования
edge1 = Edge('A', 'B')
edge2 = Edge('B', 'A')
print(edge1 == edge2)  # True

Для ориентированного ребра сравнение будет учитывать порядок вершин:

def __eq__(self, other):
    if not isinstance(other, Edge):
        return False
    return self.source == other.source and self.target == other.target

Таким образом, сравнение зависит от контекста задачи и типа ребра.