컴퓨터공학 83

[백준] 1463 1로 만들기

요약 처음에 2차원 배열로 풀이를 작성하였지만 시간초과였습니다. 1차원 배열의 Bottom-UP 방식의 배열을 1회 순회하는 코드를 작성하여 문제를 해결하였습니다. 이전 단계에서의 최솟값을 어떠한 값을 기준으로 해야 하는 지 아는 것이 문제의 핵심으로 보입니다. 제가 이전에 풀었던 설탕 배달 문제와 유형이 동일합니다. 솔루션 python3 으로 솔루션을 작성하였습니다. def getMin(n): ''' e.g n==10일때 0 1 2 3 4 5 6 7 8 9 10 0 0 1 2 3 ''' dp = [0 for _ in range(n+1)] dp[1] = 0 for index, value in enumerate(dp): if index == 0 or index == n: continue if index+1

[백준] 2839 설탕 배달

요약 DP bottom-up 방식으로 문제를 풀면 됩니다. 기존 존재하는 값과의 비교를 통해 최솟값을 갱신하는 구조, 문제 풀이에는 크게 문제가 없었지만 index out of range 에러를 방지하기 위한 N 과 i+3, i+5 과의 비교 식을 잘못 작성하였었습니다. 솔루션 def getMinCount(N): dp = [-1 for _ in range(N+1)] if N >= 3: dp[3] = 1 if N >= 5: dp[5] = 1 for i, v in enumerate(dp): if v == -1: continue if N >= i+3: if dp[i+3] == -1 or v+1 = i+5: if dp[i+5] == -1 or v+1 < d..

[머신러닝] Unsupervised Learning

input만 주어지고, 이에 대한 기조를 스스로 찾아가는 학습 방식 PCA (Principal Component Analysis) 앞서 차원 축소에도 활용했던 기법으로 비지도학습에도 응용됨 각 Z1, Z2, Z3... 는 서로 상호 연관성이 없음 적절한 갯수의 주성분 분석을 통해 적절한 군집을 진행해야 (ex. US Arrest 에서 Rape, Assault, Murder는 PC1 에 연관 UrbanPop은 PC2와 연관) 이때, Elbow method 사용 (가장 PVE 급감 시점을 사용) K-means Clustering homogeneous subgroup을 우리가 선택한 K 만큼 분류하는 것, 좋은 clustering은 군집 내 변동성이 최소인 것 모두가 적어도 하나의 군집에 포함 non-over..

컴퓨터공학 2023.06.12

[머신러닝] Model Selection

Model Selection Problem 데이터의 갯수 n이 predictor p의 갯수와 비슷한 경우 Least Square 는 무용 -> p의 갯수를 의도적으로 줄일 필요가 있음 (불필요한 복잡성 및 true relationship 잘 보이게) Subset Selection 모든 경우의 수 다 해보기(O(2^p) : exponential) -> 비효율적 greedy 정책 활용(O(p^2) : polynomial) forward stepwise : p 없 -> p 추가 backward stepwise : p 풀 -> p 제거 이때, RSS 및 R square는 p의 갯수가 많을 수록 계속 감소 -> 적절한 p의 갯수를 찾을 수 없음 이를 대처하기 위한 다양한 수치식 존재 Cp, AIC, BIC = 작..

컴퓨터공학 2023.06.12

[머신러닝] Resampling

Resampling Test 데이터가 현저히 부족, 접근에 제한 있음 -> train 데이터에서 다양한 방법으로 리샘플링하는 것이 현명함, CV와 Bootstraping 두가지 방법이 있음 Cross-Validation validation set = subset of TRAIN DATA ===> test error rate의 추정치를 뽑을 수 있음 다양한 split 방식이 존재 Randomly Split 무작위로 절반 validation set, 절반 training set 장점 : 간단 단점 : high variability MSE (무작위로 split 하므로 변동성 높음), sample 적음 (절반을 validation set 으로 사용하므로) LOOCV (Leave One Out Cross Vali..

컴퓨터공학 2023.06.12

[컴퓨터그래픽스] OpenGL Reflectance Model, Illumination Caculation, Shading Model

OpenGL Reflectance Model BRDF 방식(모든 경우를 다 계산한 이상적인 계산법)은 현실적으로 부적합하므로 아래 4가지 경우만 계산 Diffuse Reflection = Lambertian Model Specular Reflection Emission Ambient Illumination Caculation 다양한 빛의 효과를 계산하는 계산식 Single Light Multiple Light 3D Rendering Pipeline Modeling Transformation Lighting Viewing Transformation Projection Transformation Clipping Viewport Transformation Scan Conversion Viewport Tran..

컴퓨터공학 2023.06.12

[컴퓨터그래픽스] Parametric Surface, Homogeneous Coordinate, Raytracing

Parametric Surface Surface를 구현하는 3번째 방법 (Mesh, Subdivision, Parametric Surface) Parametric Curve - Surface를 하기 전에 2차원 Curve에 대한 적용법 이해 Blending Functions Piecewise Parametric Polynomial Curves 모두 동일한 Blending functions Local Control Cubic Spline Continuity Local Control 제공 Interpolating (점들을 지남) Convex Hull Cubic B-Spline ex) 4개의 점을 기반으로 한 3차 다항식 blending functions이 4개 필요함 (4*4 = 16가지 변수) Local ..

컴퓨터공학 2023.06.12

[컴퓨터그래픽스] polygonal mesh, subdivision, Mesh Data Structure

Polygonal mesh 3D 오브젝트의 surface를 표현하는 방식 1 filter) smoothing : 주변의 V 평균으로 매끄럽게 만드는 기법 (Weighted Average of 인접V) sharpen : smoothing과 반대 Subdivision Surface 3D 오브젝트의 surface를 표현하는 방식 2 고려 Input 이 무엇이냐에 따라 다른 방법 Topology Refinement : Face 분할 Geometry Refinement : 점 위치 재배 Continuity - 매끈한 surface를 구현하기 위해서는 보장되어야 하는 성질 G-1 : 연결 x G0 : 연결만 = position G1 : 1차 미분가능 = tangent G2 : 2차 미분가능 = curvature S..

컴퓨터공학 2023.06.12

[강화학습] Numpy를 활용한 Q-Learning 이해하기

강화학습 쉽지 않습니다. 그런데 정말 재미있는 분야인 것 같습니다. 이번 글을 통해 강화학습의 기본 Q-Learning을 설명드리겠습니다. 강화학습 (Reinforcement Learning) 강화학습은 기계 학습의 한 종류로 어떤 환경(env) 안에서 정의된 에이전트(agent)가 현재의 상태(state)를 인식하여, 선택 가능한 행동(action)들 중 보상(reward)을 최대화하는 행동 혹은 행동 순서를 선택하도록 학습시키는 방법입니다. 그렇다면 강화학습을 구현하기 위한 방법에는 무엇이 있을까요? 대표적으로 Q-Learning과 DQN(Deep Q Network)가 있습니다. 우리는 여기서 Q-Learning이 구체적으로 무엇인지 배우고 러프하게 코드를 구현해보겠습니다. Q-Learning 이론 ..

컴퓨터공학 2023.06.01