0
{'a': [{'c','d'}, {'d'} ],
'b': [{'c','d'}, set() ],
'c': [set(), {'a','b','d'}],
'd': [{'a','c'}, {'a','b'} ],
'e': [set(), set() ]}
class Graph:
def __init__(self,*args):
self.edges = {}
def __le__(self,right):
for key, value in self.edges.items():
if key not in right.items() or value not in right.items():
return False
return True
2つのグラフを比較するための< =演算子を定義します。 g1の意味は、g1がg2の部分グラフであり、g1に存在するすべてのノードがg2に存在し、 がg1(起点ノード、宛先ノード)に存在するすべてのエッジが存在することを意味するので、g1 < = g2の意味を定義する。 g2。 いずれのグラフgについても、g < = gはTrueと評価されます。方法を修正する方法
私はル機能を実行すると、それは次のエラーを生成します。
g1.edges = {'a': [{'c'},{'d'}], 'b': [{'c','d'}, set()], 'c': [set(),{'a','b'}], 'd': [{'a'},{'b'}]}
g2.edges = {'a': [{'c'},{'d'}], 'b': [{'c','d'}, set()], 'c': [set(),{'a','b','d'}], 'd': [{'a','c'},{'b'}]}
g3.edges = {'a': [{'c','d'},{'d'}], 'b': [{'c','d'}, set()], 'c': [set(),{'a','b','d'}], 'd': [{'a','c'},{'a','b'}], 'e': [set(),set()]}
104 # Test <=
111 *Error: g1 <= g1 and g2 <= g2 and g3 <= g3 raised exception; unevaluated: True
112 *Error: g1 <= g2 raised exception; unevaluated: True
113 *Error: g2 <= g3 raised exception; unevaluated: True
115 *Error: g1 <= g2 raised exception; unevaluated: False
117 *Error: g2 <= g3 raised exception; unevaluated: False
誰かが私のル機能を修正するために私を助けることができますか?ありがとう。
グラフの構造は明確ではありません。私は、ノードが近隣のリストまたは近隣のセットに関連付けられていることを期待していました。しかし、「b」とは何か:{{'c'、 'd'}、set()] ' – phynfo
@phynfoこれは有向グラフなので、おそらく各ノードは一対の発信/着信アークに関連付けられています。 '' b ':[{' c '、' d '}、set()] 'は' b'が 'c'と' d'に弧を持ち、入ってくる弧がないことを意味します。 。 –