[경로탐색 알고리즘] 큐를 이용한 너비우선탐색 알고리즘(BFS - Breath First Search) [출처] [경로탐색 알고리즘] 큐를 이용한 너비우선탐색 알고리즘(BFS - Breath First Search)|작성자 Android Kang
·
프로젝트 관련 조사/알고리즘
출처: http://blog.naver.com/powersilk/10168065952 [경로탐색 알고리즘]큐를 이용한 너비우선탐색 알고리즘(BFS - Breath First Search) O. 들어가며 경로탐색 또는 길찾기 알고리즘을 공부할 때에 가장 기본적으로 이해하고 알고있어야 할 알고리즘은 깊이우선탐색(Depth First Search)과 너비우선탐색(Breath First Search)이다. 물론 실제 게임에서의 경로찾기는 A*알고리즘 등 최단경로 찾기 알고리즘을 사용한다. 혹은 네비게이션 맵을 이용하여 그래프를 구성하고 경로찾기를 구현하는 경우도 많이 있다. 이유는 A* 알고리즘이나 네비게이션 방법이 탐색 속도에서 훨씬 빠르기 때문이다. 이외에도 유전알고리즘이나 뉴럴네트워크와 같은 휴리스틱 알고..
[C++] [STL] vector 벡터 정리 및 예제
·
프로젝트 관련 조사/알고리즘
출처: http://hyeonstorage.tistory.com/324 vector 컨테이너는 대표적인 시퀀스 컨테이너로 배열과 비슷하여 사용이 쉬우며 자주 사용된다. vector는 임의 접근 반복자(Random Access Iterator)를 지원하는 배열 기반 컨테이너이다.vector의 가장 큰 특징 중 하나는 원소가 하나의 메모리 블록에 연속하게 저장된다는 것이다. 그렇다 보니 원소가 추가되거나 삽입될 때 메모리 재할당이 발생할 수 있고 상당한 비용을 지불하게 된다.그래서 메모리 할당 크기를 알 수 있게 capacity() 함수를 제공하며 한번에 메모리를 할당할 수 있는 reserve() 함수도 제공된다. 원소가 연속하게 저장되므로 [] 연산자 또는 at 으로 읽기에는 빠르지만 insert(), e..
[C++] [STL] deque 정리 및 예제
·
프로젝트 관련 조사/알고리즘
출처:http://hyeonstorage.tistory.com/325 deque 컨테이너는 vector 컨테이너와 기능과 동작이 비슷한 컨테이너로 vector의 단점을 보완하는 몇가지 특징을 갖는다.deque도 vector 컨테이너와 같이 시퀀스 컨테이너이며 배열 기반 컨테이너이다. [C++/STL] - [STL] vector 벡터 정리 및 예제 템플릿 형식 templateclass deque T는 deque 컨테이너 원소의 형식 생성자 deque dqdq는 빈 컨테이너이다. deque dq(n)dq는 기본값으로 초기화된 n개의 원소를 갖는다. deque dq(n,x)dq는 x 값으로 초기화된 n 개의 원소를 갖는다. deque dq(dq2)dq는 dq2 컨테이너의 복사본이다. deque dq(b,e)d..
[알고리즘] Backtracking (백트래킹)
·
프로젝트 관련 조사/알고리즘
출처:http://janghw.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Backtracking-%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9 백트래킹정의 : 여러 해들 중에 조건에 맞는 모든 해를 찾는 알고리즘. 알고리즘1. 후보 해를 선택한다.2. 조건에 따라 후보 해에 적절성 검사를 시행한다. 통과하지 못하면 지금 현재 선택한 후보 해를 버리고 1로 돌아가 후보 해를 다시 선택한다.3. 적설성 검사가 통과한 경우 이 후보 해가 문제의 해가 되는지 검사한다. 검사를 통과하면 이것이 문제의 해이고, 검사를 통과하지 못하면 1로 돌아가 후보 해를 계속해서 선택한다. 백트래킹의 활용1. 미로 탈출로 찾기재귀함수를 통해 백트래킹으로 ..
[알고리즘] Dynamic Programming (동적 계획법)
·
프로젝트 관련 조사/알고리즘
출처:http://janghw.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Dynamic-Programming-%EB%8F%99%EC%A0%81-%EA%B3%84%ED%9A%8D%EB%B2%95 동적 계획법 정의 : 어떤 문제가 반복적이고 최적 하위구조로 이루어질때, 하위구조에 있는 부분 문제의 답을 기반으로 전체 문제의 답을 구하는 방법 최적 하위구조(Optimal Substructure)란 전체 문제의 답이 부분 문제의 답으로부터 만들어지는 구조를 말한다. 예를 들어 어떤 문제를 7개의 하위문제로 나눌 수 있을때, 7개의 하위문제의 답을 모두 얻어야 이 문제의 답을 구할 수 있다면 이 문제는 최적 하위구조를 갖추었다고 할 수 있다.분할정복과 비슷해..
[알고리즘] Divide and Conquer (분할정복)
·
프로젝트 관련 조사/알고리즘
출처:http://janghw.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Divide-and-Conquer-%EB%B6%84%ED%95%A0%EC%A0%95%EB%B3%B5 분할정복정의 : 분할정복 알고리즘은 문제를 나눌 수 없을 때까지 나누어서 각각을 풀면서 다시 합병하여 문제의 답을 얻는 알고리즘이다. 알고리즘을 설계하는 요령(1) Divide : 문제가 분할이 가능한 경우, 2개 이상의 문제로 나눈다.(2) Conquer : 나누어진 문제가 여전히 분할이 가능하면, 또 다시 Divide를 수행한다. 그렇지 않으면 문제를 푼다.(3) Combine : Conquer한 문제들을 통합하여 원래 문제의 답을 얻는다. 문제를 제대로 나누면 Conquer..
[알고리즘] Greedy Algorithm (탐욕 알고리즘)
·
프로젝트 관련 조사/알고리즘
출처: http://janghw.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Greedy-Algorithm-%ED%83%90%EC%9A%95-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 탐욕 알고리즘정의 : 미리 정한 기준에 따라서 매번 가장 좋아 보이는 답을 선택하는 알고리즘 동적 계획법과 마찬가지로 최적화 문제를 푸는데 사용한다.근시안적으로 해를 구할 당시에 가장 최적인 해를 구한다.탐욕 알고리즘은 동적 계획법보다 효율적이긴 하지만 동적 계획법처럼 반드시 최적의 해를 구해준다는 보장을 하지 못한다. 알고리즘1. 해 선택 (Selection Procedure) : 지금 당시에 가장 최적인 해를 구한뒤, 이를 부분해 집합에 추가한..
[C++ STL] Header <algorithm> – 1. Sort 파헤치기 (1)
·
프로젝트 관련 조사/알고리즘
출처: ※ 읽으시기 전에 - 제가 현재 숙지하고 있는 STL 내용은 대부분 레퍼런스를 참고하지 않고, 직접 이리저리 실험해가며 익힌 내용입니다. 글을 쓸 때는 레퍼런스를 이용하여 검증하지만, 그래도 이론적인 부분에서 제가 틀리게 작성할 수도 있습니다. 따라서 피드백은 언제나 환영입니다. - 앞으로 소개드릴 자료구조, 함수 등은 반드시 직접 구현할 수 있어야 합니다. 100% 완벽하게 구현할 수 있어도 좋고, 핵심적인 부분만 구현할 수 있어도 좋습니다. 적어도 어떤 원리로 작동하는지는 알아야합니다. 원리를 모른 채 그냥 가져다 쓰는 건 언제 어떤 난관에 부딪칠지 모르기 때문에 상당히 위험합니다. 가져다 쓰는 건 구현이 가능한 이후입니다. 0. qsort 함수와 sort 함수와의 비교 “qsort 함수가 있..
[MSSQL] MSSQL DB 정보 얻기
·
프로젝트 관련 조사/DB
MSSQL에서 DB목록, Table목록, 그리고 각 Table의 상세 칼럼 정보를얻기 위해서는 아래 제시된 쿼리문을 이용해 가능하다.select * from sys.sysdatabases select * from sys.tables select * from sys.syscolumns select * from sys.systypes 위 쿼리를 바탕으로 필요한 테이블 상세 정보만 얻어오는 쿼리 조합문.selecta.name as table_name, b.name as column_name, c.name as data_type, c.length as data_length from sys.tables a inner join sys.syscolumns b on a.object_id=b.id inner join s..
[ubuntu] rpm 패키지 파일을 우분투에서 설치하는 방법
·
프로젝트 관련 조사/시스템 구축
출처: http://dante2k.tistory.com/487 우분투는 데비안 계열이기때문에 dpkg 를 이용하여 .deb 으로 배포되는 배포파일을 설치합니다. 그런고로 그냥 .rpm 배포판을 설치할 수 없는데 rpm 파일을 deb 파일로 변환해서 설치하면 가능합니다. 변환에 사용하는 프로그램은 alien 이라는 프로그램으로 다음과 같이 설치가 필요합니다. $ sudo apt-get install alien 이후 변환하고 싶은 rpm 파일을 deb로 변환하는 명령어는 다음과 같습니다. $ sudo alien -c .rpm 위 명령어를 입력후 프로그램마다 걸리는 시간이 좀 다른데 용량이 크면 오래걸립니다. 잠시 기다리면 변환할 파일명과 동일한 deb 파일이 생성이 되고 이는 다음 명령어를 이용하여 설치하면..