본문 바로가기
728x90
반응형

BASE34

자료구조 - 그래프 1. 그래프란? 그래프(Graph)는 현실세계의 사물이나 개념 간의 연결 관계를 수학적 모델로 단순화 하여 표현한 것이다. 수학정 정의 : 정점 집합 V = {v1, v2, v2, ..., vn} 이고, 정점간의 연결 관계들을 나타내는 간선 집합 E = {(vi, vj)/vi ∈ V, vj ∈ V} ⊆ V x V 일 때, 그래프 G = (V, E) 이다. 2. 그래프 용어 1) 무향 간선 (Undirected Edge) - 정점을 연결하는 간선에 방향이 존재하지 않는다. - 임의의 간선 (vi, vj)에 대해서 (vi, vj) = (vj, vi)이다. 2) 유향 간선 (Directed Edge) - 정점을 연결하는 간선에 방향이 존재한다. - 임의의 간선 (vi, vj)에 대해서 (vi, vj) ≠ (v.. 2021. 2. 2.
알고리즘 - 너비 우선 탐색 (Breadth First Search) 알고리즘 - 너비 우선 탐색 (Breadth First Search) BFS는 Breadth First Search, 너비 우선 탐색이라고도 부르며, 가까운 노드부터 탐색하는 알고리즘이다. BFS 구현에서는 선입선출 방식인 큐 자료구조를 이용하는 것이 정석이다. 인접한 노드를 반복적으로 큐에 넣도록 알고리즘을 작성하면 자연스럽게 먼저 들어온 것이 먼저 나가게 되어, 가까운 노드부터 탐색을 진행하게 된다. [ BFS 활용 ] 최단경로 찾기, 위상정렬 등 [ pseudocode로 BFS 구현 ] BFS(G, s) for each vertex u ∈ G.V - {s} //초기화 작업 u.color = WHITE//s를 제외한 모든 정점의 상태를 white로, u.d = ∞//거리를 무한대로 u.𝝅 = NIL .. 2021. 1. 27.
알고리즘 - 깊이 우선 탐색 (DFS, Depth-First Search) 알고리즘 - 깊이 우선 탐색 (DFS, Depth-First Search) DFS는 Depth-First Search, 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 미로에서 갈림길로 돌아가서 길을 찾는 것을 생각하면 된다. DFS를 설명하기 전에, 먼저 그래프의 기본 구조를 알아야 한다. https://jina-developer.tistory.com/108 자료구조 - 그래프 1. 그래프란? 그래프(Graph)는 현실세계의 사물이나 개념 간의 연결 관계를 수학적 모델로 단순화 하여 표현한 것이다. 수학정 정의 : 정점 집합 V = {v1, v2, v2, ..., vn} 이고, 정점간의 연결 관계들을 jina-developer.tistory.com 모든 노드를 .. 2021. 1. 27.
자료구조 - 맵 (Map) 1. 맵이란? 맵(Map)이란 탐색 가능한 Key와 Value로 이루어진 객체를 저장하는 자료구조로 Set과 같이 Key값의 중복을 허용하지 않으며 value값은 제약이 없다. 삽입, 삭제, 탐색의 세 가지 연산을 지원한다. 구현 방식에 따라 해쉬 맵, 트리 맵 등이 존재한다. 각각의 특징은 해쉬 세트, 트리 세트와 동일하다. 2021. 1. 27.
자료구조 - 세트 (Set) 1. 세트란? 세트(Set)이란 집합을 정의하는 자료구조로 동일한 자료형을 모아놓은 것이다. 집합의 모든 원소(Key)는 유일해 중복이 허용되지 않는다. 삽입, 삭제, 탐색의 세 가지 연산을 지원한다. 구현 방식에 따라 해시 셋, 트리 셋 등이 존재한다. 2. 해시 세트 - 해시 세트(Hash Set)이란 해싱을 이용해 데이터를 저장하는 방법 - 모든 연산이 O(1)에 수행되기 때문에 가장 빠르다. - Key값을 나열했을 때 순서를 예측할 수 없다. 3. 트리 세트 - 트리 세트(Tree Set)이란 일반적으로 균형 이진 검색 트리(Balanced Binary Search Tree) 중 레드 블랙 트리(Red-black Tree)로 구현되어 있다. - 모든 연산이 O(logN)에 수행된다. - key 값.. 2021. 1. 27.
자료구조 - 트라이 (Trie) 1. 트라이란? 트라이(Trie)란 Prefix Tree, Digital Tree, Retrieval Tree라고도 부르며 문자열을 빠르게 검색할 수 있는 자료 구조이다. K진 트리 구조 이고 단어 사전을 트라이로 생성 후 찾을 단어를 트라이를 사용하여 검색한다. 트라이의 Root 노드는 항상 공백문자열(빈 문자열) 상태를 의미한다. 2. 트라이 구축하기 ① 트라이 노드 설계 class Node Ojbect data Node child[] ② 단어 사전의 입력할 단어를 트라이에 삽입 ③ 루트 노드부터 시작하여 단어의 첫 글자부터 트라이를 탐색 ④ 만약 현재 노드의 자식 노드 중 현재 입력 중인 철자에 해당하는 자식이 있다면, 현재 노드를 해당하는 자식 노드로 이동 ⑤ 만약 현재 노드의 자식 노드 중 현재.. 2021. 1. 27.
728x90
반응형