반응형 전체 글121 이진탐색(Binary Search)와 Parametric Search 이진탐색(Binary Search)와 Parametric Search 1. 이진탐색1.1 기본 아이디어우리가 원하는 값을 찾고 싶을 때에는 정말 간단하게 생각하면, 모든 값들을 하나씩 보면서 맞는지 아닌지 확인는 방법이 직관적인 방법이라고 할 수 있다. 하지만 이렇게 찾는 것은 가장 마지막에 원하는 값이 있을 경우, 모든 값 들을 한번 씩 살펴보아야 하기 때문에, O(N)으로 볼 수 있다. 그렇다면 좀더 효율적인 방법은 없을까? 에서 시작한 것이 바로 이진탐색(Binary search)이다. 이진탐색(Binary search)의 경우는 결과적으로 보면 O(logN) 만에 원하는 값을 찾을 수 있는데, 그 이유는 정렬이 되있다는 가정이 있기 때문이다. 아래의 그림을 보면서, 왜 그러한지 직관적으로 이해를 .. 2016. 9. 13. 퀵소트(quick sort) 알고리즘 퀵소트(quick sort) 알고리즘 정렬 알고리즘 중 평균적으로 O(NlogN)으로 알려져 있는 Quick sort에 대해 알아보자. 1. 기본 아이디어 기본적으로 O(N^2)으로 정렬하는 알고리즘(Ex : 버블정렬)은 바꾸는 기준이 순회를 하면서 바뀌어 지면서, 일반적으로 for문의 중첩으로 O(N^2)의 복잡도를 가지게 된다. 하지만 퀵소트 알고리즘은 직관적으로 보았을 때, 비교를 반씩 줄여나가면서 해보자! 라는 생각으로 접근을 하면 이해하기 좋을 것 같다. 즉 재귀를 이용한 분할정복 알고리즘이다. 기본적인 아이디어는 상당히 쉽다. 특정한 기준을 Pivot 이라고 부르고 이 pivot을 기준으로 pivot보다 작으면 왼쪽으로, pivot보다 크면 오른쪽으로 이동한다. 기본적인 아이디어를 바탕으로 제.. 2016. 9. 8. 파이썬 모듈과 패키지(Python3.X module and Package) 파이썬 모듈과 패키지(Python3.X module and Package) 모듈(module) : 코드들을 한 단위로 묶어 사용 할 수 있게 하는 하나의 단위말은 거창하지만.. 하나의 파일로 이해하는 것도 좋은것 같다. 모듈의 종류 3가지1. 표준모듈 - Python Package 안에 포함된 모듈2. 사용자 생성 모듈 - 내가 만든 모듈3. 서드파티 모듈 - 협력 업체나 개인이 만들어서 제공하는 모듈 모듈의 사용 예 import math print (math.sin(math.pi)) from math import sin, cos print (sin(1)) from math import * print (sin(1)+cos(1)+tan(1)+tanh(1)) # 모듈의 이름이 길 경우 별칭을 주어서 사용 i.. 2016. 8. 12. git commit 사용해보기 git commit에 대해 알아보자. git의 commit 명령어를 알아보면 git bash에서는 commit : Record changes to the repository 로 정의가 되어있다.즉, 쉽게 생각해보면, 저장소에 변경내역을 기록하는것으로 생각해도 된다.너무 별게 없으니깐, 조그만 더 들어가서 보도록 하자. 우리가 실제 작업하고 있는 공간이 작업트리(WorkTree)라고 한다. 이 작업트리의 변경사항을 git에게 알려주기 위해서 별도의 공간인 인덱스(Index)라는 공간이 존재하게 된다.이 인덱스를 우리가 저장소에 Commit이라는 명령을 통해 기록해 주는 것이다. 실습 1. git add실습을 위해서 우선 우리가 작업하고 있는 작업트리, 즉 실제 사용하고 있는 곳에 newFile.py라는 파.. 2016. 7. 29. 네트워크플로우(Network flow) - 포드 풀커슨(Ford-Fulkerson) 알고리즘 네트워크 플로우란(Network flow)?그래프의 경로의 길이가 아닌, ‘용량’의 관점에서 바라보는 시점.Ex) 인터넷으로 영화를 다운받고 있는데 파일 원격지에서 얼마나 빨리 받을 수 있는지를 알고 싶다. 각 컴퓨터의 네트워크 장비는 대역폭의 제한이 있다. 따라서 가장 짧은 거리로 오는 것보다. 대역폭이 큰 쪽으로 오는 것이 더 유리하다. 위의 그림의 예에서 가중치는 비용이 아니라, 대역폭, 즉 유량이다.A->B->E 의 경로에서는 최대 1의 데이터를 보낼 수 있는 반면에, A->C->D->E의 경로는 한 정점을 더 지나가게 되지만 한번에 100의 데이터를 보낼 수 있다.용어 - Source – 네트워크의 시작(A), Sink – 네트워크의 도착지(E)- 정점 a에서 b로가는 용량 – c(a,b)- a.. 2016. 7. 28. 텐서플로우(TensorFlow), Anaconda 설치로 머신러닝 시작하기 텐서플로우로 머신러닝 시작하기.(CPU만, CUDA(X)) 4단계로 설치를 진행하면 된다. 1. Python3.x 설치2. Anaconda 설치3. TensorFlow 설치**설치가 되있는 부분은 건너 뛰어도 무방하다.**설치 과정은 https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#anaconda-installation 을 바탕으로 작성하였다.실제 작업환경은 Ubuntu 노트북이지만, 작성을 위해 VirtualBox에서 실행한 모습을 스크린샷으로 넣었다. 1. Python3.x 설치파이썬은 2.x버젼과 3.x 버젼이 존재하지만 3.x을 기준으로 설치한다.우선 파이썬이 깔려있는지를 확인하여야 한다. 기본적으로 Ubuntu환경이라면 설치.. 2016. 7. 20. 이전 1 ··· 17 18 19 20 21 다음 반응형