-
Sorting in Linear Time
Merge/Heap/Quick Sort같이 Comparsion을 이용한 Sorting의 경우 최저 하한선이 O(NLogN)가 된다. (Decision Tree를 통해 시각화 하면 -> n개 element에 대해서 Decision Tree의 Height 만큼인 LogN번 Comparision 해야 되기 때문.) 하지만 Counting/radix/bucket Sort의 경우 저러한 하한선을 깨고 (경우에 따라서) O(N) 안에 정렬을 마무리 할 수 있다! 이는 정수의 범위 제한/분포 같은 추가 정보를 이용한 것이다. Counting Sort Counting Sort는 n개의 요소들이 0 to k의 정수라고 가정할 때 작동한다. 그럼 한번씩 순회하면서 0 to k의 element가 각각 몇개인지 세고, 그 ..
-
QuickSort
Quick Sort는 Merge Sort와 비슷하게, 아래와 같이 분할 정복을 사용한다.Divide : 배열 A[p..r]을 A[p..q-1]과 A[q+1..r]로 나눈다.Conquer : 재귀를 이용해서 배열A[p..r]과 A[q+1..r]에 대해서 Quick Sort를 시행한다.Combine : 서브 배열들이 이미 정렬된 관계로 딱히 합칠 필요는 없다. 그리고 이는 아래와 같은 의사 코드로 표현해 낼 수 있다.// Let A -> matrix and p,r -> indexPartition(A, p, r) x = A[r] i = p-1 for j = p to r-1 if A[j] 대충 하나를 Pivot으로 잡아서 서브어레이를 만들어 내고, 정렬을 때린 다음 다시 서브 어레이를 돌린다고..
-
Relational Algebra
The relational algebra consists of a set of operations that take one or two relations as input and produce a new relation as their result."인풋으로 1 or 2개의 관계를 가지고 새 관계를 생성하는 것"을 관계 대수라고 한다.사실 DB를 직접적으로 조회/제어함에 있어서 Relational Algebra를 쓸 수 있는건 아니고, 단지 SQL 쿼리를 던지는 데 있어서 Relational Algebra가 폭넓게 사용되는 것 뿐이다. 쨋든 여러가지 Operation과 Relational Algebra에 대해 알아보자. Select Operationselect operation은 말 그대로 주어진 술..
-
Introduction to DB...
데이터베이스 시스템은 큰 용량의 정보를 안전하게 담는데 있어서 적합하게 설계되어 있고, 이러한 데이터베이스를 관리해 주는 프로그램을 Database-management System(DBMS)라고 한다. 대표적인 DB로는 Oracle, MySQL, Porstge, Mongo등이 있겠다. 참고로 Supabase나 Firebase는 BaaS의 축에 들어감으로 DB라 하기에는 조금 거시기한 감이 있다. 쨋든 데이터베이스 시스템은 고가치/고용량/다수에 의해 접근 가능한 정보들을 저장 및 관리하는데 사용된다. 대게는 (상대적으로 작은 데이터를 불러오고 업데이트 하는) 온라인 처리를 하거나, 데이터 분석에 있어서 사용된다. 여기서 문득 드는 생각. 그냥 데이터를 JSON이나 CSV같은 파일에 때려박으면 안되는 것인..
-
[Linux] Permission and Ownership
리눅스 시스템의 모든 파일과 디렉터리에는, Permission과 Ownership이 부여된다. 이때 파일 속성은 ls -l을 사용하여 확인 할 수 있다.- rw-rw-r-- 1 rainyk users 22665 Feb/6/2026 coludflare~~의 경우, 처음 글자는 파일 유형 -> rwxrwxrwx (read/write/execution) 권한 여부 -> 물리적 파일 -> 소유자명 -> 그룹명 -> 크기(바이트) -> 마지막 변경 시간 -> 파일 명 과 같이 해석할 수 있다. 이때 퍼일의 허가권이나 소유권을 설정하려면, chmod/chown/chgrp/umask등을 사용할 수 있겠다. 세부적으로 들어가자면.... 1) 소유권과 관련 명령어소유권은 임의의 파일 또는 디렉터리에 대해 사용자와 그룹..
-
전기산업기사 취득 후기
필자는 26년 1회차 필기시험에 응시했고, 26년 2회차 실기시험에 응시했다.솔직히 필기는 그러려니 하는데, 실기 공부할때는 힘도 들고 왜 해야하는지도 의문이 들어서(단순히 태양광 사업으로 인생을 날로 먹겠다는 망상에서 스타트한 시험이었다.) 대충 봤는데.... 물시험으로 나와서 붙었다.정작 다음에 뭘 해야 할지 모르겠다.국가자격증 시험이 늘 그렇지만 특정 점수를 넘기는 것 자체는 다회 시도하거나 공략만 하면 크게 문제될 소지는 없어 보인다.
-
Heapsort
일단 대충 요약하자면 Heapsort는 O(nlogn)의 시간복잡도를 자랑한다. 근데 그전에 Heap이 뭔지는 설명해야 할거 아닌가? Heap데이터 구조인 Heap은 거의 CBT로 볼수있는 array object라고 할 수 있겠다. 위 사진에서 볼 수 있듯 어떤 노드의 요소는 배열의 어떤 요소에 대응될 수 있을 것이다. 대충 배열 이름을 A라고 해보면, 트리의 루트는 A[1]이 될 것이고 이런식으로 치면 아래와 같이 PARENT/LEFT/RIGHT NODE를 구할 수 있을 것이다. Parent : [ i/2 ]Left : 2iRight : 2i + 1when i is 0>=. 그리고 Binary한 Heap에는 두가지 종류가 있는데, 하나는 max-heap이고 다른 하나는 min-heap이 되..
-
illumination and lighting
CG에서 조명은 빛과 물체간 상호작용을 처리하는 기술로, 일반적으로 local illumination과 global illumination 모델 두가지로 구분된다. local illumination은 광원으로부터 물체에 직접 들어오는 빛만을 고려하는데, 문제는 실세계의 모든 물체는 간접 조명을 받는다. 그러니까 예를 들어서, 광원이 안보여도 어디서 반사되서 들어온 빛이 들어올 수 있다는 것이다. 이걸 반영한게 global illumination이라고 할 수 있겠다. 근데 RTX 드립이 괜히 나온게 아닌게, global 조명 모델은 많은 연산을 필요로 한다. 광원만 때려서 계산하면 편한데, 반사되서 들어오는걸 언제 다 계산해야된단 말인가? 그리고 (일반적인 CUDA같이) GPU 구조는 지역 조명 모델에 보..