가중치가 적용된 단방향 큰 그래프의 모든 정점을 나타내는 데 인접 행렬을 사용하고 있습니다. 이 그래프에서 에지는 정점을 자체에 연결하지 않습니다. 이는 내 인접 행렬의 모든 대각선 요소를 null
으로 만듭니다. 내 그래프가 크면 인접 행렬에서 왼쪽 삼각형의 요소를 저장할 필요가 없습니다. 다음은 인접 행렬이있는 작은 샘플 그래프입니다. 가중치가 적용된 단방향 그래프의 정점 표현
단방향 그래프에서 왼쪽 삼각형은 직각 삼각형의 거울 이미지입니다. 즉 adjacency_matrix[i][j]
, adjacency_matrix[j][i]
이 동일합니다. 그래서 왜 왼쪽 삼각형을 저장해야합니다. 큰 그래프의 경우이 트릭은 많은 메모리를 절약 할 수 있습니다. 동시에 에지가 꼭지점을 자체에 연결하지 않으므로 대각 요소도 0입니다. 즉 adjacency_matrix[i][i]
은 0입니다. 하지만 어떻게 구현할 수 있습니까? 여기서 2D 배열을 사용할 수 있습니까?
그래 .... 그게 내가 원하는거야. 나는 이제 1D 배열의 인덱스 계산을 생각해야합니다. 고맙습니다. –
'int [] [] weight = 새로운 int [N] []; weight (i) = new int [N-1-i]; '는 (int i = 0; i
브레인 스토밍이 끝나면 마침내 차원 'n (n-1)/2'의 1 차원 배열로 작업 할 수 있으며 모든 요소는 다음 수식으로 액세스 할 수 있습니다. 'index = n * row + col- (row + (행 +2)/2' 여기서 '인덱스'는 1D 배열의 인덱스이고 '행'과 'col'은 차원 'n * n'을 갖는 2D 배열에 속한다. –