본문 바로가기

CS

(5)
[프리드버그 선형대수학] 1장 - 벡터공간 (Vector Spaces) 프리드버그 선형대수학 번역본을 통해 학습한 내용을 정리한 글입니다. 1.1 개론 1. 벡터(vector) : 크기와 방향을 가진 물리량. 2. 평행사변형 법칙(parallelogram law) : 두 벡터의 합(sum)인 합성벡터를 구하는 규칙. 3. 스칼라 곱(scalar multiplication) : 벡터의 크기에 스칼라 값을 곱한 것. 4. 벡터의 평행(parallel) : 두 벡터 x, y에 대해 y = tx인 0이 아닌 실수 t가 존재할때, 두 벡터는 평행하다. 5. 평면에서의 벡터의 합과 스칼라 곱에 대한 대수적 설질 (1) 모든 벡터 x, t에 대하여 x + y = y + x이다. (2) 모든 벡터 x, y, z에 대하여 (x + y) + z = x + (y + z)이다. (3) 모든 벡터..
[ML/DL] NumPy(넘파이) 기초 1 - 자료형, ndarray, 상수 NumPy Python의 Numarray와 Numeric 패키지를 계승한 패키지 상당부분 C로 작성되어 대규모 데이터를 처리할 때에도 실행 속도가 빠른 것이 특징 Scipy(사이파이), Pandas(판다스), matplotlib(패트플롯라이브러리) 등의 패키지로 확장됨 NumPy의 기본 객체는 '다차원 동질성 배열 (homogeneous multidimensional array)' 스칼라 자료형 기본 자료형은 float_ 위 그림은 자료형의 계층 구조를 나타냄. numpy.generic, numpy.signedinteger 등으로 사용 가능 inexact는 부동소수점을 사용하여 정확한 값을 나타내지 않음 자료형 (numpy.scalar) 코드 alias C에서의 자료형 byte b int8 char sh..
[알고리즘] Prim's Algorithm (프림 알고리즘) 프림 알고리즘 weight가 있는 undirected graph 에서 MST를 찾는 알고리즘 크루스칼 알고리즘 (krustal algorithm) 과 같은 용도. 상황에 따라 더 효율적인 알고리즘을 선택 작동 방식 임의의 vertex를 선택하여 Tree 생성 (현재 노드가 1개) T에 있는 노드와 T에 없는 노드 사이의 edge 중 weight가 최소인 edge를 찾는다 해당 edge가 연결하는 노드중, Tree에 없던 노드를 Tree에 추가 모든 노드가 Tree에 포함될 때까지 2-3을 반복 코드 구현 from math import inf graph = [ [inf, 10, inf, 5, inf, inf, inf], [10, inf, 2, 7, 12, inf, inf], [inf, 2, inf, inf..
[알고리즘] Kruskal Algorithm(크루스칼 알고리즘) Kruskal Algorithm 네트워크(간선에 가중치가 부여된 그래프)의 모든 edge를 최소 비용으로 연결하는 방법을 Greedy하게 찾는 알고리즘. MST(최소 비용 신장 트리)의 특성을 이용하여 각 단계에서 MST를 구성해나감. 신장 트리 : 그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프 최소 신장 트리 : 간선 비용이 최소가 되는 신장트리 동작 방법 간선을 비용을 기준으로 오름차순으로 정렬 모든 간선을 순서대로 하나씩 추가 (사이클을 만드는 간선은 포함하지 않음) union-find 알고리즘을 활용한 사이클 판별 서로소 집합은 무방향 그래프 내의 사이클 존재 여부 판별에 이용됨 (유방향 그래프는 dfs를 활용해 판별) 모든 간선 정보에 대해 find 연산으로 각 노드의 부..
[알고리즘] union-find Algorithm union-find 알고리즘 사이클이 발생하는지 여부를 확인하는 방법 : 노드들의 부모가 같은지 여부를 판단 (부모 노드가 같다면 사이클 발생) 서로소 집합 자료구조 (Disjoint Set) : 서로소 부분 집합들로 나누어진 원소들에 대한 자료구조 (트리가 효율적) 서로 연결된 두 노드 중 값이 작은 노드가 부모 노드가 됨 루트 노드를 집합의 대표값으로 반환 union-find 연산 # find def find(parent, x): if parent[x] != x: return find(parent, x) return x # union def union(parent, a, b): a, b = find(parent, a), find(parent, b) if a > b: parent[a] = b else:..

반응형