방향그래프 , 깊이우선탐색 Warshall 알고리즘
강한결합요소 찾기 문제
위상정렬/ 역위상정렬
AOE Network
Network 방향그래프 이면서 간선의 가중치가 있는 그래프
방향그래프 : 간선에 방향성이 한방향으로만 연결되어 있는 그래프
(Tip : 무방향그래프의 간선은 양방향 간선이다)
내차수(In-degree) : 정점으로 들어오는 간선수
외차수(Out-degree) 정점에서 나가는 간선수
도달가능성(Reachability)
한 정점에서 다른 모든 정점을 방문할 수 있는 건 아니다(방향성이 있기 때문)
(깊이우선 탐색 : 모든 노드를 탐색 하는 방법)
그래서 깊이우선 탐색으로 시작점을 줄 수 있는 깊이우선 탐색으로 조금 변경한 후
해당 노드에서 인접노드를 스택에 넣고, 스택에 넣었던 노드중 하나를 꺼내어서 꺼낸 노드를 방문하고
이 노드의 인접 노드를 다시 스택에 넣고 또다시 방문하고를 바복하면서
방향성으로 갈 수 있는 노드를 따라 가다보면 시작하려고 했던 노드에서의 방향성이 어디까지 접근 할 수 있는지
도달가능범위를 알 수 있다
Transitive closure( 이행적 폐쇄 )
어떤 정점 A 에서 C 로 가는 방향에 대해서 직접 경로는 없지만, 우회 경로가 있을때 A->C 로 의 간선을 연결한 그래프( 방향으로 갈 수 있을 때 )
Warshall 알고리즘
그리고 A->A 도 가능하기에 배열 테이블의 대각선 값은 1 이 된다
A->B 와 B-C 를 만족하는 경로가 있으면 A->C로 가는 경로도 존재한다
그래서 A->C 로 접근 가능하다를 구현한 것 => 배열 테이블에서 A->C 로 가는 값을 세팅해준다
A->B 로 가는 값이 1로 세팅이 되어 있고 B 에서 C 로 가는 값에도 1 로 세팅 되어 있으면
A에서 C 로 가는 값을 1 로 세팅해준다( 접근 가능경로로 만든다 ) => warshall
그다음 반복...
위에서 A->C 로 가는 값이 1 이므로
C->F 로 가는 값이 1 이고 F->D 로 가는 값 또한 1 이라면 C->D 로 가는 값을 1 로 세팅해준다
[C++ 알고리즘 참고]
[강한결합요소]
: 정점 A 에서 B로 가는 방향성 경로도 존재하고 B 에서 A로가는 방향성경로도 존재
( 사이클로 이루어지고 한쪽 방향으로 도는 경우를 말함 )
- 강한결합요소는 정점 하나를 제거해도 연결은 유지된다
( 강한결합요소의 경우 정점 하나를 제거해도 나머지 노드들끼리는 연결되어 있다는 것 )
중요한 부분에서 는 강현 결합요소로 연결해주면 좋다
VS
이중연결(biconnectivity) : 한쪽 말고도 다른쪽으로도 연결 되어 있는 구조
[강한결합요소 찾기]
왼쪽 트리의 간선에 비용을 매겨서 깊이우선 탐색으로 모든 노드 방향에 대해 탐색 하는 경로를 얻은 후
오른 쪽에는 깊우우선 탐색으로 얻은 것을 먼저 그린후( 빨간선 제외)
모든 노드를 연결하는 경로 외의 선(오른쪽 그림에서 붉은 선) 에 대해서
왼쪽 방향대로 연결해주었을때 오른쪽 그림의 가장 하위 정점에서 자기자신 을 가르키게 되면 그것이 강한결합이 된다
(각 노드에서 빨간색을 타고 올라갔을때 1의 노드(비트리간선으로 자기자신)가 다시 나오면 강한결합이 된다)
오른쪽 그림에는 두가지의 강한결합을 보여주고 있다
빨간색선 : 난트리엣지( = 방문하지 안은 엣지)
파랑색 : 트리엣지 ( = 방문한 엣지)
1. A->D->F->E ->A , A 로 시작해서 가장 하위로 갔을때 그것이 자기자신을 가르키는 경우를 강한 요소라 한다
2. G->J->I ->G
'알고리즘 & 자료구조 > 알고리즘&자료구조' 카테고리의 다른 글
AOE Network( 작업 공정의 최장, 최단 시간 알아보기 ) (0) | 2012.10.31 |
---|---|
순환없는방향성그래프(DAG) 에서 사용할 수 있는 위상정렬(Topological Sort) [순서적공정모델링] (0) | 2012.10.31 |
가중그래프(최소비용신장트리, 최단경로찾기) 정리 (0) | 2012.10.31 |
다익스트라(Dijkstra) 알고리즘 ( 최단거리 찾기 알고리즘 ) (0) | 2012.10.31 |
MCST=최소비용신장트리 - Kruskal 알고리즘 [모든노드최소비용연결트리-사이클없음] (0) | 2012.10.31 |