HElib을 이용한 코딩환경 구축하기(우분투, gcc, Eclipse CDT, makefile) FHE의 대표적인 라이브러리인 HElib을 이용한 코딩환경을 구축한다. 기본 조건은 다음과 같다. - OS: 우분투 (Windows + cygwin 비추) - 컴파일러: gcc, g++ 사용 - 통합개발툴: Eclipse CDT + makefile 1. 기본 환경 구축(gcc, g++, Eclipse) - home의 사용자 폴더에 'dev'폴더를 만들고, 여기에 필요한 모든 개발툴들.. 알고리즘/준동형암호 2016.03.05
평균, 기댓값, 분산, 기대효용 1. 평균과 기댓값 '평균' '기댓값'은, 아마도 통계에서 가장 먼저 접하고 가장 많이 쓰이는 용어일 것이다. 그럼에도 불구하고, 종종 "평균과 기댓값이 같은 건가?"라는 질문을 받으면, 헷갈린다. 확실히 알아보도록 하자. 예전에는, '기대값'으로 표기했으나, 이제는 '기댓값'이 맞다. 2008년부터, 수학 용어들도 표준 맞춤법의 사이시옷 규칙에 맞게 표기되도록 교과서가 개정되었기 때문. 같은 이유로 '최댓값' '최솟값' '대푯값' '근삿값' '절댓값' '함숫값' 등이 맞는 표기. 평균 (산술)평균은, 어떤 자료가 있을 때, 이 자료를 대표하는 값 중의 하나로, 모든 자료값을 더한 것을 자료의 개수로 나눈 값이다. N개의 자료가 있고, i번째 자료의 값을 xi라고 할 때, 평균 m(mean)은 다음과 같.. 알고리즘/통계학 2015.11.17
[분할정복]Closest Points - 가장 가까운 점 사잇거리 구하기 문제 이차원 평면상에 위치한 많은 점들이 있다. 두 점 P(x1,y1) Q(x2,y2)의 사이의 거리는 SQRT[(x1-x2)^2 + (y1-y2)^2]로 정의한다면, 모든 점들 사이에서, 가장 가까운 거리를 찾아내시오. 제약조건 각 문제에 대해 답을 찾아내는 시간은 0.5초(500ms 이내)일 것 입력 입력문제는 텍스트파일로 주어지.. 알고리즘/알고리즘(Java) 2015.10.28
[분할정복]Power a^n 문제 an을 구하는 함수인 power(a,n)을, O(log(n))의 실행시간을 갖도록 구현하시오. 풀이 an은 직관적으로 풀면 O(n)이다. private long power_naive(int a, int n){ if(a==0) return 0; long result=1; for(int i=0;i<n;i++){ result = result * a; } return result; } 근데, 이것을 실행시간이 O(log(n))이 되게, Divide and Conquer를 이용해.. 알고리즘/알고리즘(Java) 2015.10.27
[분할정보]Counting Inversions 문제 배열 A는 1,2,3,...n 의 수가 무작위 순서로 들어 있다. 이 수들에서 두개의 무작위 수를 생각했을 때, 그 순서 대비 크기가 역전되어 있는 두 수의 쌍이 몇개가 되는 지를 구하시오. Number of inversions = Number of pairs(i,j) when i<j and A[i] > A[j] 예를 들어, A={2,3,6,4,1,7}일 때, 크기가 역전된 쌍.. 알고리즘/알고리즘(Java) 2015.10.27
[분할정복]MergeSort_BottomUp 앞에서 분할정복(Divide And Conquer) 방식을 이용한 MergeSort를 알아봤다. 되새겨 보면, - 정렬한 대상이 되는 수 전체를, 1개 또는 2개의 수로 구성된 작은 블럭들이 될 때까지 나누고, - 나눠진 블럭들을 소팅하면서, - 조금씩 옆에 있는 블럭들을 합쳐서(merge), 수 전체가 소팅되게 하는 것 이처.. 알고리즘/알고리즘(Java) 2015.10.26
[분할정복]분할정복 개요-MergeSort 분할정복(Divide And Conquer)은, 문제를 작게 쪼게서 각각 해결한 후, 다시 전체가 되게 합쳐서 문제를 해결하는 알고리즘이다. 기본 프로세스는 다음과 같다. 1. Divide: 문제를 여러개의 작은 문제로 나누다. 2. Conquer: 각 문제를 재귀적으로 호출하면서 푼다. 작게 나누다가, 직관적인 방법으로 .. 알고리즘/알고리즘(Java) 2015.10.26
JNI(Java Native Interface) 이용 방법 (4/6) - 3.4 ArrayParameter 3.4 배열값을 파라미터로 전송(배열값: Java->C) 이번 챕터에서는 자바에서의 배열값을 C로 전달하는 예제이다. 예를 들어, 아래와 같은 네이티브 메서드를 Java에서 선언했다고 생각해보자. public native int sum(byte[] b); 이에 대한 C코드는 아래와 같이 구현될 수 있다.. JNIEXPORT jint JNICALL Java_ex_Ex.. 프로그래밍/Java 2015.07.24
JNI(Java Native Interface) 이용 방법 (3/6) - 3.3 ArrayReturn 3.3 배열값을 반환(배열값: Java<-C) 이번 챕터는 배열을 주고 받는 예이다. 3.3에서는 C코드로부터 배열값이 리턴되는 경우, 3.4에서는 자바의 배열값이 C로 전달되는 예를 볼 것이다. JNI에서의 배열처리는 앞의 3.1과 3.2에서의 기본변수값의 처리와 달리 좀 더 복잡하다. 기본 변수의 경우는.. 프로그래밍/Java 2015.07.24
JNI(Java Native Interface) 이용 방법 (2/6) - 3.1~3.2 3. 예제 (리턴 데이터가 있는 경우: Java <-- C) JNI의 각 사용예에 구분해서 설명해 보자 3.1 기본형 변수에 대한 반환이 있는 경우(Java <- C) 3.2 기본형 변수를 파라미터로 보내는 경우(Java -> C) 3.3 배열값을 반환(배열값: Java<-C) 3.4 배열값을 파라미터로 전송(배열값: Java->C) 3.5 자바의 .. 프로그래밍/Java 2015.07.24