P2-9.2 배열(array), 표(table), 트리(tree), 그래프(graph) 직관¶
Section ID:
P2-9.2Version:v2026.07.23
P2-9.1에서는 자료구조(data structure)가 데이터를 어떤 모양으로 조직하느냐의 문제라고 봤습니다. 이제 AI 실습에서 자주 만나는 네 가지 모양을 넓게 비교합니다.
배열(array), 표(table), 트리(tree), 그래프(graph).
여기서는 배열(array), 표(table), 트리(tree), 그래프(graph)를 한 번에 비교하는 기본 설명을 제공합니다. 뒤 절에서 그래프를 따로 더 보더라도, 네 구조가 서로 어떤 질문에 답하는지는 여기 기준으로 다시 연결합니다.
이 네 가지는 모두 데이터를 담는 방식이지만, 서로 다른 질문에 답합니다. 배열은 위치와 축(axis)을 묻고, 표는 행(row)과 열(column)을 묻고, 트리는 계층(hierarchy)을 묻고, 그래프는 관계(relation)를 묻습니다.
이 절은 자료구조 이름을 한 번에 외우는 대신, 어떤 질문이 어떤 구조를 자연스럽게 부르는지 비교합니다. 앞 절에서 자료구조가 왜 필요한지 큰 그림을 봤다면, 여기서는 그 큰 그림을 배열, 표, 트리, 그래프라는 네 가지 대표 시야로 펼쳐 봅니다. 이 구분을 먼저 잡아 두면, 뒤에서 NumPy와 Pandas를 다시 만날 때도 도구 이름보다 지금 어떤 구조 질문을 하고 있는지를 먼저 떠올리기 쉬워집니다.
| 지금 이 절에서 잡을 것 | 바로 다음에 이어질 질문 | 이후 다시 쓰이는 위치 |
|---|---|---|
| 배열, 표, 트리, 그래프가 서로 다른 질문에 답하는 구조라는 점 | P2-9.3에서 관계 표현이 특히 중요한 그래프를 왜 따로 다시 보는지로 이어집니다. | 이후 NumPy, Pandas, 문서 구조, 관계 데이터 설명에서 반복됩니다. |
| 같은 데이터도 위치, 비교, 계층, 관계 중 무엇을 보느냐에 따라 다른 구조로 읽힌다는 점 | 어떤 구조가 현재 작업에 더 자연스러운지 판단하는 기준으로 이어집니다. | 이후 데이터셋 설계, 전처리, 검색, 추천, 지식 그래프 설명에서 다시 쓰입니다. |
| Chapter 9가 이름 암기보다 구조 선택 질문을 훈련하는 장이라는 점 | P2-9.4 보충학습의 전통 용어 목록을 더 안전하게 읽는 기준으로 이어집니다. | 이후 자료구조 용어와 실제 실습 장면을 섞지 않고 읽는 바탕이 됩니다. |
| 용어 | 이 절에서 먼저 잡을 뜻 |
|---|---|
| 배열(array) | 위치와 축을 기준으로 값을 읽는 구조입니다. |
| 표(table) | 행과 열의 교차로 값을 정리하는 구조입니다. |
| 트리(tree) | 부모-자식의 계층 관계를 중심으로 읽는 구조입니다. |
| 그래프(graph) | 노드와 연결 관계를 중심으로 읽는 구조입니다. |
| 구조 질문(structure question) | 지금 데이터에서 위치, 행열, 계층, 관계 중 무엇이 중요한지 묻는 질문입니다. |
핵심 기준: 배열(array), 표(table), 트리(tree), 그래프(graph) 직관¶
- 배열(array), 표(table), 트리(tree), 그래프(graph)를 서로 다른 데이터 관점으로 구분할 수 있습니다.
- 배열을 위치와 축, 표를 행과 열, 트리를 부모-자식, 그래프를 노드와 엣지 관점으로 설명할 수 있습니다.
- AI 실습에서 토큰, 임베딩, 데이터셋, 문서 구조, 지식 그래프가 어떤 구조 감각과 연결되는지 설명할 수 있습니다.
- 같은 정보를 목적에 따라 배열, 표, 트리, 그래프 중 다른 구조로 볼 수 있음을 설명할 수 있습니다.
먼저 붙잡을 기준¶
이 절에서 가장 먼저 붙잡아야 할 기준은 자료구조 이름보다 지금 어떤 질문을 하고 있는가입니다.
| 지금 하는 질문 | 먼저 떠올릴 구조 |
|---|---|
| 어느 위치의 값인가 | 배열(array) |
| 어떤 행과 열의 값인가 | 표(table) |
| 상위와 하위가 어떻게 나뉘는가 | 트리(tree) |
| 무엇과 무엇이 연결되는가 | 그래프(graph) |
즉 같은 데이터라도 위치, 행열, 계층, 관계 중 무엇을 보느냐에 따라 더 자연스러운 구조가 달라집니다.
세 가지 기준¶
| 기준 | 왜 중요한가 | 이 절에서 필요한 이해 수준 |
|---|---|---|
| 같은 데이터를 여러 구조로 보는 이유 | 던지는 질문이 달라지면 잘 보이는 구조도 달라지기 때문입니다. | 같은 정보도 위치, 비교, 계층, 관계 중 무엇을 보느냐에 따라 다른 구조로 읽힙니다. |
| 배열, 표, 트리, 그래프의 차이 | 네 구조를 이름이 아니라 읽기 기준으로 구분하게 해 줍니다. | 위치, 행과 열, 계층, 연결이라는 서로 다른 관점을 구분하면 충분합니다. |
| 지금 먼저 기억할 것 | 뒤에서 도구 이름보다 구조 질문을 먼저 떠올리게 해 줍니다. | 자료구조 이름보다 어떤 질문에 강한지 먼저 기억합니다. |
네 가지 구조를 한 번에 비교하기¶
자료구조를 처음 볼 때는 이름보다 “무엇을 묻는가”가 중요합니다.
아래 도식은 네 구조가 각각 어떤 질문을 강조하는지 보여 줍니다.
| 구조 | 핵심 질문 | 기본 단위 | AI 실습에서 만나는 예 |
|---|---|---|---|
| 배열(array) | 어느 위치의 값인가? | 인덱스(index), 축(axis), 값(value) | 벡터, 행렬, 이미지 픽셀, 임베딩 |
| 표(table) | 어떤 행과 열의 값인가? | 행(row), 열(column), 셀(cell) | CSV 데이터셋, 학습 데이터, 평가 결과 |
| 트리(tree) | 상위와 하위가 어떻게 나뉘는가? | 루트(root), 부모(parent), 자식(child) | 목차, 폴더, 분류 체계, 의사결정 흐름 |
| 그래프(graph) | 무엇과 무엇이 연결되는가? | 노드(node), 엣지(edge) | 링크, 추천 관계, 지식 그래프, 검색 연결 |
이 네 구조는 서로 완전히 분리된 세계가 아닙니다. 표의 한 열이 배열처럼 계산될 수 있고, 트리는 그래프의 특수한 형태로 설명될 수 있으며, 그래프도 Python 딕셔너리와 리스트를 조합해 간단히 표현할 수 있습니다.
여기서 중요한 것은 “정답 구조”를 외우는 일이 아닙니다. 어떤 질문을 던지는지에 따라 데이터가 다르게 보인다는 점을 익히는 일입니다.
아래 도식은 질문에서 자료구조로 넘어가는 흐름을 다시 정리한 것입니다.
데이터의 이름보다 질문을 먼저 적습니다.
| 먼저 적을 질문 | 떠올릴 구조 |
|---|---|
| 숫자들을 순서대로 계산해야 하는가? | 배열(array) |
| 사례별 속성을 비교해야 하는가? | 표(table) |
| 상위와 하위의 포함 관계를 봐야 하는가? | 트리(tree) |
| 대상 사이의 연결을 따라가야 하는가? | 그래프(graph) |
이 표를 실전형으로 다시 쓰면:
| AI 실습 장면 | 먼저 읽을 구조 감각 |
|---|---|
| 임베딩 벡터, 이미지 픽셀 | 배열 |
| CSV, 학습 데이터셋, 실험 결과표 | 표 |
| 목차, 폴더, 분류 체계 | 트리 |
| 링크, 추천, 지식 관계 | 그래프 |
배열(array): 위치와 축으로 읽는 데이터¶
배열(array)은 값을 위치(index)로 다루는 구조입니다. NumPy 문서에서 ndarray는 같은 타입과 크기의 항목을 담는 다차원 컨테이너로 설명됩니다. 여기서는 배열을 다음처럼 이해합니다.
배열은 숫자들이 위치와 축을 가진 채 놓인 구조입니다.
1차원 배열은 한 줄의 숫자입니다.
문제 상황: 위치로 값을 읽는 배열 감각을 가장 작은 숫자 목록으로 확인하고 싶습니다. 입력(input): 숫자 목록 embedding. 기대 출력(output): 첫 번째 값과 세 번째 값이 출력됩니다. 확인할 개념: 배열에서는 값 자체뿐 아니라 어느 위치의 값인가가 중요합니다.
2차원 배열은 행과 열이 있는 숫자 격자처럼 볼 수 있습니다.
문제 상황: 2차원 배열처럼 보이는 숫자 격자에서 특정 위치 값을 꺼내는 예를 보고 싶습니다. 입력(input): 2행 3열 숫자 구조 image_patch. 기대 출력(output): 지정한 행과 열 위치의 값 두 개. 확인할 개념: 2차원 배열은 행과 열 위치를 함께 읽어 값을 찾습니다.
배열에서 중요한 것은 값만이 아니라 위치입니다. 이미지의 픽셀은 위치가 바뀌면 다른 이미지가 되고, 임베딩 벡터도 숫자들이 정해진 순서로 놓여야 계산에 사용할 수 있습니다.
AI 실습에서는 배열 감각이 다음 장면에서 자주 등장합니다.
- 문장을 토큰 ID(token ID)의 시퀀스로 바꿀 때
- 단어, 문장, 이미지를 임베딩 벡터로 표현할 때
- 여러 샘플을 행렬(matrix)처럼 묶어 계산할 때
- 이미지 데이터를 높이, 너비, 채널(channel)의 축으로 다룰 때
배열은 “숫자 계산을 위한 구조”에 가깝습니다. 그래서 P2-11의 NumPy 배열, P2-3장의 벡터·행렬, 그리고 Part 4 이후의 텐서(tensor) 설명에서 다시 등장합니다.
예를 들어 점수의 평균을 계산하려면 표 전체보다 점수 배열만 꺼내 보는 편이 단순합니다.
문제 상황: 숫자만 모인 구조가 계산에 유리한 장면을 평균 계산으로 보고 싶습니다. 입력(input): 점수 목록 scores. 기대 출력(output): 평균값 average. 확인할 개념: 배열 감각은 숫자 계산 중심 작업에서 특히 유용합니다.
이 예제에서 관심은 학생의 이름이나 라벨이 아니라 숫자의 위치와 계산입니다. 이런 순간에는 배열 감각이 먼저 필요합니다.
표(table): 행과 열로 읽는 데이터¶
표(table)는 데이터를 행(row)과 열(column)로 읽는 구조입니다. pandas의 DataFrame은 2차원이고 크기를 바꿀 수 있으며, 잠재적으로 서로 다른 타입을 담을 수 있는 표 형식 데이터로 설명됩니다. 또한 행과 열이라는 라벨이 있는 축을 가진다고 설명합니다.
여기서는 표를 다음처럼 이해합니다.
표는 사례 하나를 행으로 놓고, 속성 하나를 열로 놓는 구조입니다.
| name | age | score | label |
|---|---|---|---|
| Kim | 21 | 82 | pass |
| Lee | 20 | 75 | pass |
| Park | 22 | 45 | fail |
Python에서는 작은 표를 리스트와 딕셔너리로 표현할 수 있습니다.
문제 상황: 사례별 속성을 표처럼 정리한 데이터를 순회하는 예를 보고 싶습니다. 입력(input): 학생 레코드가 들어 있는 리스트 students. 기대 출력(output): 학생 이름과 점수가 차례대로 출력됩니다. 확인할 개념: 표 구조는 한 행이 한 사례, 각 키가 열 역할을 하는 방식으로 읽을 수 있습니다.
표에서 중요한 것은 한 행이 무엇을 뜻하고, 한 열이 무엇을 뜻하는지입니다.
AI 실습에서는 표 감각이 다음 장면에서 자주 등장합니다.
- CSV 파일을 데이터셋으로 읽을 때
- 입력 특징(feature)과 정답 라벨(label)을 나눌 때
- 학습 결과를 모델별, 실험별로 비교할 때
- 결측값(missing value), 이상값(outlier), 데이터 타입을 확인할 때
표는 “사례와 속성을 정리하는 구조”에 가깝습니다. 숫자 계산을 할 때는 배열로 바뀔 수 있지만, 사람이 데이터를 검토하고 설명할 때는 표가 더 읽기 쉽습니다.
예를 들어 합격한 학생만 골라 보려면 점수 배열보다 표 구조가 더 자연스럽습니다.
문제 상황: 한 사례의 여러 속성을 함께 보고 조건 필터링하는 예를 보고 싶습니다. 입력(input): 학생 레코드 리스트 students. 기대 출력(output): 합격한 학생 이름만 모은 passed_students. 확인할 개념: 표 감각은 여러 속성을 함께 보고 비교하거나 필터링할 때 유리합니다.
이 예제에서 관심은 숫자 계산만이 아니라 한 사례가 가진 여러 속성입니다. 그래서 행과 열 감각이 중요합니다.
트리(tree): 계층으로 읽는 데이터¶
트리(tree)는 루트(root)에서 시작해 부모(parent)와 자식(child) 관계로 내려가는 구조입니다. NIST Dictionary of Algorithms and Data Structures는 트리를 루트 노드에서 접근하며, 내부 노드가 하나 이상의 자식 노드를 갖는 구조로 설명합니다.
여기서는 트리를 다음처럼 이해합니다.
트리는 위에서 아래로 범위가 좁아지는 계층 구조입니다.
Python에서는 작은 트리를 딕셔너리와 리스트로 표현할 수 있습니다.
문제 상황: 문서 구조 같은 계층을 트리 비슷한 데이터로 표현하는 예를 보고 싶습니다. 입력(input): 루트 제목과 자식 목록을 가진 course_tree. 기대 출력(output): 각 Part 제목이 출력됩니다. 확인할 개념: 트리는 상위 항목 아래에 하위 항목이 들어가는 계층 구조입니다.
트리에서 중요한 것은 계층과 경로입니다. 어떤 항목이 상위 항목 아래에 속하는지, 어디에서 시작해 어디로 내려가는지가 중요합니다.
AI 실습과 서비스에서는 트리 감각이 다음 장면에서 등장합니다.
- 문서 목차와 섹션 구조를 읽을 때
- 폴더와 파일 경로를 다룰 때
- 분류 체계나 카테고리를 만들 때
- 의사결정 트리(decision tree)를 이해할 때
- JSON이나 HTML처럼 중첩된 구조를 읽을 때
트리는 “관계를 계층으로 정리하는 구조”에 가깝습니다. 모든 관계가 트리로 표현되는 것은 아니지만, 상위와 하위가 뚜렷한 데이터에는 트리 감각이 잘 맞습니다.
트리에서는 “어떤 항목 아래에 무엇이 있는가”를 묻습니다. 예를 들어 특정 Part 아래의 Chapter 목록을 꺼내는 식입니다.
문제 상황: 트리에서 특정 상위 항목 아래의 하위 목록을 찾는 예를 보고 싶습니다. 입력(input): course_tree와 찾을 항목 "Data Work". 기대 출력(output): "Data Work" 아래의 하위 주제 목록. 확인할 개념: 트리에서는 루트에서 시작해 원하는 경로까지 내려가는 감각이 중요합니다.
이 예제에서 중요한 것은 값의 크기나 표의 열이 아니라 경로(path)입니다. 루트에서 시작해 원하는 위치까지 내려가는 감각이 필요합니다.
그래프(graph): 연결로 읽는 데이터¶
그래프(graph)는 대상 사이의 연결을 표현합니다. NIST는 그래프를 엣지(edge)로 연결된 항목의 집합으로 설명하고, 각 항목을 정점(vertex) 또는 노드(node)라고 설명합니다.
여기서는 그래프를 다음처럼 이해합니다.
그래프는 점과 선으로 관계를 표현하는 구조입니다.
Python에서는 작은 그래프를 인접 리스트(adjacency list)처럼 표현할 수 있습니다.
문제 상황: 사람 사이 연결을 그래프처럼 표현하는 가장 단순한 예를 보고 싶습니다. 입력(input): 친구 관계 딕셔너리 friends. 기대 출력(output): "Kim"과 직접 연결된 사람 목록이 출력됩니다. 확인할 개념: 그래프는 대상과 대상의 연결을 저장하고 따라가는 구조입니다.
그래프에서 중요한 것은 순서나 계층보다 연결입니다. 누가 누구와 연결되어 있는지, 어떤 경로를 따라갈 수 있는지가 중요합니다.
AI 실습과 서비스에서는 그래프 감각이 다음 장면에서 등장합니다.
- 문서와 문서의 링크를 따라갈 때
- 지식 그래프(knowledge graph)에서 개념 관계를 표현할 때
- 추천 시스템에서 사용자와 항목의 연결을 볼 때
- 검색 시스템에서 문서, 키워드, 출처의 연결을 볼 때
- RAG에서 문서 조각과 메타데이터의 관계를 다룰 때
그래프는 “관계를 따라가는 구조”에 가깝습니다. P2-9.3에서는 그래프를 노드와 엣지 관점으로 조금 더 자세히 봅니다.
그래프에서는 “이 대상과 직접 연결된 대상은 무엇인가”를 먼저 묻습니다.
문제 상황: 그래프에서 한 노드와 직접 연결된 이웃을 확인하는 예를 다시 보고 싶습니다. 입력(input): friends["Kim"]. 기대 출력(output): "Kim"과 연결된 친구 이름들. 확인할 개념: 그래프 읽기의 첫 질문은 직접 연결된 이웃이 누구인가입니다.
그리고 한 단계 더 나아가 “연결을 따라가면 무엇이 더 보이는가”를 묻게 됩니다. 이 질문은 P2-9.3에서 더 자세히 다룹니다.
같은 정보를 네 가지 구조로 다시 보기¶
같은 학생 데이터를 네 가지 관점으로 다시 보겠습니다.
아래 도식은 같은 학생 데이터를 점수 배열, 레코드 표, 학교 계층, 친구 관계로 바꾸어 읽는 방식을 보여 줍니다.
같은 학생 데이터를 네 가지 구조로 한 번에 표현하면 차이가 더 잘 보입니다.
문제 상황: 같은 원천 데이터가 질문에 따라 배열, 표, 트리, 그래프 표현으로 달라지는 모습을 비교하고 싶습니다. 입력(input): 학생 이름, 반, 점수, 라벨, 친구 관계. 기대 출력(output): 계산용 점수 배열, 사례별 레코드 표, 반별 계층, 친구 연결 그래프. 확인할 개념: 구조 선택은 저장 모양이 아니라 답하려는 질문에 따라 달라집니다.
| 표현 | 코드에서 보는 이름 | 먼저 답하기 쉬운 질문 |
|---|---|---|
| 배열(array) | scores | 점수 숫자를 계산하고 싶은가? |
| 표(table) | records | 학생별 속성을 비교하고 싶은가? |
| 트리(tree) | school | 학교-반-학생 계층을 보고 싶은가? |
| 그래프(graph) | friends | 학생 사이 관계를 보고 싶은가? |
중요한 것은 어떤 표현이 “정답”인지가 아닙니다. 질문이 다르면 구조도 달라집니다.
| 질문 | 더 자연스러운 구조 |
|---|---|
| 점수 숫자를 계산하고 싶은가? | 배열(array) |
| 학생별 속성을 비교하고 싶은가? | 표(table) |
| 학교-반-학생 계층을 보고 싶은가? | 트리(tree) |
| 학생 사이 관계를 보고 싶은가? | 그래프(graph) |
작은 실습에서는 같은 데이터를 여러 구조로 바꾸어 보는 훈련이 도움이 됩니다.
문제 상황: 하나의 원천 데이터에서 배열, 계층형 묶음, 그래프 표현을 동시에 만드는 예를 보고 싶습니다. 입력(input): 학생 레코드 리스트 students. 기대 출력(output): 점수 배열 scores, 반별 이름 묶음 names_by_class, 친구 그래프 friends. 확인할 개념: 같은 데이터도 질문에 따라 여러 구조로 다시 표현할 수 있습니다.
이 코드는 하나의 구조가 항상 정답이라는 뜻이 아닙니다. 같은 원천 데이터에서 계산용 배열, 계층형 묶음, 관계 그래프를 각각 만들 수 있음을 보여 주는 예제입니다.
구조를 바꾸면 보이는 것이 달라진다¶
자료구조를 바꾼다는 것은 단지 저장 방식을 바꾸는 일이 아닙니다. 어떤 질문에 답하기 쉬워지는지를 바꾸는 일입니다.
배열로 보면 계산이 쉬워집니다.
표로 보면 비교와 필터링이 쉬워집니다.
트리로 보면 계층과 포함 관계가 쉬워집니다.
그래프로 보면 연결과 경로가 쉬워집니다.
AI 실습에서는 이 구조들이 서로 변환되기도 합니다. 표로 읽은 데이터셋의 숫자 열을 배열로 바꾸어 모델에 넣을 수 있고, 문서 표의 메타데이터를 그래프 관계로 확장할 수도 있습니다. 목차처럼 트리로 되어 있던 문서 구조가 검색 단계에서는 문서 조각의 연결 그래프로 다시 해석될 수도 있습니다.
사례 및 예시¶
사례 1. 같은 학급 데이터를 네 가지 구조로 읽어 보면 무엇이 달라지는가¶
한 학급의 학생 이름, 점수, 소속 반, 친구 관계가 한꺼번에 들어 있는 데이터가 있다고 하겠습니다. 사람은 처음에 이 데이터를 하나의 표로만 보고 싶어 할 수 있습니다.
하지만 질문이 바뀌면 잘 보이는 구조도 바뀝니다. 점수만 계산하고 싶을 때는 배열이 자연스럽고, 학생별 속성을 비교할 때는 표가 편하며, 학교-반-학생처럼 소속 체계를 볼 때는 트리가 맞고, 친구 관계를 따라갈 때는 그래프가 더 직접적입니다.
이 절은 바로 이 전환을 보여 줍니다. 배열, 표, 트리, 그래프는 경쟁하는 정답 구조가 아니라, 서로 다른 질문에 강한 관점입니다. 따라서 같은 원천 데이터를 여러 방식으로 다시 읽을 수 있어야 이후 AI 데이터셋, 임베딩, 문서 구조, 링크 관계도 더 잘 해석할 수 있습니다.
확인 가능한 결과는 질문별로 코드가 달라지는지입니다. 점수 목록만 뽑아 평균을 낼 때와, 반별 이름을 묶을 때와, 친구 연결을 볼 때 서로 다른 표현이 더 간단해진다면 구조를 바꾼 의미가 분명해집니다.
체크리스트¶
- 배열, 표, 트리, 그래프를 한 문장씩 구분할 수 있는가?
- 같은 데이터를 왜 다른 구조로도 읽을 수 있는지 설명할 수 있는가?
- CSV와 임베딩 벡터가 왜 같은 구조 질문이 아닌지 말할 수 있는가?
- 배열(array)을 위치(index), 축(axis), 숫자 계산 관점으로 설명할 수 있다.
- 표(table)를 행(row), 열(column), 데이터셋(dataset) 관점으로 설명할 수 있다.
- 트리(tree)를 루트(root), 부모(parent), 자식(child), 계층(hierarchy) 관점으로 설명할 수 있다.
- 그래프(graph)를 노드(node), 엣지(edge), 관계(relation) 관점으로 설명할 수 있다.
- 같은 데이터를 질문에 따라 배열, 표, 트리, 그래프 중 다른 구조로 볼 수 있음을 설명할 수 있다.
- AI 실습에서 토큰, 임베딩, 데이터셋, 문서 구조, 지식 그래프가 어떤 구조 감각과 연결되는지 설명할 수 있다.
- 지금 배열 질문인지, 표 질문인지, 계층 질문인지, 관계 질문인지 먼저 구분할 수 있다.
출처와 참고 자료¶
- NumPy Developers, The N-dimensional array (
ndarray), NumPy v2.5 Manual, 확인 날짜: 2026-07-20.ndarray의 차원, shape, dtype, 인덱싱과 슬라이싱 설명을 배열 직관의 근거로 사용했다. - pandas, pandas.DataFrame, pandas 3.0.4 documentation, 확인 날짜: 2026-07-20. DataFrame을 행과 열을 가진 2차원 구조로 설명하는 근거로 사용했다.
- Paul E. Black, tree, Dictionary of Algorithms and Data Structures, NIST, 확인 날짜: 2026-07-20. 트리를 루트와 부모-자식 관계를 가진 계층 구조로 설명하는 근거로 사용했다.
- Paul E. Black, graph, Dictionary of Algorithms and Data Structures, NIST, 확인 날짜: 2026-07-20. 그래프를 노드와 엣지로 관계를 표현하는 구조로 설명하는 근거로 사용했다.