[자료구조 목차]

1. 다익스트라 알고리즘 개요

 

1) 다익스트라 알고리즘 정의

  • 너비우선탐색(BFS) 기반으로 하나의 시작 정점에서 부터 다른 모든 정점들까지 증가하는 거리의 순으로 최단 경로를 찾는 탐색 알고리즘
  • 음의 가중치가 없는 그래프에서 한 노드에서 다른 모든 노드까지의 최단거리를 구하는 알고리즘

 

2) 다익스트라 알고리즘의 특징

  • 방향/무방향그래프 관계없이 사용가능
  • 가중치가 음수인 edge 가 존재할 경우 사용이 불가함

 

3) 다익스트라 알고리즘 활용

  • 네비게이션의 도시간 최단 거리 탐색
  • 미로탐색 알고리즘
  • 리우팅(OSPF) 프로토콜
  • 공업입지론에서 최소 운송비 지점 구하기
  • 루빅스 규브 해법
  • A* 알고리즘 : 다이스트라 알고리즘 확장

 

2. 다익스트라 알고리즘 절차

1) 그래프 탐색과정 

 

 

 

2) 그래프 수행 절차

초기화 : 시작노드를 제외한 모든 노드의 거리정보를 무한대로 설정

시작노드를 기준으로 BFS 탐색으로 이웃 노드의 거리정보를 Update하여 최단거리 노드 탐색 및 방문을 반복적으로 수행

절차 기준 노드 이웃노드(거리정보) 거리정보 update(작을 경우) 탐색(gray) 방문완료(black)
a s t=∞
y=∞
  s  
b s t=∞
y=∞
t=10 (update)
y=5 (update)
y s
c y t=10
x=∞
z=∞
t=8 (s-y-t) (update)
x=14 (s-y-x) (update)
z=7(s-y-z) (update)
z y
d z x=14 x=13 (x-y-z-x) (update) t z
e t x=13 x=9 (s-y-t-x) (update) x t
f x       x

 

3. 계산 복잡성 및 단점

1) 계산 복잡성

  • BFS 적용 미방문노트 탐색 O(V), 한노드당 엣지의 기대값 E / V
  • 평균 복잡성 O(V2)  [ O(V2+E) ]

2) 단점 및 해결방법

  • 가중치가 음수인 경우 탐색 불가
  • 해결방법 양수화(모든 거리에 |음수거리|+한후 적용이 끝나면 절대값 - )

 

참조: 다익스트라 알고리즘 · ratsgo's blog

[자료구조 목차]

 

1. 버블 정렬

  • 왼쪽끝에서부터 시작해서 인접하는 두 항목의 값을 비교하여 원하는 순서(오름차순 또는 내림차순)로 되어있지 않으면 서로 위치를 교환하는 정렬
  • Sorted flag를 이용하여 정렬이 완료되었는지를 판단 -> 교환이 한번도 발생하지 않는다면 정렬이 완료된 것임
  • 이웃노드간 비교 if A[i] < A[i+1] -> 비교횟수 O(N^2), 이동횟수 O(N^2), 도중 정렬 완성시 멈출 수 있음 - 최선O(N)

2. 선택 정렬

  • 주어진 리스트 중에서 최소값(또는 최대값)을 찾고 그 값을 맨 앞에 위치한 값과 교체함으로써 정렬을 완성하는 알고리즘
  • 최소값/최대값(Min/Max) 찾아 교체 -> 비교횟수 O(N^2), 이동횟수 O(N^2)

3. 삽입 정렬

  • 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘
  • 데이터를 정렬된 데이터에 삽입해 나가는 방법 -> 비교횟수 O(N^2), 이동횟수(최악 O(N^2), 최선 O(1)-발생 않할때) 

4. 쉘 정렬

  • 특정 레코드와 거리가 일정한 레코드끼리 부파일로 나누어 각 부파일을 삽입 정렬하는 방식 - O(N^2)

5. 퀵 정렬

  • 입력자료를 Pivot(기준데이터)을 중심으로 작은 값을 갖는 자료들과 큰 값을 갖는 자료들로 분할하여 정렬하며, 분할된 각 부분 리스트에 대해 반복적으로 퀵 정렬을 수행하는 정렬 알고리즘
  • 최악 -> 정렬된 입력데이터 O(N^2), 평균: O(N log N), 분할,정복 기법

6. 힙(Heap) 정렬

  • 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법 - 내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하여 정렬
  • 완전이진트리, 힙의 삭제 이용(최대힙 - 내림차순) -> 평균,최악 O(N log N)

7. 합병 정렬

  • 분할(Divide): 입력 배열을 같은 크기의 2개의 부분 배열로 분할한다.
    정복(Conquer): 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면 순환 호출을 이용하여 다시 분할 정복 방법을 적용한다.
    결합(Combine): 정렬된 부분 배열들을 하나의 배열에 합병한다.
  • 두 개 파일 합쳐 한개 파일 만듬. 추가적 메모리 필요, 2배 공간 -> N개 레코드 있을때, 2C(N/2) + N - 1, 평균, 최악 O(N log N)

 

※ 정렬(sort) 정리

<정렬 빅오 표기>

버블정렬?  이웃노드간 비교 if A[i] < A[i+1] -> 비교횟수 O(N^2), 이동횟수 O(N^2), 도중 정렬 완성시 멈출 수 있음 - 최선O(N)

선택정렬? 최소값/최대값(Min/Max) 찾아 교체 -> 비교횟수 O(N^2), 이동횟수 O(N^2)

삽입정렬? 데이터를 정렬된 데이터에 삽입해 나가는 방법 -> 비교횟수 O(N^2), 이동횟수(최악 O(N^2), 최선 O(1)-발생 않할때)  

쉘정렬? 데특정 레코드와 거리가 일정한 레코드끼리 부파일로 나누어 각 부파일을 삽입 정렬하는 방식 - O(N^2)

퀵정렬? Pivot(기준데이터)을 중심으로 작은 값을 갖는 자료들과 큰 값을 갖는 자료들로 분할하여 정렬 - 최악 -> 정렬된 입력데이터 O(N^2), 평균: O(N log N), 분할,정복 기법

힙정렬? 완전이진트리, 힙의 삭제 이용(최대힙 - 내림차순) -> 평균,최악 O(N log N)

2-Way merge? 두 개 파일 합쳐 한개 파일 만듬. 추가적 메모리 필요, 2배 공간 -> N개 레코드 있을때, 2C(N/2) + N - 1, 평균, 최악 O(N log N)

기수 정렬? 공간복잡도 큼, 비교없이 분배 -> O(N)

구분 정렬 설명
평균, 최악 시간복잡도 정렬 - 버블, 선택, 삽입 정렬 - O(N^2)
- 2-way merge, 힙 정렬 - O(N log N)
평균, 최악 시간복잡도 차가 가장 큰 정렬 - 퀵 정렬 - 평균: O(N log N)
- 최악 : O(N^2) -> 정렬된 데이터 사용 시
입력데이터순서영향 받는 정렬 - 버블, 삽입 정렬 - 최선: O(N)
- 퀵 정렬 - 최악: O(N^2)
공간복잡도 큰 정렬 - 기수 정렬 - 비교없고, 분배 없음
- 2-way merge - 기수 정렬 다음으로 공간복잡도 큰 정렬임

 

[Site Map]

 

* 토픽 각 단락 당 3줄 간격 유지
* 꼭 포함되어야 하는 중요 단어는 굵게 + 빨간게 표시
* 최대 44자 이상이 안되도록 주의

 

ISO 56000 - 혁신경영의 국제표준

- 조직이 혁신관리 시스템을 구현, 관리 및 개선할 수 있는 프레임워크를 제공하도록 설계된 국제표준

 

 

 

버추얼 휴먼

가상 인간, 디지털 휴먼, 메타 휴먼, 사이버 휴먼 등 다양한 명칭인, 실존 인물이 아닌 소프트웨어로 만든 가상의 인간

 

 

 

TTS(Text to Speech)

문서, 웹페이지, E-BOOK등에서 텍스트를 읽고 컴퓨터 스피커를 통해 합성된 음성생성기술

 

 

 

O-RAN/Open-RAN(Radio Access Network) - RAN 가상화 Whitebox

운영효율성을 높이고 종속성(Lock-in)을 탈피하기 위하여 인터페이스, 운영체제 등을 개방형 표준으로 구축한 통신 기지국 네트워크

 

 

 

DAO(Decentralized Autonomous Organization)

중앙 주체의 개입 없이 개인이 모여 자율적으로 제안, 투표, 의사결정, 운영하는 탈 중앙화 자율조직

 

 

 

와이파이 7

VR, AR, 게이밍, 클라우드 컴퓨팅에 적용 가능한 30Gbps 이상의 처리량 갖고 대기 시간이 매우 짧으며 가장 빠른 WiFi 표준

 

 

 

메디컬 트윈

현실세계의 건강정보로부터 가상의 의료환경에서 질병의 진단 및 예후를 판단하는 디지털 의료 지능화 융합 기술

 

 

 

VE(Value Engineering, 가치 공학)

- 소비자 관점에서 제품이나 서비스의 가치를 극대화할 수 있도록 공학적인 기법을 활용한 경영기법

 

 

 

ISO/IEC 18013-5

2021년 9월 의결된 개인의 신원 및 자격을 증명하는 모바일 운전면허증 전용 국제표준 (Mobile driving license (mDL) application)

 

 

 

표준특허

해당 특허를 침해하지 않고는 제품의 제조.판매나 서비스 제공이 불가능한 특허로 국제표준화기구(ISO,ITU) 에서 제정한 표준규격에 포함되는 특허

 

 

 

'메가노트 > 암기장' 카테고리의 다른 글

데이터베이스 토픽 정의  (0) 2022.10.29
빅데이터/알고리즘 토픽 정의  (0) 2022.10.29
소프트웨어공학 토픽 정의  (0) 2022.10.23

[CA/OS 목차]

 

스토리지 가상화 (Storage virtualization)

 

1. 이기종 스토리지 통합기술, 스토리지 가상화 개념

  • 여러 대의 이기종 저장 장치를 저장 풀 하나로 만들어 여러 기기 간 데이터 이동 및 복제, 이기종 서버 간 블록 단위의 데이터 공유 등을 제공하는 기술
  • 가상화 기능을 제공하는 소프트웨어 또는 별도의 하드웨어 장비 등을 통해 이기종 스토리지를 통합하는 기술
  • (특징) 공유(Sharing), 단일화(Aggregation), 에뮬레이션(Emulation), 절연(Insulation)

  • 공유 : 서버 내의 논리적 분할, 가상머신(VM), 가상 디스크, 가상 LAN(VLANs)
  • 단일화 : 공유와 반대되는 개념으로 여러 자원에 걸쳐 가상화 공간 생성 가능
  • 에뮬레이션 : 물리적으로는 존재하지 않는 기능을 가지는 것
  • 절연 : 가상화 자원과 물리자원의 상호 맵핑,  RAID 스토리지 컨트롤러(장애 방지)

2. 스토리지 가상화 유형

1) 스토리지 가상화 유형

  • 관리를 용이하게 하고, 애플리케이션의 가용성을 증가시키기 위해 가상화를 활용

 

2) 스토리지 가상화 세부 유형

유형 구현도 설명
블록 가상화
- 물리적으로 다른 스토리지 컨트롤러에 들어있는 유휴 디스크 조각을 모아서 가상 디스크를 생성
- 어플라이언스 형태(예, IBM SAN Volume Contoller 또는 IBM SVC), 지능적인 SAN 스위치(예, EMC의 Invista), 스토리지 컨트롤러 자체에 임베디드된 형태(예, 히타치의 TagmaStore)
파일 가상화
- 이기종 서버 간 파일공유를 통해 동일한 파일명을 사용하여 공통된 파일 그룹 접근
- 서로 다른 서버들간에도 HA(Hardware Address)를 위한 클러스터가 가능
테이프 가상화
- 디스크를 테이프 드라이브 자원인 것 처럼 에뮬레이션 하여 실제 데이터를 백업받는 기술
- 데이터 고속 백업 가능

 

3. 스토리지 가상화 사용 기술

구분 기술 설명
공유 가상 LAN(VLAN) 기술 - 소프트웨어적으로 구현되며, 컴퓨터의 네트워크를 구성할 때 실제 연결되지 않았으나 마치 물리적으로 연결된 것 처럼 설정
- IP-Sec 프로토콜, 터널링 기술
다중 호스팅 지원 HTTP 서버 - 성능향상을 위해 하나의 물리적 서버가 다수의 가상 어플리케이션 서버처럼 보이도록 가상 로컬 IP Address 사용 
어댑터 가상화 기술 - 네트워크 연결 단순화 기술
자원 풀링 IP 워크로드 밸런싱 기술 - 가용성에 따라 워크로드 밸런싱 수행
N/W 어댑터 가상화 기술 - 다수의 어플리케이션 네트워크 연결을 연관된 IP Address로 이동시켜 동일한 인스턴스로 보이도록 구현
- 별도의 동적 라이팅 구성 없이 가용성 확보 가능
에뮬레이션 추상화 추상화 기술 - 가상 이더넷 LAN

[CA/OS 목차]

 

 

I. 칩 속의 시스템, SoC 개요

-. 하나의 칩 내에서 CPU, GPU, NPU, RAM, ROM, 컨트롤러 등의 다양한 역할을 구현하는 체제

-. 정보통신기기의 핵심기능을 처리하는 메모리, 디지털 회로, 아날로그회로, CPU, 센서, 안테나 소자 등이 하나의 칩에 집적된 시스템 

 

 

II. SoC의 특징

구분 특징 설명
기능상 특징 저전력 기능블록들의 통합으로 인한 소모 전력 절감
이동성 하나의 칩으로 소형화
고성능 기능모듈간의 최적화를 통한 성능 향상
비용 장시간의 개발기간으로 인한 비용 증가
낮은 유연성 한번 만들면 시스템으로 마스크를 변경하기 어려움
표준형 반도체,  
ASIC(주문형 반도체)
기능에 맞는 표준형 반도체와 주문형 반도체로 제작
구성상 특징 여러 기능 집적 IC 주어진 시스템 기능을 하나의 칩으로 만들기 위해서 신호 도메인, 제조공정이 다른 여러 기능 블록들을 집적해놓은 IC 
일반적인 SoC embedded microprocessor, 메모리, 외부 시스템과의 연결을 위한 주변
장치, accelerating function block과 data transformation block 등의 디지털
블록은 물론, 아날로그, RF, MEMS, 블록 등이 포함 
구현 시스템 성능
(속도, 전력 소모량)과 생산단가 
구현 시스템 성능(속도, 전력 소모량)과 생산 단가
반도체 공정 성과 여러 다른 반도체 공정을 포함하느라 마스크 제작비 및 공정비용이 상승하지만, 대량 생산의 경우나 성능 요구가 critical한 경우에 채택되는 방식
기존 ASIC과 SoC 차이 - SoC의 경우 구현하고자 하는 대상이 시스템이고 ASIC은 반도체가 대상
- IP 사용, 혹은 설계 재사용이 중요한 역할하고 ASIC은 주문형 제작
- 설계 및 검증 방법론의 변화
- SoC는 소프트웨어의 존재함

 

III. SoC 구조 및 기능

가. SoC 구조

 

 

 

 

나. SoC 기능

기능 설명
CPU 일반적인 범용 연산 기능의 수행
GPU 빠른 속도로 병렬 및 그래픽 연산 가능
NPU 머신 러닝이나 인공지능 관련 연산에 사용
모뎀 셀룰러 네트워크, Wi-Fi, Bluetooth 등 다양한 통신 기능
BUS 시스템과 외부를 이어 주는 주변 기기와의 연결 기능
DSP 디코딩, 인코딩 기능

다. 주요 기술

항목 설명 목표
공정기술 다양한 기술을 하나의 칩에 집적 공정 기술 고집적성
IP 통합 IP 블록을 활용하는 시스템 통합 기술 고신뢰성
프로세스 CPU, GPU, DSP 등 코아 프로세스 기술 고성능
메모리 RAM , ROM, 플래시 메모리 등 내장 기술 경제성확보
회로설계 고속의 안정적 아날로그 회로 설계 기술 고부가가치
칩설계 SoC 에 적합한 설계 방법 및 설계 툴 기술 개발자동화
임베디드 SW HW/SW 공통 설계, 개발 환경 적용 기술 고품질보장
펌웨어 내장 모듈 드라이버 및 펌웨어 설계 기술 안정성확보

 

IV. SoC 발열 문제 및 해결법

가. SoC 발열 문제

 

  이유
1.  요구 사양이 증가 발열도 함께 증가 
2.  사람으로 비유하자면 고강도 운동을 빡세게 할 수록 체온이 올라 가듯이 얘네도 마찬가지로 복잡한 응용 프로그램을 구동하면 당연히 온도가 올라갈 수 밖에 없다. 
3.  그 이유는 열역학법칙과 에너지 보존 법칙 때문.
   

 

나. SoC 발열 문제 해결법

발열 문제 해결법 설명
쿨링 시스템을 탑재  
하드웨어적 방열 솔루션을 설치 히트 파이프를 설치하여 발열을 감소시키고 또 방열 패드 및 방열 스티커와 열 전도 극대화를 위한 써멀을 도포 후 쿨링 시스템 체계
소프트웨어 제어를 통해 발열을 줄이는 것 소프트웨어 최적화를 통해 사용되는 리소스를 줄여 발열을 줄이는 방법
히트파이프 도입

스로틀링 제일 효과적인 방법은 커널 단에서의 스로틀링
발열로 인해 하드웨어 문제가 생기는걸 막기 위해 일정 온도에 다다르면 칩의 성능을 강제로 떨어뜨려서 발열을 낮춘다
일반적으로 음성 피드백 형식으로 이뤄지며, 최근 논란이 된 삼성 갤럭시의 GOS처럼 특정 과부하 앱이 실행된 것 자체로 칩 성능에 컷을 걸어버리는 형태도 존재

 

 

V. SoC 장단점

구분 설명
장점 단일 칩 시스템 설계는 일반적으로 멀티칩 시스템보다 소비전력이 적고 생산단가가 저렴하며 높은 신뢰성을 갖는다. 
또한 여러 패키지를 사용하는 시스템보다 조립 비용이 크게 감소한다. 
따라서 기존 시스템을 대체함으로써 얻게 되는 이익이 많다. 
또 칩 하나의 시스템으로 여러 가지 프로세싱 및 작업을 할 수 있어 그래픽 디스플레이에 유용하게 쓰인다.
단점 대부분의 VLSI 설계에서는 동일한 기능을 지닌 다수의 칩보다 단일 칩이 더 비싸다. 
왜냐하면 소자 테스트 비용과 초기 개발비가 비싸기 때문이다. 
그 이유는 바로 까다로운 공정 때문인데, SoC를 구성하는 프로그램도 부피 대비 엄청난 변수를 포함하고 있기에 SoC가 부담이 클 수 밖에 없을 것이다. 

 

+ Recent posts