본문 바로가기

Computer Science/자료구조

(11)
Graphs 1. Definition and terms Graph (V, E)는 set of vertices V와 set of edges E로 이루어져 있다. vertex는 하나의 node 점을 의미하고, edge는 vertex끼리 이어진 선을 의미한다. # of Vertices는 |V| # of Edges는 |E| 이다. Path : Vertices의 sequence와 n-1개의 edge로 이뤄진 집합을 의미한다. simple path : Path를 이루는 모든 vertices가 distinct한 것을 뜻한다. Cycle : $v_1$에서 시작하여 자기 자신으로 돌아오는 길이가 3 이상인 path를 뜻한다. Simple Cycle : 처음과 끝을 제외하고 모든 vertices가 distinct한 것을 뜻한다. Co..
Searching 1. Searching Ordered Arrays 만약 element가 정렬되어 있지 않다면, linear search($\Theta(n)$)가 가장 최선의 선택지이다. 정렬이 되어 있다면 Binary Search($\Theta(log n)$)이 linear search보다 낫다. 하지만 우리가 사전에 데이터의 분포와 사용 패턴을 알고 있다면 Binary Search보다도 더 좋은 Search Algorithm을 찾을 수 있다. 1-1. Jump Search k의 범위를 두고, L[0], L[k-1], L[2k-1]...을 순차적으로 방문하며 해당 값이 찾고자 하는 값 K보다 큰지 작은지를 검사한다. 해당 값이 K보다 크다면 계속해서 jump search를 진행하고 아니라면 이전의 값으로 돌아가 Line..
Internal Sorting 각각의 sorting algorithm을 비교하기 위해 # of comparison, # of swap을 기준으로 삼는다. 1. $\Theta(n^2)$ Sorting Algorithms 1-1. Insertion Sort (1) 초기에 output은 비어있다. (2) 각각의 item을 알맞은 장소에 삽입한다. static
Non-Binary Tree(General Tree) 1. General Tree 1-1. Definition & Terms 노드가 child를 0 또는 1개 이상으로 가질 수 있는 tree를 뜻한다. 기본적인 term(root, parent, subtree..)들은 binary tree와 동일하다. 1-2 Preorder Traversal general tree에서도 똑같이 동작한다. Root - 1st left subtree - 2nd subtree - ... - nth subtree로 방문 static void preorder(GTNode rt){ PrintNode(rt); if(!rt.isLeaf()){ GTNode temp = rt.leftmostChild(); while(temp != null){ preorder(temp); temp = temp..
List, Stacks, and Queues 1. List 1-1. 정의 유한하고, 순서가 정해져있는 자료구조 List의 element는 위치가 정해져있다. 1-2. Implementation concept current position의 컨셉을 가지고 있다. Operation은 curr_pos에 근거해서 일어나게 된다. 1-3. Array-based List : array를 이용하여 만든 list 장점 : 설치하기/이해하기 쉽다. 빠르게 특정 위치의 element에 접근하기 쉽다. access만 하고 insert나 remove가 안되는 application의 경우 Linked list에 비해 빠르다. linked list에 비해 메모리를 적게 쓸 수도 있다.(pointer를 저장할 필요가 없기 때문에) 약점: insert와 remove에 Θ(n)..
Huffman tree 1. Huffman Coding Trees 1-1. 문제 상황 ASCII codes : 문자 하나당 8bit가 사용되는 크기가 고정된 코딩방법 자주 사용하는 문자를 더 적은 수의 비트로 코딩하면 공간을 줄일 수 있다. variable-length coding : 문자별로 길이를 다르게 하는 코딩 목표 : external path weight이 최소가 되는 binary tree를 구하는 것 weighted path length of a leaf : weight $\times$ (depth of the leaf) external path weight = weighted path length의 합 1-2. Huffman tree 생성 과정 1) frequency 중에서 가장 작은 것 두개를 찾는다. 2) 그 ..
Priority Queue & Heap 1. Priority Queue 1.1 문제 상황 삽입은 자유롭게 이루어지지만, element를 꺼낼 때 항상 가장 큰 element(removemax)를 꺼내고자 한다면 가장 좋은 자료구조는 무엇인가? ex) multi-tasking operating system에서 scheduling job하는 문제! 1.2 Unsorted array or linked list insert : O(1)의 시간 소요 removemax : max인 element를 찾기 위해 O(n)의 시간 소요 1.3 Sorted array of linked list insert : O(n)의 시간 소요, sorting을 위해 removemax : 맨끝 값을 return하면 되니까 O(1) 하지만 이때 heap 자료구조를 사용하게 되면..
Binary Tree(이진 트리), Binary Search Tree(이진탐색트리) 1. Binary Tree 1-1. 정의 유한개의 노드로 이루어진 트리이다. 이진 트리는 root(노드)와 그와 이어진 두개의 이진트리들로 구성된다.(이를 각각 left, right subtree로 칭한다.) 1-2. 용어 (1) node : 이진 트리를 구성하는 단위 value를 저장하는 공간과 왼쪽과 오른쪽을 노드를 가르치는 포인터로 구성된다. (2) children : root 노드의 왼쪽과 오른쪽이 가리키는 node를 child라 한다. (3) edge : root들을 잇는 선분 (4) ancestor : children의 반대 (5) descendant : 밑의 노드들 (6) path : 이웃하는 두 노드가 앞이 부모, 뒤가 자식인 노드의 열 (7) level(=depth) : 루트 노드에서 자..