首先,我应该承认我对所有与图形相关的事情都很差。我的树是作为嵌套字典实现的,代表着未加权的马尔可夫链。
class Tree(object):
def __init__(self, depth=6, seq=None):
self.graph = dict()
self.depth = depth
if seq is not None:
self.build(seq)
def build(self, seq):
for i in xrange(len(seq)):
sseq = seq[i:i+self.depth]
for j in xrange(len(sseq)):
if j == 0:
if sseq[j] not in self.graph:
self.graph[sseq[j]] = dict()
nest_pointer = self.graph[sseq[j]]
else:
if sseq[j] not in nest_pointer:
nest_pointer[sseq[j]] = dict()
nest_pointer = nest_pointer[sseq[j]]
我需要能够比较两个树,同时了解不同之处出现的深度,因为我要使用分级相似性评分系统,所以简单的递归深度优先搜索无法满足需求。
附注:
如果您可以为我的树提出更好的数据结构,我将非常感激。我选择字典以获得最大的时间性能。提前感谢您的帮助。