본문 바로가기

전체 글

(157)
트리(Tree) 1. 트리■ 리스트, 스택, 큐, 덱은 자료들이 일렬로 나열된 형태인 선형 자료구조에 적합했다.■ 자료들이 선형이 아닌 계층적인(hierarchical) 구조일 때, 자료들이 계층적인 관계를 가질 때, 이 구조를 표현하기에 적합한 자료구조는 비선형 자료구조인 트리이다.1.1 트리 구조■ 트리는 노드(node or vertex)와 노드와 노드를 연결하는 선인 간선(= 엣지, edge)로 표현된다.■ 계층 구조에서 가장 높은 곳, 레벨(level) 1에 위치한 노드를 루트(root) 노드라고 한다. 따라서 트리에서 모든 노드는 자신의 서브트리의 루트 노드로 볼 수 있다.■ 하나의 노드도 트리가 될 수 있다. 예를 들어 노드 E는 E를 포함하고 있는 서브 트리의 루트 노드로 볼 수 있다.■ 루트 노드를 부모(..
덱(Deque) 1. 덱■ 덱은 double ended queue의 줄임말로, 큐의 전단(front)과 후단(rear)에서 모두 삽입과 삭제가 가능한 큐이다.■ 즉, 덱의 구조는 다음 그림과 같이, 큐이지만 스택과 큐의 성질을 모두 가지고 있어 스택이나 큐보다는 입출력이 자유롭다.2. 덱의 구현■ 덱은 전단과 후단에서 모두 삽입과 삭제 그리고 접근이 가능해야 하므로 덱의 추상 자료형을 다음과 같이 표현할 수 있다.Deque ADT● Deque( ): 비어 있는 새로온 덱을 만든다.● isEmpty( ): 덱이 비어있으면 True, 그렇지 않으면 False를 반환.● addFront(x): 항목 x를 덱의 맨 앞에 추가한다.● deleteFront( ): 맨 앞의 항목을 꺼내서 반환한다.● getFront(): 맨 앞의 ..
큐(Queue) (2) 1. 연결된 큐(Linked Queue)■ 큐도 연결된 구조, 링크드 리스트로 구현할 수 있다. 이런 큐를 연결된 큐라고 한다.■ 단순 리스트를 이용해 원형 큐를 만들어서 삭제 연산의 시간 복잡도를 \( O(1) \)이 되도록 구현해도, 큐의 크기를 처음 만든 리스트의 크기로 제한되고, 원형 큐의 원소가 1개도 없더라도 고정된 크기를, MAX_QSIZE를 유지해야 하므로 메모리가 낭비될 수 있다는 단점이 있었다.큐(Queue) (tistory.com) 큐(Queue)1. 큐의 구조■ 큐는 먼저 들어온 데이터가 먼저 나가는 선입선출(First-in First-out, FIFO)의 특성을 갖는 자료구조이다.■ 큐의 구조는 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭hyeon-jae.tistor..
큐(Queue) 1. 큐■ 큐는 먼저 들어온 데이터가 먼저 나가는 선입선출(First-in First-out, FIFO)의 특성을 갖는 자료구조이다.■ 큐의 구조는 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭제되는 구조이다.예를 들자면, 어떤 서비스를 받을 때 먼저 온 순서대로, 가장 먼저 온 사람이 가장 먼저 서비스를 받고, 마지막에 도착한 사람은 맨 뒤에서 기다려야 한다.■ 즉, 큐의 삽입과 삭제는 FIFO 순서를 따른다. 삽입과 삭제 연산이 같은 쪽이 아니라 다른 쪽에서 일어난다. 큐가 스택과 다른 점이 바로 이 점이다.■ 큐에서 삽입 연산을 하는 곳을 후단(rear),삭제 연산을 하는 곳을 전단(front)이라고 한다.■ 다음 그림과 같이 삽입(enqueue)은 큐의 맨 뒤에 추가하고, 삭제(deq..
신경망 학습(2) 1. 학습1.1 신경망의 학습에 대한 지표는 손실 함수■ 손실 함수를 사용하는 이유는, 학습 과정에서 손실 함수의 결과를 바탕으로 손실 함수의 결과값을 최대한 작게 만드는 최적의 매개변수(가중치, 편향)를 찾을 수 있도록 매개변수의 미분을 계산해, 미분 값을 기준으로 매개변수의 값이 최적이 될 때까지 매개변수의 값을 업데이트하기 위해서이다.■ 이 과정의 목표는 결국 모델이 얼마나 잘 예측했는지 정확도를 구하기 위해서 이지만, 신경망 학습의 지표로 정확도를 사용하지 않고 손실 함수를 사용한다.■ 이러한 이유는 1) 미분 값을 기준으로 매개변수를 업데이트해야 하는데, 미분 값이 0이면 매개변수를 업데이트할 기준이 0, 즉 최적의 매개변수를 아직 찾지 못했는데 매개변수를 더 이상 업데이트하지않는다.이렇게 되면..
신경망 학습(1) 1. 학습■ 신경망 '학습'에서 학습은 train set으로 가중치 매개변수의 최적값을 자동으로 얻는 것을 의미한다.■ 신경망이 학습할 수 있도록 기준이 되는 지표는 손실 함수이며, 이 손실 함수의 결과값을 최대한 작게 만드는 가중치를 찾아야 한다.■ 딥러닝은 ML과 달리 '처음부터 끝까지', '데이터에서 출력까지' 사람의 개입 없이 주어진 데이터를 온전히 있는 그대로 학습하고 패턴을 발견하여 종단간(end-to-end) 기계학습이라고도 한다. 2. 손실 함수(loss function) ■ 딥러닝에서 train set으로 학습한 다음, 어떤 지표를 기준으로 가중치의 최적값을 자동으로 갱신해 어떤 지표가 최대한 작아지는 가중치를 찾는다. 이 어떤 지표가 바로 손실 함수이다. ■ 손실 함수는 사용자가 임의의..
예외 처리 1. 예외 처리■ 파이썬에서 실행 도중 발생하는 오류를 예외(exception)라고 한다.■ 예외 처리를 통해 오류가 발생했을 때, 오류를 사용자에게 알리고, 오류를 처리한 후 계속 실행하게 해주는 기능을 제공할 수 있다.8. 에러와 예외 — Python 3.12.5 문서 8. Errors and ExceptionsUntil now error messages haven’t been more than mentioned, but if you have tried out the examples you have probably seen some. There are (at least) two distinguishable kinds of errors: syntax error...docs.python.org 2. 예외..
스택(Stack) 1. 스택이란■ 스택은 자료를 밑에서부터 저장하고 자료를 꺼낼 때 위에서부터 꺼내기 때문에 가장 최근에 들어온 자료가 가장 먼저 나가는 후입선출(LIFO: Last - In First Out)의 자료구조이다.■ 이렇게 스택은 한쪽 방향으로만 삽입, 삭제가 되므로 연산이 간단하다.■ 스택은 스택 중간에서 삽입, 삭제가 불가능하고 스택의 상단에서 데이터의 삽입, 삭제가 발생하는데, 이 스택 상단을 top이라 한다.■ 숫자, 문자열, 리스트 클래스의 객체 등 어떤 자료든지 스택에 저장할 수 있다. 2. 스택 구현■ 스택은 리스트처럼 기본적으로 배열 구조와 연결된 구조로 구현할 수 있다.2.1 배열 구조(단순 리스트)로 스택 구현 Stack ADT – Data structures (inflibnet.ac.in)..