Прежде всего, я должен признаться, что я очень плохо отношусь к графику. Мои деревья реализованы как вложенные словари, которые представляют собой невзвешенные цепи Маркова.Сравнение двух деревьев/графиков в Python
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 не делает Хитрость.
P.S.
Если вы можете предложить лучшую структуру данных для моих деревьев, я был бы очень признателен. Я пошел со словарями, чтобы получить максимальную производительность. Заранее спасибо.
Относительно вас P.S. , есть много предложений по SO, которые могут помочь вам реализовать другую (я смущаюсь сказать лучше, поскольку я ее не сравнивал) структуру данных для ваших деревьев. См. [This] (http://stackoverflow.com/questions/3009935/looking-for-a-good-python-tree-data-structure), [это] (http://stackoverflow.com/questions/2482602/ a-general-tree-implementation-in-python) или [this] (http://stackoverflow.com/questions/2358045/how-can-i-implement-a-tree-in-python-are-there- any-built-in-data-structure-in? rq = 1) – Muttonchop