본문 바로가기

Programming15

Merge Sort (병합 정렬) 참고자료: 유투버 동빈나 님의 실전 알고리즘 강좌 Geeks for geeks - Merge Sort 정렬방법에는 시간복잡도 $O(N^2)$ 을 갖는 Selection Sort (선택 정렬), bubble sort(버블정렬), insertion sort(삽입정렬)등이 있다. 이 방법들은 프로그래밍이 직관적이고 쉽지만 데이터의 개수의 제곱으로 계산량이 증가하기 때문에 많은 데이터를 처리해야 하는 작업에는 적합하지 않다. 이를 극복하기 지난 글에서는 위해 시간복잡도 $O(N*logN)$을 갖는 Quick Sort (퀵 정렬)에 대해서 알아보았다. 이번에는 Quick Sort와 같이 시간 복잡도 $O(N*logN)$을 갖는 분할 정복식 알고리즘(DAC)인 Merge Sort (병합 정렬)에 대해 알아보도록 하.. 2021. 9. 28.
Selection Sort (선택 정렬) 참고자료: 유투버 동빈나 님의 실전 알고리즘 강좌 알고리즘에 따른 효율성을 가장 잘 보여줄 수 있는 문제가 정렬에 관한 문제이다. 이번에는 시간복잡도는 $O(N^2)$으로 느리지만 가장 단순하게 풀어 볼 수 있는 selection sort(선택정렬)에 대해서 알아본다. Selection sort는 프로그래밍이 직관적이고 쉽지만 데이터의 개수의 제곱으로 계산량이 증가하기 때문에 많은 데이터를 처리해야 하는 작업에는 적합하지는 않다. 1 10 5 8 7 6 4 3 2 9 의 숫자들이 나열되어 있을 때 이를 오름차순으로 정렬하는 프로그래밍을 작성해보자. 먼저 가장 단순하게 "가장 작은 것을 선택해서 제일 앞으로 보내"는 방법을 생각해보자. 바로 이 방법이 selection sort이다. 한번 손으로 풀어보자... 2021. 9. 27.
Quick Sort (퀵 정렬) 참고자료: 유투버 동빈나 님의 실전 알고리즘 강좌 정렬방법에는 시간복잡도 $O(N^2)$ 을 갖는 Selection Sort (선택 정렬), bubble sort(버블정렬), insertion sort(삽입정렬)등이 있다. 이 방법들은 프로그래밍이 직관적이고 쉽지만 데이터의 개수의 제곱으로 계산량이 증가하기 때문에 많은 데이터를 처리해야 하는 작업에는 적합하지 않다. 이번에는 시간복잡도 $O(N*logN)$을 갖는 Quick Sort에 대해서 알아보도록 하겠다. Quick Sort는 대표적인 분할 정복식 알고리즘(Divide and Conquer Algorithm, DAC) 이라고 한다. DAC에 대해 간단히 알아보면, 1. Divide: 문제를 작은 sub-problem들로 나누는것 2. Conquer.. 2021. 9. 15.
Eigen3 Vector 참고자료: https://dritchie.github.io/csci2240/assignments/eigen_tutorial.pdf https://eigen.tuxfamily.org/dox/index.html Computer vision및 Deep-learning관련 open-source들을 살펴보다보면, Eigen으로 작성된 코드들이 많이 보인다. 하지만 Eigen library가 정확히 어떤 기능을하고 어떻게 쓸 수 있는지 알지 못하기 때문에 코드를 이해하는데 어려움이 있었다. 이 글에서는 이 Eigen Library에 대해 공부한 내용에 대하여 작성한다. 이전글(Eigen3)에서 작성했던 기본 코드에 추가하여 Eigen라이브러리를 사용한 Vector 연산에 대해 알아보도록 하겠다. 작성된 코드와 실행.. 2020. 7. 1.
Eigen3 Matrix Operations - 행렬연산 참고자료: https://dritchie.github.io/csci2240/assignments/eigen_tutorial.pdf https://eigen.tuxfamily.org/dox/index.html Computer vision및 Deep-learning관련 open-source들을 살펴보다보면, Eigen으로 작성된 코드들이 많이 보인다. 하지만 Eigen library가 정확히 어떤 기능을하고 어떻게 쓸 수 있는지 알지 못하기 때문에 코드를 이해하는데 어려움이 있었다. 이 글에서는 이 Eigen Library에 대해 공부한 내용에 대하여 작성한다. 이전글(Eigen3)에서 작성했던 기본 코드에 추가하여 Eigen라이브러리를 사용한 행렬 변수 연산에 대해 알아보도록 하겠다. Eigen은 파워풀한.. 2020. 7. 1.
Eigen3 Matrices - 행렬변수 선언 참고자료: https://dritchie.github.io/csci2240/assignments/eigen_tutorial.pdf https://eigen.tuxfamily.org/dox/index.html Computer vision및 Deep-learning관련 open-source들을 살펴보다보면, Eigen으로 작성된 코드들이 많이 보인다. 하지만 Eigen library가 정확히 어떤 기능을하고 어떻게 쓸 수 있는지 알지 못하기 때문에 코드를 이해하는데 어려움이 있었다. 이 글에서는 이 Eigen Library에 대해 공부한 내용에 대하여 작성한다. 이전글(Eigen3)에서 작성했던 기본 코드에 추가하여 Eigen라이브러리를 사용한 행렬 변수 선언에 대해 알아보도록 하겠다. Eigen은 Open.. 2020. 7. 1.
Ubuntu 원격 파일전송 [ssh, scp] 동일한 네트워크에 연결되어 있다는 가정 하에, 로컬-> 원격 scp [파일경로] [원격이름]@[원격주소] 예를들면 scp /home/sg/Desktop/pic.png sg-uav@192.168.10.20:/home/sg-uav/Desktop 원격 -> 로컬 scp [원격이름]@[원격주소]:파일경로 [저장할로컬주소] 예를들면 scp sg-uav@192.168.10.20:/home/sg-uav/Desktop/pic.png /home/sg/Desktop 이를 제대로 실행하면 다음과 같이 전송된 파일명과 시간, 파일크기, 전송속도 등이 표시되면서 전송이 완료된다. 2020. 6. 29.
Ubuntu 고정 ip 네트워크 설정, Hokuyo ethernet 연결 Ubuntu 에서 네트워크 환경 설정을 하려면 일반적으로 다음의 경로에 있는 interfaces파일을 수정하여 설정한다. cd /etc/network/ 위 그림은 /etc/network 경로 안에 있는 내용을 나타낸 것인데 여기서 interfaces를 수정하면된다. vi에디터나 vim, emacs등을 사용해서 수정하면되는데, 이 글에서는 vim을 사용하도록 하겠다. sudo vim interfaces 일반적으로는 다음과 같이 설정이 되어 있는데 여기서 lo의 의미는 loop-back interface의 의미로 자기 자신을 가리킨다는데 아직까지 정확한 의미는 파악하지 못했다. 추후 공부해서 업데이트 하도록 하겠다. 아무튼 여기에 물리적인 Ethernet 선으로 연결된 고정 ip의 네트워크를 추가하기 위해서.. 2020. 6. 29.