본문 바로가기

Archive171

[Linalg] Change of Basis (프로그래머스 인공지능코스 Week2-Day2 강의 중 내용정리) Change of Basis 좌표계를 바꿔서 행렬을 나타내는 법에 대해 알아보자. (한줄 요약) Ax = Ib에서 I를 표준 좌표계로 보면 A는 새로운 좌표계, x는 b를 A로 표현한 새 좌표 값이라고 볼 수 있다. Coordinate System으로의 표현 (a,b)는 기저가 (e1, e2) 즉, 표준 좌표계인 경우에 가지게 되는 좌표값이다. (4,3)은 기저가 (v1, v2) 즉, 새로운 좌표계인 경우에 가지게 되는 좌표값이다. 즉, 좌표계를 바꿔 새로운 좌표값을 부여할 수 있다는 점이다. 역행렬로 표현 즉, 위의 내용을 다시 역행렬로 표현하면, 표준 좌표계에서 x 좌표값은, A의 역행렬의 열벡터들을 기저로 갖는 좌표계에서는 b로 표현.. 2021. 4. 26.
[Linalg] LU Decomposition LU Decomposition (프로그래머스 2주차 Day2 - LU Decomposition 내용) 행렬의 분해 행렬의 분해는, 행렬을 곱으로 분해하여, 계산한다. 대표적인 행렬 분해의 예시는 다음과 같다. - LU 분해 (가우스 소거법을 행렬의 형태로 적음) - QR 분해 (직교 분할과 관련) - 특이값 분해(SVD) 오늘은 LU 분해에 대해서 알아본다. LU분해 LU 분해란, 주어진 행렬을 하삼각행렬 * 상삼각 행렬 형태로 쪼개는 것을 말한다. 만일 이것을 했을 경우, 어떤 장점이 있을까? Ax = b -> (LU)x = b -> L(Ux) = b -> 상삼각이나 하삼각 형태이므로 해를 구하기가 간단해진다. 이 때, LU분해의 과정에서 행끼리 바꿔줘야 하는 경우가 존재한다. 이는 치환행렬을 곱하는 .. 2021. 4. 26.
[Linalg] 선형시스템 및 가우스소거법 (Numpy Code 추가) (프로그래머스 2주차 Day1 수업정리) 선형시스템 및 가우스 소거법 기초부터 튼튼히 기초부터 튼튼히 - 중,고등학교때 배웠던 연립방정식이 선형시스템(linear system) 이다. 그런데 , 문제는 변수가 훨씬 더 많이지는 등의 어려운 점이 발생한다면, 중고등학교때 배운 가감법으로는 무리일 것이다. 오늘의 목표 (1) 선형시스템, 즉 Ax = b의 정형적 풀이법을 알아보자. (2) 가우스 소거법에 대해 알아보자 (3) 이에 대한 코드 구현법을 알아보자. 선형 시스템 -> 행렬 표현 우선 이를 위해서는 일반적인 연립 방정식을 행렬 형태로 표현해야 한다. 이는 다음과 같은 식으로 한다. 계수는 계수끼리, 상수는 상수끼리 모아서 행렬로 표현하면 된다. - 식은 행이다. - 식이 m개고, 미지수가 n개일 경.. 2021. 4. 26.
[자료] Python으로 배우는 자료구조 (4) Heap 이번에는 Heap자료 구조형에 대해 정리한다. 출처 : 프로그래머스 어서와, 자료구조와 알고리즘은 처음이지? Heap의 정의 및 기본 연산 이진트리의 한 종류로 binary heap이라고도 부른다. Heap에서는 Max Heap이랑 Min Heap이 있다. 두 가지가 대칭적인 개념이므로, 여기서는 Max Heap을 기준으로 설명을 풀어나가려 한다. Max Heap의 전제 조건 - 루트 노드가 항상 최댓값을 가진다. - 완전 이진 트리이다. - 임의의 노드를 루트로 하는 서브트리 또한 최대 힙이다. 이러한 성질 때문에, 최대 힙의 경우는 완전히 크기 순서대로 정렬되어 있지는 않는다. 대신 완전 이진 트리를 유지해야 한다는 조건 때문에, Heap의 삽입과 삭제 연산의 시간 복잡도는 O(log n)의 형태를 .. 2021. 4. 21.
[기본이론] Mutable vs Immutable 데브코스를 들으면서 한번 언급이 되었는데 잘 모르고 있어서 찾아본 내용이다. 매우 중요한 사항이 많아 별도의 글로 정리하였다. 오늘의 주제 : mutable vs immutable / shallow copy vs deep copy 변수의 개념 기본적으로 변수는 객체를 가리킨다. num = 10이라고 하면, 컴퓨터 메모리에 10이 저장되고, num이라는 변수는 10이라는 정수형 객체를 가리킨다. immutable Immutable한 객체의 예시는 number, string, tuple등이 있다. 값이 변하지 않는 속성의 객체라는 의미인데. 다음을 통해 이해해보자. x = 1 y = x y += 3 print(x) # 1 출력 print(y) # 4 출력 위와 같은 상황을 고려하자. 세번째에서 y값을 변화시.. 2021. 4. 21.
[자료구조] Python으로 구현하는 자료구조 (3) Tree 이번에는 Tree와 BinaryTree에 대해서 알아보자. 출처 : 프로그래머스 어서와! 자료구조와 알고리즘은 처음이지? Tree의 기본 용어 Tree는 그래프의 특이한 형태 중 하나이다. 수학적으로 정의하면 회로, 즉 순환되는 부분이 없고 두 노드를 연결하는 간선이 많아야 1개인 구조이다. 사진을 통해 Tree의 예시 및 용어를 확인해보자. 설명을 위해 위키피디아의 트리 사진에 약간의 붙임을 달았다. - A : 최상단의 노드로, 트리의 루트 라고 부른다. - B와 C : B와 C를 부모 자식 관계라고 본다. B는 C의 부모 노드이다. C는 B의 자식 노드 중 하나이다. - 노드의 차수란, 가지고 있는 자식의 수이다. A와 B의 경우는 차수가 2인 것이다. - 자식이 하나도 없는 C의 경우는 말단 노드로.. 2021. 4. 21.