2012-01-10 3 views
0

나는 "ID"와 "이름"필드를 가진 "Node"테이블을 가지고 있으며, 또한 many-to-many처럼 노드 사이를 연결하는 "Link"테이블을 가지고있다.Python. 그래프 트리에서 재귀 적 데이터베이스

 
Node 
id | name 
1 node1 
2 node2 
3 node3 
4 node4 
5 node5 
6 node4 
7 node5 

Link 
id | node_id | node2_id 
1  1   2 
2  2   3 
3  3   5 
4  2   4 
5  3   6 
6  3   7 

     node4 node7 
      |  | 
node1-->node2-->node3-->node6 
        | 
       node5 

이 그래프, 목록 또는 중첩 된 dict을 생성하려면 어떻게 파이썬을 사용합니까? 알고리즘 구성에 문제가 있습니다. get_derrived 함수는 파생 된 요소의 목록을 반환했습니다. 내 코드는 다음과 같습니다

c.tree = {노드 1 : {}, 노드 2 : {}, 노드 3 : {}, 노드 4 : {}에 Node5 : 합계에서

c.tree = {} 
    def get_tree(node_id): 
     for node in get_derrived(node_id): 
      if not node in c.tree: 
       c.tree[node] = {} 
       get_tree(node.id)   
    get_tree(id) 

내가 노드 1에 대한이 { } node6 {} node7 {}} 노드 2에 대한

:

c.tree 노드 2 = {{}, 노드 4 : {} 노드 3 : {}에 Node5 {} node6 : {}, node7 : {}}

하지만 dict {node4 : {}, node3 : {node7 : {}, node5 : {}, node6 : {}}}}이 필요합니다.

답변

0

파이썬 그래프에서이 example을보십시오.

프로그래밍 방식으로 grah를 만드는 방법과 graphviz을 사용하여 프로그래밍 방식으로 표시하는 방법을 보여줍니다 (Linux 배포판을 사용하는 경우 시스템에 이미 설치되어 있어야 함).

0

도트 및 그래프를 사용하십시오.

도트 코드를 생성하는 데 도움이되는 라이브러리가 있지만 텍스트를 파일로 덤프하기 위해 쉽게 작성할 수 있습니다.