파이썬에서 kruskal의 알고리즘을 구현하고 싶습니다. 트리/그래프를 어떻게 표현할 수 있습니까? 그리고주기를 감지하기 위해 어떤 방법을 사용해야합니까?파이썬에서 그래프/트리를 나타내는 법과주기를 감지하는 방법은 무엇입니까?
9
A
답변
11
(제 생각에)을 표현하는 가장 간단한 방법은 배열 목록의 딕셔너리를 사용하는 것입니다 :
graph = {}
graph[node_id] = [other_node_id for other_node_id in neighbors(node_id)]
사이클을 찾는 간단한 방법은 BF 또는 DF 검색을 사용하는 것입니다 :
def df(node):
if visited(node):
pass # found a cycle here, do something with it
visit(node)
[df(node_id) for node_id in graph[node]]
면책 조항 : 이것은 실제로 스케치입니다. neighbors()
, visited()
및 visit()
은 알고리즘이 어떻게 나타나야 하는지를 나타내는 단지 인물입니다.
4
Python Graph API은 좋은 출발점입니다.
예를 들어 NetworkX에는 최소 스패닝 트리를 찾기위한 Kruskal의 알고리즘 구현이 있습니다.
바퀴를 다시 발명하고 직접 만들고 싶다면 그럴 수도 있습니다.
+3
예 휠을 처음으로 다시 발명하려고합니다. –
관련 문제
- 1. 파이썬에서 행렬을 나타내는 법
- 2. 파이썬에서 xml.dom.minidom 노드를 나타내는 문자열을 구문 분석하는 방법은 무엇입니까?
- 3. 파일을 감지하는 방법은 무엇입니까?
- 4. CATiledLayer를 감지하는 방법은 무엇입니까?
- 5. 구멍이있는 다각형을 나타내는 방법은 무엇입니까?
- 6. ASP.NET에서 AppDomain을 나타내는 방법은 무엇입니까?
- 7. 이진 투명도를 나타내는 방법은 무엇입니까?
- 8. 제한된 컨텍스트를 나타내는 방법은 무엇입니까?
- 9. BOOL 래퍼를 나타내는 방법은 무엇입니까?
- 10. 페이지 리디렉션을 감지하는 방법은 무엇입니까?
- 11. 변수가 변경되었는지 감지하는 방법은 무엇입니까?
- 12. compileall.compile_dir에서 오류를 감지하는 방법은 무엇입니까?
- 13. 클라이언트 시간대를 감지하는 방법은 무엇입니까?
- 14. 시야를 렌더링하고 감지하는 방법은 무엇입니까?
- 15. 브라우저 플러그인을 감지하는 방법은 무엇입니까?
- 16. Win32에서 디렉토리를 감지하는 방법은 무엇입니까?
- 17. Vim에서 함수를 감지하는 방법은 무엇입니까?
- 18. dbus 유형을 b (oss)로 나타내는 방법은 무엇입니까?
- 19. MVC에서 모델 간 정보를 나타내는 방법은 무엇입니까?
- 20. CSS에서 듀얼 셀 형식을 나타내는 방법은 무엇입니까?
- 21. 필드가 필수임을 나타내는 좋은 방법은 무엇입니까?
- 22. NSIndexSet 개체의 인덱스를 나타내는 방법은 무엇입니까?
- 23. totalview에서 int *를 배열로 나타내는 방법은 무엇입니까?
- 24. 과학 표기법으로 NSNumber를 나타내는 방법은 무엇입니까?
- 25. 오른쪽 또는 왼쪽으로 흔들림을 나타내는 방법은 무엇입니까?
- 26. 정수 배열에 음수를 나타내는 방법은 무엇입니까?
- 27. XML 문서에서 '<'문자를 나타내는 방법은 무엇입니까?
- 28. 포스트그레스 테이블에서 다음 정보를 나타내는 방법은 무엇입니까?
- 29. 목록보기 항목에 포커스가 있음을 나타내는 방법은 무엇입니까?
- 30. UML로 템플릿 클래스를 나타내는 올바른 방법은 무엇입니까?
배열 사전에 의해 목록의 사전을 의미합니까? –
@ 버니 래빗 erm .. 네. 죄송합니다. 이름을 잘못 사용했습니다.>< –