* 공부한 내용을 정리하는 복습글입니다.
* 패스트캠퍼스(초격차 온라인) 강의를 기반으로 개인적으로 공부한 부분을 추가하여 작성합니다.
* 내용에 오류가 있을시 댓글로 알려주세요.
* ㅇㅋ 그럼 가보자고

이산수학이란
이산수학(Discrete mathematics) : 이산적인(연속적이지 않은) 수학구조에 대해 연구하는 학문.
0보다 크고 10보다 작은 실수의 개수를 묻는다면 대답하기 어렵다. 실수는 연속적인 성질이 있기 때문이다.
반면에 0보다 크고 10보다 작은 정수의 개수는 바로 대답할 수 있다.
이산수학에서는 대체로 정수, 그래프, 논리연산등 구분되는 값을 가지는 대상을 연구한다.
컴퓨터공학에서도 수학은 중요하다.
추후에 배우게 되는 자료구조, 알고리즘 등도 모두 수학이 기반이 되니 잘 공부해두는 것을 추천한다.
안하면 나처럼 4학년 되어서 실전압축 전공공부를 하게된다.
위키피디아 이산수학 문서
https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%82%B0%EC%88%98%ED%95%99
이산수학 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 이산수학(discrete mathematics, 離散數學, 문화어: 리산수학)은 이산적인 수학 구조에 대해 연구하는 학문으로, 연속되지 않는 공간을 다룬다. 유한수학(finite mathemati
ko.wikipedia.org
집합
집합 : 여러 원소들(element)의 모임. 중복된 원소를 가지지 않음. 원소들 사이에 순서가 없음
표기법
- 원소나열법 A={1,2,3,4}
- 조건제시법 A={x | 0<x<100, x는 정수}
원소의 개수는 |A|로 표기
ex) A={1,2,3,4}일 때, |A|=4
원소가 유한개면 유한집합, 무한개면 무한집합
전체 집합 : 논의 대상이 되는 원소전채를 포함하는 집합, 보통 U라고 표기
공집합 : 원소를 하나도 가지지 않는 집합
부분집합 : A⊆B, 집합 A의 모든 원소가 집합 B에 포함될때 A는 B의 부분집합. A=B도 부분집합
진부분집합: 부분집합이지만 A=B는 아닐때
합집합 : A에 해당하는 원소와 B에 해당하는 원소 모두 모은 집합
교집합 : A와 B에 공통으로 속한 원소들의 집합
서로소 : 공통원소가 없는 경우를 서로소라고 부름
차집합 : A의 원소 중에서 B에 속하지 않는 원소만으로 이루어진 집합. A – B = A - (A ∩ B)
여집합 : 집합 A에 속하지 않지만 전체집합에 속하는 원소들의 집합
집합법칙 : 이것저것 많이 있지만 대체로 유도가 되기 때문에 중요한거 몇개만 외우기
- 교환법칙 : A ∪ B = B ∪ A , A ∩ B = B ∩ A
- 결합법칙 : A ∪ (B ∪ C) = (A ∪ B) ∪ C , A ∩ (B ∩ C) = (A ∩ B) ∩ C
- 분배법칙 : A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C) , A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
- 드 모르간 법칙 : ( A ∪ B ) ^c = A ^c ∩ B ^c , ( A ∩ B ) ^c = A ^c ∪ B ^c
명제
명제 : 객관적으로 참, 거짓을 판단 할 수 있는 문장이나 수식
보통 참인경우는 T, 거짓인 경우는 F로 표시
참, 거짓을 가리키는 값을 진릿값(Truth value)라고 한다.
논리
부정 ~p (not p) : 명제 p에 대하여 p의 진릿값을 반대로 갖는 명제
~
논리부분은 하교후 추가 예정...
~
pandas를 사용한 데이터프레임 집합연산 구현
과거 이산수학 과제로 제출하였던 구현 코드다.
파이썬을 모르는 상태로 했던거라서 좀 이상할 수 도 있다.
1. 합집합
# 합집합(union) 연산
PS_union = pd.concat([P,S],ignore_index=True).drop_duplicates()
print(PS_union.shape[0])
2. 교집합
# 교집합(intersection) 연산
PS_inter = pd.concat([P, S], join='inner',axis=1)
print(PS_inter.shape[0])
3. 차집합
# 차집합(diffrence) 연산
PS_inter = pd.concat([P, S], join='inner')
S_diff = pd.concat([S,PS_inter]).drop_duplicates(keep = False)
P_diff = pd.concat([P,PS_inter]).drop_duplicates(keep = False)
print(S_diff.shape[0], P_diff.shape[0])
4. 동치판별
# 동치(equivalence)판별
intersect_commute = pd.concat([P, S], join='inner',axis=1)
P_only = P_diff
def isSubset(dfA, dfB):
AB_inter = pd.concat([dfA, dfB], join='inner',axis=1)
U_count = AB_inter.shape[0]
SA_count = dfA.shape[0]
SB_count = dfB.shape[0]
if U_count == SA_count:
if U_count == SB_count:
print(True)
else:
print(False)
else:
print(False)
isSubset(P, intersect_commute)
isSubset(P, P)
isSubset(P, S)
isSubset(P, P_only)'CS > 기타 조각글' 카테고리의 다른 글
| [빌드 및 컴파일] opencv static library & aarch64 cross-compile (0) | 2024.12.02 |
|---|---|
| [코테] 실행속도 차이 : scanf/printf/\n과 cin/cout/endl (0) | 2023.09.22 |
| [복습] 컴퓨터그래픽스 중간고사 대비 복습 (이론) (0) | 2023.04.24 |
| [Spark/Linux] 리눅스 환경에 스파크 설치하기 (0) | 2023.04.07 |
댓글