Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

그래프의 브리지


무방향 그래프의 간선을 제거하거나 그래프 연결을 끊거나 그래프의 다른 구성 요소를 만드는 경우에만 연결이라고 합니다.

그래프의 브리지

실용적인 접근 방식에서는 브리지 연결이 끊어질 때 네트워크에 일부 브리지가 존재하면 전체 네트워크가 끊어질 수 있습니다.

입력 및 출력

Input:그래프의 인접 행렬 사전> 

알고리즘

bridgeFind(시작, 방문, 디스크, 낮음, 상위)

입력 - 시작 정점, 노드 방문 시 표시할 방문 배열, 디스크는 정점의 발견 시간을 보유하고, low는 하위 트리에 대한 정보를 보유합니다. 부모는 현재 정점의 부모를 유지합니다.

출력 - 다리가 발견되면 인쇄하십시오.

시작 시간 :=0 //시간 값은 다음 함수 호출에 대해 초기화되지 않습니다. 시작을 방문한 것으로 표시 설정 디스크[start] :=시간+1 및 낮음[시작] :=시간 + 1 시간 :=시간 그래프 G의 모든 꼭짓점 v에 대해 + 1, (start, v) 사이에 간선이 있으면 수행하고 v를 방문하면 parent[v] :=start bridgeFind(v, 방문, 디스크, 낮음, 부모) low[start] :=low[start]와 low[v]의 최소값 low[v]> disk[start]이면 시작에서 v까지 브리지를 표시하고 그렇지 않으면 v가 시작의 부모가 아닌 경우 low[start]를 표시합니다. :=low[start] 및 disk[v] doneEnd의 최소값

예시

#include#define NODE 5 네임스페이스 사용 std;int graph[NODE][NODE] ={ {0, 1, 1, 1, 0}, {1, 0, 1, 0, 0}, { 1, 1, 0, 0, 0}, {1, 0, 0, 0, 1}, {0, 0, 0, 1, 0}}; int min(int a, int b) { return (a disk[start]) cout <<"Bridge " < 

출력

주어진 그래프의 브리지:브리지 3--4브리지 0--3