파 이 썬 토폴로지 정렬 지식 에 대한 설명
일반적으로 이러한 선형 서열 은 토폴로지 순서(Topological Order)를 만족 시 키 는 서열 이 라 고 하 는데 토폴로지 서열 이 라 고 부른다.쉽게 말 하면 특정한 집합 상의 한 편차 에서 이 집합 상의 전 서 를 얻 을 수 있 는데 이 조작 을 토폴로지 정렬 이 라 고 한다.
그림 이론 에서 고리 가 없 는 그림 의 정점 으로 구 성 된 서열 로 다음 조건 을 만족 시 킬 때 이 그림 의 토폴로지 정렬(영어:Topological sorting)이 라 고 합 니 다.
4.567917.정점 마다 나타 나 고 한 번 만 나타난다4.567917.만약 에 A 가 서열 에서 B 의 앞 에 있 으 면 그림 에 B 에서 A 까지 의 경로 가 존재 하지 않 는 다
인 스 턴 스 코드
from collections import defaultdict
class Graph:
def __init__(self,vertices):
self.graph = defaultdict(list)
self.V = vertices
def addEdge(self,u,v):
self.graph[u].append(v)
def topologicalSortUtil(self,v,visited,stack):
visited[v] = True
for i in self.graph[v]:
if visited[i] == False:
self.topologicalSortUtil(i,visited,stack)
stack.insert(0,v)
def topologicalSort(self):
visited = [False]*self.V
stack =[]
for i in range(self.V):
if visited[i] == False:
self.topologicalSortUtil(i,visited,stack)
print (stack)
g= Graph(6)
g.addEdge(5, 2);
g.addEdge(5, 0);
g.addEdge(4, 0);
g.addEdge(4, 1);
g.addEdge(2, 3);
g.addEdge(3, 1);
print (" :")
g.topologicalSort()
다음 코드 출력 결 과 를 실행 합 니 다:토폴로지 정렬 결과:
[5, 4, 2, 3, 1, 0]
인 스 턴 스 확장:
def toposort(graph):
in_degrees = dict((u,0) for u in graph) # 0
vertex_num = len(in_degrees)
for u in graph:
for v in graph[u]:
in_degrees[v] += 1 #
Q = [u for u in in_degrees if in_degrees[u] == 0] # 0
Seq = []
while Q:
u = Q.pop() #
Seq.append(u)
for v in graph[u]:
in_degrees[v] -= 1 #
if in_degrees[v] == 0:
Q.append(v) # 0
if len(Seq) == vertex_num: # 0 ,
return Seq
else:
print("there's a circle.")
G = {
'a':'bce',
'b':'d',
'c':'d',
'd':'',
'e':'cd'
}
print(toposort(G))
출력 결과:['a', 'e', 'c', 'b', 'd']
파 이 썬 의 토폴로지 정렬 지식 에 대한 설명 은 여기까지 입 니 다.더 많은 파 이 썬 토폴로지 정렬 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.