본문 바로가기

전체 글

Non-adjacent form 1. 정의 NAF(non-adjacent form)는 부호가 있는 정수 표현의 특별한 형태이다. 양의 정수의 이진표현에 서 0이 아닌 비트의 평균 밀도를 낮추어 해밍 웨이트를 최소화시킨다. 정수 7를 예로 들때 $k_i \times k_{i+1} = 0 $를 만족하고 해밍 웨이트가 최소인 $(1001)_2$ 이 정수 7의 NAF가 된다 2. 설명 [Reference] http://www.danielkrenn.at/downloads/talk-advtop2011-wnaf/Graz-2011-03-18-Advanced-Topics.pdf 더보기
ECC(Elliptic Curve Cryptography) - Scalar Multiplication Double and Add Algorithm Ecc는 타원곡선 상에서 정의된 스칼라 곱을 아래와 같이 정의한다. $$ Q = nP = \underbrace{P + P + \cdots + P}_{n\ \text{times}} $$ ※ 참고로, 대칭키 교환 알고리즘인 ECDH에 의하면 여기서 Q가 공개키가 되고, n은 비밀키가 된다. 타원 곡선상의 기본점(Base Point) P는 주로 표준을 따른다(link1)(link2). Scalar Multiplication을 Naive 하게 연산하게 되면 $O(M^2)$ 복잡도를 가진다. 여기서 M은 n을 표현하기 위한 이진 비트수를 뜻한다. (자세한건 링크[2] 참조) Scalar Multiplication을 쉽게하는 알고리즘으로 double and add가 있고.. 더보기
이분 그래프 & 최대 이분 매칭 (Bipartite Graph & Maximum Bipartite Matching) 1. 이분 그래프(Bipartite Graph)란 "In the mathematical field of graph theory, a bipartite graph (or bigraph) is a graph whose vertices can be divided into two disjoint and independent sets Uand V such that every edge connects a vertex in U to one in V" 인접한 정점끼리 서로 다른 색으로 칠해서 모든 정점을 두가지 색으로만 칠할 수 있는 그래프 (그림 상으로 파란색, 초록색으로 인접 노드가 분할이 가능하다) 존재하는 모든 간선의 양 끝 정점이 서로 다른 그룹에 속하는 형태의 그래프를 의미 위의 세가지 모두 이분 그래프를 .. 더보기
[MIT] 데이터 사이언스 기초 강의 요약[1 ~ 5강] Chapter 1, 2. Optimization Problems 탐욕 알고리즘 - 순간에 최적이라고 생각하는 것을 선택해 나간다. 장점 : 구현이 쉬움, 빠르다 단점 : 최적의 해가 아닐 수도 있다. Brute Force 알고리즘 - 항목 전체 조합을 나열하여 한계를 벗어나는 것은 제거. 동적 프로그래밍 - 복잡한 문제를 간단한 여러 개의 문제로 나누어 해결. - 동적 프로그래밍의 알고리즘인 'memoization'을 적용하려면 참조적 투명성(referential transparency)가 보장되어야 한다. ※ 참조적 투명성(referential transparency) : 입력이 같으면, 출력이 동일. 함수 반환값이 입력값 만으로 결정된다. def fastFib(n, memo = {}): """Assu.. 더보기
[OpenCV + WebApp] 환경 Setting 1. 파이썬 패키지 매니저 pip3 설치 $wget https://bootstrap.pypa.io/get-pip.py $sudo python3.6 get-pip.py or $sudo apt-get install python3-pip $sudo ln -s /usr/bin/python3.6 /usr/local/bin/python3 2. 파이썬 '패키지 가상환경' 설치 및 경로 bash 등록 $sudo pip3 install virtualenvwrapper # ~/.bashrc 에 아래의 3라인을 bashrc에 기입 export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.6 #(본인의 파이썬 설치 장소) export WORK_HOME=$HOME/.virtualenvs sourc.. 더보기
[Book Review] 원리부터 실무까지 쉽고 명확한 ARM프로그래밍 www.yes24.com/Product/Goods/91303444 Arm 프로그래밍 『Arm 프로그래밍』은 Arm Cortex-A9 CPU를 중심으로 한 프로그래밍 이다. 어셈블리 프로그래밍에 필수적인 컴퓨터의 기본 원리에 대해 설명하였고, CPU 하드웨어 동작 원리를 기반으로 ‘Cortex-A 프로� www.yes24.com ※ 본 리뷰는 서평 이벤트에 당첨되어 작성하였습니다. (책 내용의 일부를 요약) 'CPU 내에 있는 임시저장소를 레지스터 파일(register file) 이라고 하며, 이는 CPU가 데이터를 처리하기 전 또는 후에 임시로 저장하는 곳이다. ... 레지스터 파일은 크기가 작기 때문에 고속으로 접근(읽기, 쓰기)가 가능하다.' 'ARM 명령어는 32bit로 이루어져 있다(RISC 특징.. 더보기
[c] return과 exit 함수의 차이 1. exit 함수 void exit(int status); // 프로세스 종료 - exit() 함수는 stdlib.h를 include 하여 사용한다. - 프로세스 종료하여 운영체제에 권한 넘긴다. - status 값을 운영체제에 반환 2. 사용방법 - exit(0) : 정상 종료 - exit(1) : 비정상 종료 반면, return은 해당 스택의 함수만 종료하는 것이다. [참조] https://ehclub.co.kr/810 blog.naver.com/mokdonjr/220813555163 더보기
[개발환경 조사] DeepLearning on Mobile 1. Pytorch 편 현재 파이토치 공식 홈페이지에는 추론하는 예제만 제공한다. gradle(CMake와 같은 빌드 자동화 도구이다) 명령을 통해 'org.pytorch:pytorch_android:1.4.0' 와 'org.pytorch:pytorch_android_torchvision:1.4.0'를 같이 빌드해주면, 안드로이드 에뮬레이터를 통해 추론 예시가 등장한다. 혹은, 어떤 분의 강의처럼 모바일을 연결하면 어플을 통해 직접 실행이 가능하다. (본인은 강의 구매 하지 않았다) 2. Tensorflow 편 텐서플로우의 경우도 개발 과정은 비슷하다(홈페이지 참조). 모델(.tflite)을 안드로이드 유틸과 같이 빌드한다. 다만, 코틀린을 사용한다는 점에서 java로만 작성한 파이토치 데모와는 차이를 .. 더보기