반응형
SMALL

알고리즘 14

[Algorithms] 탐색(Search)

너비 우선 탐색(Breadth-first Search)에서는 모든 경우를 망라해서 탐색 트리 전체를 작성해간다. 이런 의미에서 너비 우선 탐색에서는 탐색 대상이 되는 상태 공간 전체를 탐색할 수 있다. 하지만 탐색할 수 있다는 것일 뿐 목표 노드의 발견을 보장하지는 않는다. 애초에 목표 노드가 없다면 당연히 답을 찾을 수 없다. 또한, 단순한 너비 우선 탐색에서는 조합적 확산을 통해 금방 노드 수가 메모리에 들어가지 않을 만틈 늘어나버린다. 그럼에도 너비 우선 탐색은 탐색 기술의 기본이 되는 방법이다. ※ 조합적 확산 조합에 따라 상태 수가 방대해지는 현상 너비 우선 탐색 알고리즘 1. 오픈 리스트와 클로즈드 리스트 초기화 2. 오픈 리스트 끝에 루트 노드 삽입 아래 과정 반복 3. 오픈 리스트가 비어..

Go 2022.12.06

[Algorithms] 이진 탐색트리(Binary Search Tree)

이번 학습 주제는 이진 탐색트리(Binary Search Tree)입니다 앞에서 이진 탐색(Binary Search)과 선형 탐색(Linear Search)을 학습했습니다 이진 탐색과 선형탐색이 궁금하시다면 아래의 링크 ↓↓ 2020/07/27 - [Algorithms] - [Algorithms] 선형 탐색(Linear Search)과 이진 탐색(Binary Search) [Algorithms] 선형 탐색(Linear Search)과 이진 탐색(Binary Search) 하루 하루가 순식간이네요😱 오늘도 학습을 하고 잠을 청해야겠습니다 오늘의 학습 주제는 탐색 알고리즘 중에 가장 단순한 탐색 알고리즘인 선형탐색(Linear search) 혹은 순차탐색(Sequential Search) yssa.tisto..

Algorithms 2020.07.31

[Algorithms] 선형 탐색(Linear Search)과 이진 탐색(Binary Search)

하루 하루가 순식간이네요😱 오늘도 학습을 하고 잠을 청해야겠습니다 오늘의 학습 주제는 탐색 알고리즘 중에 가장 단순한 탐색 알고리즘인 선형탐색(Linear search) 혹은 순차탐색(Sequential Search)과 이진탐색(Binary Search)입니다 먼저 선형 탐색은 데이터가 저장되어 있는 배열 또는 선형 리스트를 선두에서부터 하나씩 비교해 찾고자 하는 데이터가 발견될 때까지 검사하는 탐색법입니다 #include #define true 1 #define false 0 #define SIZE 100 typedef int index; typedef int keytype; typedef int boolean; typedef char othertype; index n = -1; struct array..

Algorithms 2020.07.27

[Security] 키 분배 프로토콜

우한 폐렴(코로나19)이 한창 유행이네요-_- 덕분에 모처럼 받은 휴가도 집에서...쉬는게 어디냐...후 어찌가 되었던 학습은 멈추면 안되겠죠 이번 주제는 키 분배 프로토콜로 대칭키(Symmetric Key) 암호화와 공개키(Public Key) 암호화에 대한 것입니다 대칭키 암호화 기법은 암호화를 할 때 사용하는 암호화 키와 복호화를 할 때 사용하는 복호화 키가 동일한 암호화 기법을 말하고 양방향 암호화 기법입니다 Session Key, Shared Key, Secret Key, Conventional Key라고도 합니다 대칭키 암호화는 기밀성을 제공하나 무결성, 인증, 부인방지는 보장할 수 없으며 같은 키를 사용하므로 안전한 키 전달 및 공유 방법이 필요하다는 문제점이 있지만 암/복호화 속도가 빨라 ..

Security 2020.02.25

[Security] 메모리 시스템(Memory System)

지난 글에서 CPU와 버스(Bus)에 대해 알아보았습니다 오늘은 메모리 시스템(Memory System)에 대해 학습하겠습니다 먼저 기억장치가 계층구조를 띄는 이유에 대해 살펴보겠습니다 기억장치는 엑세스 속도가 높아질수록 비트당 가격이 높아지고 용량이 커질수록 비트당 가격이 낮아지면서 엑세스 속도가 낮아지는 특성이 있습니다 그런데 앞서 학습한 CPU는 고속이므로 저속의 보조기억장치 사이에 캐시와 주기억장치를 배치해서 빠르지만 고가인 RDRAM의 사용량을 줄여 가격적인 경쟁력을 확보하는 것이 기억장치 계층구조(Memory Hierarchy)를 이루는 이유입니다 기억장치 계층구조의 가장 최상위인 레지스터는 지난 시간에 살펴보았습니다 그 다음인 캐시 메모리(Cache Memory)는 CPU와 주기억장치(Mem..

Security 2019.12.15

[Machine Learning] 군집(Clustering)_2

오늘도 공부를 해야겠죠-_- 지난 학습에 이어 주제는 군집(Clustering) 알고리즘 중 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)인데 데이터가 위치하고 있는 공간 밀집도를 기준으로 클러스터를 구분하는 방식입니다 간단히 설명하자면 Noise(Outlier)를 제외한 코어 포인트(Core point)와 경계 포인트(Border point)를 클러스터로 구성하는 것입니다 코어 포인트는 데이터 분포를 점으로 찍었을 때 어느 한 점을 기준으로 반지름(R)인 원을 그려서 그 원 안에 최소 M개의 데이터가 존재하는 점이고 경계 포인트는 자신이 코어 포인트가 아닌데 반지름(R)안에 다른 코어 포인트가 있는 점을 의미합니다 Noise는 ..

Machine Learning 2019.12.11

[Machine Learning] 군집(Clustering)_1

이번 주말은 모처럼 집에만 있어 편안하네요~ 가만히 드러누워 있기 지겨워 다시 학습을 시작! 이번 주제는 제목처럼 군집(Clustering) 분석 알고리즘 중 k-Means 알고리즘입니다 군집 분석 알고리즘은 데이터셋의 관측값이 갖고 있는 여러 속성을 분석하여 서로 비슷한 특징을 갖는 관측값끼리 같은 집단(Cluster)로 묶는 알고리즘입니다 클러스터가 여러 개가 존재한다하면 서로 다른 특성을 지닌 관측값들이 여러가지라는 의미가 되고 이런 특성을 이용해서 이상값, 중복값 등 특이 데이터를 찾는데 활용되기도 합니다 관측값을 몇 개의 집단으로 나눈다는 점에서 분류 알고리즘과 비슷하지만 군집 분석 알고리즘은 비지도학습 유형으로 정답이 없는 상태에서 데이터 자체의 유사성만을 기준으로 판단한다는 점에서 차이가 있..

Machine Learning 2019.11.24

[Machine Learning] 분류(Classification)_3

이번 학습은 분류 알고리즘 중 Decision Tree에 대해 알아보겠습니다 알고리즘에서 즐겨 사용하는 Tree 구조를 이용하고 각 Node에는 분석 대상의 속성들이 위치합니다 각 Node마다 목표 값을 가장 잘 분류할 수 있는 속성을 찾아서 배치하고 해당 속성이 갖는 값을 이용하여 새로운 branch를 만들고 해당 속성을 기준으로 분류한 값들이 구분되는 정도를 측정합니다 다른 종류의 값들이 섞여 있는 정도를 나타내는 Entropy가 낮을수록 분류가 잘 된 것입니다 # 판다스(Pandas) import pandas import numpy # Prepare Data : Breast Cancer uci_path = 'https://archive.ics.uci.edu/ml/machine-learning-dat..

Machine Learning 2019.11.23

[Machine Learning] 분류(Classification)_2

오늘은 SVM(Support Vector Machine) 에 대해 알아보겠습니다 여태 사용했던 데이터프레임의 각 열은 열 벡터(Vector) 형태로 구현되고 이 열 벡터들이 각각 고유의 축을 갖는 벡터 공간을 생성하고 분석 대상이 되는 개별 관측값은 모든 속성에 관한 값을 해당 축의 좌표로 표시합니다 역시 직접 해보는게 이해하는 가장 빠른 길이겠죠-_- # 판다스(Pandas) import pandas import seaborn # Prepare Data titanic_data = seaborn.load_dataset('titanic') pandas.set_option('display.max_columns', 15) print(titanic_data.head(), end = '\n') # Explore ..

Machine Learning 2019.11.23

[Machine Learning] 분류(Classification)_1

프로젝트 deadline이 임박해서 거의 3~4일에 한 번 학습을 진행할 수 있네요-_- 이번 학습 주제는 예측하려는 대상의 속성을 입력 받아 목표 값(범주형) 중에서 어느 한 값으로 분류하여 예측하는 분류 알고리즘 중에서 새로운 관측값이 주어지면 기존 데이터 중 속성이 가장 비슷한 k개의 이웃을 찾아 이웃들이 갖는 목표 값과 같은 값으로 분류하는 KNN(K-Nearest-Neighbors) 알고리즘입니다 이 KNN 알고리즘은 k값에 따라 예측의 정확도가 달라지므로 k값을 잘 찾는 것이 관건이 되겠습니다 # -*- coding: utf-8 -*- # 판다스(Pandas) import pandas import seaborn # Prepare Data titanic_data = seaborn.load_dat..

Machine Learning 2019.11.11
반응형
LIST