반응형

전체 글 194

프림 알고리즘(Prim's Algorithm)

신장 트리 : 모든 정점을 포함하는 그래프 최소신장트리 : 스패닝 트리 중 간선 가중치 합이 가장 작은 트리 과정에 대해 간략히 설명하는 글을 인용하면... 1) 그래프에서 정점 하나를 선택하여 트리 T에 포함시킵니다. 2) T에 포함된 노드와 T에 포함되지 않은 노드 사이의 간선 중에서 가중치가 가장 작은 간선을 찾습니다. 3) 해당 간선에 연결된 T에 포함되지 않은 노드를 트리 T에 포함시킵니다. 4) 모든 노드가 포함될 때까지 2)와 3) 과정을 반복합니다. 중요한 것은 간선을 중심으로 노드를 우선순위 큐에 담아 처리한다는 점이다. 그리고 이때 가중치를 Cost라고 표현한다. 프림 알고리즘은 시간복잡도가 O(ElogV)이다. #include #include #incldue #define NODE_M..

해시맵(Hash Map) 구현 - 2

체이닝(chaning) 체이닝은 연결리스트를 통해 특정한 키를 가지는 항목들을 연결해서 저장한다. 같은 key에 대한 중복을 허용 체이닝을 이용한 해시맵 구현 코드 예시 #include #include #include #include #define TABLE_SIZE 10007 #define INPUT_SIZE 5000 typedef struct{ int id; char name[20]; } Student; //하나의 key에 여러 data가 들어갈 수 있게 해주는 구조체다. Student * 의 주소를 담는 구조체 typedef struct{ Student * data; struct Bucket * next; } Bucket; //해시테이블 초기화 void init(Student ** hashTable..

해시맵(Hash Map) 구현 - 1

해시맵 특징 - 많은메모리 소모, 빠른 데이터 처리 특정값을 찾을 때에는 key로 접근한다. 그 key를 index라고 한다. key 중복을 collision이라고 한다. - hashing은 division method을 주로 이용. 나머지를 key로 이용한다는 것. 테이블의 크기(나누기 크기)는 prime number로 설정한다. 충돌 처리 1. 선형조사법,이차조사법 : 충돌 발생항목을 테이블의 다른 위치에 저장한다. 2. 체이닝 : 해시 테이블의 하나의 버킷에 여러개의 항목을 저장한다. 선형 조사법 예시 코드 // 선형조사법 #include #include #include #include #define TABLE_SIZE 10007 #define INPUT_SIZE 5000 typedef struct..

공업수학 요점정리 #16 - 선형대수학(Linear Algebra) 6부 - Nonhomogeneous System (비제차연립일차방정식)

수식이 깨져서 보일 경우 PC 버전으로 봐주시길 바랍니다. 자세한 증명은 전공서나 강의를 참고하시길 바랍니다. $a_{11}x_1 + a_{12}x_2 + \space … \space + a_{1m}x_m = b_1\\ a_{21}x_1 + a_{22}x_2 + \space … \space + a_{2m}x_m = b_2\\ .\\ .\\ .\\ a_{n1}x_1 + a_{n2}x_2 + \space … \space + a_{nm}x_m = b_n$ 인 형태는 행렬 표시로서는 $AX=B$로 표시된다. 이 때 근이 있으면 consistent하다고 하고, 없는 경우 inconsistent하다고 한다. 상미분방정식의 풀이와 같이 $AX=O$의 general solution은 associated homogene..

행렬 계산기 개발 2일차...

1. 문자 인식 방법 중 온점을 제거했다. 프로그램을 복잡하게 만드는 것 같아서. 2. 대신 행렬의 크기를 먼저 받는 방법을 택했다. 3. 예외처리가 초기에 생각한 것보다 해야할 것이 많았다. 내일은 text로 받은 행렬의 마지막 부분에 ,이 없을 경우를 알고리즘으로 만들 예정이다. 아무래도 다음 문자가 NULL인지로 확인하는 게 쉽지 않을까 싶다. 4. 이 속도로는 이번주 내로는 main 함수도 못채울거 같다. // 5x5까지 지원하는 행렬 계산기를 만든다. // 처음 생성시 몇 행렬인지 먼저 받는다. // 그 후 그에 맞게 text를 수령하고 유효성검사 규칙에 맞는지 확인한다. // 행렬을 생성한다. //마지막 부분에 , 안찍어 줬을 때 처리하는 방법 작성해야한다. #include //행렬구조체 gl..

행렬 계산기 개발 1일차...

1. 5x5까지 지원하는 행렬 계산기를 만들 것이다. 2. 행렬을 숫자와 쉼표와 온점을 이용해 text형태로 받을 것이다. 마우스 사용을 줄이면 사용자 이용에 조금 더 편의를 줄 수 있지 않을까 싶어서. 3. text를 수령하고 유효성검사 규칙에 맞는지 확인한다. 4. 최종적으론 MFC나 NDK로 PC와 안드로이드로 프로그램 배포를 하고자한다. 5. 사실 코틀린을 쓰고 싶지만 모르고 배우기엔 시간이 부족하고 간단한 프로젝트에 그렇게 힘들여야되나 싶기도 하고... 그냥 이미 아는 C로 쓸란다. // 5x5까지 지원하는 행렬 계산기를 만든다. // 처음 생성시 몇 행렬인지 먼저 받는다. // 그 후 그에 맞게 text를 수령하고 유효성검사 규칙에 맞는지 확인한다. // 행렬을 생성한다. #include //..

공업수학 요점정리 #15 - 선형대수학(Linear Algebra) 5부 - Homogeneous System (제차연립일차방정식)

수식이 깨져서 보일 경우 PC 버전으로 봐주시길 바랍니다. 자세한 증명은 전공서나 강의를 참고하시길 바랍니다. 아래의 Homogeneous equation은 $a_{11}x_1 + a_{12}x_2 + \space … \space + a_{1m}x_m = 0\\ a_{21}x_1 + a_{22}x_2 + \space … \space + a_{2m}x_m = 0\\ .\\ .\\ .\\ a_{n1}x_1 + a_{n2}x_2 + \space … \space + a_{nm}x_m = 0$ 아래의 행렬곱과 같다. $\begin{bmatrix}a_11&a_12&a_13&...&a_1m\\ a_21&a_22&a_23&...&a_2m\\ .\\ .\\ .\\ a_n1&a_n2&a_n3&...&a_nm \end{bm..

공업수학 요점정리 #14 - 선형대수학(Linear Algebra) 4부 - Matrix Calculation, Rank (행렬 연산, 행렬 계수, 행 계수, 열 계수)

수식이 깨져서 보일 경우 PC 버전으로 봐주시길 바랍니다. 자세한 증명은 전공서나 강의를 참고하시길 바랍니다. 다른 행렬의 기본 연산은 간단하므로 생략한다. 1. 행렬곱 1-1. 행렬곱의 일반적인 연산 $\begin{pmatrix} 1&1&1\\ 2&2&2\\ 3&3&3 \end{pmatrix} \begin{pmatrix} 1&2\\ 1&2\\ 1&2 \end{pmatrix} = \begin{pmatrix} 3&6\\ 6&12\\ 9&18 \end{pmatrix}$ 일반적인 행렬곱의 연산은 '앞 행렬의 행'과 '뒤 행렬의 열'을 '내적'하는 것이다. 1-2. 뒤의 행렬을 각각의 열벡터로 분리해서 생각하기 $\begin{pmatrix} 1&1&1\\ 2&2&2\\ 3&3&3 \end{pmatrix} \be..

프로젝트 리뷰 1편 - 2017년 삼성전자 DS 부문 육목 알고리즘 대회

대학 1학년 때, 아는 것도 없이 과동기 3명이서 순수 패기로만 참여했었던 대회이다. 그래서 예선 광탈을 했던 기억, 가독성 나쁘게 코드를 써서 동기에게 한소리 들은 기억, 잘하는 동기를 보고 감탄했던 기억, Bitbucket 잘 못써서 힘들었던 기억 등... 본선은 못갔지만 배운 건 꽤 있었던 것 같다. 당시 제작한 Weigting Module. 내가 쓰면, 동기가 고치고. 이 과정을 되게 많이 반복했었다. 당시 그만큼 내 코드엔 문제가 많았다. //외부배열 board[][] 존재 int Boardweighting[BOARD_SIZE][BOARD_SIZE]={0}; int Ourteamrow=0,Ourteamcol=0; int Oppositerow=0,Oppositecol=0; int row=0,col..

자청 추천도서, 『클루지』(Kluge, 개리 마커스, 2008)

1970년 4월 달 착륙을 목표로 하던, 아폴로 13호의 이산화탄소 여과기가 고장났다. 이 상황이 계속된다면 승무원 모두가 죽을 수도 있는 상황이었다. 승무원들은 기지를 발휘해 비닐봉지, 마분지 상자, 덕트테이프, 양말 등... 우주선에 있는 잡동산이로 여과기를 보수했다. 3명의 승무원을 살린 이 여과기만큼 클루지의 뜻을 잘 표현하는 장치는 없을 것이다. "잘 어울리지 않는 부분들이 조화롭지 않게 모여 비참한 전체를 이룬 것"이라는 설명과 함께 저자는 이러한 개념을 '클루지'라고 부른다. 『클루지』에서의 수 많은 주장 중 하나는 "우리의 마음은 클루지"(16p)라는 것이다. 흔히 우리는 척추나 꼬리뼈, 서로 이어진 기도와 식도 등, 신체로 나타나는 형질만을 진화로 인해 만들어진 결과라고 생각한다. 하지만..

반응형