본문 바로가기

전체 글

(30)
[이산수학] RSA 암호 RSA 암호 1. 공개키 암호화 시스템 공개키 암호화 시스템은 암/복호화에 공개 키(public key)와 개인 키(private key) 2개 종류 키를 사용하는 방식입니다. 공개 키는 문자를 암호화하는 데 사용되는 키로, 문자를 암호화하려는 모든 사람들에게 공개되는 키입니다. 반대로 개인 키는 공개 키로 암호화된 문자를 복호화하는 데 사용되는 키로, 복호화를 하는 사용자만 아는 비공개 키입니다. 2. RSA 암호 RSA 암호 시스템은 공개키 암호 시스템의 하나로, Rivest, Shamir, Adleman 3명에 의해 개발되었습니다. RSA 암호 시스템은 두 개의 큰 소수를 곱하여 만든 합성수는 소인수분해하기 어렵다는 성질을 이용하였습니다. RSA는 현시대에 인터넷 보안, 디지털 서명 등 영역에서 사..
[자료구조] 자료구조와 알고리즘 자료구조와 알고리즘 1. 자료구조(Data Structure) 자료구조란 자료(데이터)를 컴퓨터에 효율적으로 저장하는 방식을 의미합니다. 자료구조가 필요한 이유는 메모리의 효율적인 관리와 프로그램 실행시간의 단축입니다. 자료구조는 데이터 저장 형태에 따라 크게 선형 구조와 비선형 구조로 분류됩니다. 1.1. 선형 구조(Linear data structure) 선형 구조는 자료가 선형적으로 연결되어 있는 구조를 의미합니다. 즉, 첫 번째 자료와 마지막 자료를 제외한 모든 자료들은 앞뒤로 자료가 1개씩 존재하는 1:1 구조가 됩니다. 선형 구조에는 리스트(list), 스택(stack), 큐(queue) 등이 포함됩니다. 1.2. 비선형 구조(Non-linear data structure) 비선형 구조는 자료..
[이산수학] 유클리드 호제법(Euclidean algorithm) 유클리드 호제법(Euclidean algorithm) 1. 유클리드 호제법 유클리드 호제법은 수학자 유클리드가 제시한 두 정수의 최대공약수를 찾는 방법입니다. 최대공약수를 구하기 위해 선제적으로 알아야 할 성질은 다음과 같습니다. a, b, x, r이 정수일 때 a= bx + r이면, gcd(a, b) = gcd(b, r) (증명) gcd(a, b) = G라고 하면, 서로소인 a', b'에 대해 a = a'G, b = b'G로 표현할 수 있습니다. a = bx + r을 만족하면, a'G = b'Gx + r이 성립하고, G(a' - b'x) = r이 성립합니다. 즉, gcd(b, r) = gcd(b'G, G(a' - b'x)) = G * gcd(b', a' - b'x)가 됩니다, gcd(b', a' - b..
[이산수학] 베주의 항등식(Bezout's identity) 베주의 항등식(Bezout's identity) 1. 베주의 항등식 베주의 항등식은 0이 아닌 두 a, b의 최대공약수는 임의의 정수 x, y에 의해 아래와 같은 항등식을 의미합니다. $$ax + by = gcd(a, b)$$ 2. 예시 ① a = 12, b = 8 $$gcd(a, b) = 4 = a * 1 + b * (-1)$$ ② a = 3, b = 7 $$gcd(a, b) = 1 = a * (-2) + b * 1$$ 연관 게시글 [이산수학] 정수론 [이산수학] 정수론 정수론 1. 정수론 정수론은 암호학, 알고리즘 이론 등에서 사용되는 정수에 관한 수학적인 구조와 성질을 연구합니다. 2. 나눗셈(Division) 2.1. 기본 개념 나눗셈은 앞으로 다룰 소수, 최대공약수, brightchords.ti..
[이산수학] 정수론 정수론 1. 정수론 정수론은 암호학, 알고리즘 이론 등에서 사용되는 정수에 관한 수학적인 구조와 성질을 연구합니다. 2. 나눗셈(Division) 2.1. 기본 개념 나눗셈은 앞으로 다룰 소수, 최대공약수, 모듈러 등에서 가장 기본이 되는 개념입니다. 나눗셈의 정의는 다음과 같습니다. a는 정수, b는 양의 정수일 때, a = bq + r 를 만족하는 정수 q, r이 존재한다. (단, 0 ≤ r < b) a: 나눠지는 수 b: 나누는 수 q: 몫 r: 나머지 이때 r = 0인 경우 a는 b의 "배수(multiple)"라고 하며, b는 a의 "약수(divisor)"라고 합니다. 그리고 이때 a와 b의 관계를 b | a로 표현합니다. 또한, 나눗셈은 아래와 같은 관계를 만족합니다. a, b, c가 임의의 정..
[이산수학] 프림(Prim) 알고리즘 프림(Prim) 알고리즘 1. 알고리즘 개요 프림 알고리즘은 임의의 그래프에서 최소 신장 트리를 찾는 알고리즘입니다. 프림 알조리즘은 그래프 꼭짓점을 중심으로 알고리즘을 전개합니다. 1.1. 알고리즘 동작 그래프에서 임의의 꼭짓점 하나를 트리에 추가합니다. 트리의 꼭짓점이 아닌 꼭짓점 중 트리에 존재하는 임의의 꼭짓점과 가장 작은 가중치의 변으로 연결된 꼭짓점을 트리에 추가합니다. 단, 기존 배치된 꼭짓점들과 연결되었을 때 사이클을 형성하면 추가하지 않고 건너뜁니다. 신장 트리를 형성할 때까지 즉, 그래프 모든 꼭짓점을 포함할 때까지 2번 과정을 반복합니다. 2. 예시 위와 같은 그래프가 있을 때, 프림 알고리즘으로 아래 과정을 통해 최소 신장 트리를 찾을 수 있습니다. ②과정에서 BD와 DE가 가중치 ..
[이산수학] 크루스칼(Kruskal) 알고리즘 크루스칼(Kruskal) 알고리즘 1. 알고리즘 개요 크루스칼 알고리즘은 임의의 그래프에서 최소 신장 트리를 찾는 알고리즘입니다. 크루스칼 알고리즘은 그래프 변의 가중치를 중심으로 알고리즘을 전개합니다. 1.1. 알고리즘 동작 모든 그래프 변을 가중치 기준으로 오름차순 정렬합니다. 가장 왼쪽에 위치한(=가중치가 작은) 변부터 트리에 추가합니다. 단, 기존 배치된 변과 사이클을 이룰 경우 추가하지 않고 건너뜁니다. 신장 트리를 형성할 때까지 즉, 그래프 모든 꼭짓점을 포함할 때까지 2번 과정을 반복합니다. 2. 예시 위와 같은 그래프가 있을 때, 크루스칼 알고리즘으로 아래 과정을 통해 최소 신장 트리를 찾을 수 있습니다. ④과정에서 AD와 BC가 가중치 3으로 값이 같음에도 AD를 선택하지 않은 이유는 사..
[이산수학] 그래프 - 트리 그래프 - 트리 1. 트리(Tree) 트리는 그래프의 한 종류로, 계층 구조를 나타내는 비순환(=사이클이 없는) 연결 그래프입니다. 순환하지 않더라도 방향은 존재할 수 있기 때문에, 방향이 있는 트리는 방향 트리(directed tree)라고 합니다. 또한, 트리는 특정 노드를 기점으로 부분집합 개념의 트리로 분리할 수 있는데, 이를 "서브트리(subtree)"라고 합니다. 2. 기본 용어 2.1. 노드(Node) 노드는 트리에서 데이터를 저장하는 역할을 합니다. 또한, 각 노드들은 하나 이상의 다른 노드와 연결되며 서로 관계를 형성하게 됩니다. 2.2. 루트(Root) 루트는 트리의 최상위 노드를 의미합니다. 2.3. 부모 / 자식 / 형제 노드(Parent / Child / Sibling node) ..