글

트리 알고리즘 기초 개념 (Tree algorithm)

이미지
트리 알고리즘 트리는 자료구조의 일종이며, 사이클이 없는 그래프이다. 정점의 개수가 V라면, 간선의 개수는 V-1가 된다. -위의 트리는 Rooted Tree 즉, 루트가 있는 트리이다. 루트는 10이 된다. -여기서 10은 5의 부모(Parent)이고, 5는 1과 6의 부모가 된다. 반대로 5는 10의 자식(Children)이며, 1과 6은 5의 자식이다. -단말 정점은 (Leaf Tree) 1, 6, 14, 21이 된다. -형제(Sibling)은 5와 17이 형제 그리고 1과 6이 형제가 된다. -깊이(Depth)는 0을 시작점(10이 시작점)으로 했을 시에 2가 되고, 1을 기준으로 하면 3이 된다.

ARTIK Modules 7 ( 710 Developer Kit ) unboxing / 아틱 710 개봉!

이미지
ARTIK 710 Developer Kit -짠! 드디어 ARTIK 7이 도착했다. 2세대 버전 박스라 그런지 주황이 아닌 에메랄드 색 박스이다. - 최근 아틱 10이 단종되면서 최고 사양의 아틱은 710 이라 할 수 있다. -Adapter는 아틱 보드와 비교했을때 훨씬 더 크다. -간단한 설명서와 함께, 두 개로 구성 된 아틱 보드 들이 보인다. 뭘 만들어 볼 것인지는 정했지만, 마음의 준비가 아직 덜 된 상태에서 도착해서 떨린당... -설명서는 당연히 영어 이다. -안테나는 두개가 있다. Wifi와 Zigbee를 사용하는 안테나이다. -보드는 이렇게 세련되게 생겼다. 개인적으로 아두이노, 라즈베리파이 그리고 인텔의 갈릴레오를 써봤지만, ARTIK이 가장 섹시하게 생긴 보드 같다. 그럼.. 후기를 마치고, 마음의 준비를 더 한다음 아틱을 활용해 내가 살고 있는 집을 스마트하게 만들어 보겠다.

SAMSUNG ARTIK

이미지
  삼성전자가 IoT 플랫폼인 ‘ARTIK(아틱)’의 상용 제품을 출시했다. 평소에 IoT에 흥미가 많았고, 라즈베리파이와 아두이노를 사용해 봤기에 ARTIK으로 개발을 해보고 싶어 선택했다.  삼성전자의 ARTIK(아틱)은 프로세서(AP), 메모리, 통신, 센서 등으로 구성된 초소형 IoT 모듈로, 소프트웨어/드라이버, 스토리지, 보안솔루션, 개발보드, 클라우드 기능이 하나의 모듈에 집적된 플랫폼이다. 개발자들이 아틱을 활용하면 빠르고 손쉽게 IoT 기기를 제품화할 수 있다.  - 2015 년 출시           :  1 세대 모델   :  ARTIK 520, 1020 - 2016~2017 년 출시   :  2 세대 모델   :  ARTIK 530, 710, 053 외 - 현재 2 세대가 주력 제품이며 향후에 나올 제품들도 2 세대 플랫폼을 따라갈 예정이라 한다 . - ARTIK 050 -> ARTIK 053 으로 Revision  -  ARTIK 모델은 숫자가 커질수록 Spec 이 높아진다 . - ARTIK 020, 030, 053  >> ARTIK 520, 530  >> ARTIK 710 - ARTIK 020 : Bluetooth only         : End Nod Device - ARTIK 030 : Zigbee/Thread only   : End Nod Device - ARTIK 053 : WiFi only            ...

ZigBee 란?

이미지
ZigBee 지그비 ( 영어:   ZigBee )는 소형, 저전력 디지털 라디오를 이용해 개인 통신망을 구성하여 통신하기 위한 표준 기술이다. IEEE 802.15 표준을 기반으로 만들어졌다. 직비 장치는 메시 네트워크 방식을 이용, 여러 중간 노드를 거쳐 목적지까지 데이터를 전송함으로써 저전력임에도 불구하고 넓은 범위의 통신이 가능하다. 애드혹 네트워크적인 특성으로 인해 중심 노드가 따로 존재하지 않는 응용 분야에 적합하다. 지그비는 낮은 수준의 전송 속도만 필요로 하면서 긴 베터리 수명과 보안성을 요구하는 분야에서 사용된다. 초당 250 kbit의 전송 속도를 가지며, 주기적 또는 간헐적인 데이터 전송이나 센서 및 입력 장치 등의 단순 신호 전달을 위한 데이터 전송에 가장 적합하다. 응용 분야에는 무선 조명 스위치, 가내 전력량계, 교통 관리 시스템, 그 밖에 근거리 저속 통신을 필요로하는 개인 및 산업용 장치 등이 있다. 직비 표준은 블루투스나 와이파이 같은 다른 WPAN 기술에 비해 상대적으로 더 단순하고 저렴한 기술을 목표로 만들어졌다. 지그비 네트워크는 128비트 대칭키 암호화를 이용한 보안을 제공한다. 홈 오토메이션 애플리케이션의 경우, 전송 거리는 가시선 기준 10에서 100미터 정도이며 출력 강도 및 무선 환경에 따라 달라진다. 지그비는 1998년 구상이 시작되었으며 2003년에 첫 표준이 제정되었고, 2006년에 개정되었다. 지그비라는 명칭은 벌집에 돌아온 꿀벌이 추는 꿀벌춤에서 유래한 것이다.  지그비는 저가, 저전력 무선 메시 네트워크의 표준이다. 저가라는 특성으로 인해 무선 제어 및 모니터링 등의 목적으로 광범위한 영역에 다량으로 배치하는 것이 가능하다. 저전력 특성은 동작 수명을 연장하며 베터리의 크기를 축소할 수 있게 한다....

JAVA 위상 정렬(Topoligical Sort) 알고리즘

이미지
위상 정렬 (Topoligical Sort) DAG에 속해 있는 알고리즘  - 어떤 일을 하는 순서를 찾는 알고리즘 이다. - 1-> 2 이런 식의 그래프가 있다고 하면, - 2를 하기 전에 1을 먼저 해야 하는 알고리즘이다. - BFS와 비슷한 알고리즘 위의 그림을 예로 들겠다. A에서 D로 가고 싶다. 하지만 D를 가르키는 간선이 두개가 있다.(정점 A와 C에서 나온 간선) 위상 정렬은 이 두개의 간선을 먼저 탐색을 해야지 D를 검색 할 수 있는 것이다. 어디에 쓰일 수 있을까? 기본적으로 선행과목을 예시로 들 수 있다. 가령 과목 D를 듣고 싶다. 과목 D를 듣기 위해선 우선 적으로 A와 B 그리고 C과목 까지 들어야 D과목을 들을 수 있다. 위상정렬 기본적인 자바 코드 Queue<Integer> q = new LinkedList<Integer>(); for (int i = 1; i &lt;= n; i++) { if (inDegree[i] == 0) { q.add(i); } } for (int k = 0; k &lt; n; k++) { int x = q.remove(); System.out.print(x + " "); for (int y : a[x]) { inDegree[y] -= 1; if (inDegree[y] == 0) { q.add(y); } } }

JAVA 힙 정렬 알고리즘

이미지
힙 정렬  Heapsort 힙 정렬 (Heapsort)이란 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법으로서, 내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하면 된다. 최대 힙을 구성하여 정렬하는 방법은 아래 예와 같다. n개의 노드에 대한 완전 이진 트리를 구성한다. 이때 루트 노드부터 부노드, 왼쪽 자노드, 오른쪽 자노드 순으로 구성한다. 최대 힙을 구성한다. 최대 힙이란 부노드가 자노드보다 큰 트리를 말하는데, 단말 노드를 자노드로 가진 부노드부터 구성하며 아래부터 루트까지 올라오며 순차적으로 만들어 갈 수 있다. 가장 큰 수(루트에 위치)를 가장 작은 수와 교환한다. 2와 3을 반복한다. 이진 트리를 최대 힙으로 만들기 위하여 최대 힙으로 재구성 하는 과정이 트리의 깊이 만큼 이루어 지므로  {\displaystyle O(\log n)} 의 수행시간이 걸린다. 구성된 최대 힙으로 힙 정렬을 수행하는데 걸리는 전체시간은 힙 구성시간과  {\displaystyle n} 개의 데이터 삭제 및 재구성 시간을 포함한다. 시간 복잡도는 = (log n+log(n-1)+...+log 2) = (log n+log(n-1)+...+log 2)+(log n+log(n-1)+...+log 2) = O(n*log n) 따라서 힙 정렬은 일반적인 경우  {\displaystyle O(n\log n)} 의 시간복잡도를 가진다. 위키 피디아 참조. 자바 코드 public class JAVAHeap{ public static void main(String[] args) { int[] arr = { 69, 10, 30, 2, 16, 8, 31, 22 }; HeapSort(arr); } public static void HeapSort(int[] arr...

JAVA 버블정렬 알고리즘

이미지
버블정렬 BubbleSort 단순한 알고리즘으로 거품으로 비유를 하지만 개인적으로 물고기가 팔짝팔짝 뛰는 것을 연상했다. 1. 인접한 두 인덱스를 비교해서 정렬이 되어있지 않을경우 정렬한다. 2. 리스트 처음부터 끝까지 이런식의 정렬을 하고 나면 제일 마지막 리스트에는 제일 큰 값(또는 작은 값)이 저장된다. 3. 다시 처음 리스트부터 마지막 리스트 이전 리스트까지 서로 이웃한 인덱스를 비교해가며 정렬한다. 4. 위 방법으로 계속해서 정렬한다. 쉽게 말해 인접한 두 수를 비교해서 큰 수 혹은 작은 수를 뒤로 보내는 형태이다. 이해하기 쉬운 동영상 자바 코드 public class BubbleSort { public static void main(String[] args) { int[] data = { 4, 54, 2, 8, 63, 7, 55, 56 }; int temp; int cnt = 0; System.out.print("======정렬 전===============\n"); for (int m = 0; m < data.length; m++) { System.out.print(data[m] + ", "); } for (int i = data.length; i > 0; i--) { // for (int j = 0; j < i - 1; j++) { cnt++; if (data[j] > data[j + 1]) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } System.out.print("\n\n======Bubble Sort=========\n"); for (int k = 0; k < data.length; k++) { ...

이 블로그의 인기 게시물

3계층 구조( 3 Tier Architecture )

GET방식과 POST방식이란? ( PHP )