728x90

표본 공간 S

- 시행 또는 실험에 의해 일어날 수있는 모든 경우의 집합

- 시행 : 어떤 일이 일어날 가능성을 조사하기 위해 실험하거나 관찰하려는 행위

- 사건 : 시행의 결과로 일어난 현상들의 집합 또는 표본 공간의 원소들의 집합

 

예시 1. 주시위 하나를 던지는 경우

- 표본 공간 = {1, 2, 3, 4, 5, 6}

- 홀수가 나오는 사건 : {1, 3, 5}

 

예시 2. 1에서 9까지 숫자가 적힌 9장의 카드 중에서 임의로 한 장을 뽑는 경우

- 표본 공간 = {1, 2, 3, 4, 5, 6, 7, 8, 9}

- 8의 약수가 나오는 사건 = {1, 2, 4, 8}

 

 

 

표본 공간의 종류

1. 이산 표본 공간

- 표본 공간에 속하는 원소의 개수가 유한하거나 셀 수 있는 경우

- 주사위를 2번 던지는 시행

- 동전을 3번 던지는 시행

 

2. 연속 표본 공간

- 표본 공간에 속하는 원소의 개수를 셀수 없는 경우

- 학생들의 몸무게를 측정하는 시행

- 연필의 길이를 측정하는 시행

 

 

 

확률

- 어떤 사건이 일어날 가능성을 확률로 표시한 것

- 사건 A에 대해 사건 A가 일어날 확률을 Pr(A)로 표기

- S가 유한 집합인 경우 Pr(A) = |A|/|S|

 

주사위 2개를 던질 때

- S = {(1,1), (1, 2), . . ., (6, 6)} -> |S| = 36

- A = 두 주사위 눈의 합이 5 이하인 사건

- B = 두 주사위 눈의 곱이 3의 배수 인 사건

 

주머니에 흰 공 6개, 파란 공 4개, 노란 공 3개가 있을때 이 중 4개를 순서에 상관없이 꺼내는 경우

- A = 흰 공이 2개, 파란공이 2개인 사건

- B = 모든 공이 흰 공인 사건

 

사건의 종류

- 표본 공간 S와 사건 A, B에 대하여

- A와 B의 합사건

- A와 B의 곱 사건

- A의 여사건

- 차 사건

- 배반 사건 : A와 B의 곱사건(교집합)이 공집합 일떄

 

 

사건 예시

- 표본 공간 S와 사건 A, B에 대해

- 주사위를 1회 던질 때, A는 주사위의 눈이 홀 수가 되는 사건, B의 주사위 눈이 3의 배수인 사건

 

 

 

 

 

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 20 알고리즘  (0) 2020.06.09
이산 수학 - 19 확률 분포  (0) 2020.06.09
이산 수학 - 17 순열과 조합  (0) 2020.06.09
이산 수학 - 16 트리 활용  (0) 2020.06.08
이산 수학 - 15 트리  (0) 2020.06.08
728x90

확률

- 우리 일상 생활에서 자주 접하는 수학적 개념

- 확률 계산을 위한 개념 => 순열과 조합

 

순열과 조합

- 확률 계산에서 많이 사용하는 도구

 

경우의 수 관련 용어

- 시행 : 어떤 일이 일어날 가능성을 조사하기 위해 실험하거나 관찰하는 행위

  -> 주사위를 던져 나오는 주사위 눈을 조사하는 행위

- 사건 : 시행의 결과로 나타나는 현상

  -> 주사위를 던져 짝수의 눈이 나오는 현상

- 경우의 수 : 어떤 사건이 일어나는 방법의 가지수

  -> 주사위를 던져 짝수의 눈이 나오는 사건의 경우의 수 = 3

 

 

 

실생활에서 경우의 수

- 동전 2개를 던질때 2개의 동전이 다른 면이 나오는 경우의 수 = 2

 -> (H, T) (T, H)

- 두 사람이 가위바위보 할때 비기는 경우의 수 = 3

 -> (가위, 가위), (바위, 바위), (보, 보)

 

 

 

순열 

- 서로 다른 n개의 원소 중 r (1<= r <= n)개를 중복하지 않고 선택하여 순서대로 나열했을때 경우의 수

순열의 예시

- 1, 2, 3, 4에서 서로다른 3개의 숫자를 나열해서 만들 수 있는 3자리 숫자의 개수

- A, B, C, D, E, F, G를 한 번씩만 이용해 만들 수 있는 단어의 총 가지수

 

순열의 성질

 

문제

- 0, 1, 2, 3, 4, 5, 6을 한번씩만 이용해서(중복 허락 x) 네 자리 정수를 만들면?

- 2가 천의 자리가 되는 경우의 수

- 짝수가 되는 경우의 수

 -> 0이 맨뒤에 오는 경우의 수 : 6 x 5 x 4 = 120

 -> 2가 맨뒤에 나오는 경우의 수 :  5 x 5 x 4 = 100

->  4가 맨뒤에 나오는 경우의 수 :  5 x 5 x 4 = 100

->  6가 맨뒤에 나오는 경우의 수 :  5 x 5 x 4 = 100

=> 420가지

 

 

 

 

중복 순열

- 서로 다른 n개의 원소 중 r개를 중복을 허용해서 선택한 후 나열 한 경우 경우의 수

 

 

예시

- 1, 2, 3, 4에서 3개의 숫자를 나열해 만들 수 있는 3자리 숫자의 개수

- A, B, C, D, E를 이용해 만들 수 있는 단어의 총 가ㅣ쑤

 

중복 집합의 순열

- n개의 원소중에서 p개, q개 .., r개가 같은 원소일때 n개를 순서대로 나열할 때 경우의 수

 

중복 집합의 순열 예시

- 만약 p = q = ... = r = 1인 경우 n개를 일열로 배열하는 경우의 수

 

- A, A, A, B, B, B, B, C, C, D를 일렬로 배열하는 경우의 수

 

 

아래의 그림에서 A에서 B까지 가는 경로 중 최단 경로의 개수는?

- x는 5회, y는 4회 -> 총 9회 이동

 

 

 

조합

1. 조합의 정의

2. 중복 조합

3. 조합의 응용

 

 

 

조합의 정의

- 조합 : 서로다른 n개의 원소 중 r(1<= r <= n)개를 중복없이 선택한 후, 순서에 상관없이 나열한 경우의 수

 

- 예시 : 1, 2, 3, 4에서 서로다른 3개의 숫자를 뽑는 방법의 수

 

 

조합의 성질

 

 

예시

- 남성 회원 13명, 여성 회원 10명 인 동아리에서 5명인 대표를 뽑을 때

- 성별 구분 없이 대표를 뽑는 경우->  23명중 5명

- 남성 3명, 여성 2명을 대표로 뽑는 경우 -> 남성 13명중 3명, 여성 10명중 2명

 

 

조합 2

- 서로 다른 n개의 원소를 p1, p2, ..., pk개의 원소를 가지는 k개의 그룹으로 나누는 방법의 수

- pi가 다 다른 경우

 

- pi가 모두 같을 때

 

-pi중 같은게 m1, m2, ...개가 있을 때

 

조합 2 예시

- 학생 수가 15명인 반에서

-> 5명, 4명, 3명, 2명, 1명으로 나누는 방법의 수

-> 5명, 5명, 5명으로 나누는 방법의 수

-> 4명, 4명, 2명, 2명, 1명으로 나누는 방법의 수

 

 

중복 조합

- 서로 다른 n개의 원소 중 r개를 중복을 허용하여 선택한 후 이를 순서에 상관없이 나열 할 떄 경우의 수

 

중복 조합 예시

- 1, 2, 3, 4에서 중복을 허락하여 3개의 숫자를 선택하는 방법의 수

 

- 1, 2, 3에서 중복을 허락해 5개의 숫자를 뽑는 경우의 수

 

이항 정리

 

 

이항 정리의 예시

- (a + b)^2

 

- (a + b)^3

 

 

집합의 분할

- 분할 : 집합 A를 부분집합 A1, A2 ... , Ak가 다음을 만족시키면 {A1, A2 ..., Ak}를 A의 분할이라고 함

 

 

- S(n, k) = 원소 개수가 n인 집합을 k개의 부분 집합으로 분할하는 방법의 수

- 인도 수학자 라마누잔은 분할의 성질에 대한 연구로 수학 발전에 킁 공헌을 함

 

 

예시 S(5,2) = ?

- 원소의 개수가 1개, 4개인 집합으로 분할하는 경우의 수

- 원소의 개수가 2개, 3개인 집합으로 분할하는 경우의 수

- S(5, 2)는?

 

 

 

 

 

 

 

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 19 확률 분포  (0) 2020.06.09
이산 수학 - 18 확률  (0) 2020.06.09
이산 수학 - 16 트리 활용  (0) 2020.06.08
이산 수학 - 15 트리  (0) 2020.06.08
이산 수학 - 14 그래프의 활용  (0) 2020.06.08
728x90

가계도, 조직도, 토너먼트 대진표 등 다양한 분야에 응용되는 트리

-> 트리 구조를 이용하여 새로운 분자구조식설계 가능

 

압축 저장 방법

1. 손실 압축 : 사람의 시각, 청각 능력이 구별하지 못하는 영역을 제거해 전체 파일 크기를 줄임

2. 무손실 압축 : 원래 정보를 그대로 보존하여 압축을 풀었을 때 원래의 파일로 되돌릴수 있는 방식(허프만 코드)

 

허프만 코드

- 무손실 압축에 쓰이는 알고리즘 일종

- 파일에 등작하는 문자의 빈도수에 따라 각 문자에 다른 길이의 부호를 대응 시켜서 파일을 압축

- 트리 구조는 바로 이러한 허프만 코드를 정의하는 알고리즘에 사용

 

 

이진 트리의 순회와 탐색

1. 이진트리의 순회

2. 이진 탐색 트리

 

순회 Traversal

- 트리에 있는 모든 노드를 (한 번씩) 방문하여 노드가 가지고 있는 데이터를 처리하는 체계적인 방법

- (이진) 트리의 계층적인 구조를 이용하여 순회하는 방법을 정의

- 이진 트리 순회의 규칙

 -> 루트 노드에서 시작

 -> 형제 노드 중 왼쪽 노드를 먼저 탐색

- 순회의 종류

 -> 전위 순회, 중위 순회, 후위 순회

 

전위 순회

- 부모 노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 노드 순서로 순회

- A -> B -> D -> E -> J -> K -> C -> F -> M

중위 순회

- 왼쪽 자식 노드 -> 부모 노드 -> 오른쪽 자식 노드 순서로 순회

- D -> B -> J ->E -> K -> A -> F -> M -> C

 

후위 순회

- 왼쪽 자식 노드 -> 오른쪽 자식 노드 -> 부모 노드 순서로 순회

- D -> J  -> K -> E -> B ->  M -> F -> C -> A

 

 

이진 트리 순회를 이용한 폴더 용량 계산

 

 

전위 순회

- 0.2M(내컴퓨터) + 0.1 M(C:\) + 15M(내문서) + 2M(프로그램) + 200M(자바) + 100M(파이썬) + 0.3M(D:\) + 50M(그림) + 3M(음악) + 70M(팝송) + 90M(클래식) = 530.6M

 

중위 순회

- 내문서 + C\ + 자바 + 프로그램 + 파이썬 + 내커퓨터 + 그림 + DL\ + 팝송 + 음악 + 클래식 = 530.6M

 

후위 순회

- 내문서 + 자바 + 파이썬 + 프로그램 + C:\ + 그림 + 팝송 + 클래식 + 음악 + D:\ + 내컴퓨터 = 530.6M

 

 

이진 탐색 트리 Binary Search Tree

- 노드에 저장된 데이터의 내용에 대한 크기 기준을 정하고 이 기준에 따라 노드의 위치를 정해놓은 이진 트리

1. 모든 노드는 서로 다른 유일한 키를 갖는다.

2. 왼쪽 서브트리에 있는 모든 노드는 루트 노드 보다 작은 키를 갖는다.

3. 오른쪽 서브 트리에 있는 모든 노드는 루트 노드보다 큰 키를 가진다.

4. 왼쪽 서브 트리와 오른쪽 서브트리도 이진 탐색 트리다.

 

 

이진 탐색 트리에서 22를 검색하는 과정

1. 루트 노드는 15로 22보다 작다 -> 오른쪽 자식 노드

2. 21은 22보다 작다 -> 오른쪽 자식 노드

3. 24는 22보다 크다 ->왼쪽 자식노드

 

 

이진 탐색 트리의 삽입

 

이진 탐색 트리의 삭제 1

- 삭제 할 노드가 리프 노드인 경우

 

 

 

이진 탐색 트리의 삭제 2

- 삭제 할 노드가 1개의 자식 노드를 가지는 경우

- 21을 지우는 경우 노드 24를 21자리로 옮김

 

 

이진 탐색 트리의 삭제 3

- 삭제할 노드가 2개의 자식 노드를 가지는 경우

- 왼쪽 서브트리 노드 중 최대 값을 가지는 노드를 이동시키거나 오른쪽 서브트리의 노드 중 최소키를 가지는 노드를 이동

 

이진 탐색 트리 생성

- 18, 10, 25, 20, 14, 8, 23, 17, 29에 대한 이진 탐색 트리

 

생성 트리

1. 생성 트리의 개념

2. 프림 알고리즘

3. 크루스칼 알고리즘

 

 

생성 트리 Spanning Tree

- 그래프의 모든 노드를 포함하는 트리 -> 그래프의 생성 트리는 여러 개가 될 수 있음

그래프

위 그래프에서 아래의 생성 트리를 만들 수 있음

 

 생성 트리 예시

 

 

 

 

최소 생성 트리 Minimal Spanning Tree

- 가중 그래프에 대해서 연결선의 가중치의 합을 최소로 하는 생성 트리

- 네트워크나 도로망 설계 시 비용을 최소로 하거나 효율성을 최대로 하는 경로를 고려할 때 유용

- 최소 생성 트리를 구하는 알고리즘으로 프림 알고리즘, 크루스칼 알고리즘

 

 

프림 알고리즘

1. 임의의 시작 노드 선택

2. 가중치가 가장 작은 연결선을 선택

3. 1에서 선택된 연결선에 의해 연결된 노드와 연결된 모든 연결선 중 가중치가 가장 작은 연결선 선택. 가중치가 같은 연결선이 있으면 임의로 하나를 선택한다

4. 선택된 연결선에 의해 사이클이 형성되면 선택 하지 않는다.

5. 그래프에 포함된 노드 개수가 n일 때, n - 1개의 연결선이 선택되면 종료한다.

 

 

프림 알고리즘

- 노드 A에서 시작

 

 

 

 

크루스칼 알고리즘

1. 가중치가 가장 작은 연결선을 차례로 선택한다. 가중치가 같은 연결선은 모두 선택한다.

2. 선택된 연결선에 의해 사이클이 형성되면 선택하지 않는다.

3. 그래프에 포함된 노드의 개수가 n일 때, n - 1개의 연결선이 선택되면 종료한다.

 

 

크루스칼 알고리즘

- 노드 B에서 시작

 

 

 

아스키 코드

- 문자를 8비트 숫자로 변환하는 표

 

만약 자주 나오는 문자에 더 적은 비트를 할당한다면?

-> 전체 문자 비트 수를 줄일 수 있을텐대 -> 허프만 알고리즘

 

 

허프만 알고리즘

- 발생 빈도가 높은 문자는 적은 비트를 할당하고, 발생 빈도가 낮은 문자에 많은 비트를 할당하야 파일 크기를 줄이는 알고리즘

1. 발생 빈도가 가장 낮은 두 문자를 선택하여 하나의 이진 트리 생성

  -> 왼쪽 노드에 빈도 수가 낮은 문자, 오른쪽 노드에 빈도가 높은 문자

  -> 빈도수가 같으면 사전 순서로

  -> 두 문자의 빈도 합을 그 문자들의 부모 노드로

2. 1을 반복하여 하나의 이진 트리를 생성

3. 생성된 이진 트리의 왼쪽 노드에는 0, 오른쪽 노드에는 1을 부여

4. 루트 노드에서 해당 문자까지의 0 또는 1을 순서대로 나열

 

허프만 알고리즘 예시

1. 가장 빈도수가 낮은 o, z 선택

 - 사전의 순서대로 o를 왼쪽, z를 오른쪽 놓고

 - 두 빈도의 합인 4를 부모 노드로 설정

 

2. 가장 빈도수가 낮은 u(5)와 4

 - 4가 낮으므로 왼쪽 노드, u는 크므로 오른쪽노드

 - 합인 9가 부모 노드

 

3. 다음 가장 빈도수가 낮은 수가 8로 e, j가 존재

- 두 문자는 별도의 자식 노드가 되어

 - 두 수의 합인 16이 부모 노드가 됨

 

 

4. 가장 빈도수가 낮은 문자 b와 ozu

 - ozu가 9 낮으므로 왼쪽, b는 15라 크므로 오른쪽

 - 두 수의 합은 24가 부모 노드가 됨

 

 5. 다음 빈도수 낮은 문자는 ej와 s

 - ej는 16으로 왼쪽, s는 17로 우측

 - 두 수의 합인 33이 부모노드가 됨

6. 다음 빈도수가 낮은 문자 g와 ozub

 - g는 23 왼쪽, ozub는 24 오른쪽

 - 합한 수 47이 부모 노드

7. 다음 빈도수가 낮은 문자 i와 ejs

 - i가 30으로 왼쪽, ejs가 33으로 오른쪽

 - 두수의 합 63이 부모 노드

 

8. 나머지 두 문자 iejs, gozub

 - geozub가 47로 왼쪽, iejs가 63으로 오른쪽

 - 부모 노드는 110

 

허프만 알고리즘 정리

- g의 경우 가장 많이 사용됨 -> 00 비트

- o는 01000

=> 빈도수가 많을수록 비드 수가 짧음

 

 

bgebejlezusuo 의 허프만 코드와 아스키 코드 비교

1. 아스키 코드

00001010 01100010 01100111 01100101 01100010 01100101 01101010 01101100 01100101 01111010 01110101 01110011 01110101 01101111 00100000

 

2. 허프만 코드

01100110001111001101101100010010101111010101000

 

 

 

 

 

 

 

 

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 18 확률  (0) 2020.06.09
이산 수학 - 17 순열과 조합  (0) 2020.06.09
이산 수학 - 15 트리  (0) 2020.06.08
이산 수학 - 14 그래프의 활용  (0) 2020.06.08
이산 수학 - 13 그래프  (0) 2020.06.08
728x90

트리의 개념

1. 트리의 정의

2. 노드의 종류

3. 트리의 용어

 

 

 

트리의 정의

- 루트 노드를 가지고 있고, 모든 노드들 사이에 단순 경로가 존재하는 비순환 연결 그래프

- 루트 노드 : 나무의 뿌리에 해당하는, 트리에 가장 높은 곳에 위치하는 노드

- 경로 : 노드에서 노드로 가는, 중복되지 않은 연결선들의 나열

- 단순 경로 : 시작과 끝노드가 중복되는것을 제외하고 노드가 중복되지 않는 경로

- 사이클 : 시작 노드와 끝 노드가 같은 경로

- 비순환 그래프 : 사이클이 존재하지 않는 그래프 -> 트리에는 루프가 없음

- 연결 그래프 : 서로 다른 모든 노드들 사이에 항상 경로가 있는 그래프

 

 

부모 노드

- 한단계 상위 노드

- 노드 A는 노드 B, C, D의 부모 노드

- 노드 B는 노드 E, F의 부모 노드

- 노드 D는 노드 G의 부모 노드

 

 

자식 노드

- 한단계 하위 노드

- 노드 B, C, D는 노드 A의 자식 노드

- 노드 E, F는 노드 B의 자식 노드

- 노드 G는 노드 D의 자식 노드

 

 

형제 노드

- 부모가 같은 노드

- 노드 B, C, D는 서로 형제 노드

- 노드 E, F는 서로 형제 노드

 

 

 

리프 노드

- 자식 노드가 없는 노드

- 노드 C, E, F, G는 리프 노드

 

중간 노드

- 루프 노드나 리프 노드가 아닌 노드

- 노드 B와 D는 중간 노드

 

조상 노드

- 루트 노드에서 임의의 한 노드에 이르는 경로에 포함된 모든 노드들

- 노드 A, B, E는 노드 H의 조상 노드

- 노드 A는 노드 D의 조상 노드

- 부모 노드는 조상 노드

- 루트 노드를 제외한 모든 노드는 조상 노드를 가짐

 

자손 노드

- 한 노드에서 임의의 리프 노드에 이르는 경로에 포함된 모든 노드들

- 노드 A의 자손 노드는 노드 B, C, D, E, F, G, H

- 자식 노드는 자손 노드임

 

 

서브 트리

- 임의의 한 노드를 루트 노드로 하는 트리

- 서브 트리의 개수 = 노드 개수

 

 

노드의 차수

- 노드의 차수 = 자식 노드의 개수

- A 노드 차수 = 3

- B 노드 차수 = 2

- C 노드 차수 = 0

- 트리에서의 노드의 차수 != 그래프에서의 노드의 차수

 

트리의 차수

- 각 노드의 차수의 최대값

- A 노드의 차수 = 3

- B 노드의 차수 = 2

- C 노드의 차수

=> 트리의 차수 = 3

- 트리의 차수 != 그래프의 차수

 

레벨

- 루트 노드는 레벨 0

- 자식 노드로 가면서 레벨이 한 단계 씩 증가

 

 

트리의 높이(또는 깊이)

- 트리의 최대 레벨

 

 

트리의 성질

1. 노드의 개수와 연결선 개수의 관계

2. 트리에 대한 정리

 

노드의 개수와 연결선의 개수 사이의 관계

- 트리의 노드의 개수를 v, 연결선 개수를 e라 하면

=> e = v - 1

 

 

2. 트리에 대한 정리

- n 개의 노드를 가지는 연결 그래프 T에 대해 다음은 동치임

- T는 트리이다.

- T의 연결선의 개수는 n - 1 이다.

- T에서 연결선을 하나 제거하면 단절 그래프가 된다.

- T의 임의의 한 노드에서 그 노드와 다른 노드로 가는 경로가 유일하게 존재한다.

 

 

 

 

이진 트리

1. 이진 트리의 정의

2. 이진 트리의 종류

3. 이진 트리의 표현

 

 

 

이진 트리 Binary Tree

- 차수가 2이하(자식 노드가 2개 이하)인 트리

 

 

이진 트리에 관한 정리

- 레벨 k에서 이진 트리가 가질 수 있는 최대 노드 수 = 2^k

- 높이가 m인 이진 트리가 가질수 있는 최대 노드 수 = 2^(m + 1) - 1

- 높이가 m인 이진 트리가 가질 수 있는 최소 노드 수 = m + 1

 

포화 이진 트리

- 모든 레벨에 노드가 꽉 차서 레벨을 늘이지 않는 이상 노드 추가가 더이상 불가능한 트리

- 높이가 h인 포화 이진 트리의 노드 수 = 2^(h + 1) -1

- 높이가 h인 포화 이진 트리의 리프 노드 수 = 2^h

 

 

 

완전 이진 트리

- 높이가 h일 때, 레벨 0 부터 레벨 h - 1까지의 노드로 이루어진 트리가 포화 이진 트리이고, 레벨 h에서는 왼쪽부터 노드가 채워진 트리

- 2^h <= 높이가 h인 완전 이진 트리의 노드 수 <= 2^(h + 1) - 1

 

편향 이진 트리 skwed binary tree

- 리프 노드를 제외한 모든 노드들이 왼쪽 자식 노드만을 가지고 있거나 아니면 모두 오른쪽 자식 노드만 가지고 있는 트리

- 높이가 h인 편향 이진 트리의 노드 수 = h + 1

 

배열을 이용한 구현

- 배열 : 같은 자료형을 가진 자료들을 메모리에 연속적으로 저장한 자료 구조

-> 인덱스(index)를 이용하여 저장된 자료에 접근 가능

 

 

배열을 이용한 이진 트리 구현

- 트리의 높이가 h면, 높 이가 h인 포화 이진 트리의 노드 번호를 배열의 인덱스로 사용하여 트리 표현

-> 인덱스 계산 편의성을 위해 루트 노드의 경우 인덱스 1을 사용

 

배열을 이용한 이진 트린 구현시 포화 이진 트리를 사용하는 경우의 장점

- 부모 노드의 인덱스가 n이면, 왼쪽 자식 노드의 인덱스는 2n, 오른쪽 자식 노드의 인덱스는 2n + 1

- 자식 노드의 인덱스가 이면 부모 노드의 인덱스 내림 (n/2) -> 내림(1.5) = 1, 내림(2.5) = 2

 

포화 이진 트리를 사용한 경우 단점

- 메모리 낭비가 발생

 

 

 

연결 리스트

- 데이터를 저장할때 다음 순서의 자료가 있는 위치(포인터)를 데이터에 포함시키는 방식으로 저장

 

연결 리스트를 이용한 구현

- 트리에서는 부모 노드와 자식 노드라는 관계가 존재

- 이를 위해 이중 연결 리스트를 사용

- 부모 노드를 나타내는 데이터에 자식 노드의 위치를 함께 저장

 

 

연결 리스트를 이용한 이진 트리 예시

 

 

 

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 17 순열과 조합  (0) 2020.06.09
이산 수학 - 16 트리 활용  (0) 2020.06.08
이산 수학 - 14 그래프의 활용  (0) 2020.06.08
이산 수학 - 13 그래프  (0) 2020.06.08
이산 수학 - 10 관계  (0) 2020.06.07
728x90

연결선에 가중치가 부여된 가중 그래프

- 이동하는데 걸리는 시간

- 어느 경로를 선택해야 목적지에 빠르게 도착할까?

-> 최단 경로 문제

 

 

네비게이션 시스템은 복잡한 지도와 그래프를 사용.

 

다익스트라 알고리즘

- 최단 경로 문제를 해결할 수 있는 알고리즘

 

 

특수 그래프

1. 오일러 그래프

2. 해밀턴 그래프

 

 

오일러 그래프

- 오일러 경로 : 그래프의 모든 연결선을 한번씩만 지나는 경로

- 오일러 순환 : 시작노드와 끝노드가 같은 오일러

- 오일러 그래프 : 오일러 순환을 가지는 그래프

 

 

 

오일러 그래프에 대한 정의

- 연결 그래프의 모든 노드들이 짝수 노드이면 오일러 그래프 

 -> 노드의 차수 : 노드에 근접하는 연결선 개수

 -> 짝수 노드 : 차수가 짝수인 노드

- 연결 그래프의 노드 중 홀수 노드의 개수가 0 또는 2이면 오일러 경로를 가짐

 

오일러 그래프와 한붓그리기

- 한붓 그리기 : 그래프에서 연필을 떼지 않고 모든 변을 오직 한 번만 지나는 것

- 한붓 그리기가 가능하려면 연결 그래프의 홀수 노드의 개수가 0 또는 2여야 함

 

쾨니히스베르크 다리 문제

- 오일러는 쾨니히스베르크 다리 문제를 (다중 그래프에서의) 오일러 순환의 존재 여부 문제로 변환하여 해결함

- 오일러 순환이 존재하지 않음 -> 쾨니히스베르크 다리들을 모두 한번씩만 건너서 출발한 곳으로 다시 돌아올 수 없음

 

해밀턴 그래프

- 해밀턴 경로 : 시작 노드와 끝 노드 빼고 모든 노드를 한번씩만 지나는 경로

- 해밀턴 순환 : 시작노드와 끝노드가 같은 해밀턴 경로

- 해밀턴 그래프 : 해밀턴 순환을 가지는 그래프

 

 

NP-complete

- 어떤 그래프에 해밀턴 경로가 존재하는지 여부를 결정하는 문제를 NP-complete 문제라 함.

- 어떤 그래프가 해밀턴 그래프인지 여부를 구하는 문제

 

 

윌리엄 로언 해밀턴

- 아일랜드 수학자, 물리학자, 천문학자

- 사원수를 발견할 인물

- 광학, 동역학 및 대수학의 발전에 큰 공헌을 함

 

 

순회 판매원 문제

- 방문할 도시들과 이들 도시 사이의 거리가 주어질때, 순회 판매원이 어떤 특정 도시를 출발하여 어떠한 도시도 두 번 방문함 없이 모든 도시를 거쳐 처음 출발한 도시로 돌아오는 경우의 '최소 경로'를 찾는 문제

- 일반적인 해결 알고리즘이 존재하지 않음

- 도시가 많아질 수록 경우의 수가 크게 늘어남 -> NP-hard 문제(NP-complete 보다 어려운 문제)

 

최단 경로 문제

- 최단 경로 : 가중 그래프에서 가장 짧은 거리의 경로

 

 

다익스트라 알고리즘

- 가중치가 모드 음수값이 아닌 방향 그래프에서 주어진 출발점과 도착점 사이의 최단 경로를 찾아주는 알고리즘

ex) 1에서 2까지 최단 거리는? 1에서 3까지 최단 거리는? 1에서 4까지 최단 거리는?

 

 

에츠허르 다익스트라

- 네덜란드 출신 컴퓨터 과학자

- 전산학이 정립되지 않은 시절 전산학의 여러 분야에 기여함

- 다익스트라 알고리즘을 개발하여 최단 경로 문제에 대한 학문적 연구를 시작

- GOTO문 사용하지 말것을 주장

- 세마포어에 대한 연구를 처음 시작함

- 1972년 튜링상 수상

 

다익스트라 알고리즘의 Pseudo-code

void Dijkstra()
{
	S = {1};
    for (i=2; i <= n; i = i + 1)
    {
    	D[i] = C[1, i];
        // D[i]는 노드 i에서 노드 j까지의 최단 거리
        // C[i, j]는 노드 i에서 노드 j까지의 거리
        // 노드 i에서 노드 j로 가는 연결선이 없다면 C[i, j] = inf
    }
    
    for (i = 1; i <= n - 1; i = i + 1)
    {
    	V - S에 있는 노드 중에서 D[w]가 최소인 노드 w를 선택;
        w를 S에 추가;
        V - S에 있는 각 노드 v에 대해 D[v] = min(D[v], D[w] + C[w, v]);
    }
}

 

다익스트라 알고리즘의 적용 예시

- 1에서 2까지 최단거리 = 10

- 1에서 3까지 최단거리 = 60

- 1에서 4까지 최단거리 = 50

- 1에서 5까지 최단거리 = 30

 

 

 

그래프의 탐색

1. 탐색 정의

2. 깊이 우선 탐색

3. 너비 우선 탐색

 

 

 

 

그래프 탐색

- 그래프의 모든 노드를 체계적으로 방문하는 방법

ex) 깊이 우선 탐색, 너비 우선 탐색

 

메모리 구조

- 스택

- 큐

 

 

스택

- LIFO(Last In First Out) 구조를 가지는 메모리 한 형태

- FIFO(First In First Out) 구조를 가지는 메모리 한 형태

 

 

깊이 우선 탐색 Depth First Search, DFS 과정

1. 임의의 시작 노드 v를 선택하고 탐색

2. v에 인접한 노드 중

  -> 방문하지 않는 노드 w가 있으면 v를 스택에 push하고 w를 방문, 그리고 w를 v로 설정한 뒤 2를 반복

  -> 방문하지 않은 노드가 없으면 스택을 pop하여 받은 가장 마지막 방문 노드를 v로 설정한 뒤 2를 방문

3. 스택이 공백이 될 떄 까지 2를 반복

 

 

깊이 우선 탐색 과정 예

- A를 우선 탐색 -> 스택

- B를 탐색 -> 스택 A

- D를 탐색 -> 스택  A B

- G를 탐색 -> 스택 A B D

- F를 탐색 -> 스택 A B D G

- F에 인접한 노드가 없음 -> G를 Pop

- E를 탐색 -> 스택 A B D

- C를 탐색 -> 스택 A B D E

- C에 인접한 탐색할 노드 없음 -> E Pop -> 스택 A B D

- D에서 탐색할 노드 없음 -> D pop -> 스택 A B

- B에서 탐색할 노드 없음 -> B pop -> 스택 A

- A에서 탐색할 노드 없음 -> A Pop -> 스택 

 

 

너비 우선 탐색(Breadth First Search, BFS)

1. 인의의 시작노드 v를 선택하고 이를 탐색한다.

2. v에 인접한 노드 중

 - 방문하지 않는 노드를 차례로 방문하여 큐에 enQueue 한다.

 - 방문하지 않은 인접한 노드가 없으면 큐에서 deQueue한 노드를 가지고 2를 계속 반복

3. 큐가 공백이 될 때 까지 2를 반복한다.

 

 

너비 우선 탐색 과정 예

1. A를 우선 탐색 . v = A

2. B를 탐색 -> enQueue B -> Queue B

3. C를 탐색 -> enQueue C -> Queue B C

4. v에 더이상 인접한 노드 없음 -> deQueue B -> v = B -> Queue C

5. D를 탐색 -> enQueue D -> Queue C D

6. E를 탐색 -> enQueue E -> Queue C D E

7. v(B)에 인접한 노드 없음 -> deQueue C -> v = C -> queue D E

8. v(C)에 인접한 노드 없음 -> deQueue D -> v = D -> queue E

9. G를 탐색 -> enQueue G -> Queue E G

10. v(D)에 인접한 노드 없음 -> deQueue E -> v = E -> queue G

11. F 탐색 -> enQueue G -> Queue G F

12. v(E)에 인접한 노드 없음 -> deQueue G -> v = G -> queue F

13. v(G)에 인접한 노드 없음 -> deQuque F -> V = F -> queue 

14. 종료

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 16 트리 활용  (0) 2020.06.08
이산 수학 - 15 트리  (0) 2020.06.08
이산 수학 - 13 그래프  (0) 2020.06.08
이산 수학 - 10 관계  (0) 2020.06.07
이산 수학 - 2 수의 종류  (0) 2020.06.07
728x90

 

 

쾨니흐스베르크의 다리 문제

- 7개의 다리들을 한번씩만 건너면서 처음 위치로 돌아오는 길이 있는가?

오일러의 증명

- 그래프를 이용하여 다리 문제가 불가능함을 증명함

 

 

평면 그래프

- 어떤 연결선도 노드가 아닌곳에서 교차하지 않는 그래프

 

 

그래프의 정의

그래프 G = (V, E)

- 이산 수학에서의 그래프 : 점과 선들의 집합

- V = {$v_1$, $v_2$} :: 노드 집합

- E = {$e_{ij$} = ($v_i$, $v_j$) | $v_i$, $v_j$ $\in$ V} : 연결 선(에지)들의 집합

 

 

 

그래프 G = (V, E)에 대하여

- u, v $\in$ V 이고, e = (u, v) $\in$ E

 -> u와 v는 인접(adjacent)

 -> e는 u와 v에 근접(incident)

- u $\in$ V 이고, e = (u, u) $\in$ E -> e: 루프(loop)

 

 연결선의 종류

- (v, w)와 (w, v)를 다르게 취급 -> 유향 그래프

- (v, w)와 (w, v)를 동일하게 취급 -> 무향 그래프

 

 

다중 그래프

- 두 노드 사이에 두 개 이상의 연결선이 있는 그래프

 

가중 그래프

- 각 연결선에 가중치가 부여된 그래프

- 네트워크 라고도 함.

- a, b, c, d가 도시를 나타내고 연결선의 가중치는 각 도시를 자동차로 갈 때 걸리는 시간을 나타내면, a에서 d까지 가는 최소 시간 경로는?

- 도로망, 철도망 또는 네트워크를 설계할 때 유용하게 사용됨.

 

 

그래프 용어

v $\in$ G의 차수

- v에 근접하는 연결선의 개수

 -> deg(v)로 표기 (deg(v)가 홀수면 v는 홀수 노드, deg(v)가 짝수면 v는 짝수 노드)

- G가 유향 그래프인 경우

 -> v의 진입 차수 : v로 들어오는 연결선 개수, in_deg(v)로 표기

 -> v의 진출 차수 : v에서 나가는 연결선의 개수, out_deg(v)로 표기

- 그래프 G의 차수 : 각 노드의 차수 중 최대 차수 -> deg(G)로 표기

 

 

그래프 차수 예시

- deg(1) = 2 -> 1 : 짝수 노드

- deg(2) = 2 -> 2: 짝수 노드

- deg(3) = 3 -> 3: 홀수 노드

- deg(4) = 2 -> 4 : 짝수 노드

- deg(5) = 1 -> 5: 홀수 노드

- deg(G) = 3

 

차수 특성

- $\sum_{v \in V}$ deg(v) = 2 |E|

 -> 모든 노드들의 차수의 합은 연결선의 개수의 2배와 같다.

- 홀수 노드의 개수는 짝수이다.

 

 

 

보행 Walk

- 노드와 연결선이 화살표와 함께 교대로 나열된 형태로, 각 연결선의 앞과 뒤에 위치한 노드는 그 연결선의 양 끝에 위치한 노드를 의미

- 표기시 연결선을 생략하기도 함.

- 보행의 길이 : 보행을 구성하는 연결선의 구성

 

1 -> $e_1$ -> 3 -> $e_3$ -> 4 -> $e_4$->2

or 1 -> 3 -> 4 -> 2

=> 길이 = 3

 

경로 Path

- 연결선이 중복되지 않는 보행. 보행의 특수한 경우

- 경로의 길이 : 경로를 구성하는 연결선의 개수

 

단순 경로 simple path

- 시작노드와 끝노드를 제외하고 노드가 중복되지 않는 경로

 

사이클 cycle

- 시작 노드와 끝 노드가 같은 경로

 

그래프에서의 연결

- v $\in$ V, w $\in$ V가 연결 -> v에서 w까지의 경로가 존재

 

연결 그래프

- 서로 다른 모든 노드를이 연결된 그래프

- 단절 그래프 : 모두 연결되지 않은 그래프

 

 

그래프의 종류

- 정규 그래프 : 모든 노드의 차수가 동일한 그래프

 -> 차수가 k인 무향 정규 그래프의 연결선 개수는 |V| x $\frac{k} {2}$

- 완전 그래프 : 모든 노드의 차수가 |V|(노드의 개수) - 1인 정규 그래프

 -> 노드의 개수가 n인 무향 완전 그래프는 $K_n$으로 표기

 -> 무향 완전 그래프의 연결선 개수는 |V| x $\frac{|V| - 1} {2}$

 

 

평면 그래프

- 그래프를 평면에 그릴때, 어떤 연결선도 노드가 아닌곳에서 교차하지 않도록 그릴수 있는 그래프

 

 

동형 그래프

- 그래프 G = (V, E)와 G' = (V', E')에 대하여 다음을 만족하는 함수

     f: V -> V'이 존재하면 G와 G'를 동형이라고 함

- f는 전단사 함수

- u, v $\in$ V에 대하여 (u, v) $\in$ E 이면 ( f(u), f(v) ) $\in$ E' 

 

이분 그래프 

- 그래프 G = (V,E)가 다음을 만족시키면 이분 그래프라고 함

- V = $V_1$ $\cup$ $V_2$, $V_1$ $\cap$ $V_2$ = $\Phi$를 만족하는 공집합이 아닌 노드 집합 $V_1$, $V_2$가 존재

- 모든 (u, v) $\in$ E에 대해 만약 u $\in$ $V_1$이면 v $\in$ $V_2$이고,반대로 u $\in$ $V_2$이면 v $\in$ $V_1$이다.

 

완전 이분 그래프

- 그래프 G = (V, E)가 다음을 만족 시 완전 이분 그래프라고 함

- G는 이분 그래프

- $V_1$의 모든 노드들과 $V_2$의 모든 노드들이 인접함 

 

부분 그래프 subgraph

- 그래프 G = (V, E)와 G' = (V', E')에 대해 V' $\subset$ V 이고, E' $\subset$ E이면 G'는 g의 부분그래프

 

 

 

생성 부분 그래프  spanning subgraph

- 그래프 G = (V, E)와 G' = (V', E')에 대해 V' = V이고, E' $\subset$ E이면, G'는 G의 생성 부분 그래프

 

 

오일러 그래프

- 오일러 경로 : 그래프의 모든 연결선을 한번씩만 지나가는 경로

- 오일러 순환 : 시작 노드와 끝 노드가 같은 오일러 경로

- 오일러 그래프 : 오일러 순환을 가지는 그래프

- 오일러 그래프는 한붓 그리기와 관련

 

 

 

 

해밀턴 경로

- 해밀턴 경로 : 시작 노드와 끝 노드를 제외하고 그래프 모든 노드를 한번씩만 지나가는 경로

- 해밀턴 순환 : 시작 노드와 끝 노드가 같은 해밀턴 경로

- 해밀턴 그래프 : 해밀턴 순환을 가지는 그래프

 

 

 

순환 그래프

- V = {$v_1$, $v_2$, .., $v_n$} 인 그래프 G = (V, E)가 다음을 만족하면 G를 순환그래프라 함

- G는 무향 그래프

- ($v_i$, $v_j$2) $\in$ E이면 j = i +- mod n

* 노드의 개수가 n인 순환 그래프를 $C_n$으로 표기

* 다각형의 그래프 모델

 

 

트리

- 그래프 G가 다음을 만족시키는 경우 G를 트리라고함

- G는 연결 그래프 -> 서로 다른 모든 노드들 사이에 경로가 존재

- 루트 노드가 존재 -> 루트 노드 : 나무의 뿌리에 해당하는 (트리의 가장 높은 곳에 존재하는) 노드

- G에는 사이클이 없어야 함

 

연결 그래프

- 좌측은 연결 그래프가 아니기 때문에 트리가 아니며, 우측 그래프는 사이클이 존재하므로 트리가 안됨

 

 

오일러 공식

- 연결된 평면 그래프 노드의 수를 v, 연결선의 수를 e, 영역(연결선으로 나눠진 공간)의 수를 s라 하면 다음이 성립

 

 

 

그래프의 표현

1. 인접 행렬

2. 인접 리스트

 

 

 

 

인접 행렬

- 그래프 G = (V, E)에서 |V| = n일때, G의 n x n 인접 행렬 $A_G$ = ($a_{ij}$는 다음과 같이 정의됨

- 무향 그래프의 인접 행렬은 대칭 행렬

- 그래프 인접행렬에 0이 아닌 대각 원소가 존재하면(위 경우 $a_{11}$ = 1) 그래프에 루프가 존재

 

 

인접 리스트

연결 리스트

- 자료구조의 일종

- 데이터 집합을 저장할때 다음 순서의 자료가 있는 위치를 데이터에 포함시키는 방식으로 자료를 저장

- 배열 방식에 비해 데이터의 추가/삽입 및 삭제가 용이하나 탐색 속도는 떨어지는 데이터 저장 방식

- 그래프 G = (V, E)를 구성하는 각 노드에 인접한 노드들을 연결 리스트로 표현한 것

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 15 트리  (0) 2020.06.08
이산 수학 - 14 그래프의 활용  (0) 2020.06.08
이산 수학 - 10 관계  (0) 2020.06.07
이산 수학 - 2 수의 종류  (0) 2020.06.07
이산 수학 - 1 집합  (0) 2020.06.07
728x90
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      processEscapes: true
    }
  });
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script>

 

집합 A, B가 주어질 때

- A, B의 곱 집합 : A x B = {(a, b) | a $\in$ A, b $\in$ B}

- A에서 B로으의 관계 R은 A x B의 한 부분잡합을 의미

=> (a, b) $\in$ R이면, aRb로 표기 / (a, b) $\notin$ R 이면 a$\bar{R}$b로 표기

 

ex) 철수는 1반, 영희는 2반, 영진은 1반 일때 학생에서 반으로의 관계 R로 표시하면

- R = {(철수, 1반), (영희, 2반), (영진, 1반)} $\subset$ A x B

- 철수R1반, 영희R2반, 영진 R1반, 영진$\bar{R}$2반

 

 

집합 A, B가 주어질때

- B = A이면 A에서 A로의 관계 R을 'A에서의 관계'라고도 함

 

A = {철수, 영희, 짱구}에 대하여

- 철수와 영희는 친구, 출수와 짱구는 친구, 영희와 짱구는 친구라는 관계를 R로 표기하면

- R = {(철수, 영희), (철수, 짱구), (영희, 짱구)}

 

 

A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a < b }로 주어지면

- R = {(1, 2), (1,3), (1,4), (2, 3), (2,4), (3, 4)}

- 1R4, 3$\bar{R}$2

 

 

 

A에서 B로의 관계 R이 주어질 때

- A = R의 정의역(domain)

- B = R의 공역(Codomain)

- R의 치역(Range) = {b $\in$ B | (a, b) $\in$ R인 a $\in$ A가 존재}

- R의 치역 $\subset$ R의 공역 = B

 

 

예시

- 집합 A = {철수, 영희, 영진}, 집합 B = {1반, 2반, 3반}와 철수는 1반, 영희는 2반, 영진은 1반을 나타내는 관계 R에 대하여

- R의 정의역 = {철수, 영희, 영진} = A

- R의 공역 = {1반, 2반, 3반} = B

- R의 치역 = 1반, 2반

 

 

관계의 표현 방법

1. 순서쌍을 이용한 표현

- 관계의 모든 원소를 순서쌍으로 표현

- 집합 A = {1, 2, 3, 4}, 집합 B = {2, 3, 4, 5}, R = {(a, b) $\in$ A x B | a + b는 짝수}

-> R = {(1, 3), (1, 5), (2, 2), (2,4), (3, 3), (3, 5), (4, 2), (4, 4)}

 

2. 화살표 도표를 이용한 표현

- A에서 B로의 관계 R이 주어졌을 때, 만약 (a, b) $\in$ R이면 a와 b를 화살표로 연결해서 관계를 표현

ex) 집합 A = (1, 2, 3, 4}, B ={2, 3, 4, 5}, R = {(a, b) $\in$ A x B | a + b는 소수}

 

 

3. 좌표를 이용한 표현

- A에서 B로의 관계 R이 주어졌을때 A의 원소는 x축, B의 우너소는 y축에 표시

- (a, b) $\in$ R이면 a를 가리키는 축과 b를 가리키는 축이 만나는 점을 좌표에 표시

ex) 집합 A = (1, 2, 3, 4}, B ={2, 3, 4, 5}, R = {(a, b) $\in$ A x B | a + b는 짝수}

- x축에 A의 원소, y축에는 b의 원소

 

4. 관계 행렬을 이용한 표현

- A, B로 관계 R이 주어질 때 A의 각 원소가 행을 나타내는 것으로, B의 각 원소는 열을 나타내는 것으로 가정

- (a, b) $\in$ R이면 a를 가리키는 행과 b를 가리키는 열이 만나는 원소는 1

- (a, b) $\notin$ R이면 a를 가리키는 행과 b를 가리ㅣ는 열이 만나는 원소는 0

ex) 집합 A = (1, 2, 3, 4}, B ={2, 3, 4, 5}, R = {(a, b) $\in$ A x B | a + b는 짝수}

 

 

5. 방향 그래프를 이용한 표현

- 그래프 : 점들과 점 사이를 연결한 선으로 구성된 수학적 개념

- 방향 그래프 : 점 사이를 연결한 선이 화살표인 그래프

 

 

 

방향 그래프를 이용한 표현

- A에서의 관계 R이 주어질 때 A의 각 원소를 점으로 표시하고 (a, b) $\in$ R이면, a를 나타내는 점에서 b를 나타내는 점으로 화살표를 그려서 관계를 표현

ex) 집합 A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a - b $\geq$ 0}

 

관계의 성질

- 반사성

- 대칭성

- 추이성

 

 

 

반사성의 정의

- 집합 A에서 관계 R이 주어질때, 모든 a $\in$ A에 대해서 (a, a) $\in$ R이면 R이 반사성을 가진다고 하거나 R을 반사 관계라고 함.

ex) A = {1, 2, 3, 4} , R = {(a, b) $\in$ A x A | a - b $\geq$ 0}

- R ={(1, 1), (2, 1), (2, 2), (3, 1), (3, 2), (3, 3), (4, 1), (4, 2), (4, 3), (4, 4)}

 -> R은 반사 관계

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a - b $\gt$ 0}

- R = {(2, 1), (3, 1), (3, 2), (4, 1), (4, 2), (4, 3)}

 -> R은 반사 관계가 아님( (1,1) $\notin$ R)

 

 

반사 관계의 특징

- R이 반사 관계이면 R의 관계 행렬의 대각 원소는 모두 1

- R이 반사 관계이면 R의 방향 그래프 표현에서 모든점은 루프를 가짐

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a - b $\geq$ 0}

 

비반사성

- 집합 A에서 관계 R가 주어질때, 모든 a $\in$ A에 대하여 (a, a) $\notin$ R이면, R이 비반사성을 가진다거나 R을 비반사 관계라고 한다.

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a- b $\gt$ 0}

- 관계 행렬의 대각 원소가 0, 방향 그래프에서 모든 점은 루프를 가지지 않음 -> 비반사 관계

- R = {(2, 1), (3, 1), (3, 2), (4, 1), (4, 2), (4, 3)}, 비반사 관계

 

반사 관계와 비반사 관계의 관계

- 반사 관계가 아니면 비반사 관계이다? -> 거짓

- 다음 관계는 반사 관계도 비반사 관계도 아님

 

 

 

대칭성

- 집합 A에서 관계 R이 주어질때 , (a, b) $\in$ R이면 항상 (b, a) $\in$ R을 만족시키면 R이 대칭성을 가진다 하며, R을 대칭 관계라고 함.

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a + b는 홀수}

- R = {(1, 2), (1, 4), (2, 1), (2, 3), (3, 2), (3, 4), (4, 1), (4, 3)}

 -> R은 대칭 관계

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a - b $\get$ 0}

- R = {(1, 1), (2,1), (2, 2), (3, 1), (3, 2), (3, 3), (4, 1), (4, 2), (4, 3), (4, 4)}

 -> (2, 1) $\in$ R, (1, 2) $\notin$ R => R은 대칭 관계가 아님

 

 

대칭 관계의 특징

- R의 관계 행렬은 대칭 행렬

- R의 방향 그래프 표현에서 어떤 점 x에서 다른점 y로 가는 연결선이 존재하면 y에서 x로 가는 연결선도 반드시 존재

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a + b는 홀수}

 

 

추이성

- 집합 A에서 관계 R이 주어질때, (a, b) $\in$ R이고, (b, c) $\in$ R이면 항상 (a, c) $\in$ R을 만족 시키면, R은 추이성을 가진다 하고, R을 추이 관계라고 한다

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a - b $\get$ 0} -> R은 추이관계

- (a, b) $\in$ R -> a - b $\get$ 0

- (b, c) $\in$ R - > b - c $\get$ 0

 => (a, b) $\in$ R, (b, c) $\in$ R -> a - b $\get$ 0, b - c $\get$ 0 -> a -c $\get$ 0 -> (a, c) $\in$ R

ex) A = {1, 2, 3, 4}, R = {(a, b) $\in$ A x A | a + b는 홀수} -> R은 추이 관계가 아님

 - (1, 2) $\in$ R이고, (2, 3) $\in$ R이지만 (1, 3) $\notin$ R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 15 트리  (0) 2020.06.08
이산 수학 - 14 그래프의 활용  (0) 2020.06.08
이산 수학 - 13 그래프  (0) 2020.06.08
이산 수학 - 2 수의 종류  (0) 2020.06.07
이산 수학 - 1 집합  (0) 2020.06.07
728x90

 

자연수의 집합

- N = {1, 2, 3, ...} -> N(Natural Number}

 

정수의 집합

- Z = {..., -2, -1, 0, 1, 2, ...} => Z(Zahlen) : 독일어로 정수 의미

- N $\subset$ Z 

 

유리수의 집합

- Q = {x | x = $\frac{b} {a}$, a는 0이아닌 정수, b는 정수} -> Q(Quotient)

- N $\subset$ Z $\subset$ Q

 

실수의 집합

- R = {x | x는 소수로 표현 가능} => R(Real Number)

-  N $\subset$ Z $\subset$ Q $\subset$ R

 

 

무리수

- I = {x | x는 실수지만 유리수가 아닌 수 } => I(Irrational Number)

 

 

방정식 $x^2$ = -1을 만족하는 실수 x 존재 여부

-> 실수의 제곱은 음수가 될수 없음

 

허수 i

- $x^2$ = -1을 만족하는 x중의 하나를 i로 표시

- i = $\sqrt(-1)$, i^2 = -1

 

 

복소수 집합

- C = {x | 실수 a, b에 대해서 x = a + bi} => C(Complex Number)

- x = a + bi ( a는 x의 실수부, x는 i의 허수부)

 

켤레 복소수

- x = a + bi가 있을때

- $\bar{x}$ = a - bi를 x의 켤례 복소수라 한다.

- x축에 대해 대칭

 

 

복소수, 평면 벡터, 좌표 평면의 관계

- 벡터 : 시작점과 끝점으로 구성. 시작점에서 끝점을 향하는 화살표, 이 화살표의 길이를 벡터의 크기가됨

 -> a + bi의 길이 =  | a + bi |

 

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 15 트리  (0) 2020.06.08
이산 수학 - 14 그래프의 활용  (0) 2020.06.08
이산 수학 - 13 그래프  (0) 2020.06.08
이산 수학 - 10 관계  (0) 2020.06.07
이산 수학 - 1 집합  (0) 2020.06.07
728x90

 

 

집합론

- 역설을 해결하는 과정을 통해 발전해온 이론

 

세비아의 이발사 역설

- 세비아의 이발사가 스스로 이발하지 않는 모든 사람들을 이발시켜준다면, 이발사는 스스로 이발해야하는가?

- 세비아 이발사는 스스로 이발해도 모순

- 세비아의 이발사는 스스로 이발하지 않아도 모순

=> 집합을 명확히 정의하지 않으면 다양한 모순이 발생

 

집합

- 명확한 조건이 주어질때, 이 조건을 만족하는 대상들의 모임

 

원소

- 집합을 구성하는 성분

- S가 집합이고 a가 S의 원소이면 a $\in$ S

- a가 집합 S에 포함되지 않으면 a $\notin$ S로 표기

ex) S가 대한민국 광역시의 모임 -> 부산 $\in$ S, 서울 $\notin$ S

 

 

집합의 표기

- 집합은 {} 사이에 원소를 나열하거나 집합 원소의 조건 등을 명기하여 표시함

ex) S가 대한민국 광역시의 모임 -> S = {부산, 대구, 인천, 광주, 대구, 울산};

 

 

기수 cardinality

- 집합의 원소 개수

- 집합 S의 기수는 |S| 또는 #S로 표기

- S = {2, 3, 4, 5} => |S| = 4

- N = 자연수의 집합 -> |N| = $\inf$(무한대)

 

 

집합 표기

1. 원소 나열법

- 집합에 포함되는 원소들을 일일이 나열하는 방법

- A = {2, 3, 4, 5}

- B = {1, 2, 3, ....}

 

2. 조건 제시법

- 원소들의 공통적인 성질을 조건식으로 제시하는 방법

- A = { x | x는 자연수이고 1 < x < 6}

- N = { x | x는 자연수}

 

 

벤다이어그램

- 집합과 원소의 포함 관계를 그림으로 보여주는 방법

 

 

 

 

 

 

300x250

'수학 > 알고리즘' 카테고리의 다른 글

이산 수학 - 15 트리  (0) 2020.06.08
이산 수학 - 14 그래프의 활용  (0) 2020.06.08
이산 수학 - 13 그래프  (0) 2020.06.08
이산 수학 - 10 관계  (0) 2020.06.07
이산 수학 - 2 수의 종류  (0) 2020.06.07
728x90

방정식의 해법

1. 시작법

2. 이등분법

3. 가위치기법

4. 수정 가위치기법

 

 

 

근에 가까운 시작접을 잡는것과 하지 않는 것의 차이

- 반복법 사용시 오차를 최대한 줄일 수 있음

 

 

 

시작점

- 반복법으로 방정식의 근을 구하기 위해 대략적으로 추측한 근사값 x0에서부터 시작대로 x1, x2 ..를 구해가는 기법으로 x0를 시작점이라 함.

- 시작점 x0을 어떻게 잡느냐에 따라 -> x1, x2, ...가 근에 -> 수렴하는 속도가 빠르거나/느리거나 발산하는 경우가 존재

=> 가능한 주어진 함수의 성질로 근에 가까운 시작점 x0을 잡는 것이 바람직함.

* x_0가 근에 멀리 떨어진 값이라면 x_100의 근을 취하더라도 큰 오차 발생 가능

 

 

반복법

- 어떤 정해진 과정을 차례대로 되풀이하여 구하는 방법

- x0부터 시작하여 x1, .. 를 정해진 방법으로 구하여 최대한 오차를 줄여가면서 방정식의 근을 구하는것

 

 

 

반복법 사용 예시

- f(x) = 13.42 x^2 - 14.21x + 34.45 = 0

 ->근의 공식으로 쉽게 구할 수 있음.

- f(x) = 3x^8 + 5x^5 + 7x - 21 = 0

- f(x) = e^x ln x + sin x - 1.2 = 0

 -> 구하기 어려운 방정식의 근은 반복법으로 구함

 -> 위 방정식의 근을 구하는 공식이 없음

 

 

매트랩으로 시작점 구하기

 

clc;
clear all;


N=5;
x0 = -2;

y(1) = x0*x0;
x(1) = x0;
z(1) = x0/2 + 2;
x1(1) = x0;

for n=1:4
	x(n+1) = x(n) + 1;
    y(n+1) = x(n+1) * x(n+1);
end
plot(x, y);
hold on

for n=1:4
	x1(n+1) = x1(n) + 1;
    z(n+1) = x1(n+1)/2 +2;
end
plot(x1,z);

- 두 곡선 사이 교점은 -2과 -1 사이 하나와 1과 2 사이 하나가 존재함

-> 시작점은 -1, 2

 

 

 

이등분법에서 중간값 정리를 사용하는 이유

- 폐구간 함수일 경우 구간에 적어도 근이 하나 존재한다고 함

 

 

이등분법

- 구간 (a, b)를 P점을 포함하도록 계속 이등분 하는것

- 아래의 가정이 필요

 1. 구간 (a, b)에서 연속 함수 f(x)가 주어지고, f(a), f(b)가 반대 부호를 갖는다고 가정

 2. 중간값 정리에 의해 f(p)=0을 만족하는 점 P가 a, b 사이에 존재함

 3. 구간 (a, b)안에 2개 이상의 근이 있는 경우도 있으나 근이 한개만 있다고 가정

 

중간값 정리

- f(x)가 폐구간 [a, b]에서 연속일 때 f(a) < f(b)라 하면, f(a) < a< f(b)인 임의의 값 a에 대하여 f(c) = a가 되는 c가 구간 (a, b)에 적어도 하나 존재한다고 하는 정리

 

 

이등 분법 bisection method

- p1 = (a1 + b1)/2라 하고, f(p1) = 0이면, p=p1이고 f(p1) != 0이면 f(p1)은 f(a1)이나 f(b1)중 하나와 같은 부호를 가짐

- f(p1)이 f(a1)과 같은 부호를 갖는 경우 -> p는 p1과 b1사이에 존재하게 되므로 a2= p1, b2=b1라 가정

- f(p1)이 f(b1)과 같은 부호를 가지는 경우 -> p는 a와 p1 사이에 존재하므로, a2 = a1, b2 = p1이라 놓고 구간 (a2, b2)에서 앞의 과정을 반복

 

 

멈춤 과정

-매트랩을 이용할 때 시행되는 반복 횟수에 대한 조건을 결정하는 것이 좋음

- 코딩을 잘못한 경우 무한번 반복 시행에 대한 가능성을 제거하기 위해 N은 최대 한계치를 결정하고 횟수를 더 초과하면 멈춤 과정을 실시함

 

 

매트랩으로 근사해 구하기

- f(x) = x^2 - 4

clc;
clear all;
f='x^2 - 4';
n =0;
a=1;
b=2;
c = (a+b)/2;
eps = 0.000001;
fprintf(' n a b c f(c) \n');

while b-c >= eps
	n = n + 1;
    x = b;
    fb = eval(f);
    x = c;
    fc = eval(f);
    if fb * fc <= 0
    	a = c;
        c = ( a + b)/2;
    else
    	b=c;
        c = (a+b)/2;
    end
    fprintf("%2.0f %2.10f %2.10f %2.10f %2.5f \n", n, a, b, c, fc);
end

 

 

 

 

 

 

 

300x250

+ Recent posts