인공지능(AI)은 데이터를 다루는 기술입니다. 이 데이터를 효과적으로 저장하고 처리하기 위해선 적절한 자료구조(Data Structure)가 필수입니다. 이 Part 1에서는 가장 기본이 되는 자료구조 세 가지, 배열(Array), 텐서(Tensor), 연결 리스트(Linked List)에 대해 초보자도 이해할 수 있도록 쉽게 설명합니다.
📦 배열(Array) – 빠르고 직관적인 선형 구조
✔ 정의
배열은 동일한 타입의 데이터를 연속된 메모리 공간에 저장하는 선형 자료구조입니다. 각 데이터는 인덱스로 접근할 수 있어 매우 빠른 검색이 가능합니다.
⚙ 특징
- 접근 속도: O(1) (인덱스를 통한 즉시 접근)
- 삽입/삭제 속도: O(n) (중간 요소 변경 시 전체 이동 필요)
- 메모리 사용: 연속된 공간을 사용 → 효율적
🧠 AI에서의 활용
- 벡터, 행렬 등 숫자 데이터를 저장
- 피처 벡터, 뉴런 활성 값, 확률 분포 등
🧪 예제 코드 (Python)
features = [0.1, 0.3, 0.9]
print(features[0]) # 0.1 출력
📊 다이어그램:
[ 0.1 ] → [ 0.3 ] → [ 0.9 ]
0 1 2
🧮 텐서(Tensor) – 고차원 배열의 일반화
✔ 정의
텐서는 1차원(벡터), 2차원(행렬), 3차원 이상의 다차원 배열 구조입니다. 딥러닝에서는 거의 모든 데이터가 텐서로 표현됩니다.
⚙ 특징
- 차원 수(dimension): 0D (스칼라), 1D (벡터), 2D (행렬), 3D 이상 (이미지, 시퀀스, 비디오 등)
- 라이브러리 활용: TensorFlow, PyTorch 등
🧠 AI에서의 활용
- 이미지: [batch, height, width, channels]
- 음성: [batch, time, features]
- 뉴럴 네트워크 파라미터 저장 및 연산 처리
🧪 예제 코드 (PyTorch)
import torch
x = torch.tensor([[1, 2], [3, 4]])
print(x.shape) # torch.Size([2, 2])
🧮 다이어그램 (2D 텐서 예시):
[ [1, 2],
[3, 4] ] → shape: (2, 2)
🔗 연결 리스트(Linked List) – 유연한 동적 구조
✔ 정의
연결 리스트는 각 노드가 데이터와 **다음 노드를 가리키는 포인터(주소)**를 포함하는 구조입니다.
⚙ 특징
- 접근 속도: 순차 접근(O(n))
- 삽입/삭제 속도: 중간 삽입/삭제가 O(1) 가능 (포인터 조정)
- 메모리 사용: 분산적, 동적 할당
🧠 AI에서의 활용
- 실시간 데이터 스트림 처리
- 큐/스택 구현 (탐색 알고리즘에서 자주 사용)
- 트리/그래프 구현 기반
🧪 예제 코드 (Python)
class Node:
def __init__(self, data):
self.data = data
self.next = None
head = Node(1)
head.next = Node(2)
head.next.next = Node(3)
📈 다이어그램:
[1] → [2] → [3] → None
✅ 자료 구조별 특징 비교
자료 구조 | 장점 | 단점 | 주요 활용 |
배열(Array) | 빠른 인덱스 접근 (O(1)) | 중간 삽입/삭제가 느림 | 피처 저장, 수치 연산 |
텐서(Tensor) | GPU 병렬처리에 적합 | 고차원 → 구조 이해 필요 | 딥러닝 전반 |
연결리스트 | 유연한 삽입/삭제 (O(1)) | 인덱스 접근 느림 (O(n)) | 스트리밍, 큐, 스택 |
'인공지능 기본개념 및 용어' 카테고리의 다른 글
3.1.4 선형대수와 벡터: 인공지능을 움직이는 수학의 언어 (3) | 2025.05.12 |
---|---|
3.1.3 인공지능을 위한 확률과 통계 기초 (3) | 2025.05.11 |
3.1.2 자료 구조(Data Structure) Part2 : 트리, 그래프, 해시 테이블 (1) | 2025.05.09 |
알고리즘의 발전 및 유형 (1) | 2025.05.08 |
3.1.1 알고리즘(Algorithm)의 개념 (2) | 2025.05.08 |