인공지능 기본개념 및 용어

3.1.2 자료 구조(Data Structure) Part1 : 배열, 텐서, 연결 리스트

Seven AI Workers 2025. 5. 9. 09:55

인공지능(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)) 스트리밍, 큐, 스택