3

Python で ETE2 モジュールを使用してツリーを作成しようとしています。2 つの親ノードに 1 つの子ノードを追加して、ツリーが表示されたときに両方が子ノードに接続されるようにします。私は ETE の完全な初心者なので、これが簡単な質問である場合はご容赦ください。コード:

from ete2 import Tree, TreeNode, TextFace


classes = Tree()

#adding 1
course1 = TreeNode(name="Course 1")
face1 = TextFace(text="Course 1")
course1.add_face(face1, column=1)
classes.add_child(child=course1)

#adding 2
course2 = TreeNode(name="Course 2")
face2 = TextFace(text="Course 2")
course2.add_face(face2, column=1)
course1.add_child(child=course2)

#adding 3
course3 = TreeNode(name="Course 3")
face3 = TextFace(text="Course 3")
course3.add_face(face3, column=1)
#adding course3 to 2 parents
course1.add_child(child=course3)
course2.add_child(child=course3)

classes.show()

出力はここ

ここで私は根本的にツリーの考えに反対していますか? ETE には、私が提案していることを行う簡単な方法がありますか?

さらに詳しい情報が必要な場合はお知らせください。

4

1 に答える 1

2

私は基本的に、自分の質問に対する答えを見つけました。使用すべきデータ構造はツリーではありません。@boardrider は、ツリーは本質的に「1 対多」の構造であり、1 つの親ノードを 1 つ以上の子にマッピングすることを指摘しました。

解決策は有向非巡回グラフでした。これはグラフ データ構造のバリエーションであり、「多対多」をマップして上記の言い回しを続けます。

資力:

グラフのデータ構造の基礎

Python 固有のグラフ構造

進行するにつれて、これを編集します。

于 2015-07-25T00:51:14.133 に答える