directed multigraph의 인접성 목록 표현에 O (V + E) 알고리즘이있어 방향이없는 단순 그래프로 변환 할 수 있습니까? 알고리즘은 최소한의 공간 만 사용해야합니다.인접 목록 목록 표현에서 중복 버텍스 및 자체 루프를 제거하는 그래프 알고리즘
0
A
답변
1
[EDIT 2013년 6월 5일 : 치료 [η] 일관 2D 배열한다.]
예, 나열된 각 인접 내의 버텍스가 정렬 된 순서에있는 많아야 하나 개의 에지가 제공 될 수있다 한 쌍의 꼭지점 사이. 나는 [I] [J]는 정점의 j 번째 아이를 가정 :이 시점에서
# First make sure each edge appears only in the lower endpoint's adjacency list.
# We don't care if this duplicates vertices in a list.
For each vertex i:
j = 1
For each k from 1 to len(a[i]):
a[i][j] = a[i][k]
If a[i][k] > i:
j = j + 1 # Only save space for edges to higher vertices
If a[i][k] < i:
Append i to a[a[i][k]]
Adjust len(a[i]) to j - 1
, 모든 인접 목록은 대부분이 개 정렬 된 서브 시퀀스로 구성 - 어떤 높은 정점 자식 정점의 원래 목록 (제거 될 수 있습니다), 상위 꼭지점의 인접 목록에 추가 된 상위 꼭지점 목록이 뒤를 잇을 수 있습니다. 두 번째 시퀀스의 시작은 이전 요소보다 작은 첫 번째 요소를 찾아서 선형 시간으로 찾을 수 있습니다. 발견되면 두 개의 서브 시퀀스를 같은 크기의 버퍼를 사용하여 선형 시간으로 병합 할 수 있습니다 (또는 여분의 공간을 사용하지 않고 로그 선형 시간으로 정렬하거나 버킷 정렬 및 대수 여분 공간을 사용하여 선형 시간으로 정렬). 이웃이 두 번 이상 나타날 수 없으며 병합 중에 병합 된 항목을 제거 할 수 있습니다.
관련 문제
- 1. 인접 목록 구현 그래프
- 2. 인접 목록 그래프가있는 Dijkstra의 알고리즘
- 3. 인접 목록 그래프 구현 c (모든 라이브러리)
- 4. 인접 목록 목록 카테고리에서 html 테이블 만들기
- 5. 비행지도 인접 목록 구현
- 6. 필터링 된 그래프를 부스트의 일반 그래프 (인접 목록)로 변환
- 7. 인접 목록 정렬 어린이 알파벳순으로
- 8. 인접 목록 모델 경로로 선택
- 9. 계획, 목록 및 그래프 이론
- 10. 일반 목록 및 중복 레코드
- 11. Global.asax 목록 자체 재설정
- 12. 목록 자체 삽입
- 13. 문자열 목록 순열 알고리즘
- 14. 배열 목록 알고리즘 - 인터뷰
- 15. 목록 순위 알고리즘 적용
- 16. 알고리즘 질문 / 문제 목록
- 17. 인접 목록과 액세스 제어 목록 설계를위한 mptt
- 18. 목록 상자의 실시간 검색 알고리즘
- 19. 지금은이 중복 이메일 목록
- 20. Xstream 목록 - 중복 입력란
- 21. 중복 항목이있는 목록
- 22. 프롤로그 반환 중복 목록
- 23. 중복 목록이없는 연결된 목록
- 24. 목록 컬렉션에서 중복 제거
- 25. 플랫 테이블에서 인접 목록 프로젝트 데이터
- 26. Doctrine Nested Set 대 인접 목록
- 27. 인접 목록 모델 + 웹 사이트 탐색
- 28. 인접 행렬에서 그래프 그리기
- 29. facebook-graph-api, 배열 목록 및 중복
- 30. 목록 및 하위 목록
언어에 따라 다르지만 기본적으로 다음과 같습니다.'각 정점 v에 대해 : v.edges = set (edges) .remove (v)' – amit