[kotlin] 배열을 이용하여 그래프를 표현하는 방법은?

인접 행렬은 2차원 배열로 그래프의 각 노드 사이의 연결 여부를 표현합니다. 행과 열은 각각 그래프의 노드를 나타내며, 배열의 값은 해당 노드들 사이의 엣지가 존재하는지 여부를 나타냅니다. 연결이 있는 경우 1로 표시하고, 연결이 없는 경우 0으로 표시합니다.

다음은 Kotlin에서 인접 행렬을 사용하여 그래프를 표현하는 예시입니다:

val graphSize = 4 // 그래프의 크기
val graph = Array(graphSize) { IntArray(graphSize) } // 인접 행렬 생성

// 그래프 연결 설정
graph[0][1] = 1 // 노드 0과 노드 1을 연결
graph[1][2] = 1 // 노드 1과 노드 2를 연결
graph[2][3] = 1 // 노드 2와 노드 3을 연결

// 인접 행렬 출력
for (i in 0 until graphSize) {
    for (j in 0 until graphSize) {
        print("${graph[i][j]} ")
    }
    println()
}

출력 결과는 다음과 같습니다:

0 1 0 0 
0 0 1 0 
0 0 0 1 
0 0 0 0 

이제 그래프를 인접 행렬로 표현하는 방법에 대해 알게 되었습니다. 인접 행렬은 그래프의 연결 여부를 효율적으로 확인할 수 있는 장점이 있지만, 그래프가 큰 경우 불필요한 메모리 공간을 차지할 수 있다는 단점이 있습니다. 이를 고려하여 그래프를 표현하는 방법을 선택해야 합니다.