【发布时间】:2015-02-12 19:17:30
【问题描述】:
首先,我应该承认我在所有与图表相关的事情上都非常糟糕。我的树被实现为代表未加权马尔可夫链的嵌套字典。
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]]
我需要的是能够比较两棵树,同时了解发生差异的深度,因为我将使用分层相似度评分系统,因此简单的递归 DFS 无法解决问题。
附言
如果您能为我的树提出更好的数据结构,我将不胜感激。我用字典来获得最大的时间性能。先感谢您。
【问题讨论】:
标签: python dictionary graph tree